@asdp/ferryui 0.1.22-dev.9360 → 0.1.22-dev.9417
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +1574 -364
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1575 -365
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1406,7 +1406,7 @@ var CardTicket = ({
|
|
|
1406
1406
|
{
|
|
1407
1407
|
size: "large",
|
|
1408
1408
|
appearance: "filled",
|
|
1409
|
-
style: { backgroundColor: departureItem?.provider?.serviceColor },
|
|
1409
|
+
style: { backgroundColor: departureItem?.provider?.serviceColor, padding: "0.5rem" },
|
|
1410
1410
|
iconPosition: "before",
|
|
1411
1411
|
shape: "rounded",
|
|
1412
1412
|
icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:info-24-regular" }),
|
|
@@ -1723,27 +1723,27 @@ var CardTicket = ({
|
|
|
1723
1723
|
var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1724
1724
|
"svg",
|
|
1725
1725
|
{
|
|
1726
|
-
viewBox: "0 0
|
|
1726
|
+
viewBox: "0 0 1296 495",
|
|
1727
1727
|
fill: "none",
|
|
1728
1728
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1729
1729
|
preserveAspectRatio: "none",
|
|
1730
1730
|
...props,
|
|
1731
1731
|
children: [
|
|
1732
|
-
/* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#
|
|
1732
|
+
/* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter0_dd_8563_16188)", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1733
1733
|
"path",
|
|
1734
1734
|
{
|
|
1735
|
-
d: "
|
|
1735
|
+
d: "M278.91 4C287.803 17.835 303.331 27 321 27C338.669 27 354.197 17.835 363.09 4H1272C1280.84 4 1288 11.1634 1288 20V467C1288 475.837 1280.84 483 1272 483H363.09C354.197 469.165 338.669 460 321 460C303.331 460 287.803 469.165 278.91 483H24C15.1635 483 8.00003 475.837 8 467V20C8 11.1634 15.1634 4 24 4H278.91ZM321.5 407.5C319.015 407.5 317 409.515 317 412V439C317 441.485 319.015 443.5 321.5 443.5C323.985 443.5 326 441.485 326 439V412C326 409.515 323.985 407.5 321.5 407.5ZM321.5 355.5C319.015 355.5 317 357.515 317 360V387C317 389.485 319.015 391.5 321.5 391.5C323.985 391.5 326 389.485 326 387V360C326 357.515 323.985 355.5 321.5 355.5ZM321.5 303.5C319.015 303.5 317 305.515 317 308V335C317 337.485 319.015 339.5 321.5 339.5C323.985 339.5 326 337.485 326 335V308C326 305.515 323.985 303.5 321.5 303.5ZM321.5 251.5C319.015 251.5 317 253.515 317 256V283C317 285.485 319.015 287.5 321.5 287.5C323.985 287.5 326 285.485 326 283V256C326 253.515 323.985 251.5 321.5 251.5ZM321.5 199.5C319.015 199.5 317 201.515 317 204V231C317 233.485 319.015 235.5 321.5 235.5C323.985 235.5 326 233.485 326 231V204C326 201.515 323.985 199.5 321.5 199.5ZM321.5 147.5C319.015 147.5 317 149.515 317 152V179C317 181.485 319.015 183.5 321.5 183.5C323.985 183.5 326 181.485 326 179V152C326 149.515 323.985 147.5 321.5 147.5ZM321.5 95.5C319.015 95.5 317 97.5147 317 100V127C317 129.485 319.015 131.5 321.5 131.5C323.985 131.5 326 129.485 326 127V100C326 97.5147 323.985 95.5 321.5 95.5ZM321.5 43.5C319.015 43.5 317 45.5147 317 48V75C317 77.4853 319.015 79.5 321.5 79.5C323.985 79.5 326 77.4853 326 75V48C326 45.5147 323.985 43.5 321.5 43.5Z",
|
|
1736
1736
|
fill: "white"
|
|
1737
1737
|
}
|
|
1738
1738
|
) }),
|
|
1739
1739
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1740
1740
|
"filter",
|
|
1741
1741
|
{
|
|
1742
|
-
id: "
|
|
1742
|
+
id: "filter0_dd_8563_16188",
|
|
1743
1743
|
x: "0",
|
|
1744
1744
|
y: "0",
|
|
1745
|
-
width: "
|
|
1746
|
-
height: "
|
|
1745
|
+
width: "1296",
|
|
1746
|
+
height: "495",
|
|
1747
1747
|
filterUnits: "userSpaceOnUse",
|
|
1748
1748
|
colorInterpolationFilters: "sRGB",
|
|
1749
1749
|
children: [
|
|
@@ -1761,7 +1761,7 @@ var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1761
1761
|
/* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "1" }),
|
|
1762
1762
|
/* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
|
|
1763
1763
|
/* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0" }),
|
|
1764
|
-
/* @__PURE__ */ jsxRuntime.jsx("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "
|
|
1764
|
+
/* @__PURE__ */ jsxRuntime.jsx("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_8563_16188" }),
|
|
1765
1765
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1766
1766
|
"feColorMatrix",
|
|
1767
1767
|
{
|
|
@@ -1771,16 +1771,16 @@ var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1771
1771
|
result: "hardAlpha"
|
|
1772
1772
|
}
|
|
1773
1773
|
),
|
|
1774
|
-
/* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "
|
|
1775
|
-
/* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "
|
|
1774
|
+
/* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "4" }),
|
|
1775
|
+
/* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "4" }),
|
|
1776
1776
|
/* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
|
|
1777
1777
|
/* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0" }),
|
|
1778
1778
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1779
1779
|
"feBlend",
|
|
1780
1780
|
{
|
|
1781
1781
|
mode: "normal",
|
|
1782
|
-
in2: "
|
|
1783
|
-
result: "
|
|
1782
|
+
in2: "effect1_dropShadow_8563_16188",
|
|
1783
|
+
result: "effect2_dropShadow_8563_16188"
|
|
1784
1784
|
}
|
|
1785
1785
|
),
|
|
1786
1786
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1788,7 +1788,7 @@ var BackgroundTicketCard = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1788
1788
|
{
|
|
1789
1789
|
mode: "normal",
|
|
1790
1790
|
in: "SourceGraphic",
|
|
1791
|
-
in2: "
|
|
1791
|
+
in2: "effect2_dropShadow_8563_16188",
|
|
1792
1792
|
result: "shape"
|
|
1793
1793
|
}
|
|
1794
1794
|
)
|
|
@@ -1802,27 +1802,27 @@ var BackgroundTicketCard_default = BackgroundTicketCard;
|
|
|
1802
1802
|
var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1803
1803
|
"svg",
|
|
1804
1804
|
{
|
|
1805
|
-
viewBox: "
|
|
1805
|
+
viewBox: "4 0 479 1166",
|
|
1806
1806
|
fill: "none",
|
|
1807
1807
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1808
1808
|
preserveAspectRatio: "none",
|
|
1809
1809
|
...props,
|
|
1810
1810
|
children: [
|
|
1811
|
-
/* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#
|
|
1811
|
+
/* @__PURE__ */ jsxRuntime.jsx("g", { filter: "url(#filter0_dd_8563_16188_vert)", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1812
1812
|
"path",
|
|
1813
1813
|
{
|
|
1814
|
-
d: "
|
|
1814
|
+
d: "M4 148.91C17.835 157.803 27 173.331 27 191C27 208.669 17.835 224.197 4 233.09V1142C4 1150.84 11.1634 1158 20 1158H467C475.837 1158 483 1150.84 483 1142V233.09C469.165 224.197 460 208.669 460 191C460 173.331 469.165 157.803 483 148.91V24C483 15.1635 475.837 8.00003 467 8H20C11.1634 8 4 15.1634 4 24V148.91ZM407.5 191.5C407.5 189.015 409.515 187 412 187H439C441.485 187 443.5 189.015 443.5 191.5C443.5 193.985 441.485 196 439 196H412C409.515 196 407.5 193.985 407.5 191.5ZM355.5 191.5C355.5 189.015 357.515 187 360 187H387C389.485 187 391.5 189.015 391.5 191.5C391.5 193.985 389.485 196 387 196H360C357.515 196 355.5 193.985 355.5 191.5ZM303.5 191.5C303.5 189.015 305.515 187 308 187H335C337.485 187 339.5 189.015 339.5 191.5C339.5 193.985 337.485 196 335 196H308C305.515 196 303.5 193.985 303.5 191.5ZM251.5 191.5C251.5 189.015 253.515 187 256 187H283C285.485 187 287.5 189.015 287.5 191.5C287.5 193.985 285.485 196 283 196H256C253.515 196 251.5 193.985 251.5 191.5ZM199.5 191.5C199.5 189.015 201.515 187 204 187H231C233.485 187 235.5 189.015 235.5 191.5C235.5 193.985 233.485 196 231 196H204C201.515 196 199.5 193.985 199.5 191.5ZM147.5 191.5C147.5 189.015 149.515 187 152 187H179C181.485 187 183.5 189.015 183.5 191.5C183.5 193.985 181.485 196 179 196H152C149.515 196 147.5 193.985 147.5 191.5ZM95.5 191.5C95.5 189.015 97.5147 187 100 187H127C129.485 187 131.5 189.015 131.5 191.5C131.5 193.985 129.485 196 127 196H100C97.5147 196 95.5 193.985 95.5 191.5ZM43.5 191.5C43.5 189.015 45.5147 187 48 187H75C77.4853 187 79.5 189.015 79.5 191.5C79.5 193.985 77.4853 196 75 196H48C45.5147 196 43.5 193.985 43.5 191.5Z",
|
|
1815
1815
|
fill: "white"
|
|
1816
1816
|
}
|
|
1817
1817
|
) }),
|
|
1818
1818
|
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1819
1819
|
"filter",
|
|
1820
1820
|
{
|
|
1821
|
-
id: "
|
|
1822
|
-
x: "
|
|
1823
|
-
y: "
|
|
1824
|
-
width: "
|
|
1825
|
-
height: "
|
|
1821
|
+
id: "filter0_dd_8563_16188_vert",
|
|
1822
|
+
x: "-10",
|
|
1823
|
+
y: "-10",
|
|
1824
|
+
width: "515",
|
|
1825
|
+
height: "1190",
|
|
1826
1826
|
filterUnits: "userSpaceOnUse",
|
|
1827
1827
|
colorInterpolationFilters: "sRGB",
|
|
1828
1828
|
children: [
|
|
@@ -1839,21 +1839,8 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1839
1839
|
/* @__PURE__ */ jsxRuntime.jsx("feOffset", {}),
|
|
1840
1840
|
/* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "1" }),
|
|
1841
1841
|
/* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
|
|
1842
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1843
|
-
|
|
1844
|
-
{
|
|
1845
|
-
type: "matrix",
|
|
1846
|
-
values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0"
|
|
1847
|
-
}
|
|
1848
|
-
),
|
|
1849
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1850
|
-
"feBlend",
|
|
1851
|
-
{
|
|
1852
|
-
mode: "normal",
|
|
1853
|
-
in2: "BackgroundImageFix",
|
|
1854
|
-
result: "effect1_dropShadow_156_32115"
|
|
1855
|
-
}
|
|
1856
|
-
),
|
|
1842
|
+
/* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0" }),
|
|
1843
|
+
/* @__PURE__ */ jsxRuntime.jsx("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_8563_16188_vert" }),
|
|
1857
1844
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1858
1845
|
"feColorMatrix",
|
|
1859
1846
|
{
|
|
@@ -1863,22 +1850,16 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1863
1850
|
result: "hardAlpha"
|
|
1864
1851
|
}
|
|
1865
1852
|
),
|
|
1866
|
-
/* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "
|
|
1867
|
-
/* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "
|
|
1853
|
+
/* @__PURE__ */ jsxRuntime.jsx("feOffset", { dy: "4" }),
|
|
1854
|
+
/* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { stdDeviation: "4" }),
|
|
1868
1855
|
/* @__PURE__ */ jsxRuntime.jsx("feComposite", { in2: "hardAlpha", operator: "out" }),
|
|
1869
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1870
|
-
"feColorMatrix",
|
|
1871
|
-
{
|
|
1872
|
-
type: "matrix",
|
|
1873
|
-
values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0"
|
|
1874
|
-
}
|
|
1875
|
-
),
|
|
1856
|
+
/* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0" }),
|
|
1876
1857
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1877
1858
|
"feBlend",
|
|
1878
1859
|
{
|
|
1879
1860
|
mode: "normal",
|
|
1880
|
-
in2: "
|
|
1881
|
-
result: "
|
|
1861
|
+
in2: "effect1_dropShadow_8563_16188_vert",
|
|
1862
|
+
result: "effect2_dropShadow_8563_16188_vert"
|
|
1882
1863
|
}
|
|
1883
1864
|
),
|
|
1884
1865
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1886,7 +1867,7 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
|
1886
1867
|
{
|
|
1887
1868
|
mode: "normal",
|
|
1888
1869
|
in: "SourceGraphic",
|
|
1889
|
-
in2: "
|
|
1870
|
+
in2: "effect2_dropShadow_8563_16188_vert",
|
|
1890
1871
|
result: "shape"
|
|
1891
1872
|
}
|
|
1892
1873
|
)
|
|
@@ -2156,11 +2137,13 @@ var useStyles7 = reactComponents.makeStyles({
|
|
|
2156
2137
|
},
|
|
2157
2138
|
// Desktop: vertical column list
|
|
2158
2139
|
menuList: {
|
|
2140
|
+
height: "100%",
|
|
2159
2141
|
display: "flex",
|
|
2160
2142
|
flexDirection: "column",
|
|
2161
|
-
justifyContent: "space-
|
|
2143
|
+
justifyContent: "space-between",
|
|
2162
2144
|
// Tablet + Mobile: horizontal scroll row
|
|
2163
2145
|
[`@media (${BP_TABLET2})`]: {
|
|
2146
|
+
justifyContent: "space-around",
|
|
2164
2147
|
flexDirection: "row",
|
|
2165
2148
|
overflowX: "auto",
|
|
2166
2149
|
overflowY: "visible",
|
|
@@ -2171,7 +2154,8 @@ var useStyles7 = reactComponents.makeStyles({
|
|
|
2171
2154
|
scrollbarWidth: "thin"
|
|
2172
2155
|
},
|
|
2173
2156
|
[`@media (${BP_MOBILE2})`]: {
|
|
2174
|
-
scrollbarWidth: "none"
|
|
2157
|
+
scrollbarWidth: "none",
|
|
2158
|
+
justifyContent: "space-around"
|
|
2175
2159
|
}
|
|
2176
2160
|
},
|
|
2177
2161
|
// Desktop: full-width horizontal row (icon left, text right)
|
|
@@ -2180,7 +2164,7 @@ var useStyles7 = reactComponents.makeStyles({
|
|
|
2180
2164
|
flexDirection: "row",
|
|
2181
2165
|
alignItems: "center",
|
|
2182
2166
|
justifyContent: "flex-start",
|
|
2183
|
-
padding:
|
|
2167
|
+
padding: reactComponents.tokens.spacingHorizontalS,
|
|
2184
2168
|
borderRadius: reactComponents.tokens.borderRadiusMedium,
|
|
2185
2169
|
cursor: "pointer",
|
|
2186
2170
|
textAlign: "left",
|
|
@@ -2190,6 +2174,7 @@ var useStyles7 = reactComponents.makeStyles({
|
|
|
2190
2174
|
border: "none",
|
|
2191
2175
|
gap: "12px",
|
|
2192
2176
|
width: "100%",
|
|
2177
|
+
height: "100%",
|
|
2193
2178
|
"&:hover": {
|
|
2194
2179
|
backgroundColor: brandColors["140"]
|
|
2195
2180
|
},
|
|
@@ -2243,8 +2228,8 @@ var useStyles7 = reactComponents.makeStyles({
|
|
|
2243
2228
|
}
|
|
2244
2229
|
},
|
|
2245
2230
|
logo: {
|
|
2246
|
-
height: "
|
|
2247
|
-
width: "
|
|
2231
|
+
height: "35px",
|
|
2232
|
+
width: "35px",
|
|
2248
2233
|
flexShrink: 0,
|
|
2249
2234
|
objectFit: "contain",
|
|
2250
2235
|
[`@media (${BP_TABLET2})`]: {
|
|
@@ -2294,7 +2279,7 @@ var useStyles7 = reactComponents.makeStyles({
|
|
|
2294
2279
|
WebkitBoxOrient: "vertical",
|
|
2295
2280
|
overflow: "hidden",
|
|
2296
2281
|
textOverflow: "ellipsis",
|
|
2297
|
-
lineHeight: "
|
|
2282
|
+
lineHeight: "18px",
|
|
2298
2283
|
// Tablet: 1-line clamp, compact
|
|
2299
2284
|
[`@media (${BP_TABLET2})`]: {
|
|
2300
2285
|
fontSize: reactComponents.tokens.fontSizeBase100,
|
|
@@ -2355,82 +2340,71 @@ var CardServiceMenu = ({
|
|
|
2355
2340
|
const displayItems = isOverflow ? menuItems.slice(0, MAX_ITEMS - 1) : menuItems;
|
|
2356
2341
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2357
2342
|
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: reactComponents.mergeClasses(styles.card, className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.menuList, children: [
|
|
2358
|
-
isLoading ? Array.from({ length: skeletonCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.
|
|
2359
|
-
|
|
2360
|
-
|
|
2343
|
+
isLoading ? Array.from({ length: skeletonCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(React__default.default.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2344
|
+
"div",
|
|
2345
|
+
{
|
|
2346
|
+
className: reactComponents.mergeClasses(
|
|
2347
|
+
styles.menuItem,
|
|
2348
|
+
styles.skeletonOverride
|
|
2349
|
+
),
|
|
2350
|
+
children: [
|
|
2351
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2352
|
+
reactComponents.SkeletonItem,
|
|
2353
|
+
{
|
|
2354
|
+
className: styles.logo,
|
|
2355
|
+
style: { borderRadius: "50%" }
|
|
2356
|
+
}
|
|
2357
|
+
) }) }),
|
|
2358
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
|
|
2359
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2360
|
+
reactComponents.SkeletonItem,
|
|
2361
|
+
{
|
|
2362
|
+
style: { width: "60%", height: "16px" }
|
|
2363
|
+
}
|
|
2364
|
+
) }),
|
|
2365
|
+
showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { className: styles.description, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2366
|
+
reactComponents.SkeletonItem,
|
|
2367
|
+
{
|
|
2368
|
+
style: {
|
|
2369
|
+
width: "90%",
|
|
2370
|
+
height: "12px",
|
|
2371
|
+
marginTop: "4px"
|
|
2372
|
+
}
|
|
2373
|
+
}
|
|
2374
|
+
) })
|
|
2375
|
+
] })
|
|
2376
|
+
]
|
|
2377
|
+
}
|
|
2378
|
+
) }, `skeleton-${index}`)) : displayItems.map((item, index) => {
|
|
2379
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2380
|
+
reactComponents.Button,
|
|
2361
2381
|
{
|
|
2362
|
-
className:
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
),
|
|
2382
|
+
className: getMenuItemClass(item.id),
|
|
2383
|
+
onClick: () => onServiceClick?.(item.id),
|
|
2384
|
+
"aria-label": item.name,
|
|
2366
2385
|
children: [
|
|
2367
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2368
|
-
|
|
2386
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2387
|
+
"img",
|
|
2369
2388
|
{
|
|
2370
|
-
|
|
2371
|
-
|
|
2389
|
+
src: item.imageUrl,
|
|
2390
|
+
alt: item.name,
|
|
2391
|
+
className: styles.logo
|
|
2372
2392
|
}
|
|
2373
|
-
) })
|
|
2393
|
+
) }),
|
|
2374
2394
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
|
|
2375
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
style: { width: "60%", height: "16px" }
|
|
2379
|
-
}
|
|
2380
|
-
) }),
|
|
2381
|
-
showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { className: styles.description, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2382
|
-
reactComponents.SkeletonItem,
|
|
2395
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: item.name }),
|
|
2396
|
+
showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2397
|
+
MenuItemDescription,
|
|
2383
2398
|
{
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
height: "12px",
|
|
2387
|
-
marginTop: "4px"
|
|
2388
|
-
}
|
|
2399
|
+
description: item.description,
|
|
2400
|
+
className: styles.description
|
|
2389
2401
|
}
|
|
2390
|
-
)
|
|
2402
|
+
)
|
|
2391
2403
|
] })
|
|
2392
2404
|
]
|
|
2393
|
-
}
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
|
|
2397
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
|
|
2398
|
-
] })
|
|
2399
|
-
] }, `skeleton-${index}`)) : displayItems.map((item, index) => {
|
|
2400
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
|
|
2401
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2402
|
-
reactComponents.Button,
|
|
2403
|
-
{
|
|
2404
|
-
className: getMenuItemClass(item.id),
|
|
2405
|
-
onClick: () => onServiceClick?.(item.id),
|
|
2406
|
-
"aria-label": item.name,
|
|
2407
|
-
children: [
|
|
2408
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2409
|
-
"img",
|
|
2410
|
-
{
|
|
2411
|
-
src: item.imageUrl,
|
|
2412
|
-
alt: item.name,
|
|
2413
|
-
className: styles.logo
|
|
2414
|
-
}
|
|
2415
|
-
) }),
|
|
2416
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
|
|
2417
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: item.name }),
|
|
2418
|
-
showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2419
|
-
MenuItemDescription,
|
|
2420
|
-
{
|
|
2421
|
-
description: item.description,
|
|
2422
|
-
className: styles.description
|
|
2423
|
-
}
|
|
2424
|
-
)
|
|
2425
|
-
] })
|
|
2426
|
-
]
|
|
2427
|
-
}
|
|
2428
|
-
),
|
|
2429
|
-
(index < displayItems.length - 1 || isOverflow) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2430
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
|
|
2431
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
|
|
2432
|
-
] })
|
|
2433
|
-
] }, item.id);
|
|
2405
|
+
},
|
|
2406
|
+
index
|
|
2407
|
+
) });
|
|
2434
2408
|
}),
|
|
2435
2409
|
!isLoading && isOverflow && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2436
2410
|
reactComponents.Button,
|
|
@@ -2448,7 +2422,7 @@ var CardServiceMenu = ({
|
|
|
2448
2422
|
}
|
|
2449
2423
|
) }) }),
|
|
2450
2424
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
|
|
2451
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2425
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.otherLabel }),
|
|
2452
2426
|
showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2453
2427
|
MenuItemDescription,
|
|
2454
2428
|
{
|
|
@@ -2628,6 +2602,1020 @@ DatePickerInput.displayName = "DatePickerInput";
|
|
|
2628
2602
|
var DatePickerInput_default = DatePickerInput;
|
|
2629
2603
|
|
|
2630
2604
|
// src/components/InputDynamic/InputDynamic.constants.ts
|
|
2605
|
+
var CONTROL_KEYS = [
|
|
2606
|
+
"Backspace",
|
|
2607
|
+
"Delete",
|
|
2608
|
+
"Enter",
|
|
2609
|
+
"Tab",
|
|
2610
|
+
"Escape",
|
|
2611
|
+
"ArrowLeft",
|
|
2612
|
+
"ArrowRight",
|
|
2613
|
+
"ArrowUp",
|
|
2614
|
+
"ArrowDown",
|
|
2615
|
+
"Home",
|
|
2616
|
+
"End",
|
|
2617
|
+
"Shift",
|
|
2618
|
+
"Control",
|
|
2619
|
+
"Alt",
|
|
2620
|
+
"Meta",
|
|
2621
|
+
"CapsLock",
|
|
2622
|
+
"F1",
|
|
2623
|
+
"F2",
|
|
2624
|
+
"F3",
|
|
2625
|
+
"F4",
|
|
2626
|
+
"F5",
|
|
2627
|
+
"F6",
|
|
2628
|
+
"F7",
|
|
2629
|
+
"F8",
|
|
2630
|
+
"F9",
|
|
2631
|
+
"F10",
|
|
2632
|
+
"F11",
|
|
2633
|
+
"F12"
|
|
2634
|
+
];
|
|
2635
|
+
var PHONE_MIN_DIGITS = 4;
|
|
2636
|
+
var PHONE_MAX_DIGITS = 15;
|
|
2637
|
+
var EMAIL_REGEX = /^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/i;
|
|
2638
|
+
var DIGITS_ONLY_REGEX = /^[0-9]+$/;
|
|
2639
|
+
var stripNonDigits = (value) => value.replace(/\D/g, "");
|
|
2640
|
+
var removeLeadingZeroAfterDialCode = (value, knownDialCode) => {
|
|
2641
|
+
if (!value) return value;
|
|
2642
|
+
const str = String(value);
|
|
2643
|
+
if (knownDialCode) {
|
|
2644
|
+
if (str.startsWith(knownDialCode) && str[knownDialCode.length] === "0") {
|
|
2645
|
+
return knownDialCode + str.slice(knownDialCode.length + 1);
|
|
2646
|
+
}
|
|
2647
|
+
return str;
|
|
2648
|
+
}
|
|
2649
|
+
const match = str.match(/^(\d{1,4})(0)(\d+)$/);
|
|
2650
|
+
if (match) return match[1] + match[3];
|
|
2651
|
+
return str;
|
|
2652
|
+
};
|
|
2653
|
+
var normalizeRawPhoneInput = (value) => {
|
|
2654
|
+
if (!value) return value;
|
|
2655
|
+
const trimmed = value.trim();
|
|
2656
|
+
if (trimmed.startsWith("+")) {
|
|
2657
|
+
const digits = stripNonDigits(trimmed.slice(1));
|
|
2658
|
+
return "+" + digits;
|
|
2659
|
+
}
|
|
2660
|
+
return stripNonDigits(trimmed);
|
|
2661
|
+
};
|
|
2662
|
+
var COUNTRY_DIAL_CODES = {
|
|
2663
|
+
AC: "247",
|
|
2664
|
+
AD: "376",
|
|
2665
|
+
AE: "971",
|
|
2666
|
+
AF: "93",
|
|
2667
|
+
AG: "1268",
|
|
2668
|
+
AI: "1264",
|
|
2669
|
+
AL: "355",
|
|
2670
|
+
AM: "374",
|
|
2671
|
+
AO: "244",
|
|
2672
|
+
AQ: "672",
|
|
2673
|
+
AR: "54",
|
|
2674
|
+
AS: "1684",
|
|
2675
|
+
AT: "43",
|
|
2676
|
+
AU: "61",
|
|
2677
|
+
AW: "297",
|
|
2678
|
+
AX: "358",
|
|
2679
|
+
AZ: "994",
|
|
2680
|
+
BA: "387",
|
|
2681
|
+
BB: "1246",
|
|
2682
|
+
BD: "880",
|
|
2683
|
+
BE: "32",
|
|
2684
|
+
BF: "226",
|
|
2685
|
+
BG: "359",
|
|
2686
|
+
BH: "973",
|
|
2687
|
+
BI: "257",
|
|
2688
|
+
BJ: "229",
|
|
2689
|
+
BL: "590",
|
|
2690
|
+
BM: "1441",
|
|
2691
|
+
BN: "673",
|
|
2692
|
+
BO: "591",
|
|
2693
|
+
BQ: "599",
|
|
2694
|
+
BR: "55",
|
|
2695
|
+
BS: "1242",
|
|
2696
|
+
BT: "975",
|
|
2697
|
+
BW: "267",
|
|
2698
|
+
BY: "375",
|
|
2699
|
+
BZ: "501",
|
|
2700
|
+
CA: "1",
|
|
2701
|
+
CC: "61",
|
|
2702
|
+
CD: "243",
|
|
2703
|
+
CF: "236",
|
|
2704
|
+
CG: "242",
|
|
2705
|
+
CH: "41",
|
|
2706
|
+
CI: "225",
|
|
2707
|
+
CK: "682",
|
|
2708
|
+
CL: "56",
|
|
2709
|
+
CM: "237",
|
|
2710
|
+
CN: "86",
|
|
2711
|
+
CO: "57",
|
|
2712
|
+
CR: "506",
|
|
2713
|
+
CU: "53",
|
|
2714
|
+
CV: "238",
|
|
2715
|
+
CW: "599",
|
|
2716
|
+
CX: "61",
|
|
2717
|
+
CY: "357",
|
|
2718
|
+
CZ: "420",
|
|
2719
|
+
DE: "49",
|
|
2720
|
+
DJ: "253",
|
|
2721
|
+
DK: "45",
|
|
2722
|
+
DM: "1767",
|
|
2723
|
+
DO: "1809",
|
|
2724
|
+
DZ: "213",
|
|
2725
|
+
EC: "593",
|
|
2726
|
+
EE: "372",
|
|
2727
|
+
EG: "20",
|
|
2728
|
+
EH: "212",
|
|
2729
|
+
ER: "291",
|
|
2730
|
+
ES: "34",
|
|
2731
|
+
ET: "251",
|
|
2732
|
+
FI: "358",
|
|
2733
|
+
FJ: "679",
|
|
2734
|
+
FK: "500",
|
|
2735
|
+
FM: "691",
|
|
2736
|
+
FO: "298",
|
|
2737
|
+
FR: "33",
|
|
2738
|
+
GA: "241",
|
|
2739
|
+
GB: "44",
|
|
2740
|
+
GD: "1473",
|
|
2741
|
+
GE: "995",
|
|
2742
|
+
GF: "594",
|
|
2743
|
+
GG: "44",
|
|
2744
|
+
GH: "233",
|
|
2745
|
+
GI: "350",
|
|
2746
|
+
GL: "299",
|
|
2747
|
+
GM: "220",
|
|
2748
|
+
GN: "224",
|
|
2749
|
+
GP: "590",
|
|
2750
|
+
GQ: "240",
|
|
2751
|
+
GR: "30",
|
|
2752
|
+
GS: "500",
|
|
2753
|
+
GT: "502",
|
|
2754
|
+
GU: "1671",
|
|
2755
|
+
GW: "245",
|
|
2756
|
+
GY: "592",
|
|
2757
|
+
HK: "852",
|
|
2758
|
+
HM: "672",
|
|
2759
|
+
HN: "504",
|
|
2760
|
+
HR: "385",
|
|
2761
|
+
HT: "509",
|
|
2762
|
+
HU: "36",
|
|
2763
|
+
ID: "62",
|
|
2764
|
+
IE: "353",
|
|
2765
|
+
IL: "972",
|
|
2766
|
+
IM: "44",
|
|
2767
|
+
IN: "91",
|
|
2768
|
+
IO: "246",
|
|
2769
|
+
IQ: "964",
|
|
2770
|
+
IR: "98",
|
|
2771
|
+
IS: "354",
|
|
2772
|
+
IT: "39",
|
|
2773
|
+
JE: "44",
|
|
2774
|
+
JM: "1876",
|
|
2775
|
+
JO: "962",
|
|
2776
|
+
JP: "81",
|
|
2777
|
+
KE: "254",
|
|
2778
|
+
KG: "996",
|
|
2779
|
+
KH: "855",
|
|
2780
|
+
KI: "686",
|
|
2781
|
+
KM: "269",
|
|
2782
|
+
KN: "1869",
|
|
2783
|
+
KP: "850",
|
|
2784
|
+
KR: "82",
|
|
2785
|
+
KW: "965",
|
|
2786
|
+
KY: "1345",
|
|
2787
|
+
KZ: "7",
|
|
2788
|
+
LA: "856",
|
|
2789
|
+
LB: "961",
|
|
2790
|
+
LC: "1758",
|
|
2791
|
+
LI: "423",
|
|
2792
|
+
LK: "94",
|
|
2793
|
+
LR: "231",
|
|
2794
|
+
LS: "266",
|
|
2795
|
+
LT: "370",
|
|
2796
|
+
LU: "352",
|
|
2797
|
+
LV: "371",
|
|
2798
|
+
LY: "218",
|
|
2799
|
+
MA: "212",
|
|
2800
|
+
MC: "377",
|
|
2801
|
+
MD: "373",
|
|
2802
|
+
ME: "382",
|
|
2803
|
+
MF: "590",
|
|
2804
|
+
MG: "261",
|
|
2805
|
+
MH: "692",
|
|
2806
|
+
MK: "389",
|
|
2807
|
+
ML: "223",
|
|
2808
|
+
MM: "95",
|
|
2809
|
+
MN: "976",
|
|
2810
|
+
MO: "853",
|
|
2811
|
+
MP: "1670",
|
|
2812
|
+
MQ: "596",
|
|
2813
|
+
MR: "222",
|
|
2814
|
+
MS: "1664",
|
|
2815
|
+
MT: "356",
|
|
2816
|
+
MU: "230",
|
|
2817
|
+
MV: "960",
|
|
2818
|
+
MW: "265",
|
|
2819
|
+
MX: "52",
|
|
2820
|
+
MY: "60",
|
|
2821
|
+
MZ: "258",
|
|
2822
|
+
NA: "264",
|
|
2823
|
+
NC: "687",
|
|
2824
|
+
NE: "227",
|
|
2825
|
+
NF: "672",
|
|
2826
|
+
NG: "234",
|
|
2827
|
+
NI: "505",
|
|
2828
|
+
NL: "31",
|
|
2829
|
+
NO: "47",
|
|
2830
|
+
NP: "977",
|
|
2831
|
+
NR: "674",
|
|
2832
|
+
NU: "683",
|
|
2833
|
+
NZ: "64",
|
|
2834
|
+
OM: "968",
|
|
2835
|
+
PA: "507",
|
|
2836
|
+
PE: "51",
|
|
2837
|
+
PF: "689",
|
|
2838
|
+
PG: "675",
|
|
2839
|
+
PH: "63",
|
|
2840
|
+
PK: "92",
|
|
2841
|
+
PL: "48",
|
|
2842
|
+
PM: "508",
|
|
2843
|
+
PR: "1787",
|
|
2844
|
+
PS: "970",
|
|
2845
|
+
PT: "351",
|
|
2846
|
+
PW: "680",
|
|
2847
|
+
PY: "595",
|
|
2848
|
+
QA: "974",
|
|
2849
|
+
RE: "262",
|
|
2850
|
+
RO: "40",
|
|
2851
|
+
RS: "381",
|
|
2852
|
+
RU: "7",
|
|
2853
|
+
RW: "250",
|
|
2854
|
+
SA: "966",
|
|
2855
|
+
SB: "677",
|
|
2856
|
+
SC: "248",
|
|
2857
|
+
SD: "249",
|
|
2858
|
+
SE: "46",
|
|
2859
|
+
SG: "65",
|
|
2860
|
+
SH: "290",
|
|
2861
|
+
SI: "386",
|
|
2862
|
+
SJ: "47",
|
|
2863
|
+
SK: "421",
|
|
2864
|
+
SL: "232",
|
|
2865
|
+
SM: "378",
|
|
2866
|
+
SN: "221",
|
|
2867
|
+
SO: "252",
|
|
2868
|
+
SR: "597",
|
|
2869
|
+
SS: "211",
|
|
2870
|
+
ST: "239",
|
|
2871
|
+
SV: "503",
|
|
2872
|
+
SX: "1721",
|
|
2873
|
+
SY: "963",
|
|
2874
|
+
SZ: "268",
|
|
2875
|
+
TC: "1649",
|
|
2876
|
+
TD: "235",
|
|
2877
|
+
TF: "262",
|
|
2878
|
+
TG: "228",
|
|
2879
|
+
TH: "66",
|
|
2880
|
+
TJ: "992",
|
|
2881
|
+
TK: "690",
|
|
2882
|
+
TL: "670",
|
|
2883
|
+
TM: "993",
|
|
2884
|
+
TN: "216",
|
|
2885
|
+
TO: "676",
|
|
2886
|
+
TR: "90",
|
|
2887
|
+
TT: "1868",
|
|
2888
|
+
TV: "688",
|
|
2889
|
+
TW: "886",
|
|
2890
|
+
TZ: "255",
|
|
2891
|
+
UA: "380",
|
|
2892
|
+
UG: "256",
|
|
2893
|
+
US: "1",
|
|
2894
|
+
UY: "598",
|
|
2895
|
+
UZ: "998",
|
|
2896
|
+
VA: "379",
|
|
2897
|
+
VC: "1784",
|
|
2898
|
+
VE: "58",
|
|
2899
|
+
VG: "1284",
|
|
2900
|
+
VI: "1340",
|
|
2901
|
+
VN: "84",
|
|
2902
|
+
VU: "678",
|
|
2903
|
+
WF: "681",
|
|
2904
|
+
WS: "685",
|
|
2905
|
+
YE: "967",
|
|
2906
|
+
YT: "262",
|
|
2907
|
+
ZA: "27",
|
|
2908
|
+
ZM: "260",
|
|
2909
|
+
ZW: "263"
|
|
2910
|
+
};
|
|
2911
|
+
var getDialCode = (isoCode) => {
|
|
2912
|
+
if (!isoCode) return null;
|
|
2913
|
+
return COUNTRY_DIAL_CODES[isoCode.toUpperCase()] ?? null;
|
|
2914
|
+
};
|
|
2915
|
+
var LOCAL_TRUNK_TO_DIAL = [
|
|
2916
|
+
{ prefix: "08", dialCode: "62" }
|
|
2917
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
2918
|
+
// ASIA
|
|
2919
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
2920
|
+
// ── Indonesia (+62) ────────────────────────────────────────────────────
|
|
2921
|
+
// Telkomsel
|
|
2922
|
+
// { prefix: '0811', dialCode: '62' }, { prefix: '0812', dialCode: '62' },
|
|
2923
|
+
// { prefix: '0813', dialCode: '62' }, { prefix: '0821', dialCode: '62' },
|
|
2924
|
+
// { prefix: '0822', dialCode: '62' }, { prefix: '0823', dialCode: '62' },
|
|
2925
|
+
// { prefix: '0851', dialCode: '62' }, { prefix: '0852', dialCode: '62' },
|
|
2926
|
+
// { prefix: '0853', dialCode: '62' },
|
|
2927
|
+
// // Indosat Ooredoo
|
|
2928
|
+
// { prefix: '0814', dialCode: '62' }, { prefix: '0815', dialCode: '62' },
|
|
2929
|
+
// { prefix: '0816', dialCode: '62' }, { prefix: '0855', dialCode: '62' },
|
|
2930
|
+
// { prefix: '0856', dialCode: '62' }, { prefix: '0857', dialCode: '62' },
|
|
2931
|
+
// { prefix: '0858', dialCode: '62' },
|
|
2932
|
+
// // XL Axiata
|
|
2933
|
+
// { prefix: '0817', dialCode: '62' }, { prefix: '0818', dialCode: '62' },
|
|
2934
|
+
// { prefix: '0819', dialCode: '62' }, { prefix: '0859', dialCode: '62' },
|
|
2935
|
+
// { prefix: '0877', dialCode: '62' }, { prefix: '0878', dialCode: '62' },
|
|
2936
|
+
// // Axis
|
|
2937
|
+
// { prefix: '0831', dialCode: '62' }, { prefix: '0832', dialCode: '62' },
|
|
2938
|
+
// { prefix: '0833', dialCode: '62' }, { prefix: '0838', dialCode: '62' },
|
|
2939
|
+
// // Tri (3)
|
|
2940
|
+
// { prefix: '0895', dialCode: '62' }, { prefix: '0896', dialCode: '62' },
|
|
2941
|
+
// { prefix: '0897', dialCode: '62' }, { prefix: '0898', dialCode: '62' },
|
|
2942
|
+
// { prefix: '0899', dialCode: '62' },
|
|
2943
|
+
// // Smartfren
|
|
2944
|
+
// { prefix: '0881', dialCode: '62' }, { prefix: '0882', dialCode: '62' },
|
|
2945
|
+
// { prefix: '0883', dialCode: '62' }, { prefix: '0884', dialCode: '62' },
|
|
2946
|
+
// { prefix: '0885', dialCode: '62' }, { prefix: '0886', dialCode: '62' },
|
|
2947
|
+
// { prefix: '0887', dialCode: '62' }, { prefix: '0888', dialCode: '62' },
|
|
2948
|
+
// { prefix: '0889', dialCode: '62' },
|
|
2949
|
+
// // Byru / Hinet / other
|
|
2950
|
+
// { prefix: '0891', dialCode: '62' }, { prefix: '0892', dialCode: '62' },
|
|
2951
|
+
// { prefix: '0893', dialCode: '62' }, { prefix: '0894', dialCode: '62' },
|
|
2952
|
+
// // Fixed / PSTN area codes (trunk 0 + area code)
|
|
2953
|
+
// { prefix: '021', dialCode: '62' }, // Jakarta
|
|
2954
|
+
// { prefix: '022', dialCode: '62' }, // Bandung
|
|
2955
|
+
// { prefix: '024', dialCode: '62' }, // Semarang
|
|
2956
|
+
// { prefix: '031', dialCode: '62' }, // Surabaya
|
|
2957
|
+
// // ── Malaysia (+60) ─────────────────────────────────────────────────────
|
|
2958
|
+
// // Must appear before UK 2-char "01x" entries
|
|
2959
|
+
// { prefix: '010', dialCode: '60' }, // Maxis (010x)
|
|
2960
|
+
// { prefix: '011', dialCode: '60' }, // Celcom, Maxis, Digi, U Mobile
|
|
2961
|
+
// { prefix: '012', dialCode: '60' }, // Maxis
|
|
2962
|
+
// { prefix: '013', dialCode: '60' }, // Celcom
|
|
2963
|
+
// { prefix: '014', dialCode: '60' }, // Digi / U Mobile
|
|
2964
|
+
// { prefix: '015', dialCode: '60' }, // U Mobile
|
|
2965
|
+
// { prefix: '016', dialCode: '60' }, // Maxis
|
|
2966
|
+
// { prefix: '017', dialCode: '60' }, // Celcom
|
|
2967
|
+
// { prefix: '018', dialCode: '60' }, // Digi
|
|
2968
|
+
// { prefix: '019', dialCode: '60' }, // Maxis
|
|
2969
|
+
// // Fixed
|
|
2970
|
+
// { prefix: '03', dialCode: '60' }, // Kuala Lumpur / Selangor
|
|
2971
|
+
// // ── Japan (+81) ────────────────────────────────────────────────────────
|
|
2972
|
+
// { prefix: '070', dialCode: '81' }, // MVNO / data SIM
|
|
2973
|
+
// { prefix: '080', dialCode: '81' }, // Softbank / au / NTT Docomo
|
|
2974
|
+
// { prefix: '090', dialCode: '81' }, // NTT Docomo / au / Softbank
|
|
2975
|
+
// // ── China (+86) ────────────────────────────────────────────────────────
|
|
2976
|
+
// // China Mobile
|
|
2977
|
+
// { prefix: '0134', dialCode: '86' }, { prefix: '0135', dialCode: '86' },
|
|
2978
|
+
// { prefix: '0136', dialCode: '86' }, { prefix: '0137', dialCode: '86' },
|
|
2979
|
+
// { prefix: '0138', dialCode: '86' }, { prefix: '0139', dialCode: '86' },
|
|
2980
|
+
// { prefix: '0147', dialCode: '86' }, { prefix: '0150', dialCode: '86' },
|
|
2981
|
+
// { prefix: '0151', dialCode: '86' }, { prefix: '0152', dialCode: '86' },
|
|
2982
|
+
// { prefix: '0157', dialCode: '86' }, { prefix: '0158', dialCode: '86' },
|
|
2983
|
+
// { prefix: '0159', dialCode: '86' }, { prefix: '0165', dialCode: '86' },
|
|
2984
|
+
// { prefix: '0172', dialCode: '86' }, { prefix: '0178', dialCode: '86' },
|
|
2985
|
+
// { prefix: '0182', dialCode: '86' }, { prefix: '0183', dialCode: '86' },
|
|
2986
|
+
// { prefix: '0184', dialCode: '86' }, { prefix: '0187', dialCode: '86' },
|
|
2987
|
+
// { prefix: '0188', dialCode: '86' },
|
|
2988
|
+
// // China Unicom
|
|
2989
|
+
// { prefix: '0130', dialCode: '86' }, { prefix: '0131', dialCode: '86' },
|
|
2990
|
+
// { prefix: '0132', dialCode: '86' }, { prefix: '0145', dialCode: '86' },
|
|
2991
|
+
// { prefix: '0155', dialCode: '86' }, { prefix: '0156', dialCode: '86' },
|
|
2992
|
+
// { prefix: '0166', dialCode: '86' }, { prefix: '0167', dialCode: '86' },
|
|
2993
|
+
// { prefix: '0175', dialCode: '86' }, { prefix: '0176', dialCode: '86' },
|
|
2994
|
+
// { prefix: '0185', dialCode: '86' }, { prefix: '0186', dialCode: '86' },
|
|
2995
|
+
// // China Telecom
|
|
2996
|
+
// { prefix: '0133', dialCode: '86' }, { prefix: '0149', dialCode: '86' },
|
|
2997
|
+
// { prefix: '0153', dialCode: '86' }, { prefix: '0162', dialCode: '86' },
|
|
2998
|
+
// { prefix: '0173', dialCode: '86' }, { prefix: '0174', dialCode: '86' },
|
|
2999
|
+
// { prefix: '0177', dialCode: '86' }, { prefix: '0180', dialCode: '86' },
|
|
3000
|
+
// { prefix: '0181', dialCode: '86' }, { prefix: '0189', dialCode: '86' },
|
|
3001
|
+
// // Note: China uses 0 trunk then 11-digit mobile (0 + 10-digit); match on 4-char prefix
|
|
3002
|
+
// // ── India (+91) ────────────────────────────────────────────────────────
|
|
3003
|
+
// { prefix: '060', dialCode: '91' }, { prefix: '061', dialCode: '91' },
|
|
3004
|
+
// { prefix: '062', dialCode: '91' }, { prefix: '063', dialCode: '91' },
|
|
3005
|
+
// { prefix: '064', dialCode: '91' }, { prefix: '065', dialCode: '91' },
|
|
3006
|
+
// { prefix: '066', dialCode: '91' }, { prefix: '067', dialCode: '91' },
|
|
3007
|
+
// { prefix: '068', dialCode: '91' }, { prefix: '069', dialCode: '91' },
|
|
3008
|
+
// { prefix: '070', dialCode: '91' }, { prefix: '071', dialCode: '91' },
|
|
3009
|
+
// { prefix: '072', dialCode: '91' }, { prefix: '073', dialCode: '91' },
|
|
3010
|
+
// { prefix: '074', dialCode: '91' }, { prefix: '075', dialCode: '91' },
|
|
3011
|
+
// { prefix: '076', dialCode: '91' }, { prefix: '077', dialCode: '91' },
|
|
3012
|
+
// { prefix: '078', dialCode: '91' }, { prefix: '079', dialCode: '91' },
|
|
3013
|
+
// { prefix: '080', dialCode: '91' }, { prefix: '081', dialCode: '91' },
|
|
3014
|
+
// { prefix: '082', dialCode: '91' }, { prefix: '083', dialCode: '91' },
|
|
3015
|
+
// { prefix: '084', dialCode: '91' }, { prefix: '085', dialCode: '91' },
|
|
3016
|
+
// { prefix: '086', dialCode: '91' }, { prefix: '087', dialCode: '91' },
|
|
3017
|
+
// { prefix: '088', dialCode: '91' }, { prefix: '089', dialCode: '91' },
|
|
3018
|
+
// { prefix: '090', dialCode: '91' }, { prefix: '091', dialCode: '91' },
|
|
3019
|
+
// { prefix: '092', dialCode: '91' }, { prefix: '093', dialCode: '91' },
|
|
3020
|
+
// { prefix: '094', dialCode: '91' }, { prefix: '095', dialCode: '91' },
|
|
3021
|
+
// { prefix: '096', dialCode: '91' }, { prefix: '097', dialCode: '91' },
|
|
3022
|
+
// { prefix: '098', dialCode: '91' }, { prefix: '099', dialCode: '91' },
|
|
3023
|
+
// // ── Pakistan (+92) ─────────────────────────────────────────────────────
|
|
3024
|
+
// { prefix: '0300', dialCode: '92' }, { prefix: '0301', dialCode: '92' },
|
|
3025
|
+
// { prefix: '0302', dialCode: '92' }, { prefix: '0303', dialCode: '92' },
|
|
3026
|
+
// { prefix: '0304', dialCode: '92' }, { prefix: '0305', dialCode: '92' },
|
|
3027
|
+
// { prefix: '0306', dialCode: '92' }, { prefix: '0307', dialCode: '92' },
|
|
3028
|
+
// { prefix: '0308', dialCode: '92' }, { prefix: '0309', dialCode: '92' },
|
|
3029
|
+
// { prefix: '0310', dialCode: '92' }, { prefix: '0311', dialCode: '92' },
|
|
3030
|
+
// { prefix: '0312', dialCode: '92' }, { prefix: '0313', dialCode: '92' },
|
|
3031
|
+
// { prefix: '0314', dialCode: '92' }, { prefix: '0315', dialCode: '92' },
|
|
3032
|
+
// { prefix: '0316', dialCode: '92' }, { prefix: '0317', dialCode: '92' },
|
|
3033
|
+
// { prefix: '0318', dialCode: '92' }, { prefix: '0319', dialCode: '92' },
|
|
3034
|
+
// { prefix: '0320', dialCode: '92' }, { prefix: '0321', dialCode: '92' },
|
|
3035
|
+
// { prefix: '0322', dialCode: '92' }, { prefix: '0323', dialCode: '92' },
|
|
3036
|
+
// { prefix: '0324', dialCode: '92' }, { prefix: '0325', dialCode: '92' },
|
|
3037
|
+
// { prefix: '0326', dialCode: '92' }, { prefix: '0327', dialCode: '92' },
|
|
3038
|
+
// { prefix: '0328', dialCode: '92' }, { prefix: '0329', dialCode: '92' },
|
|
3039
|
+
// { prefix: '0330', dialCode: '92' }, { prefix: '0331', dialCode: '92' },
|
|
3040
|
+
// { prefix: '0332', dialCode: '92' }, { prefix: '0333', dialCode: '92' },
|
|
3041
|
+
// { prefix: '0334', dialCode: '92' }, { prefix: '0335', dialCode: '92' },
|
|
3042
|
+
// { prefix: '0336', dialCode: '92' }, { prefix: '0337', dialCode: '92' },
|
|
3043
|
+
// { prefix: '0338', dialCode: '92' }, { prefix: '0339', dialCode: '92' },
|
|
3044
|
+
// { prefix: '0340', dialCode: '92' }, { prefix: '0341', dialCode: '92' },
|
|
3045
|
+
// { prefix: '0342', dialCode: '92' }, { prefix: '0343', dialCode: '92' },
|
|
3046
|
+
// { prefix: '0344', dialCode: '92' }, { prefix: '0345', dialCode: '92' },
|
|
3047
|
+
// { prefix: '0346', dialCode: '92' }, { prefix: '0347', dialCode: '92' },
|
|
3048
|
+
// { prefix: '0348', dialCode: '92' }, { prefix: '0349', dialCode: '92' },
|
|
3049
|
+
// // ── Bangladesh (+880) ──────────────────────────────────────────────────
|
|
3050
|
+
// { prefix: '01311', dialCode: '880' }, { prefix: '01312', dialCode: '880' },
|
|
3051
|
+
// { prefix: '01313', dialCode: '880' }, { prefix: '01314', dialCode: '880' },
|
|
3052
|
+
// { prefix: '01315', dialCode: '880' }, { prefix: '01316', dialCode: '880' },
|
|
3053
|
+
// { prefix: '01317', dialCode: '880' }, { prefix: '01318', dialCode: '880' },
|
|
3054
|
+
// { prefix: '01319', dialCode: '880' }, // Teletalk
|
|
3055
|
+
// { prefix: '01400', dialCode: '880' }, { prefix: '01401', dialCode: '880' },
|
|
3056
|
+
// { prefix: '01402', dialCode: '880' }, { prefix: '01403', dialCode: '880' },
|
|
3057
|
+
// { prefix: '01404', dialCode: '880' }, { prefix: '01405', dialCode: '880' }, // Robi
|
|
3058
|
+
// { prefix: '01500', dialCode: '880' }, { prefix: '01501', dialCode: '880' },
|
|
3059
|
+
// { prefix: '01502', dialCode: '880' }, { prefix: '01503', dialCode: '880' },
|
|
3060
|
+
// { prefix: '01504', dialCode: '880' }, { prefix: '01505', dialCode: '880' }, // Banglalink
|
|
3061
|
+
// { prefix: '01600', dialCode: '880' }, { prefix: '01601', dialCode: '880' },
|
|
3062
|
+
// { prefix: '01602', dialCode: '880' }, { prefix: '01603', dialCode: '880' }, // Robi
|
|
3063
|
+
// { prefix: '01700', dialCode: '880' }, { prefix: '01701', dialCode: '880' },
|
|
3064
|
+
// { prefix: '01702', dialCode: '880' }, { prefix: '01703', dialCode: '880' }, // Grameenphone
|
|
3065
|
+
// { prefix: '01711', dialCode: '880' }, { prefix: '01712', dialCode: '880' },
|
|
3066
|
+
// { prefix: '01713', dialCode: '880' }, { prefix: '01714', dialCode: '880' },
|
|
3067
|
+
// { prefix: '01715', dialCode: '880' }, { prefix: '01716', dialCode: '880' },
|
|
3068
|
+
// { prefix: '01717', dialCode: '880' }, { prefix: '01718', dialCode: '880' },
|
|
3069
|
+
// { prefix: '01719', dialCode: '880' }, // Grameenphone
|
|
3070
|
+
// { prefix: '01811', dialCode: '880' }, { prefix: '01812', dialCode: '880' },
|
|
3071
|
+
// { prefix: '01813', dialCode: '880' }, { prefix: '01814', dialCode: '880' },
|
|
3072
|
+
// { prefix: '01815', dialCode: '880' }, { prefix: '01816', dialCode: '880' },
|
|
3073
|
+
// { prefix: '01817', dialCode: '880' }, { prefix: '01818', dialCode: '880' },
|
|
3074
|
+
// { prefix: '01819', dialCode: '880' }, // Robi
|
|
3075
|
+
// { prefix: '01911', dialCode: '880' }, { prefix: '01912', dialCode: '880' },
|
|
3076
|
+
// { prefix: '01913', dialCode: '880' }, { prefix: '01914', dialCode: '880' },
|
|
3077
|
+
// { prefix: '01915', dialCode: '880' }, { prefix: '01916', dialCode: '880' },
|
|
3078
|
+
// { prefix: '01917', dialCode: '880' }, { prefix: '01918', dialCode: '880' },
|
|
3079
|
+
// { prefix: '01919', dialCode: '880' }, // Banglalink
|
|
3080
|
+
// // ── Philippines (+63) ──────────────────────────────────────────────────
|
|
3081
|
+
// // Globe / TM
|
|
3082
|
+
// { prefix: '0817', dialCode: '63' }, { prefix: '0905', dialCode: '63' },
|
|
3083
|
+
// { prefix: '0906', dialCode: '63' }, { prefix: '0907', dialCode: '63' },
|
|
3084
|
+
// { prefix: '0908', dialCode: '63' }, { prefix: '0909', dialCode: '63' },
|
|
3085
|
+
// { prefix: '0910', dialCode: '63' }, { prefix: '0915', dialCode: '63' },
|
|
3086
|
+
// { prefix: '0916', dialCode: '63' }, { prefix: '0917', dialCode: '63' },
|
|
3087
|
+
// { prefix: '0926', dialCode: '63' }, { prefix: '0927', dialCode: '63' },
|
|
3088
|
+
// { prefix: '0935', dialCode: '63' }, { prefix: '0936', dialCode: '63' },
|
|
3089
|
+
// { prefix: '0937', dialCode: '63' }, { prefix: '0945', dialCode: '63' },
|
|
3090
|
+
// { prefix: '0953', dialCode: '63' }, { prefix: '0954', dialCode: '63' },
|
|
3091
|
+
// { prefix: '0955', dialCode: '63' }, { prefix: '0956', dialCode: '63' },
|
|
3092
|
+
// { prefix: '0965', dialCode: '63' }, { prefix: '0966', dialCode: '63' },
|
|
3093
|
+
// { prefix: '0967', dialCode: '63' }, { prefix: '0975', dialCode: '63' },
|
|
3094
|
+
// { prefix: '0976', dialCode: '63' }, { prefix: '0977', dialCode: '63' },
|
|
3095
|
+
// { prefix: '0978', dialCode: '63' }, { prefix: '0979', dialCode: '63' },
|
|
3096
|
+
// { prefix: '0995', dialCode: '63' }, { prefix: '0996', dialCode: '63' },
|
|
3097
|
+
// { prefix: '0997', dialCode: '63' },
|
|
3098
|
+
// // SMART / TNT
|
|
3099
|
+
// { prefix: '0813', dialCode: '63' }, { prefix: '0908', dialCode: '63' },
|
|
3100
|
+
// { prefix: '0911', dialCode: '63' }, { prefix: '0912', dialCode: '63' },
|
|
3101
|
+
// { prefix: '0913', dialCode: '63' }, { prefix: '0914', dialCode: '63' },
|
|
3102
|
+
// { prefix: '0918', dialCode: '63' }, { prefix: '0919', dialCode: '63' },
|
|
3103
|
+
// { prefix: '0920', dialCode: '63' }, { prefix: '0921', dialCode: '63' },
|
|
3104
|
+
// { prefix: '0928', dialCode: '63' }, { prefix: '0929', dialCode: '63' },
|
|
3105
|
+
// { prefix: '0930', dialCode: '63' }, { prefix: '0938', dialCode: '63' },
|
|
3106
|
+
// { prefix: '0939', dialCode: '63' }, { prefix: '0940', dialCode: '63' },
|
|
3107
|
+
// { prefix: '0946', dialCode: '63' }, { prefix: '0947', dialCode: '63' },
|
|
3108
|
+
// { prefix: '0948', dialCode: '63' }, { prefix: '0949', dialCode: '63' },
|
|
3109
|
+
// { prefix: '0950', dialCode: '63' }, { prefix: '0989', dialCode: '63' },
|
|
3110
|
+
// { prefix: '0998', dialCode: '63' }, { prefix: '0999', dialCode: '63' },
|
|
3111
|
+
// // DITO
|
|
3112
|
+
// { prefix: '0895', dialCode: '63' }, { prefix: '0896', dialCode: '63' },
|
|
3113
|
+
// { prefix: '0897', dialCode: '63' }, { prefix: '0898', dialCode: '63' },
|
|
3114
|
+
// { prefix: '0991', dialCode: '63' }, { prefix: '0992', dialCode: '63' },
|
|
3115
|
+
// { prefix: '0993', dialCode: '63' }, { prefix: '0994', dialCode: '63' },
|
|
3116
|
+
// // ── Vietnam (+84) ──────────────────────────────────────────────────────
|
|
3117
|
+
// // Viettel
|
|
3118
|
+
// { prefix: '032', dialCode: '84' }, { prefix: '033', dialCode: '84' },
|
|
3119
|
+
// { prefix: '034', dialCode: '84' }, { prefix: '035', dialCode: '84' },
|
|
3120
|
+
// { prefix: '036', dialCode: '84' }, { prefix: '037', dialCode: '84' },
|
|
3121
|
+
// { prefix: '038', dialCode: '84' }, { prefix: '039', dialCode: '84' },
|
|
3122
|
+
// { prefix: '086', dialCode: '84' }, { prefix: '096', dialCode: '84' },
|
|
3123
|
+
// { prefix: '097', dialCode: '84' }, { prefix: '098', dialCode: '84' },
|
|
3124
|
+
// // Mobifone
|
|
3125
|
+
// { prefix: '070', dialCode: '84' }, { prefix: '079', dialCode: '84' },
|
|
3126
|
+
// { prefix: '077', dialCode: '84' }, { prefix: '076', dialCode: '84' },
|
|
3127
|
+
// { prefix: '078', dialCode: '84' }, { prefix: '089', dialCode: '84' },
|
|
3128
|
+
// { prefix: '090', dialCode: '84' }, { prefix: '093', dialCode: '84' },
|
|
3129
|
+
// // Vinaphone
|
|
3130
|
+
// { prefix: '081', dialCode: '84' }, { prefix: '082', dialCode: '84' },
|
|
3131
|
+
// { prefix: '083', dialCode: '84' }, { prefix: '084', dialCode: '84' },
|
|
3132
|
+
// { prefix: '085', dialCode: '84' }, { prefix: '091', dialCode: '84' },
|
|
3133
|
+
// { prefix: '094', dialCode: '84' },
|
|
3134
|
+
// // Vietnamobile / Gmobile
|
|
3135
|
+
// { prefix: '052', dialCode: '84' }, { prefix: '056', dialCode: '84' },
|
|
3136
|
+
// { prefix: '058', dialCode: '84' }, { prefix: '059', dialCode: '84' },
|
|
3137
|
+
// { prefix: '092', dialCode: '84' }, { prefix: '099', dialCode: '84' },
|
|
3138
|
+
// // ── Thailand (+66) ─────────────────────────────────────────────────────
|
|
3139
|
+
// { prefix: '061', dialCode: '66' }, { prefix: '062', dialCode: '66' },
|
|
3140
|
+
// { prefix: '063', dialCode: '66' }, { prefix: '064', dialCode: '66' },
|
|
3141
|
+
// { prefix: '065', dialCode: '66' }, { prefix: '066', dialCode: '66' },
|
|
3142
|
+
// { prefix: '067', dialCode: '66' }, { prefix: '068', dialCode: '66' },
|
|
3143
|
+
// { prefix: '069', dialCode: '66' },
|
|
3144
|
+
// { prefix: '080', dialCode: '66' }, { prefix: '081', dialCode: '66' },
|
|
3145
|
+
// { prefix: '082', dialCode: '66' }, { prefix: '083', dialCode: '66' },
|
|
3146
|
+
// { prefix: '084', dialCode: '66' }, { prefix: '085', dialCode: '66' },
|
|
3147
|
+
// { prefix: '086', dialCode: '66' }, { prefix: '087', dialCode: '66' },
|
|
3148
|
+
// { prefix: '088', dialCode: '66' }, { prefix: '089', dialCode: '66' },
|
|
3149
|
+
// { prefix: '091', dialCode: '66' }, { prefix: '092', dialCode: '66' },
|
|
3150
|
+
// { prefix: '093', dialCode: '66' }, { prefix: '094', dialCode: '66' },
|
|
3151
|
+
// { prefix: '095', dialCode: '66' }, { prefix: '098', dialCode: '66' },
|
|
3152
|
+
// { prefix: '099', dialCode: '66' },
|
|
3153
|
+
// // ── South Korea (+82) ──────────────────────────────────────────────────
|
|
3154
|
+
// { prefix: '010', dialCode: '82' }, // all operators
|
|
3155
|
+
// { prefix: '016', dialCode: '82' }, // legacy KTF
|
|
3156
|
+
// { prefix: '017', dialCode: '82' }, // legacy SK Telecom
|
|
3157
|
+
// { prefix: '018', dialCode: '82' }, // legacy LG Telecom
|
|
3158
|
+
// { prefix: '019', dialCode: '82' }, // legacy Hansol
|
|
3159
|
+
// // ── Taiwan (+886) ──────────────────────────────────────────────────────
|
|
3160
|
+
// { prefix: '09', dialCode: '886' }, // all mobile operators
|
|
3161
|
+
// // ── Hong Kong (+852) ── (no trunk digit — all 8-digit numbers direct) ──
|
|
3162
|
+
// // No trunk prefix; local numbers start directly with 2,3,4,5,6,9
|
|
3163
|
+
// // Include common first digits for detection if needed:
|
|
3164
|
+
// { prefix: '5', dialCode: '852' }, { prefix: '6', dialCode: '852' },
|
|
3165
|
+
// { prefix: '9', dialCode: '852' },
|
|
3166
|
+
// // ── Macau (+853) ───────────────────────────────────────────────────────
|
|
3167
|
+
// { prefix: '6', dialCode: '853' },
|
|
3168
|
+
// // ── Singapore (+65) ── (no trunk digit) ───────────────────────────────
|
|
3169
|
+
// { prefix: '8', dialCode: '65' }, { prefix: '9', dialCode: '65' },
|
|
3170
|
+
// // ── Myanmar (+95) ──────────────────────────────────────────────────────
|
|
3171
|
+
// { prefix: '09', dialCode: '95' },
|
|
3172
|
+
// // ── Cambodia (+855) ────────────────────────────────────────────────────
|
|
3173
|
+
// { prefix: '010', dialCode: '855' }, { prefix: '011', dialCode: '855' },
|
|
3174
|
+
// { prefix: '012', dialCode: '855' }, { prefix: '015', dialCode: '855' },
|
|
3175
|
+
// { prefix: '016', dialCode: '855' }, { prefix: '017', dialCode: '855' },
|
|
3176
|
+
// { prefix: '018', dialCode: '855' }, { prefix: '069', dialCode: '855' },
|
|
3177
|
+
// { prefix: '070', dialCode: '855' }, { prefix: '071', dialCode: '855' },
|
|
3178
|
+
// { prefix: '077', dialCode: '855' }, { prefix: '078', dialCode: '855' },
|
|
3179
|
+
// { prefix: '085', dialCode: '855' }, { prefix: '086', dialCode: '855' },
|
|
3180
|
+
// { prefix: '087', dialCode: '855' }, { prefix: '088', dialCode: '855' },
|
|
3181
|
+
// { prefix: '089', dialCode: '855' }, { prefix: '090', dialCode: '855' },
|
|
3182
|
+
// { prefix: '092', dialCode: '855' }, { prefix: '095', dialCode: '855' },
|
|
3183
|
+
// { prefix: '096', dialCode: '855' }, { prefix: '097', dialCode: '855' },
|
|
3184
|
+
// { prefix: '098', dialCode: '855' },
|
|
3185
|
+
// // ── Sri Lanka (+94) ────────────────────────────────────────────────────
|
|
3186
|
+
// { prefix: '071', dialCode: '94' }, { prefix: '072', dialCode: '94' },
|
|
3187
|
+
// { prefix: '074', dialCode: '94' }, { prefix: '075', dialCode: '94' },
|
|
3188
|
+
// { prefix: '076', dialCode: '94' }, { prefix: '077', dialCode: '94' },
|
|
3189
|
+
// { prefix: '078', dialCode: '94' },
|
|
3190
|
+
// // ── Nepal (+977) ────────────────────────────────────────────────────────
|
|
3191
|
+
// { prefix: '097', dialCode: '977' }, { prefix: '098', dialCode: '977' },
|
|
3192
|
+
// // ── Afghanistan (+93) ──────────────────────────────────────────────────
|
|
3193
|
+
// { prefix: '070', dialCode: '93' }, { prefix: '071', dialCode: '93' },
|
|
3194
|
+
// { prefix: '072', dialCode: '93' }, { prefix: '073', dialCode: '93' },
|
|
3195
|
+
// { prefix: '074', dialCode: '93' }, { prefix: '075', dialCode: '93' },
|
|
3196
|
+
// { prefix: '076', dialCode: '93' }, { prefix: '077', dialCode: '93' },
|
|
3197
|
+
// { prefix: '078', dialCode: '93' }, { prefix: '079', dialCode: '93' },
|
|
3198
|
+
// // ── Iran (+98) ─────────────────────────────────────────────────────────
|
|
3199
|
+
// { prefix: '0901', dialCode: '98' }, { prefix: '0902', dialCode: '98' },
|
|
3200
|
+
// { prefix: '0903', dialCode: '98' }, { prefix: '0910', dialCode: '98' },
|
|
3201
|
+
// { prefix: '0911', dialCode: '98' }, { prefix: '0912', dialCode: '98' },
|
|
3202
|
+
// { prefix: '0913', dialCode: '98' }, { prefix: '0914', dialCode: '98' },
|
|
3203
|
+
// { prefix: '0915', dialCode: '98' }, { prefix: '0916', dialCode: '98' },
|
|
3204
|
+
// { prefix: '0917', dialCode: '98' }, { prefix: '0918', dialCode: '98' },
|
|
3205
|
+
// { prefix: '0919', dialCode: '98' }, { prefix: '0920', dialCode: '98' },
|
|
3206
|
+
// { prefix: '0930', dialCode: '98' }, { prefix: '0933', dialCode: '98' },
|
|
3207
|
+
// { prefix: '0935', dialCode: '98' }, { prefix: '0936', dialCode: '98' },
|
|
3208
|
+
// { prefix: '0937', dialCode: '98' }, { prefix: '0938', dialCode: '98' },
|
|
3209
|
+
// { prefix: '0939', dialCode: '98' }, { prefix: '0941', dialCode: '98' },
|
|
3210
|
+
// // ── Iraq (+964) ─────────────────────────────────────────────────────────
|
|
3211
|
+
// { prefix: '075', dialCode: '964' }, { prefix: '076', dialCode: '964' },
|
|
3212
|
+
// { prefix: '077', dialCode: '964' }, { prefix: '078', dialCode: '964' },
|
|
3213
|
+
// { prefix: '079', dialCode: '964' },
|
|
3214
|
+
// // ── Saudi Arabia (+966) ────────────────────────────────────────────────
|
|
3215
|
+
// { prefix: '05', dialCode: '966' }, // all mobile (050–059)
|
|
3216
|
+
// // ── UAE (+971) ─────────────────────────────────────────────────────────
|
|
3217
|
+
// { prefix: '050', dialCode: '971' }, { prefix: '052', dialCode: '971' },
|
|
3218
|
+
// { prefix: '054', dialCode: '971' }, { prefix: '055', dialCode: '971' },
|
|
3219
|
+
// { prefix: '056', dialCode: '971' }, { prefix: '058', dialCode: '971' },
|
|
3220
|
+
// // ── Kuwait (+965) ── (no trunk) ────────────────────────────────────────
|
|
3221
|
+
// { prefix: '5', dialCode: '965' }, { prefix: '6', dialCode: '965' },
|
|
3222
|
+
// { prefix: '9', dialCode: '965' },
|
|
3223
|
+
// // ── Qatar (+974) ── (no trunk) ─────────────────────────────────────────
|
|
3224
|
+
// { prefix: '3', dialCode: '974' }, { prefix: '5', dialCode: '974' },
|
|
3225
|
+
// { prefix: '6', dialCode: '974' }, { prefix: '7', dialCode: '974' },
|
|
3226
|
+
// // ── Bahrain (+973) ── (no trunk) ───────────────────────────────────────
|
|
3227
|
+
// { prefix: '3', dialCode: '973' }, { prefix: '6', dialCode: '973' },
|
|
3228
|
+
// // ── Oman (+968) ── (no trunk) ──────────────────────────────────────────
|
|
3229
|
+
// { prefix: '7', dialCode: '968' }, { prefix: '9', dialCode: '968' },
|
|
3230
|
+
// // ── Jordan (+962) ──────────────────────────────────────────────────────
|
|
3231
|
+
// { prefix: '077', dialCode: '962' }, { prefix: '078', dialCode: '962' },
|
|
3232
|
+
// { prefix: '079', dialCode: '962' },
|
|
3233
|
+
// // ── Lebanon (+961) ─────────────────────────────────────────────────────
|
|
3234
|
+
// { prefix: '03', dialCode: '961' }, { prefix: '07', dialCode: '961' },
|
|
3235
|
+
// { prefix: '08', dialCode: '961' }, { prefix: '09', dialCode: '961' },
|
|
3236
|
+
// // ── Israel (+972) ──────────────────────────────────────────────────────
|
|
3237
|
+
// { prefix: '050', dialCode: '972' }, { prefix: '051', dialCode: '972' },
|
|
3238
|
+
// { prefix: '052', dialCode: '972' }, { prefix: '053', dialCode: '972' },
|
|
3239
|
+
// { prefix: '054', dialCode: '972' }, { prefix: '055', dialCode: '972' },
|
|
3240
|
+
// { prefix: '056', dialCode: '972' }, { prefix: '057', dialCode: '972' },
|
|
3241
|
+
// { prefix: '058', dialCode: '972' }, { prefix: '059', dialCode: '972' },
|
|
3242
|
+
// // ── Turkey (+90) ───────────────────────────────────────────────────────
|
|
3243
|
+
// { prefix: '0530', dialCode: '90' }, { prefix: '0531', dialCode: '90' },
|
|
3244
|
+
// { prefix: '0532', dialCode: '90' }, { prefix: '0533', dialCode: '90' },
|
|
3245
|
+
// { prefix: '0534', dialCode: '90' }, { prefix: '0535', dialCode: '90' },
|
|
3246
|
+
// { prefix: '0536', dialCode: '90' }, { prefix: '0537', dialCode: '90' },
|
|
3247
|
+
// { prefix: '0538', dialCode: '90' }, { prefix: '0539', dialCode: '90' },
|
|
3248
|
+
// { prefix: '0540', dialCode: '90' }, { prefix: '0541', dialCode: '90' },
|
|
3249
|
+
// { prefix: '0542', dialCode: '90' }, { prefix: '0543', dialCode: '90' },
|
|
3250
|
+
// { prefix: '0544', dialCode: '90' }, { prefix: '0545', dialCode: '90' },
|
|
3251
|
+
// { prefix: '0546', dialCode: '90' }, { prefix: '0547', dialCode: '90' },
|
|
3252
|
+
// { prefix: '0548', dialCode: '90' }, { prefix: '0549', dialCode: '90' },
|
|
3253
|
+
// { prefix: '0550', dialCode: '90' }, { prefix: '0551', dialCode: '90' },
|
|
3254
|
+
// { prefix: '0552', dialCode: '90' }, { prefix: '0553', dialCode: '90' },
|
|
3255
|
+
// { prefix: '0554', dialCode: '90' }, { prefix: '0555', dialCode: '90' },
|
|
3256
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3257
|
+
// // EUROPE
|
|
3258
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3259
|
+
// // ── UK (+44) ── (2-char, intentionally lowest priority in short list) ──
|
|
3260
|
+
// { prefix: '07', dialCode: '44' }, // mobile
|
|
3261
|
+
// { prefix: '01', dialCode: '44' }, // geographic fixed
|
|
3262
|
+
// { prefix: '02', dialCode: '44' }, // geographic fixed (London 020)
|
|
3263
|
+
// { prefix: '03', dialCode: '44' }, // non-geographic
|
|
3264
|
+
// // ── Germany (+49) ─────────────────────────────────────────────────────
|
|
3265
|
+
// { prefix: '015', dialCode: '49' }, { prefix: '016', dialCode: '49' },
|
|
3266
|
+
// { prefix: '017', dialCode: '49' },
|
|
3267
|
+
// // ── France (+33) ──────────────────────────────────────────────────────
|
|
3268
|
+
// { prefix: '06', dialCode: '33' }, { prefix: '07', dialCode: '33' },
|
|
3269
|
+
// // ── Italy (+39) ───────────────────────────────────────────────────────
|
|
3270
|
+
// { prefix: '03', dialCode: '39' }, // mobile 3xx
|
|
3271
|
+
// // ── Spain (+34) ── (no trunk digit) ───────────────────────────────────
|
|
3272
|
+
// { prefix: '6', dialCode: '34' }, { prefix: '7', dialCode: '34' },
|
|
3273
|
+
// // ── Netherlands (+31) ─────────────────────────────────────────────────
|
|
3274
|
+
// { prefix: '06', dialCode: '31' },
|
|
3275
|
+
// // ── Belgium (+32) ─────────────────────────────────────────────────────
|
|
3276
|
+
// { prefix: '04', dialCode: '32' },
|
|
3277
|
+
// // ── Sweden (+46) ──────────────────────────────────────────────────────
|
|
3278
|
+
// { prefix: '07', dialCode: '46' },
|
|
3279
|
+
// // ── Norway (+47) ── (no trunk) ─────────────────────────────────────────
|
|
3280
|
+
// { prefix: '4', dialCode: '47' }, { prefix: '9', dialCode: '47' },
|
|
3281
|
+
// // ── Denmark (+45) ── (no trunk) ────────────────────────────────────────
|
|
3282
|
+
// { prefix: '2', dialCode: '45' }, { prefix: '3', dialCode: '45' },
|
|
3283
|
+
// { prefix: '4', dialCode: '45' }, { prefix: '5', dialCode: '45' },
|
|
3284
|
+
// { prefix: '6', dialCode: '45' }, { prefix: '7', dialCode: '45' },
|
|
3285
|
+
// { prefix: '8', dialCode: '45' }, { prefix: '9', dialCode: '45' },
|
|
3286
|
+
// // ── Finland (+358) ────────────────────────────────────────────────────
|
|
3287
|
+
// { prefix: '04', dialCode: '358' }, { prefix: '05', dialCode: '358' },
|
|
3288
|
+
// // ── Switzerland (+41) ─────────────────────────────────────────────────
|
|
3289
|
+
// { prefix: '075', dialCode: '41' }, { prefix: '076', dialCode: '41' },
|
|
3290
|
+
// { prefix: '077', dialCode: '41' }, { prefix: '078', dialCode: '41' },
|
|
3291
|
+
// { prefix: '079', dialCode: '41' },
|
|
3292
|
+
// // ── Austria (+43) ─────────────────────────────────────────────────────
|
|
3293
|
+
// { prefix: '064', dialCode: '43' }, { prefix: '065', dialCode: '43' },
|
|
3294
|
+
// { prefix: '066', dialCode: '43' }, { prefix: '068', dialCode: '43' },
|
|
3295
|
+
// // ── Poland (+48) ── (no trunk) ─────────────────────────────────────────
|
|
3296
|
+
// { prefix: '5', dialCode: '48' }, { prefix: '6', dialCode: '48' },
|
|
3297
|
+
// { prefix: '7', dialCode: '48' }, { prefix: '8', dialCode: '48' },
|
|
3298
|
+
// // ── Portugal (+351) ── (no trunk) ─────────────────────────────────────
|
|
3299
|
+
// { prefix: '9', dialCode: '351' },
|
|
3300
|
+
// // ── Czech Republic (+420) ── (no trunk) ────────────────────────────────
|
|
3301
|
+
// { prefix: '6', dialCode: '420' }, { prefix: '7', dialCode: '420' },
|
|
3302
|
+
// // ── Romania (+40) ─────────────────────────────────────────────────────
|
|
3303
|
+
// { prefix: '07', dialCode: '40' },
|
|
3304
|
+
// // ── Hungary (+36) ─────────────────────────────────────────────────────
|
|
3305
|
+
// { prefix: '020', dialCode: '36' }, { prefix: '030', dialCode: '36' },
|
|
3306
|
+
// { prefix: '031', dialCode: '36' }, { prefix: '070', dialCode: '36' },
|
|
3307
|
+
// // ── Ukraine (+380) ────────────────────────────────────────────────────
|
|
3308
|
+
// { prefix: '066', dialCode: '380' }, { prefix: '067', dialCode: '380' },
|
|
3309
|
+
// { prefix: '068', dialCode: '380' }, { prefix: '073', dialCode: '380' },
|
|
3310
|
+
// { prefix: '091', dialCode: '380' }, { prefix: '092', dialCode: '380' },
|
|
3311
|
+
// { prefix: '093', dialCode: '380' }, { prefix: '094', dialCode: '380' },
|
|
3312
|
+
// { prefix: '095', dialCode: '380' }, { prefix: '096', dialCode: '380' },
|
|
3313
|
+
// { prefix: '097', dialCode: '380' }, { prefix: '098', dialCode: '380' },
|
|
3314
|
+
// { prefix: '099', dialCode: '380' },
|
|
3315
|
+
// // ── Russia (+7) ───────────────────────────────────────────────────────
|
|
3316
|
+
// { prefix: '8900', dialCode: '7' }, { prefix: '8901', dialCode: '7' },
|
|
3317
|
+
// { prefix: '8902', dialCode: '7' }, { prefix: '8903', dialCode: '7' },
|
|
3318
|
+
// { prefix: '8904', dialCode: '7' }, { prefix: '8905', dialCode: '7' },
|
|
3319
|
+
// { prefix: '8906', dialCode: '7' }, { prefix: '8908', dialCode: '7' },
|
|
3320
|
+
// { prefix: '8909', dialCode: '7' }, { prefix: '8910', dialCode: '7' },
|
|
3321
|
+
// { prefix: '8911', dialCode: '7' }, { prefix: '8912', dialCode: '7' },
|
|
3322
|
+
// { prefix: '8913', dialCode: '7' }, { prefix: '8914', dialCode: '7' },
|
|
3323
|
+
// { prefix: '8915', dialCode: '7' }, { prefix: '8916', dialCode: '7' },
|
|
3324
|
+
// { prefix: '8917', dialCode: '7' }, { prefix: '8918', dialCode: '7' },
|
|
3325
|
+
// { prefix: '8919', dialCode: '7' }, { prefix: '8920', dialCode: '7' },
|
|
3326
|
+
// { prefix: '8921', dialCode: '7' }, { prefix: '8922', dialCode: '7' },
|
|
3327
|
+
// { prefix: '8923', dialCode: '7' }, { prefix: '8924', dialCode: '7' },
|
|
3328
|
+
// { prefix: '8925', dialCode: '7' }, { prefix: '8926', dialCode: '7' },
|
|
3329
|
+
// { prefix: '8927', dialCode: '7' }, { prefix: '8928', dialCode: '7' },
|
|
3330
|
+
// { prefix: '8929', dialCode: '7' }, { prefix: '8930', dialCode: '7' },
|
|
3331
|
+
// { prefix: '8931', dialCode: '7' }, { prefix: '8932', dialCode: '7' },
|
|
3332
|
+
// { prefix: '8933', dialCode: '7' }, { prefix: '8934', dialCode: '7' },
|
|
3333
|
+
// { prefix: '8936', dialCode: '7' }, { prefix: '8937', dialCode: '7' },
|
|
3334
|
+
// { prefix: '8938', dialCode: '7' }, { prefix: '8939', dialCode: '7' },
|
|
3335
|
+
// { prefix: '8950', dialCode: '7' }, { prefix: '8951', dialCode: '7' },
|
|
3336
|
+
// { prefix: '8952', dialCode: '7' }, { prefix: '8953', dialCode: '7' },
|
|
3337
|
+
// { prefix: '8958', dialCode: '7' }, { prefix: '8960', dialCode: '7' },
|
|
3338
|
+
// { prefix: '8961', dialCode: '7' }, { prefix: '8962', dialCode: '7' },
|
|
3339
|
+
// { prefix: '8963', dialCode: '7' }, { prefix: '8964', dialCode: '7' },
|
|
3340
|
+
// { prefix: '8965', dialCode: '7' }, { prefix: '8966', dialCode: '7' },
|
|
3341
|
+
// { prefix: '8967', dialCode: '7' }, { prefix: '8968', dialCode: '7' },
|
|
3342
|
+
// { prefix: '8969', dialCode: '7' }, { prefix: '8977', dialCode: '7' },
|
|
3343
|
+
// { prefix: '8978', dialCode: '7' }, { prefix: '8980', dialCode: '7' },
|
|
3344
|
+
// { prefix: '8981', dialCode: '7' }, { prefix: '8982', dialCode: '7' },
|
|
3345
|
+
// { prefix: '8983', dialCode: '7' }, { prefix: '8985', dialCode: '7' },
|
|
3346
|
+
// { prefix: '8987', dialCode: '7' }, { prefix: '8988', dialCode: '7' },
|
|
3347
|
+
// { prefix: '8989', dialCode: '7' },
|
|
3348
|
+
// // ── Serbia (+381) ─────────────────────────────────────────────────────
|
|
3349
|
+
// { prefix: '060', dialCode: '381' }, { prefix: '061', dialCode: '381' },
|
|
3350
|
+
// { prefix: '062', dialCode: '381' }, { prefix: '063', dialCode: '381' },
|
|
3351
|
+
// { prefix: '064', dialCode: '381' }, { prefix: '065', dialCode: '381' },
|
|
3352
|
+
// { prefix: '066', dialCode: '381' },
|
|
3353
|
+
// // ── Greece (+30) ── (no trunk) ─────────────────────────────────────────
|
|
3354
|
+
// { prefix: '69', dialCode: '30' },
|
|
3355
|
+
// // ── Ireland (+353) ────────────────────────────────────────────────────
|
|
3356
|
+
// { prefix: '08', dialCode: '353' },
|
|
3357
|
+
// // ── Croatia (+385) ────────────────────────────────────────────────────
|
|
3358
|
+
// { prefix: '091', dialCode: '385' }, { prefix: '092', dialCode: '385' },
|
|
3359
|
+
// { prefix: '095', dialCode: '385' }, { prefix: '097', dialCode: '385' },
|
|
3360
|
+
// { prefix: '098', dialCode: '385' }, { prefix: '099', dialCode: '385' },
|
|
3361
|
+
// // ── Slovakia (+421) ────────────────────────────────────────────────────
|
|
3362
|
+
// { prefix: '09', dialCode: '421' },
|
|
3363
|
+
// // ── Bulgaria (+359) ────────────────────────────────────────────────────
|
|
3364
|
+
// { prefix: '087', dialCode: '359' }, { prefix: '088', dialCode: '359' },
|
|
3365
|
+
// { prefix: '089', dialCode: '359' },
|
|
3366
|
+
// // ── Belarus (+375) ─────────────────────────────────────────────────────
|
|
3367
|
+
// { prefix: '029', dialCode: '375' }, { prefix: '033', dialCode: '375' },
|
|
3368
|
+
// { prefix: '044', dialCode: '375' },
|
|
3369
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3370
|
+
// // AMERICAS
|
|
3371
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3372
|
+
// // ── North America NANP (+1) ────────────────────────────────────────────
|
|
3373
|
+
// // United States, Canada, and 20+ Caribbean territories all share +1.
|
|
3374
|
+
// // Domestic format: 1-NXX-NXX-XXXX (no trunk 0); callers sometimes dial
|
|
3375
|
+
// // just the 10-digit NPA-NXX-XXXX. We map the leading 1 or the NPA block.
|
|
3376
|
+
// { prefix: '1', dialCode: '1' },
|
|
3377
|
+
// // ── Mexico (+52) ──────────────────────────────────────────────────────
|
|
3378
|
+
// { prefix: '044', dialCode: '52' }, { prefix: '045', dialCode: '52' },
|
|
3379
|
+
// { prefix: '055', dialCode: '52' }, // Mexico City local
|
|
3380
|
+
// { prefix: '033', dialCode: '52' }, // Guadalajara local
|
|
3381
|
+
// // ── Brazil (+55) ──────────────────────────────────────────────────────
|
|
3382
|
+
// // Trunk is 0 (long distance) + carrier code; mobile use 9 as 9th digit
|
|
3383
|
+
// { prefix: '011', dialCode: '55' }, // São Paulo
|
|
3384
|
+
// { prefix: '021', dialCode: '55' }, // Rio de Janeiro
|
|
3385
|
+
// { prefix: '031', dialCode: '55' }, // Belo Horizonte
|
|
3386
|
+
// { prefix: '041', dialCode: '55' }, // Curitiba
|
|
3387
|
+
// { prefix: '051', dialCode: '55' }, // Porto Alegre
|
|
3388
|
+
// { prefix: '061', dialCode: '55' }, // Brasília
|
|
3389
|
+
// { prefix: '071', dialCode: '55' }, // Salvador
|
|
3390
|
+
// { prefix: '081', dialCode: '55' }, // Recife
|
|
3391
|
+
// { prefix: '085', dialCode: '55' }, // Fortaleza
|
|
3392
|
+
// { prefix: '091', dialCode: '55' }, // Belém
|
|
3393
|
+
// // ── Argentina (+54) ────────────────────────────────────────────────────
|
|
3394
|
+
// { prefix: '011', dialCode: '54' }, // Buenos Aires
|
|
3395
|
+
// { prefix: '0351', dialCode: '54' }, // Córdoba
|
|
3396
|
+
// { prefix: '0341', dialCode: '54' }, // Rosario
|
|
3397
|
+
// // ── Colombia (+57) ─────────────────────────────────────────────────────
|
|
3398
|
+
// { prefix: '03', dialCode: '57' },
|
|
3399
|
+
// // ── Chile (+56) ────────────────────────────────────────────────────────
|
|
3400
|
+
// { prefix: '09', dialCode: '56' },
|
|
3401
|
+
// // ── Peru (+51) ─────────────────────────────────────────────────────────
|
|
3402
|
+
// { prefix: '09', dialCode: '51' },
|
|
3403
|
+
// // ── Venezuela (+58) ────────────────────────────────────────────────────
|
|
3404
|
+
// { prefix: '04', dialCode: '58' },
|
|
3405
|
+
// // ── Ecuador (+593) ─────────────────────────────────────────────────────
|
|
3406
|
+
// { prefix: '09', dialCode: '593' },
|
|
3407
|
+
// // ── Bolivia (+591) ─────────────────────────────────────────────────────
|
|
3408
|
+
// { prefix: '06', dialCode: '591' }, { prefix: '07', dialCode: '591' },
|
|
3409
|
+
// // ── Paraguay (+595) ────────────────────────────────────────────────────
|
|
3410
|
+
// { prefix: '09', dialCode: '595' },
|
|
3411
|
+
// // ── Uruguay (+598) ─────────────────────────────────────────────────────
|
|
3412
|
+
// { prefix: '09', dialCode: '598' },
|
|
3413
|
+
// // ── Cuba (+53) ─────────────────────────────────────────────────────────
|
|
3414
|
+
// { prefix: '05', dialCode: '53' },
|
|
3415
|
+
// // ── Costa Rica (+506) ── (no trunk) ────────────────────────────────────
|
|
3416
|
+
// { prefix: '6', dialCode: '506' }, { prefix: '7', dialCode: '506' },
|
|
3417
|
+
// { prefix: '8', dialCode: '506' },
|
|
3418
|
+
// // ── Guatemala (+502) ── (no trunk) ─────────────────────────────────────
|
|
3419
|
+
// { prefix: '3', dialCode: '502' }, { prefix: '4', dialCode: '502' },
|
|
3420
|
+
// { prefix: '5', dialCode: '502' },
|
|
3421
|
+
// // ── Honduras (+504) ── (no trunk) ──────────────────────────────────────
|
|
3422
|
+
// { prefix: '3', dialCode: '504' }, { prefix: '8', dialCode: '504' },
|
|
3423
|
+
// { prefix: '9', dialCode: '504' },
|
|
3424
|
+
// // ── El Salvador (+503) ── (no trunk) ───────────────────────────────────
|
|
3425
|
+
// { prefix: '6', dialCode: '503' }, { prefix: '7', dialCode: '503' },
|
|
3426
|
+
// // ── Panama (+507) ── (no trunk) ────────────────────────────────────────
|
|
3427
|
+
// { prefix: '6', dialCode: '507' },
|
|
3428
|
+
// // ── Nicaragua (+505) ── (no trunk) ─────────────────────────────────────
|
|
3429
|
+
// { prefix: '5', dialCode: '505' }, { prefix: '6', dialCode: '505' },
|
|
3430
|
+
// { prefix: '7', dialCode: '505' }, { prefix: '8', dialCode: '505' },
|
|
3431
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3432
|
+
// // AFRICA
|
|
3433
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3434
|
+
// // ── Nigeria (+234) ─────────────────────────────────────────────────────
|
|
3435
|
+
// { prefix: '0703', dialCode: '234' }, { prefix: '0706', dialCode: '234' },
|
|
3436
|
+
// { prefix: '0803', dialCode: '234' }, { prefix: '0806', dialCode: '234' },
|
|
3437
|
+
// { prefix: '0810', dialCode: '234' }, { prefix: '0813', dialCode: '234' },
|
|
3438
|
+
// { prefix: '0814', dialCode: '234' }, { prefix: '0816', dialCode: '234' },
|
|
3439
|
+
// { prefix: '0903', dialCode: '234' }, { prefix: '0906', dialCode: '234' },
|
|
3440
|
+
// { prefix: '0704', dialCode: '234' }, { prefix: '0805', dialCode: '234' },
|
|
3441
|
+
// { prefix: '0807', dialCode: '234' }, { prefix: '0811', dialCode: '234' },
|
|
3442
|
+
// { prefix: '0815', dialCode: '234' }, { prefix: '0905', dialCode: '234' },
|
|
3443
|
+
// { prefix: '0802', dialCode: '234' }, { prefix: '0808', dialCode: '234' },
|
|
3444
|
+
// { prefix: '0812', dialCode: '234' }, { prefix: '0901', dialCode: '234' },
|
|
3445
|
+
// { prefix: '0902', dialCode: '234' }, { prefix: '0904', dialCode: '234' },
|
|
3446
|
+
// { prefix: '0907', dialCode: '234' }, { prefix: '0908', dialCode: '234' },
|
|
3447
|
+
// { prefix: '0809', dialCode: '234' }, { prefix: '0817', dialCode: '234' },
|
|
3448
|
+
// { prefix: '0818', dialCode: '234' }, { prefix: '0819', dialCode: '234' },
|
|
3449
|
+
// { prefix: '0909', dialCode: '234' },
|
|
3450
|
+
// // ── South Africa (+27) ─────────────────────────────────────────────────
|
|
3451
|
+
// { prefix: '060', dialCode: '27' }, { prefix: '061', dialCode: '27' },
|
|
3452
|
+
// { prefix: '062', dialCode: '27' }, { prefix: '063', dialCode: '27' },
|
|
3453
|
+
// { prefix: '064', dialCode: '27' }, { prefix: '065', dialCode: '27' },
|
|
3454
|
+
// { prefix: '066', dialCode: '27' }, { prefix: '067', dialCode: '27' },
|
|
3455
|
+
// { prefix: '068', dialCode: '27' }, { prefix: '069', dialCode: '27' },
|
|
3456
|
+
// { prefix: '071', dialCode: '27' }, { prefix: '072', dialCode: '27' },
|
|
3457
|
+
// { prefix: '073', dialCode: '27' }, { prefix: '074', dialCode: '27' },
|
|
3458
|
+
// { prefix: '076', dialCode: '27' }, { prefix: '078', dialCode: '27' },
|
|
3459
|
+
// { prefix: '079', dialCode: '27' }, { prefix: '081', dialCode: '27' },
|
|
3460
|
+
// { prefix: '082', dialCode: '27' }, { prefix: '083', dialCode: '27' },
|
|
3461
|
+
// { prefix: '084', dialCode: '27' }, { prefix: '085', dialCode: '27' },
|
|
3462
|
+
// // ── Kenya (+254) ───────────────────────────────────────────────────────
|
|
3463
|
+
// { prefix: '0700', dialCode: '254' }, { prefix: '0701', dialCode: '254' },
|
|
3464
|
+
// { prefix: '0702', dialCode: '254' }, { prefix: '0703', dialCode: '254' },
|
|
3465
|
+
// { prefix: '0704', dialCode: '254' }, { prefix: '0705', dialCode: '254' },
|
|
3466
|
+
// { prefix: '0706', dialCode: '254' }, { prefix: '0707', dialCode: '254' },
|
|
3467
|
+
// { prefix: '0708', dialCode: '254' }, { prefix: '0709', dialCode: '254' },
|
|
3468
|
+
// { prefix: '0710', dialCode: '254' }, { prefix: '0711', dialCode: '254' },
|
|
3469
|
+
// { prefix: '0712', dialCode: '254' }, { prefix: '0713', dialCode: '254' },
|
|
3470
|
+
// { prefix: '0714', dialCode: '254' }, { prefix: '0715', dialCode: '254' },
|
|
3471
|
+
// { prefix: '0716', dialCode: '254' }, { prefix: '0717', dialCode: '254' },
|
|
3472
|
+
// { prefix: '0718', dialCode: '254' }, { prefix: '0719', dialCode: '254' },
|
|
3473
|
+
// { prefix: '0720', dialCode: '254' }, { prefix: '0721', dialCode: '254' },
|
|
3474
|
+
// { prefix: '0722', dialCode: '254' }, { prefix: '0723', dialCode: '254' },
|
|
3475
|
+
// { prefix: '0724', dialCode: '254' }, { prefix: '0725', dialCode: '254' },
|
|
3476
|
+
// { prefix: '0726', dialCode: '254' }, { prefix: '0727', dialCode: '254' },
|
|
3477
|
+
// { prefix: '0728', dialCode: '254' }, { prefix: '0729', dialCode: '254' },
|
|
3478
|
+
// { prefix: '0730', dialCode: '254' }, { prefix: '0731', dialCode: '254' },
|
|
3479
|
+
// { prefix: '0732', dialCode: '254' }, { prefix: '0733', dialCode: '254' },
|
|
3480
|
+
// { prefix: '0734', dialCode: '254' }, { prefix: '0735', dialCode: '254' },
|
|
3481
|
+
// { prefix: '0736', dialCode: '254' }, { prefix: '0737', dialCode: '254' },
|
|
3482
|
+
// { prefix: '0738', dialCode: '254' }, { prefix: '0739', dialCode: '254' },
|
|
3483
|
+
// { prefix: '0740', dialCode: '254' }, { prefix: '0741', dialCode: '254' },
|
|
3484
|
+
// { prefix: '0742', dialCode: '254' }, { prefix: '0743', dialCode: '254' },
|
|
3485
|
+
// { prefix: '0745', dialCode: '254' }, { prefix: '0746', dialCode: '254' },
|
|
3486
|
+
// { prefix: '0757', dialCode: '254' }, { prefix: '0758', dialCode: '254' },
|
|
3487
|
+
// { prefix: '0759', dialCode: '254' }, { prefix: '0768', dialCode: '254' },
|
|
3488
|
+
// { prefix: '0769', dialCode: '254' }, { prefix: '0770', dialCode: '254' },
|
|
3489
|
+
// { prefix: '0771', dialCode: '254' }, { prefix: '0772', dialCode: '254' },
|
|
3490
|
+
// { prefix: '0773', dialCode: '254' }, { prefix: '0774', dialCode: '254' },
|
|
3491
|
+
// { prefix: '0775', dialCode: '254' }, { prefix: '0776', dialCode: '254' },
|
|
3492
|
+
// { prefix: '0777', dialCode: '254' }, { prefix: '0778', dialCode: '254' },
|
|
3493
|
+
// { prefix: '0779', dialCode: '254' }, { prefix: '0780', dialCode: '254' },
|
|
3494
|
+
// { prefix: '0781', dialCode: '254' }, { prefix: '0782', dialCode: '254' },
|
|
3495
|
+
// { prefix: '0783', dialCode: '254' }, { prefix: '0784', dialCode: '254' },
|
|
3496
|
+
// { prefix: '0785', dialCode: '254' }, { prefix: '0786', dialCode: '254' },
|
|
3497
|
+
// { prefix: '0787', dialCode: '254' }, { prefix: '0788', dialCode: '254' },
|
|
3498
|
+
// { prefix: '0789', dialCode: '254' }, { prefix: '0790', dialCode: '254' },
|
|
3499
|
+
// { prefix: '0791', dialCode: '254' }, { prefix: '0792', dialCode: '254' },
|
|
3500
|
+
// { prefix: '0793', dialCode: '254' }, { prefix: '0794', dialCode: '254' },
|
|
3501
|
+
// { prefix: '0795', dialCode: '254' }, { prefix: '0796', dialCode: '254' },
|
|
3502
|
+
// { prefix: '0797', dialCode: '254' }, { prefix: '0798', dialCode: '254' },
|
|
3503
|
+
// { prefix: '0799', dialCode: '254' },
|
|
3504
|
+
// // ── Ethiopia (+251) ────────────────────────────────────────────────────
|
|
3505
|
+
// { prefix: '091', dialCode: '251' }, { prefix: '092', dialCode: '251' },
|
|
3506
|
+
// { prefix: '093', dialCode: '251' }, { prefix: '094', dialCode: '251' },
|
|
3507
|
+
// { prefix: '095', dialCode: '251' },
|
|
3508
|
+
// // ── Ghana (+233) ───────────────────────────────────────────────────────
|
|
3509
|
+
// { prefix: '024', dialCode: '233' }, { prefix: '025', dialCode: '233' },
|
|
3510
|
+
// { prefix: '026', dialCode: '233' }, { prefix: '027', dialCode: '233' },
|
|
3511
|
+
// { prefix: '028', dialCode: '233' }, { prefix: '029', dialCode: '233' },
|
|
3512
|
+
// { prefix: '054', dialCode: '233' }, { prefix: '055', dialCode: '233' },
|
|
3513
|
+
// { prefix: '056', dialCode: '233' }, { prefix: '057', dialCode: '233' },
|
|
3514
|
+
// { prefix: '059', dialCode: '233' }, { prefix: '020', dialCode: '233' },
|
|
3515
|
+
// { prefix: '050', dialCode: '233' },
|
|
3516
|
+
// // ── Tanzania (+255) ────────────────────────────────────────────────────
|
|
3517
|
+
// { prefix: '0621', dialCode: '255' }, { prefix: '0622', dialCode: '255' },
|
|
3518
|
+
// { prefix: '0623', dialCode: '255' }, { prefix: '0624', dialCode: '255' },
|
|
3519
|
+
// { prefix: '0625', dialCode: '255' }, { prefix: '0626', dialCode: '255' },
|
|
3520
|
+
// { prefix: '0627', dialCode: '255' }, { prefix: '0628', dialCode: '255' },
|
|
3521
|
+
// { prefix: '0629', dialCode: '255' }, { prefix: '0655', dialCode: '255' },
|
|
3522
|
+
// { prefix: '0656', dialCode: '255' }, { prefix: '0657', dialCode: '255' },
|
|
3523
|
+
// { prefix: '0658', dialCode: '255' }, { prefix: '0659', dialCode: '255' },
|
|
3524
|
+
// { prefix: '0673', dialCode: '255' }, { prefix: '0674', dialCode: '255' },
|
|
3525
|
+
// { prefix: '0675', dialCode: '255' }, { prefix: '0676', dialCode: '255' },
|
|
3526
|
+
// { prefix: '0677', dialCode: '255' }, { prefix: '0678', dialCode: '255' },
|
|
3527
|
+
// { prefix: '0679', dialCode: '255' }, { prefix: '0684', dialCode: '255' },
|
|
3528
|
+
// { prefix: '0685', dialCode: '255' }, { prefix: '0686', dialCode: '255' },
|
|
3529
|
+
// { prefix: '0687', dialCode: '255' }, { prefix: '0688', dialCode: '255' },
|
|
3530
|
+
// { prefix: '0689', dialCode: '255' }, { prefix: '0716', dialCode: '255' },
|
|
3531
|
+
// { prefix: '0717', dialCode: '255' }, { prefix: '0718', dialCode: '255' },
|
|
3532
|
+
// { prefix: '0719', dialCode: '255' }, { prefix: '0754', dialCode: '255' },
|
|
3533
|
+
// { prefix: '0755', dialCode: '255' }, { prefix: '0756', dialCode: '255' },
|
|
3534
|
+
// { prefix: '0757', dialCode: '255' }, { prefix: '0758', dialCode: '255' },
|
|
3535
|
+
// { prefix: '0759', dialCode: '255' }, { prefix: '0765', dialCode: '255' },
|
|
3536
|
+
// { prefix: '0766', dialCode: '255' }, { prefix: '0767', dialCode: '255' },
|
|
3537
|
+
// { prefix: '0768', dialCode: '255' }, { prefix: '0769', dialCode: '255' },
|
|
3538
|
+
// { prefix: '0786', dialCode: '255' }, { prefix: '0787', dialCode: '255' },
|
|
3539
|
+
// { prefix: '0788', dialCode: '255' }, { prefix: '0789', dialCode: '255' },
|
|
3540
|
+
// // ── Uganda (+256) ──────────────────────────────────────────────────────
|
|
3541
|
+
// { prefix: '070', dialCode: '256' }, { prefix: '071', dialCode: '256' },
|
|
3542
|
+
// { prefix: '074', dialCode: '256' }, { prefix: '075', dialCode: '256' },
|
|
3543
|
+
// { prefix: '076', dialCode: '256' }, { prefix: '077', dialCode: '256' },
|
|
3544
|
+
// { prefix: '078', dialCode: '256' },
|
|
3545
|
+
// // ── Egypt (+20) ────────────────────────────────────────────────────────
|
|
3546
|
+
// { prefix: '010', dialCode: '20' }, { prefix: '011', dialCode: '20' },
|
|
3547
|
+
// { prefix: '012', dialCode: '20' }, { prefix: '015', dialCode: '20' },
|
|
3548
|
+
// // ── Morocco (+212) ─────────────────────────────────────────────────────
|
|
3549
|
+
// { prefix: '06', dialCode: '212' }, { prefix: '07', dialCode: '212' },
|
|
3550
|
+
// // ── Algeria (+213) ─────────────────────────────────────────────────────
|
|
3551
|
+
// { prefix: '05', dialCode: '213' },
|
|
3552
|
+
// // ── Tunisia (+216) ── (no trunk) ───────────────────────────────────────
|
|
3553
|
+
// { prefix: '2', dialCode: '216' }, { prefix: '5', dialCode: '216' },
|
|
3554
|
+
// { prefix: '9', dialCode: '216' },
|
|
3555
|
+
// // ── Sudan (+249) ───────────────────────────────────────────────────────
|
|
3556
|
+
// { prefix: '09', dialCode: '249' },
|
|
3557
|
+
// // ── Rwanda (+250) ── (no trunk) ────────────────────────────────────────
|
|
3558
|
+
// { prefix: '72', dialCode: '250' }, { prefix: '73', dialCode: '250' },
|
|
3559
|
+
// { prefix: '78', dialCode: '250' }, { prefix: '79', dialCode: '250' },
|
|
3560
|
+
// // ── Cameroon (+237) ── (no trunk) ──────────────────────────────────────
|
|
3561
|
+
// { prefix: '6', dialCode: '237' }, { prefix: '7', dialCode: '237' },
|
|
3562
|
+
// // ── Ivory Coast (+225) ── (no trunk) ───────────────────────────────────
|
|
3563
|
+
// { prefix: '01', dialCode: '225' }, { prefix: '05', dialCode: '225' },
|
|
3564
|
+
// { prefix: '07', dialCode: '225' },
|
|
3565
|
+
// // ── Senegal (+221) ── (no trunk) ───────────────────────────────────────
|
|
3566
|
+
// { prefix: '7', dialCode: '221' },
|
|
3567
|
+
// // ── Zimbabwe (+263) ────────────────────────────────────────────────────
|
|
3568
|
+
// { prefix: '071', dialCode: '263' }, { prefix: '073', dialCode: '263' },
|
|
3569
|
+
// { prefix: '077', dialCode: '263' }, { prefix: '078', dialCode: '263' },
|
|
3570
|
+
// // ── Zambia (+260) ──────────────────────────────────────────────────────
|
|
3571
|
+
// { prefix: '095', dialCode: '260' }, { prefix: '096', dialCode: '260' },
|
|
3572
|
+
// { prefix: '097', dialCode: '260' },
|
|
3573
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3574
|
+
// // OCEANIA
|
|
3575
|
+
// // ═══════════════════════════════════════════════════════════════════════
|
|
3576
|
+
// // ── Australia (+61) ────────────────────────────────────────────────────
|
|
3577
|
+
// { prefix: '04', dialCode: '61' }, // mobile (Telstra, Optus, Vodafone)
|
|
3578
|
+
// { prefix: '02', dialCode: '61' }, // fixed NSW/ACT
|
|
3579
|
+
// { prefix: '03', dialCode: '61' }, // fixed VIC/TAS
|
|
3580
|
+
// { prefix: '07', dialCode: '61' }, // fixed QLD
|
|
3581
|
+
// { prefix: '08', dialCode: '61' }, // fixed SA/WA/NT
|
|
3582
|
+
// // ── New Zealand (+64) ──────────────────────────────────────────────────
|
|
3583
|
+
// { prefix: '021', dialCode: '64' }, { prefix: '022', dialCode: '64' },
|
|
3584
|
+
// { prefix: '027', dialCode: '64' }, { prefix: '028', dialCode: '64' },
|
|
3585
|
+
// { prefix: '029', dialCode: '64' },
|
|
3586
|
+
// // ── Papua New Guinea (+675) ── (no trunk) ──────────────────────────────
|
|
3587
|
+
// { prefix: '7', dialCode: '675' },
|
|
3588
|
+
// // ── Fiji (+679) ── (no trunk) ──────────────────────────────────────────
|
|
3589
|
+
// { prefix: '7', dialCode: '679' }, { prefix: '8', dialCode: '679' },
|
|
3590
|
+
// { prefix: '9', dialCode: '679' },
|
|
3591
|
+
];
|
|
3592
|
+
var _sortedTrunkMap = [...LOCAL_TRUNK_TO_DIAL].sort(
|
|
3593
|
+
(a, b) => b.prefix.length - a.prefix.length
|
|
3594
|
+
);
|
|
3595
|
+
var localToInternational = (value, countryIso) => {
|
|
3596
|
+
if (!value) return value;
|
|
3597
|
+
const trimmed = value.trim();
|
|
3598
|
+
if (trimmed.startsWith("+")) {
|
|
3599
|
+
return "+" + stripNonDigits(trimmed.slice(1));
|
|
3600
|
+
}
|
|
3601
|
+
const digits = stripNonDigits(trimmed);
|
|
3602
|
+
if (digits.startsWith("00") && digits.length > 2) {
|
|
3603
|
+
return "+" + digits.slice(2);
|
|
3604
|
+
}
|
|
3605
|
+
if (!digits.startsWith("0")) {
|
|
3606
|
+
return digits;
|
|
3607
|
+
}
|
|
3608
|
+
for (const { prefix, dialCode: dialCode2 } of _sortedTrunkMap) {
|
|
3609
|
+
if (digits.startsWith(prefix)) {
|
|
3610
|
+
return "+" + dialCode2 + digits.slice(1);
|
|
3611
|
+
}
|
|
3612
|
+
}
|
|
3613
|
+
const dialCode = getDialCode(countryIso);
|
|
3614
|
+
if (dialCode) {
|
|
3615
|
+
return "+" + dialCode + digits.slice(1);
|
|
3616
|
+
}
|
|
3617
|
+
return digits.slice(1);
|
|
3618
|
+
};
|
|
2631
3619
|
var DEFAULT_LABELS7 = {
|
|
2632
3620
|
id: {
|
|
2633
3621
|
emailOrPhonePlaceholder: "Email atau Nomor HP",
|
|
@@ -2649,7 +3637,8 @@ var DEFAULT_LABELS7 = {
|
|
|
2649
3637
|
phoneMinDigitsError: "Nomor HP minimal 10 digit",
|
|
2650
3638
|
invalidEmailOrPhoneError: "Masukkan email atau nomor HP yang valid",
|
|
2651
3639
|
identityPhoneMustStartWithPlusError: "Nomor telepon harus diawali dengan +",
|
|
2652
|
-
identityPhoneMustBeOnlyDigitsError: "Nomor telepon hanya boleh berisi angka setelah +"
|
|
3640
|
+
identityPhoneMustBeOnlyDigitsError: "Nomor telepon hanya boleh berisi angka setelah +",
|
|
3641
|
+
phoneInvalidLengthError: "Nomor telepon harus antara 4-15 digit"
|
|
2653
3642
|
},
|
|
2654
3643
|
en: {
|
|
2655
3644
|
emailOrPhonePlaceholder: "Email or Phone Number",
|
|
@@ -2671,7 +3660,8 @@ var DEFAULT_LABELS7 = {
|
|
|
2671
3660
|
phoneMinDigitsError: "Phone number must be at least 10 digits",
|
|
2672
3661
|
invalidEmailOrPhoneError: "Please enter a valid email or phone number",
|
|
2673
3662
|
identityPhoneMustStartWithPlusError: "Phone number must start with +",
|
|
2674
|
-
identityPhoneMustBeOnlyDigitsError: "Phone number must contain only numbers after +"
|
|
3663
|
+
identityPhoneMustBeOnlyDigitsError: "Phone number must contain only numbers after +",
|
|
3664
|
+
phoneInvalidLengthError: "Phone number must be between 4-15 digits"
|
|
2675
3665
|
}
|
|
2676
3666
|
};
|
|
2677
3667
|
|
|
@@ -3156,7 +4146,7 @@ var detectEmailOrPhoneStrict = (value) => {
|
|
|
3156
4146
|
if (value.includes("@")) return "email";
|
|
3157
4147
|
if (value.startsWith("+")) return "phone";
|
|
3158
4148
|
if (/^0\d/.test(value)) return "phone";
|
|
3159
|
-
if (
|
|
4149
|
+
if (DIGITS_ONLY_REGEX.test(value) && value.length >= 4) return "phone";
|
|
3160
4150
|
return "none";
|
|
3161
4151
|
};
|
|
3162
4152
|
var InputDynamic = ({
|
|
@@ -3193,7 +4183,7 @@ var InputDynamic = ({
|
|
|
3193
4183
|
hasError = false,
|
|
3194
4184
|
autoComplete,
|
|
3195
4185
|
onInput,
|
|
3196
|
-
onlyCountries,
|
|
4186
|
+
onlyCountries = ["id"],
|
|
3197
4187
|
contentAfter,
|
|
3198
4188
|
onChange,
|
|
3199
4189
|
language = "id",
|
|
@@ -3216,6 +4206,23 @@ var InputDynamic = ({
|
|
|
3216
4206
|
const emailOrPhoneInputRef = React.useRef(null);
|
|
3217
4207
|
const shouldFocusRef = React.useRef(false);
|
|
3218
4208
|
const isBackspaceNavigationRef = React.useRef(false);
|
|
4209
|
+
const rawEmailOrPhoneInputRef = React.useRef("");
|
|
4210
|
+
const getPhoneInputValue = (val) => {
|
|
4211
|
+
let cleaned = val.startsWith("+") ? stripNonDigits(val.substring(1)) : stripNonDigits(val);
|
|
4212
|
+
if (onlyCountries && onlyCountries.length > 0 && cleaned) {
|
|
4213
|
+
const matchesAnyCountry = onlyCountries.some((cc) => {
|
|
4214
|
+
const dc = getDialCode(cc);
|
|
4215
|
+
return dc && cleaned.startsWith(dc);
|
|
4216
|
+
});
|
|
4217
|
+
if (!matchesAnyCountry) {
|
|
4218
|
+
const fallbackCode = getDialCode(onlyCountries[0]) || getDialCode(defaultCountry) || "";
|
|
4219
|
+
if (fallbackCode) {
|
|
4220
|
+
cleaned = fallbackCode + cleaned;
|
|
4221
|
+
}
|
|
4222
|
+
}
|
|
4223
|
+
}
|
|
4224
|
+
return cleaned;
|
|
4225
|
+
};
|
|
3219
4226
|
const getSelectStyles = (hasError2, selectAppearance) => {
|
|
3220
4227
|
const currentAppearance = appearance || "outline";
|
|
3221
4228
|
const getControlStyles = (provided, state) => {
|
|
@@ -3407,6 +4414,10 @@ var InputDynamic = ({
|
|
|
3407
4414
|
}
|
|
3408
4415
|
};
|
|
3409
4416
|
const renderInput = (field, error) => {
|
|
4417
|
+
const phoneInputProps = {};
|
|
4418
|
+
if (onlyCountries) {
|
|
4419
|
+
phoneInputProps.onlyCountries = onlyCountries;
|
|
4420
|
+
}
|
|
3410
4421
|
const shouldTransparentBorder = disabled && appearance !== "outline" && appearance !== "underline";
|
|
3411
4422
|
const getPhoneAppearanceClass = () => {
|
|
3412
4423
|
if (appearance === "underline") return styles.phoneInputUnderline;
|
|
@@ -3466,32 +4477,16 @@ var InputDynamic = ({
|
|
|
3466
4477
|
const stringValue = typeof field.value === "string" ? field.value : "";
|
|
3467
4478
|
let inputType = "text";
|
|
3468
4479
|
let inputPlaceholder = placeholder || mergedLabels.emailOrPhonePlaceholder;
|
|
3469
|
-
if (emailOrPhoneType === "
|
|
4480
|
+
if (emailOrPhoneType === "none") {
|
|
4481
|
+
inputType = "text";
|
|
4482
|
+
inputPlaceholder = placeholder || mergedLabels.emailOrPhonePlaceholder;
|
|
4483
|
+
} else if (emailOrPhoneType === "email") {
|
|
3470
4484
|
inputType = "email";
|
|
3471
4485
|
inputPlaceholder = placeholder || mergedLabels.emailPlaceholder;
|
|
3472
4486
|
} else if (emailOrPhoneType === "phone") {
|
|
3473
4487
|
inputType = "tel";
|
|
3474
4488
|
inputPlaceholder = placeholder || mergedLabels.phonePlaceholder;
|
|
3475
4489
|
}
|
|
3476
|
-
const normalizePhoneNumber = (val) => {
|
|
3477
|
-
if (!val) return val;
|
|
3478
|
-
if (val.startsWith("08")) {
|
|
3479
|
-
return "+62" + val.substring(1);
|
|
3480
|
-
}
|
|
3481
|
-
if (val.startsWith("62") && !val.startsWith("+")) {
|
|
3482
|
-
return "+" + val;
|
|
3483
|
-
}
|
|
3484
|
-
return val;
|
|
3485
|
-
};
|
|
3486
|
-
const cleanPhoneValue = (val) => {
|
|
3487
|
-
if (!val) return val;
|
|
3488
|
-
const match = val.match(/^(\d{1,4})(0\d+)$/);
|
|
3489
|
-
if (match) {
|
|
3490
|
-
return match[1] + match[2].substring(1);
|
|
3491
|
-
}
|
|
3492
|
-
return val;
|
|
3493
|
-
};
|
|
3494
|
-
emailOrPhoneType === "phone" ? cleanPhoneValue(stringValue) : stringValue;
|
|
3495
4490
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.phoneContainer, children: emailOrPhoneType === "phone" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3496
4491
|
"div",
|
|
3497
4492
|
{
|
|
@@ -3501,44 +4496,86 @@ var InputDynamic = ({
|
|
|
3501
4496
|
phoneAppearanceClass,
|
|
3502
4497
|
error ? styles.phoneInputError : ""
|
|
3503
4498
|
),
|
|
4499
|
+
onKeyDownCapture: (e) => {
|
|
4500
|
+
if (CONTROL_KEYS.includes(e.key)) return;
|
|
4501
|
+
if (e.key.length !== 1) return;
|
|
4502
|
+
if (!DIGITS_ONLY_REGEX.test(e.key)) {
|
|
4503
|
+
e.preventDefault();
|
|
4504
|
+
const fieldStr = typeof field.value === "string" ? field.value : "";
|
|
4505
|
+
const fieldDigits = stripNonDigits(fieldStr.replace(/^\+/, ""));
|
|
4506
|
+
const activeDialCode = getDialCode(onlyCountries?.[0] || defaultCountry) || "";
|
|
4507
|
+
const userDigitsFromField = activeDialCode && fieldDigits.startsWith(activeDialCode) ? fieldDigits.slice(activeDialCode.length) : fieldDigits;
|
|
4508
|
+
const hadTrunkPrefix = rawEmailOrPhoneInputRef.current.startsWith("08");
|
|
4509
|
+
const rawInput = hadTrunkPrefix ? "08" + userDigitsFromField : userDigitsFromField;
|
|
4510
|
+
const newValue = rawInput + e.key;
|
|
4511
|
+
shouldFocusRef.current = true;
|
|
4512
|
+
rawEmailOrPhoneInputRef.current = newValue;
|
|
4513
|
+
field.onChange(newValue);
|
|
4514
|
+
setLastEmailOrPhoneValue("");
|
|
4515
|
+
updateEmailOrPhoneType(newValue);
|
|
4516
|
+
}
|
|
4517
|
+
},
|
|
3504
4518
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3505
4519
|
PhoneInput,
|
|
3506
4520
|
{
|
|
4521
|
+
...phoneInputProps,
|
|
3507
4522
|
countryCodeEditable: false,
|
|
3508
4523
|
inputStyle: phoneInputSizeStyle,
|
|
3509
4524
|
country: defaultCountry.toLowerCase(),
|
|
3510
|
-
value:
|
|
4525
|
+
value: getPhoneInputValue(stringValue),
|
|
3511
4526
|
onChange: (value, data) => {
|
|
3512
4527
|
if (!value) {
|
|
3513
4528
|
shouldFocusRef.current = true;
|
|
3514
4529
|
field.onChange("");
|
|
3515
4530
|
updateEmailOrPhoneType("");
|
|
3516
4531
|
setLastEmailOrPhoneValue("");
|
|
4532
|
+
rawEmailOrPhoneInputRef.current = "";
|
|
3517
4533
|
return;
|
|
3518
4534
|
}
|
|
3519
4535
|
const countryDialCode = data?.dialCode || "";
|
|
3520
|
-
|
|
4536
|
+
const cleanedValue = removeLeadingZeroAfterDialCode(value, countryDialCode);
|
|
4537
|
+
if (cleanedValue === countryDialCode) {
|
|
3521
4538
|
const dialCodeChanged = lastEmailOrPhoneValue && lastEmailOrPhoneValue !== countryDialCode && !lastEmailOrPhoneValue.startsWith(countryDialCode);
|
|
3522
4539
|
const isInitial = !lastEmailOrPhoneValue;
|
|
3523
4540
|
const wasFullNumber = lastEmailOrPhoneValue && lastEmailOrPhoneValue.length > 3;
|
|
3524
4541
|
if (isInitial || dialCodeChanged || wasFullNumber) {
|
|
3525
|
-
const phoneValue2 = "+" +
|
|
4542
|
+
const phoneValue2 = "+" + cleanedValue;
|
|
3526
4543
|
field.onChange(phoneValue2);
|
|
3527
4544
|
updateEmailOrPhoneType(phoneValue2);
|
|
3528
|
-
setLastEmailOrPhoneValue(
|
|
4545
|
+
setLastEmailOrPhoneValue(cleanedValue);
|
|
3529
4546
|
return;
|
|
3530
4547
|
} else {
|
|
3531
4548
|
shouldFocusRef.current = true;
|
|
3532
4549
|
field.onChange("");
|
|
3533
4550
|
updateEmailOrPhoneType("");
|
|
3534
4551
|
setLastEmailOrPhoneValue("");
|
|
4552
|
+
rawEmailOrPhoneInputRef.current = "";
|
|
3535
4553
|
return;
|
|
3536
4554
|
}
|
|
3537
4555
|
}
|
|
3538
|
-
const phoneValue = "+" +
|
|
4556
|
+
const phoneValue = "+" + cleanedValue;
|
|
3539
4557
|
field.onChange(phoneValue);
|
|
3540
4558
|
updateEmailOrPhoneType(phoneValue);
|
|
3541
|
-
setLastEmailOrPhoneValue(
|
|
4559
|
+
setLastEmailOrPhoneValue(cleanedValue);
|
|
4560
|
+
},
|
|
4561
|
+
inputProps: {
|
|
4562
|
+
onPaste: (e) => {
|
|
4563
|
+
const raw = e.clipboardData.getData("text");
|
|
4564
|
+
const normalized = normalizeRawPhoneInput(raw);
|
|
4565
|
+
if (normalized && !normalized.startsWith("+")) {
|
|
4566
|
+
e.preventDefault();
|
|
4567
|
+
const digitsOnly = normalized.replace(/^0+/, "");
|
|
4568
|
+
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
|
|
4569
|
+
window.HTMLInputElement.prototype,
|
|
4570
|
+
"value"
|
|
4571
|
+
)?.set;
|
|
4572
|
+
const inputEl = e.currentTarget;
|
|
4573
|
+
if (nativeInputValueSetter) {
|
|
4574
|
+
nativeInputValueSetter.call(inputEl, digitsOnly);
|
|
4575
|
+
inputEl.dispatchEvent(new Event("input", { bubbles: true }));
|
|
4576
|
+
}
|
|
4577
|
+
}
|
|
4578
|
+
}
|
|
3542
4579
|
},
|
|
3543
4580
|
placeholder: inputPlaceholder,
|
|
3544
4581
|
disabled,
|
|
@@ -3555,16 +4592,28 @@ var InputDynamic = ({
|
|
|
3555
4592
|
autoComplete: autoComplete || "off",
|
|
3556
4593
|
onChange: (e) => {
|
|
3557
4594
|
const newValue = e.target.value;
|
|
3558
|
-
const
|
|
4595
|
+
const detectedType = detectEmailOrPhoneStrict(newValue);
|
|
4596
|
+
const willSwitchType = emailOrPhoneType !== detectedType;
|
|
3559
4597
|
if (willSwitchType) shouldFocusRef.current = true;
|
|
4598
|
+
rawEmailOrPhoneInputRef.current = newValue;
|
|
3560
4599
|
let normalizedValue = newValue;
|
|
3561
|
-
const detectedType = detectEmailOrPhoneStrict(newValue);
|
|
3562
4600
|
if (detectedType === "phone") {
|
|
3563
|
-
normalizedValue =
|
|
4601
|
+
normalizedValue = localToInternational(newValue, defaultCountry);
|
|
3564
4602
|
}
|
|
3565
4603
|
field.onChange(normalizedValue);
|
|
3566
4604
|
updateEmailOrPhoneType(normalizedValue);
|
|
3567
4605
|
},
|
|
4606
|
+
onPaste: (e) => {
|
|
4607
|
+
const raw = e.clipboardData?.getData("text") ?? "";
|
|
4608
|
+
const detectedType = detectEmailOrPhoneStrict(raw);
|
|
4609
|
+
if (detectedType === "phone") {
|
|
4610
|
+
e.preventDefault();
|
|
4611
|
+
rawEmailOrPhoneInputRef.current = raw;
|
|
4612
|
+
const normalized = localToInternational(raw, defaultCountry);
|
|
4613
|
+
field.onChange(normalized);
|
|
4614
|
+
updateEmailOrPhoneType(normalized);
|
|
4615
|
+
}
|
|
4616
|
+
},
|
|
3568
4617
|
className: classNameSize,
|
|
3569
4618
|
placeholder: inputPlaceholder,
|
|
3570
4619
|
disabled,
|
|
@@ -3590,16 +4639,6 @@ var InputDynamic = ({
|
|
|
3590
4639
|
inputType = "text";
|
|
3591
4640
|
inputPlaceholder = placeholder || mergedLabels.identityIdPlaceholder;
|
|
3592
4641
|
}
|
|
3593
|
-
const cleanPhoneValue = (val) => {
|
|
3594
|
-
if (!val) return val;
|
|
3595
|
-
const stringVal = String(val);
|
|
3596
|
-
const match = stringVal.match(/^(\d{1,4})(0\d+)$/);
|
|
3597
|
-
if (match) {
|
|
3598
|
-
return match[1] + match[2].substring(1);
|
|
3599
|
-
}
|
|
3600
|
-
return stringVal;
|
|
3601
|
-
};
|
|
3602
|
-
identityType === "phone" ? cleanPhoneValue(stringValue) : stringValue;
|
|
3603
4642
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.phoneContainer, children: identityType === "phone" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3604
4643
|
"div",
|
|
3605
4644
|
{
|
|
@@ -3612,9 +4651,10 @@ var InputDynamic = ({
|
|
|
3612
4651
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3613
4652
|
PhoneInput,
|
|
3614
4653
|
{
|
|
4654
|
+
...phoneInputProps,
|
|
3615
4655
|
countryCodeEditable: false,
|
|
3616
4656
|
country: defaultCountry.toLowerCase(),
|
|
3617
|
-
value:
|
|
4657
|
+
value: getPhoneInputValue(stringValue),
|
|
3618
4658
|
onChange: (value, data) => {
|
|
3619
4659
|
if (!value) {
|
|
3620
4660
|
shouldFocusRef.current = true;
|
|
@@ -3624,15 +4664,16 @@ var InputDynamic = ({
|
|
|
3624
4664
|
return;
|
|
3625
4665
|
}
|
|
3626
4666
|
const countryDialCode = data?.dialCode || "";
|
|
3627
|
-
|
|
4667
|
+
const cleanedValue = removeLeadingZeroAfterDialCode(value, countryDialCode);
|
|
4668
|
+
if (cleanedValue === countryDialCode) {
|
|
3628
4669
|
const dialCodeChanged = lastPhoneValue && lastPhoneValue !== countryDialCode && !lastPhoneValue.startsWith(countryDialCode);
|
|
3629
4670
|
const isInitial = !lastPhoneValue;
|
|
3630
4671
|
const wasFullNumber = lastPhoneValue && lastPhoneValue.length > 3;
|
|
3631
4672
|
if (isInitial || dialCodeChanged || wasFullNumber) {
|
|
3632
|
-
const phoneValue2 = "+" +
|
|
4673
|
+
const phoneValue2 = "+" + cleanedValue;
|
|
3633
4674
|
field.onChange(phoneValue2);
|
|
3634
4675
|
updateIdentityType(phoneValue2);
|
|
3635
|
-
setLastPhoneValue(
|
|
4676
|
+
setLastPhoneValue(cleanedValue);
|
|
3636
4677
|
return;
|
|
3637
4678
|
} else {
|
|
3638
4679
|
shouldFocusRef.current = true;
|
|
@@ -3642,10 +4683,29 @@ var InputDynamic = ({
|
|
|
3642
4683
|
return;
|
|
3643
4684
|
}
|
|
3644
4685
|
}
|
|
3645
|
-
const phoneValue = "+" +
|
|
4686
|
+
const phoneValue = "+" + cleanedValue;
|
|
3646
4687
|
field.onChange(phoneValue);
|
|
3647
4688
|
updateIdentityType(phoneValue);
|
|
3648
|
-
setLastPhoneValue(
|
|
4689
|
+
setLastPhoneValue(cleanedValue);
|
|
4690
|
+
},
|
|
4691
|
+
inputProps: {
|
|
4692
|
+
onPaste: (e) => {
|
|
4693
|
+
const raw = e.clipboardData.getData("text");
|
|
4694
|
+
const normalized = normalizeRawPhoneInput(raw);
|
|
4695
|
+
if (normalized && !normalized.startsWith("+")) {
|
|
4696
|
+
e.preventDefault();
|
|
4697
|
+
const digitsOnly = normalized.replace(/^0+/, "");
|
|
4698
|
+
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
|
|
4699
|
+
window.HTMLInputElement.prototype,
|
|
4700
|
+
"value"
|
|
4701
|
+
)?.set;
|
|
4702
|
+
const inputEl = e.currentTarget;
|
|
4703
|
+
if (nativeInputValueSetter) {
|
|
4704
|
+
nativeInputValueSetter.call(inputEl, digitsOnly);
|
|
4705
|
+
inputEl.dispatchEvent(new Event("input", { bubbles: true }));
|
|
4706
|
+
}
|
|
4707
|
+
}
|
|
4708
|
+
}
|
|
3649
4709
|
},
|
|
3650
4710
|
placeholder: inputPlaceholder,
|
|
3651
4711
|
disabled,
|
|
@@ -3664,10 +4724,15 @@ var InputDynamic = ({
|
|
|
3664
4724
|
autoComplete: autoComplete || "off",
|
|
3665
4725
|
onChange: (e) => {
|
|
3666
4726
|
const newValue = e.target.value;
|
|
3667
|
-
const
|
|
4727
|
+
const detectedType = detectIdentityType(newValue);
|
|
4728
|
+
const willSwitchType = identityType !== detectedType;
|
|
3668
4729
|
if (willSwitchType) shouldFocusRef.current = true;
|
|
3669
|
-
|
|
3670
|
-
|
|
4730
|
+
let normalizedValue = newValue;
|
|
4731
|
+
if (detectedType === "phone") {
|
|
4732
|
+
normalizedValue = localToInternational(newValue, defaultCountry);
|
|
4733
|
+
}
|
|
4734
|
+
field.onChange(normalizedValue);
|
|
4735
|
+
updateIdentityType(normalizedValue);
|
|
3671
4736
|
},
|
|
3672
4737
|
placeholder: inputPlaceholder,
|
|
3673
4738
|
disabled,
|
|
@@ -3716,8 +4781,14 @@ var InputDynamic = ({
|
|
|
3716
4781
|
if (isMultiSelect) {
|
|
3717
4782
|
const values = selectedOption ? selectedOption.map((opt) => opt.value) : [];
|
|
3718
4783
|
field.onChange(values);
|
|
4784
|
+
if (onChange) {
|
|
4785
|
+
onChange(values);
|
|
4786
|
+
}
|
|
3719
4787
|
} else {
|
|
3720
4788
|
field.onChange(selectedOption ? selectedOption.value : "");
|
|
4789
|
+
if (onChange) {
|
|
4790
|
+
onChange(selectedOption ? selectedOption.value : "");
|
|
4791
|
+
}
|
|
3721
4792
|
}
|
|
3722
4793
|
},
|
|
3723
4794
|
getOptionLabel: (option) => option.label,
|
|
@@ -3787,20 +4858,8 @@ var InputDynamic = ({
|
|
|
3787
4858
|
}
|
|
3788
4859
|
);
|
|
3789
4860
|
case "phone": {
|
|
3790
|
-
const
|
|
3791
|
-
|
|
3792
|
-
const stringVal = String(val);
|
|
3793
|
-
const match = stringVal.match(/^(\d{1,4})(0\d+)$/);
|
|
3794
|
-
if (match) {
|
|
3795
|
-
return match[1] + match[2].substring(1);
|
|
3796
|
-
}
|
|
3797
|
-
return stringVal;
|
|
3798
|
-
};
|
|
3799
|
-
const cleanedFieldValue = cleanPhoneValue(field.value || "");
|
|
3800
|
-
const phoneInputProps = {};
|
|
3801
|
-
if (onlyCountries) {
|
|
3802
|
-
phoneInputProps.onlyCountries = onlyCountries;
|
|
3803
|
-
}
|
|
4861
|
+
const stringValue = typeof field.value === "string" ? field.value : "";
|
|
4862
|
+
const cleanedFieldValue = getPhoneInputValue(stringValue);
|
|
3804
4863
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3805
4864
|
"div",
|
|
3806
4865
|
{
|
|
@@ -3820,8 +4879,35 @@ var InputDynamic = ({
|
|
|
3820
4879
|
enableSearch: true,
|
|
3821
4880
|
inputStyle: phoneInputSizeStyle,
|
|
3822
4881
|
onChange: (value, data) => {
|
|
3823
|
-
|
|
3824
|
-
|
|
4882
|
+
if (!value) {
|
|
4883
|
+
field.onChange("");
|
|
4884
|
+
return;
|
|
4885
|
+
}
|
|
4886
|
+
const dialCode = data?.dialCode || "";
|
|
4887
|
+
let cleanedValue = removeLeadingZeroAfterDialCode(value, dialCode);
|
|
4888
|
+
if (cleanedValue.length > PHONE_MAX_DIGITS) {
|
|
4889
|
+
cleanedValue = cleanedValue.substring(0, PHONE_MAX_DIGITS);
|
|
4890
|
+
}
|
|
4891
|
+
field.onChange("+" + cleanedValue);
|
|
4892
|
+
},
|
|
4893
|
+
inputProps: {
|
|
4894
|
+
onPaste: (e) => {
|
|
4895
|
+
const raw = e.clipboardData.getData("text");
|
|
4896
|
+
const normalized = normalizeRawPhoneInput(raw);
|
|
4897
|
+
if (normalized && !normalized.startsWith("+")) {
|
|
4898
|
+
e.preventDefault();
|
|
4899
|
+
const digitsOnly = normalized.replace(/^0+/, "");
|
|
4900
|
+
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
|
|
4901
|
+
window.HTMLInputElement.prototype,
|
|
4902
|
+
"value"
|
|
4903
|
+
)?.set;
|
|
4904
|
+
const inputEl = e.currentTarget;
|
|
4905
|
+
if (nativeInputValueSetter) {
|
|
4906
|
+
nativeInputValueSetter.call(inputEl, digitsOnly);
|
|
4907
|
+
inputEl.dispatchEvent(new Event("input", { bubbles: true }));
|
|
4908
|
+
}
|
|
4909
|
+
}
|
|
4910
|
+
}
|
|
3825
4911
|
},
|
|
3826
4912
|
placeholder: placeholder || mergedLabels.phoneDefaultPlaceholder,
|
|
3827
4913
|
value: cleanedFieldValue
|
|
@@ -4177,21 +5263,13 @@ var InputDynamic = ({
|
|
|
4177
5263
|
if (!stringValue) return true;
|
|
4178
5264
|
const detectedType = detectEmailOrPhoneStrict(stringValue);
|
|
4179
5265
|
if (detectedType === "email") {
|
|
4180
|
-
if (
|
|
4181
|
-
stringValue
|
|
4182
|
-
)) {
|
|
5266
|
+
if (!EMAIL_REGEX.test(stringValue)) {
|
|
4183
5267
|
return mergedLabels.invalidEmailFormatError;
|
|
4184
5268
|
}
|
|
4185
5269
|
} else if (detectedType === "phone") {
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
const phoneDigits = stringValue.substring(1);
|
|
4190
|
-
if (!/^\d+$/.test(phoneDigits)) {
|
|
4191
|
-
return mergedLabels.phoneMustBeOnlyDigitsError;
|
|
4192
|
-
}
|
|
4193
|
-
if (phoneDigits.length < 10) {
|
|
4194
|
-
return mergedLabels.phoneMinDigitsError;
|
|
5270
|
+
const phoneDigits = stripNonDigits(stringValue.replace(/^\+/, ""));
|
|
5271
|
+
if (phoneDigits.length > 0 && (phoneDigits.length < PHONE_MIN_DIGITS || phoneDigits.length > PHONE_MAX_DIGITS)) {
|
|
5272
|
+
return mergedLabels.phoneInvalidLengthError;
|
|
4195
5273
|
}
|
|
4196
5274
|
} else {
|
|
4197
5275
|
return mergedLabels.invalidEmailOrPhoneError;
|
|
@@ -4208,18 +5286,13 @@ var InputDynamic = ({
|
|
|
4208
5286
|
if (!stringValue) return true;
|
|
4209
5287
|
const detectedType = detectIdentityType(stringValue);
|
|
4210
5288
|
if (detectedType === "email") {
|
|
4211
|
-
if (
|
|
4212
|
-
stringValue
|
|
4213
|
-
)) {
|
|
5289
|
+
if (!EMAIL_REGEX.test(stringValue)) {
|
|
4214
5290
|
return mergedLabels.invalidEmailFormatError;
|
|
4215
5291
|
}
|
|
4216
5292
|
} else if (detectedType === "phone") {
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
const phoneDigits = stringValue.substring(1);
|
|
4221
|
-
if (!/^\d+$/.test(phoneDigits)) {
|
|
4222
|
-
return mergedLabels.identityPhoneMustBeOnlyDigitsError;
|
|
5293
|
+
const phoneDigits = stripNonDigits(stringValue.replace(/^\+/, ""));
|
|
5294
|
+
if (phoneDigits.length > 0 && (phoneDigits.length < PHONE_MIN_DIGITS || phoneDigits.length > PHONE_MAX_DIGITS)) {
|
|
5295
|
+
return mergedLabels.phoneInvalidLengthError;
|
|
4223
5296
|
}
|
|
4224
5297
|
}
|
|
4225
5298
|
return true;
|
|
@@ -4230,6 +5303,13 @@ var InputDynamic = ({
|
|
|
4230
5303
|
if (required && !value) {
|
|
4231
5304
|
return mergedLabels.requiredFieldError;
|
|
4232
5305
|
}
|
|
5306
|
+
if (value) {
|
|
5307
|
+
const stringValue = typeof value === "string" ? value : String(value);
|
|
5308
|
+
const phoneDigits = stripNonDigits(stringValue.replace(/^\+/, ""));
|
|
5309
|
+
if (phoneDigits.length > 0 && (phoneDigits.length < PHONE_MIN_DIGITS || phoneDigits.length > PHONE_MAX_DIGITS)) {
|
|
5310
|
+
return mergedLabels.phoneInvalidLengthError;
|
|
5311
|
+
}
|
|
5312
|
+
}
|
|
4233
5313
|
return true;
|
|
4234
5314
|
};
|
|
4235
5315
|
}
|
|
@@ -4419,15 +5499,26 @@ var useStyles9 = reactComponents.makeStyles({
|
|
|
4419
5499
|
borderRadius: reactComponents.tokens.borderRadiusCircular
|
|
4420
5500
|
},
|
|
4421
5501
|
serviceMenuCard: {
|
|
5502
|
+
[`@media (min-width: ${extendedTokens.breakpointXs})`]: {
|
|
5503
|
+
margin: reactComponents.tokens.spacingVerticalXL
|
|
5504
|
+
// marginBottom: tokens.spacingVerticalM,
|
|
5505
|
+
},
|
|
5506
|
+
[`@media (min-width: ${extendedTokens.breakpointSm})`]: {
|
|
5507
|
+
margin: reactComponents.tokens.spacingVerticalXL
|
|
5508
|
+
// marginBottom: tokens.spacingVerticalM,
|
|
5509
|
+
},
|
|
4422
5510
|
[`@media (min-width: ${extendedTokens.breakpointMd})`]: {
|
|
4423
|
-
margin: reactComponents.tokens.
|
|
5511
|
+
margin: reactComponents.tokens.spacingVerticalXXL
|
|
5512
|
+
// marginBottom: tokens.spacingVerticalM,
|
|
4424
5513
|
},
|
|
4425
5514
|
[`@media (min-width: ${extendedTokens.breakpointLg})`]: {
|
|
4426
|
-
margin: reactComponents.tokens.
|
|
5515
|
+
margin: reactComponents.tokens.spacingVerticalXXL
|
|
4427
5516
|
},
|
|
4428
5517
|
[`@media (min-width: ${extendedTokens.breakpointXl})`]: {
|
|
4429
|
-
margin: reactComponents.tokens.
|
|
4430
|
-
maxWidth: "70%"
|
|
5518
|
+
margin: reactComponents.tokens.spacingVerticalXXL,
|
|
5519
|
+
maxWidth: "70%",
|
|
5520
|
+
marginLeft: "0px !important",
|
|
5521
|
+
marginRight: "0px !important"
|
|
4431
5522
|
}
|
|
4432
5523
|
},
|
|
4433
5524
|
ticketSearchRow: {
|
|
@@ -4436,13 +5527,13 @@ var useStyles9 = reactComponents.makeStyles({
|
|
|
4436
5527
|
}
|
|
4437
5528
|
},
|
|
4438
5529
|
formContainerCol: {
|
|
4439
|
-
paddingTop:
|
|
4440
|
-
paddingBottom:
|
|
5530
|
+
paddingTop: reactComponents.tokens.spacingVerticalXXL,
|
|
5531
|
+
paddingBottom: reactComponents.tokens.spacingVerticalXXL,
|
|
4441
5532
|
[`@media (max-width: ${extendedTokens.breakpointXl})`]: {
|
|
4442
5533
|
paddingLeft: "20px !important",
|
|
4443
5534
|
paddingRight: "20px !important",
|
|
4444
|
-
marginBottom: "1rem",
|
|
4445
|
-
marginTop: "
|
|
5535
|
+
// marginBottom: "1rem",
|
|
5536
|
+
marginTop: "4rem",
|
|
4446
5537
|
paddingTop: "0px !mportant",
|
|
4447
5538
|
paddingBottom: "0px !mportant"
|
|
4448
5539
|
}
|
|
@@ -4586,7 +5677,7 @@ var CardTicketSearch = ({
|
|
|
4586
5677
|
style: {
|
|
4587
5678
|
display: "flex",
|
|
4588
5679
|
justifyContent: "center",
|
|
4589
|
-
alignItems: "center",
|
|
5680
|
+
// alignItems: "center",
|
|
4590
5681
|
marginBottom: "0px"
|
|
4591
5682
|
},
|
|
4592
5683
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5663,7 +6754,8 @@ var useStyles12 = reactComponents.makeStyles({
|
|
|
5663
6754
|
cursor: "pointer",
|
|
5664
6755
|
display: "flex",
|
|
5665
6756
|
justifyContent: "center",
|
|
5666
|
-
alignItems: "center"
|
|
6757
|
+
alignItems: "center",
|
|
6758
|
+
transition: "all 0.2s ease"
|
|
5667
6759
|
}
|
|
5668
6760
|
});
|
|
5669
6761
|
var HarborListItem = ({
|
|
@@ -5674,23 +6766,34 @@ var HarborListItem = ({
|
|
|
5674
6766
|
containerClassName
|
|
5675
6767
|
}) => {
|
|
5676
6768
|
const styles = useStyles12();
|
|
6769
|
+
const [isHovered, setIsHovered] = React__default.default.useState(false);
|
|
5677
6770
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5678
6771
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: containerClassName, children: [
|
|
5679
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
|
|
5693
|
-
|
|
6772
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6773
|
+
"div",
|
|
6774
|
+
{
|
|
6775
|
+
className: styles.listContent,
|
|
6776
|
+
onClick: () => onSelect(harbor),
|
|
6777
|
+
onMouseEnter: () => setIsHovered(true),
|
|
6778
|
+
onMouseLeave: () => setIsHovered(false),
|
|
6779
|
+
children: [
|
|
6780
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6781
|
+
react.Icon,
|
|
6782
|
+
{
|
|
6783
|
+
icon: "fluent:vehicle-ship-24-regular",
|
|
6784
|
+
fontSize: 20,
|
|
6785
|
+
className: styles.iconMargin,
|
|
6786
|
+
color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0
|
|
6787
|
+
}
|
|
6788
|
+
),
|
|
6789
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "left" }, children: [
|
|
6790
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { style: { color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0, transition: "color 0.2s ease" }, children: harbor.portName }),
|
|
6791
|
+
/* @__PURE__ */ jsxRuntime.jsx("br", {}),
|
|
6792
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { style: { color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0, transition: "color 0.2s ease" }, children: harbor.branchName })
|
|
6793
|
+
] })
|
|
6794
|
+
]
|
|
6795
|
+
}
|
|
6796
|
+
),
|
|
5694
6797
|
trailingIcon
|
|
5695
6798
|
] }),
|
|
5696
6799
|
showDivider && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {})
|
|
@@ -6385,35 +7488,37 @@ var useStyles14 = reactComponents.makeStyles({
|
|
|
6385
7488
|
},
|
|
6386
7489
|
headerRow: {
|
|
6387
7490
|
display: "flex",
|
|
6388
|
-
justifyContent: "end",
|
|
7491
|
+
justifyContent: "flex-end",
|
|
6389
7492
|
alignItems: "center",
|
|
6390
|
-
|
|
7493
|
+
marginBottom: "12px",
|
|
7494
|
+
paddingRight: "8px"
|
|
6391
7495
|
},
|
|
6392
7496
|
serviceList: {
|
|
6393
7497
|
display: "flex",
|
|
6394
7498
|
flexDirection: "column",
|
|
6395
|
-
gap: "
|
|
6396
|
-
maxHeight: "400px",
|
|
7499
|
+
gap: "12px",
|
|
7500
|
+
// maxHeight: "400px",
|
|
6397
7501
|
overflowY: "auto",
|
|
6398
|
-
|
|
7502
|
+
padding: "2px"
|
|
6399
7503
|
},
|
|
6400
7504
|
serviceItem: {
|
|
6401
|
-
padding: "16px
|
|
6402
|
-
|
|
7505
|
+
padding: "16px",
|
|
7506
|
+
border: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
|
|
7507
|
+
borderRadius: "12px",
|
|
6403
7508
|
display: "flex",
|
|
6404
|
-
alignItems: "
|
|
6405
|
-
gap: "
|
|
7509
|
+
alignItems: "center",
|
|
7510
|
+
gap: "16px",
|
|
6406
7511
|
cursor: "pointer",
|
|
6407
|
-
transition: "
|
|
7512
|
+
transition: "border-color 0.2s ease",
|
|
6408
7513
|
":hover": {
|
|
6409
|
-
|
|
7514
|
+
border: `1px solid ${reactComponents.tokens.colorBrandBackground}`
|
|
6410
7515
|
}
|
|
6411
7516
|
},
|
|
6412
7517
|
serviceContent: {
|
|
6413
7518
|
flex: 1,
|
|
6414
7519
|
display: "flex",
|
|
6415
7520
|
flexDirection: "column",
|
|
6416
|
-
gap: "
|
|
7521
|
+
gap: "8px"
|
|
6417
7522
|
},
|
|
6418
7523
|
serviceName: {
|
|
6419
7524
|
fontSize: reactComponents.tokens.fontSizeBase300,
|
|
@@ -6431,8 +7536,10 @@ var useStyles14 = reactComponents.makeStyles({
|
|
|
6431
7536
|
lineHeight: "1.4"
|
|
6432
7537
|
},
|
|
6433
7538
|
footer: {
|
|
6434
|
-
|
|
6435
|
-
|
|
7539
|
+
marginTop: reactComponents.tokens.spacingVerticalL,
|
|
7540
|
+
display: "flex",
|
|
7541
|
+
gap: reactComponents.tokens.spacingHorizontalM,
|
|
7542
|
+
justifyContent: "flex-end"
|
|
6436
7543
|
},
|
|
6437
7544
|
saveButton: {
|
|
6438
7545
|
width: "100%",
|
|
@@ -6450,16 +7557,16 @@ var ServiceListSkeleton = ({
|
|
|
6450
7557
|
style: {
|
|
6451
7558
|
display: "flex",
|
|
6452
7559
|
flexDirection: "column",
|
|
6453
|
-
gap: "
|
|
6454
|
-
width: "
|
|
7560
|
+
gap: "8px",
|
|
7561
|
+
width: "100%"
|
|
6455
7562
|
},
|
|
6456
7563
|
children: [
|
|
6457
7564
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6458
7565
|
reactComponents.SkeletonItem,
|
|
6459
7566
|
{
|
|
6460
7567
|
style: {
|
|
6461
|
-
width: "
|
|
6462
|
-
height: "
|
|
7568
|
+
width: "60%",
|
|
7569
|
+
height: "24px",
|
|
6463
7570
|
borderRadius: "4px"
|
|
6464
7571
|
}
|
|
6465
7572
|
}
|
|
@@ -6468,7 +7575,17 @@ var ServiceListSkeleton = ({
|
|
|
6468
7575
|
reactComponents.SkeletonItem,
|
|
6469
7576
|
{
|
|
6470
7577
|
style: {
|
|
6471
|
-
width: "
|
|
7578
|
+
width: "100px",
|
|
7579
|
+
height: "24px",
|
|
7580
|
+
borderRadius: "12px"
|
|
7581
|
+
}
|
|
7582
|
+
}
|
|
7583
|
+
),
|
|
7584
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7585
|
+
reactComponents.SkeletonItem,
|
|
7586
|
+
{
|
|
7587
|
+
style: {
|
|
7588
|
+
width: "90%",
|
|
6472
7589
|
height: "16px",
|
|
6473
7590
|
borderRadius: "4px"
|
|
6474
7591
|
}
|
|
@@ -6478,7 +7595,7 @@ var ServiceListSkeleton = ({
|
|
|
6478
7595
|
reactComponents.SkeletonItem,
|
|
6479
7596
|
{
|
|
6480
7597
|
style: {
|
|
6481
|
-
width: "
|
|
7598
|
+
width: "70%",
|
|
6482
7599
|
height: "16px",
|
|
6483
7600
|
borderRadius: "4px"
|
|
6484
7601
|
}
|
|
@@ -6491,8 +7608,8 @@ var ServiceListSkeleton = ({
|
|
|
6491
7608
|
reactComponents.SkeletonItem,
|
|
6492
7609
|
{
|
|
6493
7610
|
style: {
|
|
6494
|
-
width: "
|
|
6495
|
-
height: "
|
|
7611
|
+
width: "24px",
|
|
7612
|
+
height: "24px",
|
|
6496
7613
|
borderRadius: "4px"
|
|
6497
7614
|
}
|
|
6498
7615
|
}
|
|
@@ -6577,40 +7694,54 @@ var ModalService = ({
|
|
|
6577
7694
|
actionButton: reloadButton,
|
|
6578
7695
|
imageSrc: emptyImageSrc
|
|
6579
7696
|
}
|
|
6580
|
-
) : /* @__PURE__ */ jsxRuntime.
|
|
6581
|
-
/* @__PURE__ */ jsxRuntime.
|
|
6582
|
-
|
|
6583
|
-
|
|
6584
|
-
|
|
6585
|
-
|
|
6586
|
-
|
|
6587
|
-
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
|
|
6592
|
-
|
|
6593
|
-
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
children: [
|
|
6597
|
-
/* @__PURE__ */ jsxRuntime.
|
|
6598
|
-
|
|
6599
|
-
|
|
6600
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceDescription, children: service.serviceDescription })
|
|
6601
|
-
] }),
|
|
6602
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6603
|
-
reactComponents.Checkbox,
|
|
7697
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceList, children: [
|
|
7698
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.headerRow, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7699
|
+
reactComponents.Checkbox,
|
|
7700
|
+
{
|
|
7701
|
+
label: mergedLabels.selectAll,
|
|
7702
|
+
checked: selectedServices.length === services.length,
|
|
7703
|
+
onChange: handleToggleAll
|
|
7704
|
+
}
|
|
7705
|
+
) }),
|
|
7706
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
|
|
7707
|
+
services.map((service) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7708
|
+
"div",
|
|
7709
|
+
{
|
|
7710
|
+
className: styles.serviceItem,
|
|
7711
|
+
onClick: () => handleToggleService(service.serviceTypeId),
|
|
7712
|
+
children: [
|
|
7713
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceContent, children: [
|
|
7714
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.serviceName, children: service.serviceTypeName }),
|
|
7715
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { alignSelf: "flex-start" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7716
|
+
reactComponents.Badge,
|
|
6604
7717
|
{
|
|
6605
|
-
|
|
6606
|
-
|
|
7718
|
+
appearance: "ghost",
|
|
7719
|
+
style: {
|
|
7720
|
+
backgroundColor: service.serviceTypeColor,
|
|
7721
|
+
color: "#ffffff",
|
|
7722
|
+
border: "none",
|
|
7723
|
+
padding: "4px 10px",
|
|
7724
|
+
height: "auto",
|
|
7725
|
+
borderRadius: "100px"
|
|
7726
|
+
},
|
|
7727
|
+
children: service.serviceTypeCode
|
|
6607
7728
|
}
|
|
6608
|
-
)
|
|
6609
|
-
|
|
6610
|
-
|
|
6611
|
-
|
|
6612
|
-
|
|
6613
|
-
|
|
7729
|
+
) }),
|
|
7730
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceDescription, children: service.serviceDescription })
|
|
7731
|
+
] }),
|
|
7732
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7733
|
+
reactComponents.Checkbox,
|
|
7734
|
+
{
|
|
7735
|
+
checked: selectedServices.includes(service.serviceTypeId),
|
|
7736
|
+
onChange: () => handleToggleService(service.serviceTypeId),
|
|
7737
|
+
onClick: (e) => e.stopPropagation()
|
|
7738
|
+
}
|
|
7739
|
+
)
|
|
7740
|
+
]
|
|
7741
|
+
},
|
|
7742
|
+
service.serviceTypeId
|
|
7743
|
+
)),
|
|
7744
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
|
|
6614
7745
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.footer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6615
7746
|
reactComponents.Button,
|
|
6616
7747
|
{
|
|
@@ -6622,7 +7753,7 @@ var ModalService = ({
|
|
|
6622
7753
|
children: mergedLabels.saveButton
|
|
6623
7754
|
}
|
|
6624
7755
|
) })
|
|
6625
|
-
] }) })
|
|
7756
|
+
] }) }) })
|
|
6626
7757
|
] }) }) });
|
|
6627
7758
|
};
|
|
6628
7759
|
|
|
@@ -6662,7 +7793,12 @@ var useStyles15 = reactComponents.makeStyles({
|
|
|
6662
7793
|
accordionItem: {
|
|
6663
7794
|
borderRadius: reactComponents.tokens.borderRadiusXLarge,
|
|
6664
7795
|
marginBottom: "1rem",
|
|
6665
|
-
border: `1px solid ${reactComponents.tokens.colorNeutralStroke2}
|
|
7796
|
+
border: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
|
|
7797
|
+
cursor: "pointer",
|
|
7798
|
+
transition: "border-color 0.2s ease",
|
|
7799
|
+
"&:hover": {
|
|
7800
|
+
border: `1px solid ${reactComponents.tokens.colorBrandBackground}`
|
|
7801
|
+
}
|
|
6666
7802
|
},
|
|
6667
7803
|
passengerCount: {
|
|
6668
7804
|
display: "flex",
|
|
@@ -7212,6 +8348,111 @@ var TypeOfServiceListSkeleton = ({ count = 3 }) => {
|
|
|
7212
8348
|
}
|
|
7213
8349
|
);
|
|
7214
8350
|
};
|
|
8351
|
+
var HoverableAccordionHeaderContent = ({
|
|
8352
|
+
item,
|
|
8353
|
+
imageRenderer,
|
|
8354
|
+
styles
|
|
8355
|
+
}) => {
|
|
8356
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
8357
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8358
|
+
"div",
|
|
8359
|
+
{
|
|
8360
|
+
style: {
|
|
8361
|
+
display: "flex",
|
|
8362
|
+
alignItems: "center",
|
|
8363
|
+
width: "100%",
|
|
8364
|
+
cursor: "pointer"
|
|
8365
|
+
},
|
|
8366
|
+
onMouseEnter: () => setIsHovered(true),
|
|
8367
|
+
onMouseLeave: () => setIsHovered(false),
|
|
8368
|
+
children: [
|
|
8369
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { children: imageRenderer({
|
|
8370
|
+
src: item.image,
|
|
8371
|
+
alt: item.title,
|
|
8372
|
+
width: 74,
|
|
8373
|
+
height: 74
|
|
8374
|
+
}) }),
|
|
8375
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.accordionTitleAndInfo, children: [
|
|
8376
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8377
|
+
reactComponents.Body1,
|
|
8378
|
+
{
|
|
8379
|
+
style: {
|
|
8380
|
+
color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
|
|
8381
|
+
transition: "color 0.2s ease"
|
|
8382
|
+
},
|
|
8383
|
+
children: item.title
|
|
8384
|
+
}
|
|
8385
|
+
),
|
|
8386
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8387
|
+
reactComponents.Caption1,
|
|
8388
|
+
{
|
|
8389
|
+
style: {
|
|
8390
|
+
color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
|
|
8391
|
+
transition: "color 0.2s ease"
|
|
8392
|
+
},
|
|
8393
|
+
children: item.info
|
|
8394
|
+
}
|
|
8395
|
+
)
|
|
8396
|
+
] })
|
|
8397
|
+
]
|
|
8398
|
+
}
|
|
8399
|
+
);
|
|
8400
|
+
};
|
|
8401
|
+
var HoverableRadioItem = ({
|
|
8402
|
+
item,
|
|
8403
|
+
imageRenderer,
|
|
8404
|
+
styles,
|
|
8405
|
+
isChild = false
|
|
8406
|
+
}) => {
|
|
8407
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
8408
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8409
|
+
"div",
|
|
8410
|
+
{
|
|
8411
|
+
className: reactComponents.mergeClasses(styles.accordionHeader, styles.accordionItem),
|
|
8412
|
+
style: { padding: reactComponents.tokens.spacingHorizontalXS, cursor: "pointer" },
|
|
8413
|
+
onMouseEnter: () => setIsHovered(true),
|
|
8414
|
+
onMouseLeave: () => setIsHovered(false),
|
|
8415
|
+
children: [
|
|
8416
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: isChild ? void 0 : { marginLeft: 2 }, children: imageRenderer({
|
|
8417
|
+
src: item.image,
|
|
8418
|
+
alt: item.title,
|
|
8419
|
+
width: isChild ? 48 : 74,
|
|
8420
|
+
height: isChild ? 48 : 74
|
|
8421
|
+
}) }),
|
|
8422
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8423
|
+
"div",
|
|
8424
|
+
{
|
|
8425
|
+
className: styles.accordionTitleAndInfo,
|
|
8426
|
+
style: isChild ? void 0 : { marginLeft: 18 },
|
|
8427
|
+
children: [
|
|
8428
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8429
|
+
reactComponents.Body1,
|
|
8430
|
+
{
|
|
8431
|
+
style: {
|
|
8432
|
+
color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
|
|
8433
|
+
transition: "color 0.2s ease"
|
|
8434
|
+
},
|
|
8435
|
+
children: item.title
|
|
8436
|
+
}
|
|
8437
|
+
),
|
|
8438
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8439
|
+
reactComponents.Caption1,
|
|
8440
|
+
{
|
|
8441
|
+
style: {
|
|
8442
|
+
color: isHovered ? reactComponents.tokens.colorBrandBackground : void 0,
|
|
8443
|
+
transition: "color 0.2s ease"
|
|
8444
|
+
},
|
|
8445
|
+
children: item.info
|
|
8446
|
+
}
|
|
8447
|
+
)
|
|
8448
|
+
]
|
|
8449
|
+
}
|
|
8450
|
+
),
|
|
8451
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: String(item.id) })
|
|
8452
|
+
]
|
|
8453
|
+
}
|
|
8454
|
+
);
|
|
8455
|
+
};
|
|
7215
8456
|
var ModalTypeOfService = ({
|
|
7216
8457
|
language = "id",
|
|
7217
8458
|
labels,
|
|
@@ -7370,54 +8611,28 @@ var ModalTypeOfService = ({
|
|
|
7370
8611
|
value: item?.id,
|
|
7371
8612
|
className: styles.accordionItem,
|
|
7372
8613
|
children: [
|
|
7373
|
-
/* @__PURE__ */ jsxRuntime.
|
|
8614
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7374
8615
|
reactComponents.AccordionHeader,
|
|
7375
8616
|
{
|
|
7376
8617
|
className: styles.accordionHeader,
|
|
7377
8618
|
expandIconPosition: "end",
|
|
7378
|
-
children:
|
|
7379
|
-
|
|
7380
|
-
|
|
7381
|
-
|
|
7382
|
-
|
|
7383
|
-
|
|
7384
|
-
}
|
|
7385
|
-
|
|
7386
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: item.title }),
|
|
7387
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: item.info })
|
|
7388
|
-
] })
|
|
7389
|
-
]
|
|
8619
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8620
|
+
HoverableAccordionHeaderContent,
|
|
8621
|
+
{
|
|
8622
|
+
item,
|
|
8623
|
+
imageRenderer,
|
|
8624
|
+
styles
|
|
8625
|
+
}
|
|
8626
|
+
)
|
|
7390
8627
|
}
|
|
7391
8628
|
),
|
|
7392
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { className: styles.accordionBody, children: item.children.length > 0 && item.children.map((childItem, childIndex) => /* @__PURE__ */ jsxRuntime.
|
|
7393
|
-
|
|
8629
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { className: styles.accordionBody, children: item.children.length > 0 && item.children.map((childItem, childIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8630
|
+
HoverableRadioItem,
|
|
7394
8631
|
{
|
|
7395
|
-
|
|
7396
|
-
|
|
7397
|
-
|
|
7398
|
-
|
|
7399
|
-
style: {
|
|
7400
|
-
padding: reactComponents.tokens.spacingHorizontalXS
|
|
7401
|
-
},
|
|
7402
|
-
children: [
|
|
7403
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { children: imageRenderer({
|
|
7404
|
-
src: childItem.image,
|
|
7405
|
-
alt: childItem.title,
|
|
7406
|
-
width: 48,
|
|
7407
|
-
height: 48
|
|
7408
|
-
}) }),
|
|
7409
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7410
|
-
"div",
|
|
7411
|
-
{
|
|
7412
|
-
className: styles.accordionTitleAndInfo,
|
|
7413
|
-
children: [
|
|
7414
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: childItem.title }),
|
|
7415
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: childItem.info })
|
|
7416
|
-
]
|
|
7417
|
-
}
|
|
7418
|
-
),
|
|
7419
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: String(childItem.id) })
|
|
7420
|
-
]
|
|
8632
|
+
item: childItem,
|
|
8633
|
+
imageRenderer,
|
|
8634
|
+
styles,
|
|
8635
|
+
isChild: true
|
|
7421
8636
|
},
|
|
7422
8637
|
childIndex
|
|
7423
8638
|
)) })
|
|
@@ -7426,34 +8641,13 @@ var ModalTypeOfService = ({
|
|
|
7426
8641
|
index
|
|
7427
8642
|
);
|
|
7428
8643
|
} else if (item.children.length === 0) {
|
|
7429
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
7430
|
-
|
|
8644
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8645
|
+
HoverableRadioItem,
|
|
7431
8646
|
{
|
|
7432
|
-
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
|
|
7436
|
-
style: { padding: reactComponents.tokens.spacingHorizontalXS },
|
|
7437
|
-
children: [
|
|
7438
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { marginLeft: 2 }, children: imageRenderer({
|
|
7439
|
-
src: item.image,
|
|
7440
|
-
alt: item.title,
|
|
7441
|
-
width: 74,
|
|
7442
|
-
height: 74
|
|
7443
|
-
}) }),
|
|
7444
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7445
|
-
"div",
|
|
7446
|
-
{
|
|
7447
|
-
className: styles.accordionTitleAndInfo,
|
|
7448
|
-
style: { marginLeft: 18 },
|
|
7449
|
-
children: [
|
|
7450
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: item.title }),
|
|
7451
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: item.info })
|
|
7452
|
-
]
|
|
7453
|
-
}
|
|
7454
|
-
),
|
|
7455
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: String(item.id) })
|
|
7456
|
-
]
|
|
8647
|
+
item,
|
|
8648
|
+
imageRenderer,
|
|
8649
|
+
styles,
|
|
8650
|
+
isChild: false
|
|
7457
8651
|
},
|
|
7458
8652
|
index
|
|
7459
8653
|
);
|
|
@@ -13604,7 +14798,8 @@ var DEFAULT_LABELS36 = {
|
|
|
13604
14798
|
totalPayment: "Total Pembayaran",
|
|
13605
14799
|
checkStatusInfo: "Klik tombol dibawah ini jika sudah melakukan pembayaran",
|
|
13606
14800
|
checkStatusButton: "Cek Status Pembayaran",
|
|
13607
|
-
currencySymbol: "Rp."
|
|
14801
|
+
currencySymbol: "Rp.",
|
|
14802
|
+
changePayment: "Ubah Metode Pembayaran"
|
|
13608
14803
|
},
|
|
13609
14804
|
en: {
|
|
13610
14805
|
expiryPrefix: "Virtual account code valid until",
|
|
@@ -13612,7 +14807,8 @@ var DEFAULT_LABELS36 = {
|
|
|
13612
14807
|
totalPayment: "Total Payment",
|
|
13613
14808
|
checkStatusInfo: "Click the button below if you have made the payment",
|
|
13614
14809
|
checkStatusButton: "Check Payment Status",
|
|
13615
|
-
currencySymbol: "Rp."
|
|
14810
|
+
currencySymbol: "Rp.",
|
|
14811
|
+
changePayment: "Change Payment Method"
|
|
13616
14812
|
}
|
|
13617
14813
|
};
|
|
13618
14814
|
var useStyles38 = reactComponents.makeStyles({
|
|
@@ -13695,7 +14891,8 @@ var CardPaymentInfo = ({
|
|
|
13695
14891
|
totalAmount,
|
|
13696
14892
|
guides,
|
|
13697
14893
|
onCopyVA,
|
|
13698
|
-
onCheckStatus
|
|
14894
|
+
onCheckStatus,
|
|
14895
|
+
onChangePayment
|
|
13699
14896
|
}) => {
|
|
13700
14897
|
const styles = useStyles38();
|
|
13701
14898
|
const mergedLabels = { ...DEFAULT_LABELS36[language], ...labels };
|
|
@@ -13724,6 +14921,17 @@ var CardPaymentInfo = ({
|
|
|
13724
14921
|
)
|
|
13725
14922
|
] })
|
|
13726
14923
|
] }),
|
|
14924
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14925
|
+
reactComponents.Button,
|
|
14926
|
+
{
|
|
14927
|
+
appearance: "secondary",
|
|
14928
|
+
size: "large",
|
|
14929
|
+
shape: "circular",
|
|
14930
|
+
className: styles.checkStatusButton,
|
|
14931
|
+
onClick: onChangePayment,
|
|
14932
|
+
children: mergedLabels.changePayment
|
|
14933
|
+
}
|
|
14934
|
+
),
|
|
13727
14935
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13728
14936
|
reactComponents.Field,
|
|
13729
14937
|
{
|
|
@@ -13732,7 +14940,9 @@ var CardPaymentInfo = ({
|
|
|
13732
14940
|
children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Title2, { children: [
|
|
13733
14941
|
mergedLabels.currencySymbol,
|
|
13734
14942
|
" ",
|
|
13735
|
-
totalAmount.toLocaleString(
|
|
14943
|
+
totalAmount.toLocaleString(
|
|
14944
|
+
language === "id" ? "id-ID" : "en-US"
|
|
14945
|
+
)
|
|
13736
14946
|
] })
|
|
13737
14947
|
}
|
|
13738
14948
|
)
|