@relayprotocol/relay-kit-ui 5.1.1 → 5.1.2
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/_cjs/src/components/common/Modal.js +2 -2
- package/_cjs/src/components/common/Modal.js.map +1 -1
- package/_cjs/src/components/common/TokenSelector/ChainShortcuts.js +83 -0
- package/_cjs/src/components/common/TokenSelector/ChainShortcuts.js.map +1 -0
- package/_cjs/src/components/common/TokenSelector/MobileChainSelector.js +255 -0
- package/_cjs/src/components/common/TokenSelector/MobileChainSelector.js.map +1 -0
- package/_cjs/src/components/common/TokenSelector/TokenSelector.js +62 -27
- package/_cjs/src/components/common/TokenSelector/TokenSelector.js.map +1 -1
- package/_cjs/src/components/primitives/Dialog.js +6 -5
- package/_cjs/src/components/primitives/Dialog.js.map +1 -1
- package/_cjs/src/styles.css +51 -8
- package/_cjs/src/version.js +1 -1
- package/_cjs/tsconfig.build.tsbuildinfo +1 -1
- package/_esm/src/components/common/Modal.js +2 -2
- package/_esm/src/components/common/Modal.js.map +1 -1
- package/_esm/src/components/common/TokenSelector/ChainShortcuts.js +84 -0
- package/_esm/src/components/common/TokenSelector/ChainShortcuts.js.map +1 -0
- package/_esm/src/components/common/TokenSelector/MobileChainSelector.js +260 -0
- package/_esm/src/components/common/TokenSelector/MobileChainSelector.js.map +1 -0
- package/_esm/src/components/common/TokenSelector/TokenSelector.js +64 -28
- package/_esm/src/components/common/TokenSelector/TokenSelector.js.map +1 -1
- package/_esm/src/components/primitives/Dialog.js +6 -5
- package/_esm/src/components/primitives/Dialog.js.map +1 -1
- package/_esm/src/styles.css +51 -8
- package/_esm/src/version.js +1 -1
- package/_esm/tsconfig.build.tsbuildinfo +1 -1
- package/_types/src/components/common/Modal.d.ts +2 -1
- package/_types/src/components/common/Modal.d.ts.map +1 -1
- package/_types/src/components/common/TokenSelector/ChainShortcuts.d.ts +19 -0
- package/_types/src/components/common/TokenSelector/ChainShortcuts.d.ts.map +1 -0
- package/_types/src/components/common/TokenSelector/MobileChainSelector.d.ts +21 -0
- package/_types/src/components/common/TokenSelector/MobileChainSelector.d.ts.map +1 -0
- package/_types/src/components/common/TokenSelector/TokenSelector.d.ts.map +1 -1
- package/_types/src/components/primitives/Dialog.d.ts +1 -0
- package/_types/src/components/primitives/Dialog.d.ts.map +1 -1
- package/_types/src/version.d.ts +1 -1
- package/_types/tsconfig.build.tsbuildinfo +1 -1
- package/dist/panda.buildinfo.json +14 -3
- package/dist/styles.css +51 -8
- package/package.json +3 -3
|
@@ -8,7 +8,7 @@ const index_js_1 = require("../primitives/index.js");
|
|
|
8
8
|
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
9
9
|
const faXmark_1 = require("@fortawesome/free-solid-svg-icons/faXmark");
|
|
10
10
|
const framer_motion_1 = require("framer-motion");
|
|
11
|
-
const Modal = ({ trigger, css, overlayZIndex = 9999, showCloseButton = true, children, ...props }) => {
|
|
11
|
+
const Modal = ({ trigger, css, overlayZIndex = 9999, showCloseButton = true, disableAnimation = false, children, ...props }) => {
|
|
12
12
|
return ((0, jsx_runtime_1.jsxs)(react_dialog_1.Root, { modal: true, ...props, children: [(0, jsx_runtime_1.jsx)(react_dialog_1.DialogTrigger, { asChild: true, children: trigger }), (0, jsx_runtime_1.jsx)(framer_motion_1.AnimatePresence, { children: props.open ? ((0, jsx_runtime_1.jsx)(react_dialog_1.DialogPortal, { forceMount: true, children: (0, jsx_runtime_1.jsx)(Dialog_js_1.Overlay, { forceMount: true, css: {
|
|
13
13
|
position: 'fixed',
|
|
14
14
|
top: 0,
|
|
@@ -21,7 +21,7 @@ const Modal = ({ trigger, css, overlayZIndex = 9999, showCloseButton = true, chi
|
|
|
21
21
|
border: '1px solid var(--borderColor)',
|
|
22
22
|
padding: '4',
|
|
23
23
|
...css
|
|
24
|
-
}, onPointerDownOutside: props.onPointerDownOutside, children: [showCloseButton ? ((0, jsx_runtime_1.jsx)(react_dialog_1.DialogClose, { asChild: true, style: {
|
|
24
|
+
}, disableAnimation: disableAnimation, onPointerDownOutside: props.onPointerDownOutside, onOpenAutoFocus: props.onOpenAutoFocus, children: [showCloseButton ? ((0, jsx_runtime_1.jsx)(react_dialog_1.DialogClose, { asChild: true, style: {
|
|
25
25
|
position: 'absolute',
|
|
26
26
|
right: 10,
|
|
27
27
|
top: 12,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../../src/components/common/Modal.tsx"],"names":[],"mappings":";;;;AACA,uDAAkE;AAClE,yDAK+B;AAC/B,qDAA+C;AAC/C,sEAAgE;AAChE,uEAAmE;AAEnE,iDAA+C;
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../../src/components/common/Modal.tsx"],"names":[],"mappings":";;;;AACA,uDAAkE;AAClE,yDAK+B;AAC/B,qDAA+C;AAC/C,sEAAgE;AAChE,uEAAmE;AAEnE,iDAA+C;AAcxC,MAAM,KAAK,GAOd,CAAC,EACH,OAAO,EACP,GAAG,EACH,aAAa,GAAG,IAAI,EACpB,eAAe,GAAG,IAAI,EACtB,gBAAgB,GAAG,KAAK,EACxB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,EAAE;IACH,OAAO,CACL,wBAAC,mBAAU,IAAC,KAAK,EAAE,IAAI,KAAM,KAAK,aAChC,uBAAC,4BAAa,IAAC,OAAO,kBAAE,OAAO,GAAiB,EAChD,uBAAC,+BAAe,cACb,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CACZ,uBAAC,2BAAY,IAAC,UAAU,kBACtB,uBAAC,mBAAO,IACN,UAAU,QACV,GAAG,EAAE;4BACH,QAAQ,EAAE,OAAO;4BACjB,GAAG,EAAE,CAAC;4BACN,IAAI,EAAE,CAAC;4BACP,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,CAAC;4BACT,eAAe,EAAE,UAAU;yBAC5B,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,YAEhC,wBAAC,2BAAe,IACd,UAAU,QACV,GAAG,EAAE;gCACH,eAAe,EAAE,4BAA4B;gCAC7C,MAAM,EAAE,8BAA8B;gCACtC,OAAO,EAAE,GAAG;gCACZ,GAAG,GAAG;6BACP,EACD,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAChD,eAAe,EAAE,KAAK,CAAC,eAAe,aAErC,eAAe,CAAC,CAAC,CAAC,CACjB,uBAAC,0BAAW,IACV,OAAO,QACP,KAAK,EAAE;wCACL,QAAQ,EAAE,UAAU;wCACpB,KAAK,EAAE,EAAE;wCACT,GAAG,EAAE,EAAE;wCACP,MAAM,EAAE,EAAE;qCACX,YAED,uBAAC,iBAAM,IACL,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAC/B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4CACb,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAA;wCACjC,CAAC,YAED,uBAAC,mCAAe,IAAC,IAAI,EAAE,iBAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,GAClD,GACG,CACf,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACO,GACV,GACG,CAChB,CAAC,CAAC,CAAC,IAAI,GACQ,IACP,CACd,CAAA;AACH,CAAC,CAAA;AA5EY,QAAA,KAAK,SA4EjB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChainShortcuts = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const index_js_1 = require("../../primitives/index.js");
|
|
7
|
+
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
8
|
+
const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
|
|
9
|
+
const tokenSelector_js_1 = require("../../../utils/tokenSelector.js");
|
|
10
|
+
const events_js_1 = require("../../../constants/events.js");
|
|
11
|
+
const ChainShortcuts = ({ options, value, onSelect, onMoreClick, popularChainIds, starredChainIds, onAnalyticEvent, context }) => {
|
|
12
|
+
const shortcutChains = (0, react_1.useMemo)(() => {
|
|
13
|
+
const { allChainsOption, starredChains, alphabeticalChains } = (0, tokenSelector_js_1.groupChains)(options, popularChainIds, starredChainIds);
|
|
14
|
+
const shortcuts = [];
|
|
15
|
+
if (allChainsOption) {
|
|
16
|
+
shortcuts.push(allChainsOption);
|
|
17
|
+
}
|
|
18
|
+
const remainingSlots = 5 - shortcuts.length;
|
|
19
|
+
const starredToAdd = starredChains.slice(0, remainingSlots);
|
|
20
|
+
shortcuts.push(...starredToAdd);
|
|
21
|
+
const currentSlots = shortcuts.length;
|
|
22
|
+
if (currentSlots < 5) {
|
|
23
|
+
const remainingSlots = 5 - currentSlots;
|
|
24
|
+
const existingIds = new Set(shortcuts.map((c) => c.id));
|
|
25
|
+
const popularChains = alphabeticalChains.filter((chain) => chain.id &&
|
|
26
|
+
popularChainIds?.includes(chain.id) &&
|
|
27
|
+
!existingIds.has(chain.id));
|
|
28
|
+
const popularToAdd = popularChains.slice(0, remainingSlots);
|
|
29
|
+
shortcuts.push(...popularToAdd);
|
|
30
|
+
const finalSlots = shortcuts.length;
|
|
31
|
+
if (finalSlots < 5) {
|
|
32
|
+
const finalRemaining = 5 - finalSlots;
|
|
33
|
+
const finalExistingIds = new Set(shortcuts.map((c) => c.id));
|
|
34
|
+
const alphabeticalToAdd = alphabeticalChains
|
|
35
|
+
.filter((chain) => chain.id && !finalExistingIds.has(chain.id))
|
|
36
|
+
.slice(0, finalRemaining);
|
|
37
|
+
shortcuts.push(...alphabeticalToAdd);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return shortcuts.slice(0, 5);
|
|
41
|
+
}, [options, popularChainIds, starredChainIds]);
|
|
42
|
+
const handleChainSelect = (chain) => {
|
|
43
|
+
onAnalyticEvent?.(events_js_1.EventNames.CURRENCY_STEP_CHAIN_FILTER, {
|
|
44
|
+
chain: chain.name,
|
|
45
|
+
chain_id: chain.id,
|
|
46
|
+
search_term: '',
|
|
47
|
+
context,
|
|
48
|
+
from_starred_list: starredChainIds?.includes(chain.id) ?? false
|
|
49
|
+
});
|
|
50
|
+
onSelect(chain);
|
|
51
|
+
};
|
|
52
|
+
return ((0, jsx_runtime_1.jsxs)(index_js_1.Flex, { css: { gap: '2', width: '100%', overflowX: 'auto', py: '2' }, children: [shortcutChains.map((chain) => ((0, jsx_runtime_1.jsx)(ChainShortcutButton, { chain: chain, isSelected: value.id === chain.id, onClick: () => handleChainSelect(chain) }, chain.id?.toString() ?? 'all-chains'))), (0, jsx_runtime_1.jsxs)(index_js_1.Button, { color: "ghost", size: "none", onClick: onMoreClick, css: {
|
|
53
|
+
display: 'flex',
|
|
54
|
+
alignItems: 'center',
|
|
55
|
+
gap: '1',
|
|
56
|
+
px: '2',
|
|
57
|
+
py: '10px',
|
|
58
|
+
height: '40px',
|
|
59
|
+
borderRadius: '8px',
|
|
60
|
+
backgroundColor: 'dropdown-background',
|
|
61
|
+
color: 'gray9',
|
|
62
|
+
_hover: {
|
|
63
|
+
backgroundColor: 'gray3'
|
|
64
|
+
}
|
|
65
|
+
}, children: [(0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", color: "subtle", children: "More" }), (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faChevronRight, width: 16, height: 16 })] })] }));
|
|
66
|
+
};
|
|
67
|
+
exports.ChainShortcuts = ChainShortcuts;
|
|
68
|
+
const ChainShortcutButton = ({ chain, isSelected, onClick }) => {
|
|
69
|
+
return ((0, jsx_runtime_1.jsx)(index_js_1.Button, { color: "ghost", size: "none", onClick: onClick, css: {
|
|
70
|
+
display: 'flex',
|
|
71
|
+
flexDirection: 'column',
|
|
72
|
+
alignItems: 'center',
|
|
73
|
+
gap: '1',
|
|
74
|
+
py: '2',
|
|
75
|
+
px: '3',
|
|
76
|
+
borderRadius: '12px',
|
|
77
|
+
backgroundColor: isSelected ? 'gray6' : 'dropdown-background',
|
|
78
|
+
_hover: {
|
|
79
|
+
backgroundColor: isSelected ? 'gray6' : 'gray3'
|
|
80
|
+
}
|
|
81
|
+
}, children: chain.id ? ((0, jsx_runtime_1.jsx)(index_js_1.ChainIcon, { chainId: chain.id, width: 24, height: 24, css: { borderRadius: '4px', overflow: 'hidden' } })) : ((0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", css: { height: '24px', width: '20px' }, children: "All" })) }));
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=ChainShortcuts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainShortcuts.js","sourceRoot":"","sources":["../../../../../src/components/common/TokenSelector/ChainShortcuts.tsx"],"names":[],"mappings":";;;;AAAA,iCAAwC;AACxC,wDAAyE;AACzE,sEAAgE;AAChE,4EAAkE;AAGlE,sEAA6D;AAC7D,4DAAyD;AAalD,MAAM,cAAc,GAA4B,CAAC,EACtD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EACf,OAAO,EACR,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAClC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,IAAA,8BAAW,EACxE,OAAO,EACP,eAAe,EACf,eAAe,CAChB,CAAA;QAGD,MAAM,SAAS,GAAuB,EAAE,CAAA;QAExC,IAAI,eAAe,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACjC,CAAC;QAGD,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAA;QAC3C,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;QAC3D,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;QAG/B,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAA;QACrC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,cAAc,GAAG,CAAC,GAAG,YAAY,CAAA;YACvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAGvD,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAC7C,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,EAAE;gBACR,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAC7B,CAAA;YAED,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;YAC3D,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;YAG/B,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAA;YACnC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,cAAc,GAAG,CAAC,GAAG,UAAU,CAAA;gBACrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC5D,MAAM,iBAAiB,GAAG,kBAAkB;qBACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBAC9D,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;gBAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAA;IAE/C,MAAM,iBAAiB,GAAG,CAAC,KAAuB,EAAE,EAAE;QACpD,eAAe,EAAE,CAAC,sBAAU,CAAC,0BAA0B,EAAE;YACvD,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,QAAQ,EAAE,KAAK,CAAC,EAAE;YAClB,WAAW,EAAE,EAAE;YACf,OAAO;YACP,iBAAiB,EAAE,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAY,CAAC,IAAI,KAAK;SAC1E,CAAC,CAAA;QAEF,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CACL,wBAAC,eAAI,IAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,aAC/D,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC7B,uBAAC,mBAAmB,IAElB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EACjC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAHlC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,YAAY,CAIzC,CACH,CAAC,EAEF,wBAAC,iBAAM,IACL,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE;oBACH,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,GAAG;oBACR,EAAE,EAAE,GAAG;oBACP,EAAE,EAAE,MAAM;oBACV,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,KAAK;oBACnB,eAAe,EAAE,qBAAqB;oBACtC,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE;wBACN,eAAe,EAAE,OAAO;qBACzB;iBACF,aAED,uBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAC,QAAQ,qBAE/B,EACP,uBAAC,mCAAe,IAAC,IAAI,EAAE,qCAAc,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,IACzD,IACJ,CACR,CAAA;AACH,CAAC,CAAA;AA9GY,QAAA,cAAc,kBA8G1B;AAQD,MAAM,mBAAmB,GAAiC,CAAC,EACzD,KAAK,EACL,UAAU,EACV,OAAO,EACR,EAAE,EAAE;IACH,OAAO,CACL,uBAAC,iBAAM,IACL,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE;YACH,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,GAAG;YACR,EAAE,EAAE,GAAG;YACP,EAAE,EAAE,GAAG;YACP,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;YAC7D,MAAM,EAAE;gBACN,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;aAChD;SACF,YAEA,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CACV,uBAAC,oBAAS,IACR,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,GAAG,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAChD,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,oBAEvD,CACR,GACM,CACV,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MobileChainSelector = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const index_js_1 = require("../../primitives/index.js");
|
|
8
|
+
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
9
|
+
const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
|
|
10
|
+
const fuse_js_1 = tslib_1.__importDefault(require("fuse.js"));
|
|
11
|
+
const events_js_1 = require("../../../constants/events.js");
|
|
12
|
+
const AllChainsLogo_js_1 = tslib_1.__importDefault(require("../../../img/AllChainsLogo.js"));
|
|
13
|
+
const TagPill_js_1 = require("./TagPill.js");
|
|
14
|
+
const tokenSelector_js_1 = require("../../../utils/tokenSelector.js");
|
|
15
|
+
const localStorage_js_1 = require("../../../utils/localStorage.js");
|
|
16
|
+
const Tooltip_js_1 = tslib_1.__importDefault(require("../../../components/primitives/Tooltip.js"));
|
|
17
|
+
const fuseSearchOptions = {
|
|
18
|
+
includeScore: true,
|
|
19
|
+
includeMatches: true,
|
|
20
|
+
threshold: 0.2,
|
|
21
|
+
keys: ['id', 'name', 'displayName']
|
|
22
|
+
};
|
|
23
|
+
const MobileChainSelector = ({ options, value, onSelect, onBack, onClose, onAnalyticEvent, popularChainIds, context, onChainStarToggle, starredChainIds }) => {
|
|
24
|
+
const [chainSearchInput, setChainSearchInput] = (0, react_1.useState)('');
|
|
25
|
+
const chainFuse = new fuse_js_1.default(options, fuseSearchOptions);
|
|
26
|
+
const { allChainsOption, starredChains, alphabeticalChains } = (0, react_1.useMemo)(() => (0, tokenSelector_js_1.groupChains)(options, popularChainIds, starredChainIds), [options, popularChainIds, starredChainIds]);
|
|
27
|
+
const filteredChains = (0, react_1.useMemo)(() => {
|
|
28
|
+
if (chainSearchInput.trim() === '') {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const results = chainFuse.search(chainSearchInput);
|
|
32
|
+
const uniqueChains = new Map();
|
|
33
|
+
results.forEach((result) => {
|
|
34
|
+
if (!uniqueChains.has(result.item.id)) {
|
|
35
|
+
uniqueChains.set(result.item.id, result.item);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return Array.from(uniqueChains.values());
|
|
39
|
+
}, [chainSearchInput, chainFuse]);
|
|
40
|
+
const handleChainSelect = (0, react_1.useCallback)((chain) => {
|
|
41
|
+
onSelect(chain);
|
|
42
|
+
const fromStarredList = chain.id !== undefined && starredChains.some((c) => c.id === chain.id);
|
|
43
|
+
onAnalyticEvent?.(events_js_1.EventNames.CURRENCY_STEP_CHAIN_FILTER, {
|
|
44
|
+
chain: chain.name,
|
|
45
|
+
chain_id: chain.id,
|
|
46
|
+
search_term: chainSearchInput,
|
|
47
|
+
context,
|
|
48
|
+
from_starred_list: fromStarredList
|
|
49
|
+
});
|
|
50
|
+
onBack();
|
|
51
|
+
}, [
|
|
52
|
+
onSelect,
|
|
53
|
+
onAnalyticEvent,
|
|
54
|
+
chainSearchInput,
|
|
55
|
+
context,
|
|
56
|
+
starredChains,
|
|
57
|
+
onBack
|
|
58
|
+
]);
|
|
59
|
+
return ((0, jsx_runtime_1.jsxs)(index_js_1.Flex, { direction: "column", css: {
|
|
60
|
+
width: '100%',
|
|
61
|
+
height: '100%',
|
|
62
|
+
gap: '3'
|
|
63
|
+
}, children: [(0, jsx_runtime_1.jsxs)(index_js_1.Flex, { align: "center", css: {
|
|
64
|
+
gap: '1',
|
|
65
|
+
width: '100%'
|
|
66
|
+
}, children: [(0, jsx_runtime_1.jsx)(index_js_1.Button, { color: "ghost", size: "none", onClick: onBack, css: {
|
|
67
|
+
p: '2',
|
|
68
|
+
borderRadius: '8px',
|
|
69
|
+
display: 'flex',
|
|
70
|
+
alignItems: 'center',
|
|
71
|
+
justifyContent: 'center',
|
|
72
|
+
minWidth: '40px',
|
|
73
|
+
height: '40px',
|
|
74
|
+
color: 'gray9'
|
|
75
|
+
}, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faArrowLeft, width: 16, height: 16 }) }), (0, jsx_runtime_1.jsx)(index_js_1.Input, { placeholder: "Search a chain", icon: (0, jsx_runtime_1.jsx)(index_js_1.Box, { css: { color: 'gray9' }, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faMagnifyingGlass, width: 16, height: 16 }) }), containerCss: {
|
|
76
|
+
flex: 1,
|
|
77
|
+
height: 40
|
|
78
|
+
}, css: {
|
|
79
|
+
width: '100%',
|
|
80
|
+
_placeholder_parent: {
|
|
81
|
+
textOverflow: 'ellipsis'
|
|
82
|
+
}
|
|
83
|
+
}, value: chainSearchInput, onChange: (e) => setChainSearchInput(e.target.value) }), (0, jsx_runtime_1.jsx)(index_js_1.Button, { color: "ghost", size: "none", onClick: onClose, css: {
|
|
84
|
+
p: '2',
|
|
85
|
+
borderRadius: '8px',
|
|
86
|
+
display: 'flex',
|
|
87
|
+
alignItems: 'center',
|
|
88
|
+
justifyContent: 'center',
|
|
89
|
+
minWidth: '40px',
|
|
90
|
+
height: '40px',
|
|
91
|
+
color: 'gray9'
|
|
92
|
+
}, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faXmark, width: 16, height: 16 }) })] }), (0, jsx_runtime_1.jsx)(index_js_1.AccessibleList, { onSelect: (selectedValue) => {
|
|
93
|
+
if (selectedValue) {
|
|
94
|
+
const chain = selectedValue === 'all-chains'
|
|
95
|
+
? { id: undefined, name: 'All Chains' }
|
|
96
|
+
: options.find((chain) => chain.id?.toString() === selectedValue);
|
|
97
|
+
if (chain) {
|
|
98
|
+
handleChainSelect(chain);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}, css: {
|
|
102
|
+
display: 'flex',
|
|
103
|
+
flexDirection: 'column',
|
|
104
|
+
width: '100%',
|
|
105
|
+
flex: 1,
|
|
106
|
+
overflowY: 'auto',
|
|
107
|
+
scrollbarColor: 'var(--relay-colors-gray5) transparent'
|
|
108
|
+
}, children: filteredChains ? (filteredChains.map((chain) => {
|
|
109
|
+
const tag = 'tags' in chain ? chain.tags?.[0] : undefined;
|
|
110
|
+
return ((0, jsx_runtime_1.jsx)(MobileChainRow, { chain: chain, tag: tag, value: chain.id?.toString() ?? 'all-chains', onChainStarToggle: onChainStarToggle, onAnalyticEvent: onAnalyticEvent }, chain.id?.toString() ?? 'all-chains'));
|
|
111
|
+
})) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [allChainsOption && ((0, jsx_runtime_1.jsx)(MobileChainRow, { chain: allChainsOption, value: "all-chains", onAnalyticEvent: onAnalyticEvent })), starredChains.length > 0 && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(index_js_1.Flex, { align: "center", css: { py: '2', gap: '2' }, children: [(0, jsx_runtime_1.jsx)(index_js_1.Box, { css: { color: 'primary9' }, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faStar, width: 16, height: 16 }) }), (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", color: "subtle", children: "Starred Chains" }), (0, jsx_runtime_1.jsx)(Tooltip_js_1.default, { content: (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "body3", children: "Long-press to star a chain" }), children: (0, jsx_runtime_1.jsx)(index_js_1.Box, { css: { color: 'gray9' }, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faInfoCircle, width: 14, height: 14 }) }) })] }), starredChains.map((chain) => {
|
|
112
|
+
const tag = 'tags' in chain ? chain.tags?.[0] : undefined;
|
|
113
|
+
return chain.id ? ((0, jsx_runtime_1.jsx)(MobileChainRow, { chain: chain, tag: tag, value: chain.id.toString(), onChainStarToggle: onChainStarToggle, showStar: false, onAnalyticEvent: onAnalyticEvent }, chain.id.toString())) : null;
|
|
114
|
+
})] })), (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", color: "subtle", css: { py: '2' }, children: "Chains A-Z" }), alphabeticalChains.map((chain) => {
|
|
115
|
+
const tag = 'tags' in chain ? chain.tags?.[0] : undefined;
|
|
116
|
+
return chain.id ? ((0, jsx_runtime_1.jsx)(MobileChainRow, { chain: chain, tag: tag, value: chain.id.toString(), onChainStarToggle: onChainStarToggle, onAnalyticEvent: onAnalyticEvent }, chain.id.toString())) : null;
|
|
117
|
+
})] })) })] }));
|
|
118
|
+
};
|
|
119
|
+
exports.MobileChainSelector = MobileChainSelector;
|
|
120
|
+
const MobileChainRow = ({ chain, tag, value, onChainStarToggle, showStar = true, onAnalyticEvent }) => {
|
|
121
|
+
const [dropdownOpen, setDropdownOpen] = (0, react_1.useState)(false);
|
|
122
|
+
const [longPressTimer, setLongPressTimer] = (0, react_1.useState)(null);
|
|
123
|
+
const dropdownRef = (0, react_1.useRef)(null);
|
|
124
|
+
const isStarred = chain.id ? (0, localStorage_js_1.isChainStarred)(chain.id) : false;
|
|
125
|
+
const handleClickOutside = (0, react_1.useCallback)((event) => {
|
|
126
|
+
if (dropdownRef.current &&
|
|
127
|
+
!dropdownRef.current.contains(event.target)) {
|
|
128
|
+
setDropdownOpen(false);
|
|
129
|
+
}
|
|
130
|
+
}, []);
|
|
131
|
+
const handleEscapeKey = (0, react_1.useCallback)((event) => {
|
|
132
|
+
if (event.key === 'Escape') {
|
|
133
|
+
setDropdownOpen(false);
|
|
134
|
+
}
|
|
135
|
+
}, []);
|
|
136
|
+
(0, react_1.useEffect)(() => {
|
|
137
|
+
if (dropdownOpen) {
|
|
138
|
+
document.addEventListener('mousedown', handleClickOutside, true);
|
|
139
|
+
document.addEventListener('touchstart', handleClickOutside, true);
|
|
140
|
+
document.addEventListener('click', handleClickOutside, true);
|
|
141
|
+
document.addEventListener('keydown', handleEscapeKey);
|
|
142
|
+
requestAnimationFrame(() => {
|
|
143
|
+
dropdownRef.current?.scrollIntoView({ block: 'nearest' });
|
|
144
|
+
});
|
|
145
|
+
return () => {
|
|
146
|
+
document.removeEventListener('mousedown', handleClickOutside, true);
|
|
147
|
+
document.removeEventListener('touchstart', handleClickOutside, true);
|
|
148
|
+
document.removeEventListener('click', handleClickOutside, true);
|
|
149
|
+
document.removeEventListener('keydown', handleEscapeKey);
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}, [dropdownOpen, handleClickOutside, handleEscapeKey]);
|
|
153
|
+
const handleToggleStar = (0, react_1.useCallback)(() => {
|
|
154
|
+
if (chain.id) {
|
|
155
|
+
const previouslyStarred = isStarred;
|
|
156
|
+
(0, localStorage_js_1.toggleStarredChain)(chain.id);
|
|
157
|
+
const eventName = previouslyStarred
|
|
158
|
+
? events_js_1.EventNames.CHAIN_UNSTARRED
|
|
159
|
+
: events_js_1.EventNames.CHAIN_STARRED;
|
|
160
|
+
onAnalyticEvent?.(eventName, {
|
|
161
|
+
chain: chain.name,
|
|
162
|
+
chain_id: chain.id
|
|
163
|
+
});
|
|
164
|
+
onChainStarToggle?.();
|
|
165
|
+
setDropdownOpen(false);
|
|
166
|
+
}
|
|
167
|
+
}, [chain.id, chain.name, isStarred, onAnalyticEvent, onChainStarToggle]);
|
|
168
|
+
const handleTouchStart = (0, react_1.useCallback)((e) => {
|
|
169
|
+
if (!chain.id)
|
|
170
|
+
return;
|
|
171
|
+
const timer = setTimeout(() => {
|
|
172
|
+
if ('vibrate' in navigator) {
|
|
173
|
+
navigator.vibrate(50);
|
|
174
|
+
}
|
|
175
|
+
setDropdownOpen(true);
|
|
176
|
+
}, 500);
|
|
177
|
+
setLongPressTimer(timer);
|
|
178
|
+
}, [chain.id]);
|
|
179
|
+
const handleTouchEnd = (0, react_1.useCallback)(() => {
|
|
180
|
+
if (longPressTimer) {
|
|
181
|
+
clearTimeout(longPressTimer);
|
|
182
|
+
setLongPressTimer(null);
|
|
183
|
+
}
|
|
184
|
+
}, [longPressTimer]);
|
|
185
|
+
const handleTouchMove = (0, react_1.useCallback)(() => {
|
|
186
|
+
if (longPressTimer) {
|
|
187
|
+
clearTimeout(longPressTimer);
|
|
188
|
+
setLongPressTimer(null);
|
|
189
|
+
}
|
|
190
|
+
}, [longPressTimer]);
|
|
191
|
+
if (!chain.id) {
|
|
192
|
+
return ((0, jsx_runtime_1.jsx)(index_js_1.AccessibleListItem, { value: value, asChild: true, children: (0, jsx_runtime_1.jsxs)(index_js_1.Button, { color: "ghost", size: "none", css: {
|
|
193
|
+
py: '3',
|
|
194
|
+
px: '2',
|
|
195
|
+
display: 'flex',
|
|
196
|
+
alignItems: 'center',
|
|
197
|
+
gap: '2',
|
|
198
|
+
width: '100%',
|
|
199
|
+
height: '56px',
|
|
200
|
+
borderRadius: '12px',
|
|
201
|
+
_hover: {
|
|
202
|
+
backgroundColor: 'gray3'
|
|
203
|
+
}
|
|
204
|
+
}, children: [(0, jsx_runtime_1.jsx)(AllChainsLogo_js_1.default, { style: { width: 24, height: 24 } }), (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", children: chain.name })] }) }));
|
|
205
|
+
}
|
|
206
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', width: '100%' }, children: [(0, jsx_runtime_1.jsx)(index_js_1.AccessibleListItem, { value: value, asChild: true, children: (0, jsx_runtime_1.jsxs)(index_js_1.Button, { color: "ghost", size: "none", onContextMenu: (e) => {
|
|
207
|
+
e.preventDefault();
|
|
208
|
+
setDropdownOpen(true);
|
|
209
|
+
}, onKeyDown: (e) => {
|
|
210
|
+
if ((e.shiftKey && e.key === 'F10') || e.key === 'ContextMenu') {
|
|
211
|
+
e.preventDefault();
|
|
212
|
+
setDropdownOpen(true);
|
|
213
|
+
}
|
|
214
|
+
}, onTouchStart: handleTouchStart, onTouchEnd: handleTouchEnd, onTouchMove: handleTouchMove, css: {
|
|
215
|
+
py: '3',
|
|
216
|
+
px: '2',
|
|
217
|
+
display: 'flex',
|
|
218
|
+
alignItems: 'center',
|
|
219
|
+
gap: '2',
|
|
220
|
+
width: '100%',
|
|
221
|
+
height: '56px',
|
|
222
|
+
borderRadius: '12px',
|
|
223
|
+
userSelect: 'none',
|
|
224
|
+
_hover: {
|
|
225
|
+
backgroundColor: 'gray3'
|
|
226
|
+
}
|
|
227
|
+
}, style: {
|
|
228
|
+
WebkitUserSelect: 'none'
|
|
229
|
+
}, children: [(0, jsx_runtime_1.jsx)(index_js_1.ChainIcon, { chainId: chain.id, square: true, width: 24, height: 24 }), (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", css: { flex: 1, textAlign: 'left' }, children: ('displayName' in chain && chain.displayName) || chain.name }), showStar && isStarred && ((0, jsx_runtime_1.jsx)(index_js_1.Box, { css: { color: 'primary9' }, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faStar, width: 16, height: 16 }) })), tag && (0, jsx_runtime_1.jsx)(TagPill_js_1.TagPill, { tag: tag })] }) }), dropdownOpen && ((0, jsx_runtime_1.jsx)("div", { ref: dropdownRef, style: {
|
|
230
|
+
position: 'absolute',
|
|
231
|
+
top: '100%',
|
|
232
|
+
left: 0,
|
|
233
|
+
marginTop: '4px',
|
|
234
|
+
minWidth: 160,
|
|
235
|
+
zIndex: 999999
|
|
236
|
+
}, onClick: (e) => {
|
|
237
|
+
e.stopPropagation();
|
|
238
|
+
handleToggleStar();
|
|
239
|
+
}, onMouseDown: (e) => e.stopPropagation(), onTouchStart: (e) => e.stopPropagation(), children: (0, jsx_runtime_1.jsxs)(index_js_1.Flex, { css: {
|
|
240
|
+
alignItems: 'center',
|
|
241
|
+
gap: '8px',
|
|
242
|
+
padding: '8px',
|
|
243
|
+
borderRadius: 12,
|
|
244
|
+
cursor: 'pointer',
|
|
245
|
+
backgroundColor: 'gray1',
|
|
246
|
+
'--borderColor': 'colors.subtle-border-color',
|
|
247
|
+
border: '1px solid var(--borderColor)',
|
|
248
|
+
_hover: {
|
|
249
|
+
backgroundColor: 'gray2'
|
|
250
|
+
}
|
|
251
|
+
}, children: [(0, jsx_runtime_1.jsx)(index_js_1.Box, { css: {
|
|
252
|
+
color: isStarred ? 'gray8' : 'primary9'
|
|
253
|
+
}, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faStar, width: 16, height: 16 }) }), (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", css: { lineHeight: '20px' }, children: isStarred ? 'Unstar chain' : 'Star chain' })] }) }))] }));
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=MobileChainSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileChainSelector.js","sourceRoot":"","sources":["../../../../../src/components/common/TokenSelector/MobileChainSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,6 @@ const relay_kit_hooks_1 = require("@relayprotocol/relay-kit-hooks");
|
|
|
14
14
|
const events_js_1 = require("../../../constants/events.js");
|
|
15
15
|
const UnverifiedTokenModal_js_1 = require("../UnverifiedTokenModal.js");
|
|
16
16
|
const useEnhancedTokensList_js_1 = require("../../../hooks/useEnhancedTokensList.js");
|
|
17
|
-
const ChainFilter_js_1 = tslib_1.__importDefault(require("./ChainFilter.js"));
|
|
18
17
|
const TokenList_js_1 = require("./TokenList.js");
|
|
19
18
|
const depositAddresses_js_1 = require("../../../constants/depositAddresses.js");
|
|
20
19
|
const localStorage_js_1 = require("../../../utils/localStorage.js");
|
|
@@ -24,6 +23,8 @@ const solana_js_1 = require("../../../utils/solana.js");
|
|
|
24
23
|
const bitcoin_js_1 = require("../../../utils/bitcoin.js");
|
|
25
24
|
const ChainFilterSidebar_js_1 = require("./ChainFilterSidebar.js");
|
|
26
25
|
const SuggestedTokens_js_1 = require("./SuggestedTokens.js");
|
|
26
|
+
const MobileChainSelector_js_1 = require("./MobileChainSelector.js");
|
|
27
|
+
const ChainShortcuts_js_1 = require("./ChainShortcuts.js");
|
|
27
28
|
const tokens_js_1 = require("../../../utils/tokens.js");
|
|
28
29
|
const relay_sdk_1 = require("@relayprotocol/relay-sdk");
|
|
29
30
|
const tokenSelector_js_1 = require("../../../utils/tokenSelector.js");
|
|
@@ -35,6 +36,7 @@ const TokenSelector = ({ token, trigger, chainIdsFilter, lockedChainIds, context
|
|
|
35
36
|
const { chains: allRelayChains } = (0, index_js_3.useInternalRelayChains)();
|
|
36
37
|
const isDesktop = (0, usehooks_ts_1.useMediaQuery)('(min-width: 660px)');
|
|
37
38
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
39
|
+
const [mobileView, setMobileView] = (0, react_1.useState)('tokens');
|
|
38
40
|
const [unverifiedTokenModalOpen, setUnverifiedTokenModalOpen] = (0, react_1.useState)(false);
|
|
39
41
|
const [unverifiedToken, setUnverifiedToken] = (0, react_1.useState)();
|
|
40
42
|
const [chainFilter, setChainFilter] = (0, react_1.useState)({
|
|
@@ -181,6 +183,7 @@ const TokenSelector = ({ token, trigger, chainIdsFilter, lockedChainIds, context
|
|
|
181
183
|
setTokenSearchInput('');
|
|
182
184
|
setChainSearchInputElement(null);
|
|
183
185
|
setTokenSearchInputElement(null);
|
|
186
|
+
setMobileView('tokens');
|
|
184
187
|
}, []);
|
|
185
188
|
const onOpenChange = (0, react_1.useCallback)((openChange) => {
|
|
186
189
|
let tokenCount = undefined;
|
|
@@ -300,11 +303,22 @@ const TokenSelector = ({ token, trigger, chainIdsFilter, lockedChainIds, context
|
|
|
300
303
|
inputElement.focus();
|
|
301
304
|
}
|
|
302
305
|
}, [open, inputElement]);
|
|
303
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: { position: 'relative' }, children: (0, jsx_runtime_1.jsx)(Modal_js_1.Modal, { open: open, onOpenChange: onOpenChange, showCloseButton:
|
|
306
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: { position: 'relative' }, children: (0, jsx_runtime_1.jsx)(Modal_js_1.Modal, { open: open, onOpenChange: onOpenChange, showCloseButton: isDesktop, disableAnimation: !isDesktop, onOpenAutoFocus: (e) => {
|
|
307
|
+
if (!isDesktop) {
|
|
308
|
+
e.preventDefault();
|
|
309
|
+
}
|
|
310
|
+
}, trigger: trigger, css: {
|
|
304
311
|
p: '4',
|
|
305
312
|
display: 'flex',
|
|
306
313
|
flexDirection: 'column',
|
|
307
|
-
height: 'min(85vh, 600px)',
|
|
314
|
+
height: isDesktop ? 'min(85vh, 600px)' : '100%',
|
|
315
|
+
maxHeight: isDesktop ? 'min(85vh, 600px)' : '100%',
|
|
316
|
+
borderRadius: isDesktop ? 'modal-border-radius' : '0px',
|
|
317
|
+
width: '100%',
|
|
318
|
+
maxWidth: '100%',
|
|
319
|
+
sm: {
|
|
320
|
+
maxWidth: '100%'
|
|
321
|
+
},
|
|
308
322
|
'@media(min-width: 660px)': {
|
|
309
323
|
minWidth: isDesktop
|
|
310
324
|
? hasMultipleConfiguredChainIds
|
|
@@ -313,12 +327,15 @@ const TokenSelector = ({ token, trigger, chainIdsFilter, lockedChainIds, context
|
|
|
313
327
|
: 400,
|
|
314
328
|
maxWidth: isDesktop && hasMultipleConfiguredChainIds ? 660 : 408
|
|
315
329
|
}
|
|
316
|
-
}, children: (0, jsx_runtime_1.
|
|
330
|
+
}, children: !isDesktop && mobileView === 'chains' ? ((0, jsx_runtime_1.jsx)(MobileChainSelector_js_1.MobileChainSelector, { options: allChains, value: chainFilter, onSelect: (chain) => {
|
|
331
|
+
setChainFilter(chain);
|
|
332
|
+
setMobileView('tokens');
|
|
333
|
+
}, onBack: () => setMobileView('tokens'), onClose: () => onOpenChange(false), onAnalyticEvent: onAnalyticEvent, popularChainIds: popularChainIds, context: context, onChainStarToggle: handleChainStarToggle, starredChainIds: starredChainIds })) : ((0, jsx_runtime_1.jsxs)(index_js_1.Flex, { direction: "column", css: {
|
|
317
334
|
width: '100%',
|
|
318
335
|
height: '100%',
|
|
319
336
|
gap: '3',
|
|
320
337
|
overflowY: 'hidden'
|
|
321
|
-
}, children: [(0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "h6", children: "Select Token" }), (0, jsx_runtime_1.jsxs)(index_js_1.Flex, { css: { flex: 1, gap: '3', overflow: 'hidden' }, children: [isDesktop &&
|
|
338
|
+
}, children: [isDesktop && (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "h6", children: "Select Token" }), (0, jsx_runtime_1.jsxs)(index_js_1.Flex, { css: { flex: 1, gap: '3', overflow: 'hidden' }, children: [isDesktop &&
|
|
322
339
|
(!configuredChainIds || hasMultipleConfiguredChainIds) ? ((0, jsx_runtime_1.jsx)(ChainFilterSidebar_js_1.ChainFilterSidebar, { options: allChains, value: chainFilter, isOpen: open, onSelect: setChainFilter, onAnalyticEvent: onAnalyticEvent, onInputRef: setChainSearchInputElement, tokenSearchInputRef: tokenSearchInputElement, popularChainIds: popularChainIds, context: context, onChainStarToggle: handleChainStarToggle, starredChainIds: starredChainIds })) : null, (0, jsx_runtime_1.jsxs)(AccessibleList_js_1.AccessibleList, { onSelect: (value) => {
|
|
323
340
|
if (value === 'input')
|
|
324
341
|
return;
|
|
@@ -344,30 +361,48 @@ const TokenSelector = ({ token, trigger, chainIdsFilter, lockedChainIds, context
|
|
|
344
361
|
width: '100%',
|
|
345
362
|
gap: '2',
|
|
346
363
|
background: 'modal-background'
|
|
347
|
-
}, children: [(0, jsx_runtime_1.
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
364
|
+
}, children: [(0, jsx_runtime_1.jsxs)(index_js_1.Flex, { align: "center", css: {
|
|
365
|
+
width: '100%',
|
|
366
|
+
gap: '2'
|
|
367
|
+
}, children: [(0, jsx_runtime_1.jsx)(AccessibleList_js_1.AccessibleListItem, { value: "input", asChild: true, children: (0, jsx_runtime_1.jsx)(index_js_1.Input, { ref: setTokenSearchInputElement, placeholder: "Search for a token or paste address", icon: (0, jsx_runtime_1.jsx)(index_js_1.Box, { css: { color: 'gray9' }, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faMagnifyingGlass, width: 16, height: 16 }) }), containerCss: {
|
|
368
|
+
width: '100%',
|
|
369
|
+
height: 40,
|
|
370
|
+
mb: isDesktop ? '1' : '0'
|
|
371
|
+
}, css: {
|
|
372
|
+
width: '100%',
|
|
373
|
+
_placeholder_parent: {
|
|
374
|
+
textOverflow: 'ellipsis'
|
|
375
|
+
}
|
|
376
|
+
}, value: tokenSearchInput, onChange: (e) => {
|
|
377
|
+
const value = e.target.value;
|
|
378
|
+
setTokenSearchInput(value);
|
|
379
|
+
if ((0, address_js_1.isValidAddress)(chainFilter.vmType, value)) {
|
|
380
|
+
onAnalyticEvent?.(events_js_1.EventNames.TOKEN_SELECTOR_CONTRACT_SEARCH, {
|
|
381
|
+
search_term: value,
|
|
382
|
+
chain_filter: chainFilter.id
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
} }) }), !isDesktop && ((0, jsx_runtime_1.jsx)(index_js_1.Button, { color: "ghost", size: "none", onClick: () => onOpenChange(false), css: {
|
|
386
|
+
p: '2',
|
|
387
|
+
borderRadius: '8px',
|
|
388
|
+
display: 'flex',
|
|
389
|
+
alignItems: 'center',
|
|
390
|
+
justifyContent: 'center',
|
|
391
|
+
minWidth: '40px',
|
|
392
|
+
height: '40px',
|
|
393
|
+
color: 'gray9'
|
|
394
|
+
}, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faXmark, width: 16, height: 16 }) }))] }), !isDesktop &&
|
|
395
|
+
(!configuredChainIds || hasMultipleConfiguredChainIds) ? ((0, jsx_runtime_1.jsx)(ChainShortcuts_js_1.ChainShortcuts, { options: allChains, value: chainFilter, onSelect: setChainFilter, onMoreClick: () => setMobileView('chains'), popularChainIds: popularChainIds, starredChainIds: starredChainIds, onAnalyticEvent: onAnalyticEvent, context: context })) : null, !isDesktop && chainFilter.id !== undefined ? ((0, jsx_runtime_1.jsx)(index_js_1.Flex, { align: "center", css: {
|
|
396
|
+
gap: '2',
|
|
397
|
+
pb: '1',
|
|
398
|
+
width: '100%'
|
|
399
|
+
}, children: (0, jsx_runtime_1.jsxs)(index_js_1.Text, { style: "subtitle2", color: "subtle", children: ["Tokens on", ' ', ('displayName' in chainFilter &&
|
|
400
|
+
chainFilter.displayName) ||
|
|
401
|
+
chainFilter.name] }) })) : null] }), (0, jsx_runtime_1.jsxs)(index_js_1.Flex, { direction: "column", css: {
|
|
367
402
|
flex: 1,
|
|
368
403
|
overflowY: 'auto',
|
|
369
404
|
gap: '3',
|
|
370
|
-
pt: '2',
|
|
405
|
+
pt: !isDesktop && chainFilter.id !== undefined ? '0' : '2',
|
|
371
406
|
scrollbarColor: 'var(--relay-colors-gray5) transparent'
|
|
372
407
|
}, children: [chainFilter.id &&
|
|
373
408
|
tokenSearchInput.length === 0 &&
|
|
@@ -401,7 +436,7 @@ const TokenSelector = ({ token, trigger, chainIdsFilter, lockedChainIds, context
|
|
|
401
436
|
tokenList?.length === 0 &&
|
|
402
437
|
externalTokenList?.length === 0 ? ((0, jsx_runtime_1.jsxs)(index_js_1.Flex, { direction: "column", align: "center", css: { py: '5', maxWidth: 312, alignSelf: 'center' }, children: [!chainFilter?.id && isSearchTermValidAddress && ((0, jsx_runtime_1.jsx)(index_js_1.Box, { css: { color: 'gray8', mb: '2' }, children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faFolderOpen, size: "xl", width: 27, height: 24 }) })), (0, jsx_runtime_1.jsx)(index_js_1.Text, { color: "subtle", style: "body2", css: { textAlign: 'center' }, children: !chainFilter?.id && isSearchTermValidAddress
|
|
403
438
|
? 'No results. Switch to the desired chain to search by contract.'
|
|
404
|
-
: 'No results.' })] })) : null] }, chainFilter.id ?? 'all')] })] })] }) }) }), unverifiedTokenModalOpen && ((0, jsx_runtime_1.jsx)(UnverifiedTokenModal_js_1.UnverifiedTokenModal, { open: unverifiedTokenModalOpen, onOpenChange: setUnverifiedTokenModalOpen, data: unverifiedToken ? { token: unverifiedToken } : undefined, onAcceptToken: (token) => {
|
|
439
|
+
: 'No results.' })] })) : null] }, chainFilter.id ?? 'all')] })] })] })) }) }), unverifiedTokenModalOpen && ((0, jsx_runtime_1.jsx)(UnverifiedTokenModal_js_1.UnverifiedTokenModal, { open: unverifiedTokenModalOpen, onOpenChange: setUnverifiedTokenModalOpen, data: unverifiedToken ? { token: unverifiedToken } : undefined, onAcceptToken: (token) => {
|
|
405
440
|
if (token) {
|
|
406
441
|
handleTokenSelection(token);
|
|
407
442
|
}
|