@rango-dev/ui 0.1.10-next.80 → 0.1.10-next.82
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/components/Settings/Settings.d.ts +2 -0
- package/dist/components/TokenList/TokenItem.d.ts +11 -0
- package/dist/components/VirtualizedList/VirtualizedList.d.ts +0 -1
- package/dist/ui.cjs.development.js +88 -86
- package/dist/ui.cjs.development.js.map +1 -1
- package/dist/ui.cjs.production.min.js +1 -1
- package/dist/ui.cjs.production.min.js.map +1 -1
- package/dist/ui.esm.js +89 -87
- package/dist/ui.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Settings/Settings.tsx +14 -0
- package/src/components/TokenList/TokenItem.tsx +70 -0
- package/src/components/TokenList/TokenList.tsx +14 -108
- package/src/components/TokenSelector/TokenSelector.tsx +10 -1
- package/src/components/VirtualizedList/VirtualizedList.tsx +19 -35
|
@@ -14,6 +14,8 @@ export interface PropTypes {
|
|
|
14
14
|
selectedTheme: Theme;
|
|
15
15
|
onThemeChange: (theme: Theme) => void;
|
|
16
16
|
onBack: () => void;
|
|
17
|
+
infiniteApprove: boolean;
|
|
18
|
+
toggleInfiniteApprove: (infinite: boolean) => void;
|
|
17
19
|
}
|
|
18
20
|
export declare function Settings(props: PropTypes): JSX.Element;
|
|
19
21
|
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Token } from 'rango-sdk';
|
|
2
|
+
import { CSSProperties } from 'react';
|
|
3
|
+
import { TokenWithAmount } from './TokenList';
|
|
4
|
+
interface PropTypes {
|
|
5
|
+
token: TokenWithAmount;
|
|
6
|
+
selected: boolean;
|
|
7
|
+
onClick: (token: Token) => void;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
}
|
|
10
|
+
export declare function TokenItem(props: PropTypes): JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -8,7 +8,6 @@ export declare type VirtualizedListItem = ({ index, style, }: {
|
|
|
8
8
|
declare type PropTypes = {
|
|
9
9
|
itemCount: number;
|
|
10
10
|
hasNextPage: boolean;
|
|
11
|
-
isNextPageLoading: boolean;
|
|
12
11
|
loadNextPage: () => void;
|
|
13
12
|
Item: VirtualizedListItem;
|
|
14
13
|
innerElementType: ReactElementType | undefined;
|
|
@@ -3233,6 +3233,11 @@ var LiquiditySourceContainer = /*#__PURE__*/styled(BaseContainer, {
|
|
|
3233
3233
|
marginTop: '$32',
|
|
3234
3234
|
cursor: 'pointer'
|
|
3235
3235
|
});
|
|
3236
|
+
var InfiniteContainer = /*#__PURE__*/styled(BaseContainer, {
|
|
3237
|
+
display: 'flex',
|
|
3238
|
+
justifyContent: 'space-between',
|
|
3239
|
+
marginTop: '$32'
|
|
3240
|
+
});
|
|
3236
3241
|
var StyledAngleRight = /*#__PURE__*/styled(AngleRightIcon, {
|
|
3237
3242
|
marginLeft: '$8'
|
|
3238
3243
|
});
|
|
@@ -3256,7 +3261,9 @@ function Settings(props) {
|
|
|
3256
3261
|
maxSlippage = props.maxSlippage,
|
|
3257
3262
|
minSlippage = props.minSlippage,
|
|
3258
3263
|
selectedTheme = props.selectedTheme,
|
|
3259
|
-
onThemeChange = props.onThemeChange
|
|
3264
|
+
onThemeChange = props.onThemeChange,
|
|
3265
|
+
toggleInfiniteApprove = props.toggleInfiniteApprove,
|
|
3266
|
+
infiniteApprove = props.infiniteApprove;
|
|
3260
3267
|
var _useState = React.useState(props.selectedSlippage),
|
|
3261
3268
|
selectedSlippage = _useState[0],
|
|
3262
3269
|
setSelectedSlippage = _useState[1];
|
|
@@ -3317,6 +3324,11 @@ function Settings(props) {
|
|
|
3317
3324
|
style: {
|
|
3318
3325
|
marginTop: '$24'
|
|
3319
3326
|
}
|
|
3327
|
+
})), React__default.createElement(InfiniteContainer, null, React__default.createElement(Typography, {
|
|
3328
|
+
variant: "body1"
|
|
3329
|
+
}, "Infinite Approval"), React__default.createElement(Switch, {
|
|
3330
|
+
checked: infiniteApprove,
|
|
3331
|
+
onChange: toggleInfiniteApprove
|
|
3320
3332
|
})), React__default.createElement(LiquiditySourceContainer, {
|
|
3321
3333
|
onClick: onLiquiditySourcesClick
|
|
3322
3334
|
}, React__default.createElement(Typography, {
|
|
@@ -3471,30 +3483,27 @@ function SwapDetail(_ref) {
|
|
|
3471
3483
|
function VirtualizedList(props) {
|
|
3472
3484
|
var itemCount = props.itemCount,
|
|
3473
3485
|
hasNextPage = props.hasNextPage,
|
|
3474
|
-
isNextPageLoading = props.isNextPageLoading,
|
|
3475
3486
|
loadNextPage = props.loadNextPage,
|
|
3476
3487
|
Item = props.Item,
|
|
3477
3488
|
innerElementType = props.innerElementType,
|
|
3478
3489
|
size = props.size;
|
|
3479
|
-
var listRef = React.useRef(null);
|
|
3480
3490
|
var isItemLoaded = function isItemLoaded(index) {
|
|
3481
3491
|
return !hasNextPage || index < itemCount;
|
|
3482
3492
|
};
|
|
3483
|
-
return React__default.createElement(
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
height = _ref2.height;
|
|
3493
|
+
return React__default.createElement(AutoSizer, null, function (_ref) {
|
|
3494
|
+
var width = _ref.width,
|
|
3495
|
+
height = _ref.height;
|
|
3496
|
+
return React__default.createElement(InfiniteLoader, {
|
|
3497
|
+
isItemLoaded: isItemLoaded,
|
|
3498
|
+
itemCount: hasNextPage ? itemCount + 1 : itemCount,
|
|
3499
|
+
loadMoreItems: loadNextPage,
|
|
3500
|
+
threshold: 1
|
|
3501
|
+
}, function (_ref2) {
|
|
3502
|
+
var onItemsRendered = _ref2.onItemsRendered,
|
|
3503
|
+
ref = _ref2.ref;
|
|
3495
3504
|
return React__default.createElement(reactWindow.VariableSizeList, {
|
|
3496
3505
|
innerElementType: innerElementType,
|
|
3497
|
-
ref:
|
|
3506
|
+
ref: ref,
|
|
3498
3507
|
itemSize: function itemSize() {
|
|
3499
3508
|
return size;
|
|
3500
3509
|
},
|
|
@@ -3514,8 +3523,6 @@ function VirtualizedList(props) {
|
|
|
3514
3523
|
});
|
|
3515
3524
|
}
|
|
3516
3525
|
|
|
3517
|
-
var _excluded$D = ["style"];
|
|
3518
|
-
var PAGE_SIZE = 20;
|
|
3519
3526
|
var TokenImage = /*#__PURE__*/styled('img', {
|
|
3520
3527
|
width: '$32',
|
|
3521
3528
|
maxHeight: '$32',
|
|
@@ -3530,11 +3537,44 @@ var TokenAmountContainer = /*#__PURE__*/styled('div', {
|
|
|
3530
3537
|
flexDirection: 'column',
|
|
3531
3538
|
alignItems: 'flex-end'
|
|
3532
3539
|
});
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
|
|
3540
|
+
function TokenItem(props) {
|
|
3541
|
+
var _token$balance;
|
|
3542
|
+
var token = props.token,
|
|
3543
|
+
style = props.style,
|
|
3544
|
+
onClick = props.onClick,
|
|
3545
|
+
selected = props.selected;
|
|
3546
|
+
return React__default.createElement("div", {
|
|
3547
|
+
style: _extends({
|
|
3548
|
+
display: 'flex',
|
|
3549
|
+
alignItems: 'center',
|
|
3550
|
+
width: '100%'
|
|
3551
|
+
}, style, {
|
|
3552
|
+
height: '48px',
|
|
3553
|
+
top: parseFloat(style == null ? void 0 : style.top) + 0 + "px"
|
|
3554
|
+
})
|
|
3555
|
+
}, React__default.createElement(Button, {
|
|
3556
|
+
variant: "outlined",
|
|
3557
|
+
size: "large",
|
|
3558
|
+
align: "start",
|
|
3559
|
+
onClick: onClick.bind(null, token),
|
|
3560
|
+
type: selected ? 'primary' : undefined,
|
|
3561
|
+
prefix: React__default.createElement(TokenImage, {
|
|
3562
|
+
src: token.image
|
|
3563
|
+
}),
|
|
3564
|
+
suffix: ((_token$balance = token.balance) == null ? void 0 : _token$balance.amount) && React__default.createElement(TokenAmountContainer, null, React__default.createElement(Typography, {
|
|
3565
|
+
variant: "body2"
|
|
3566
|
+
}, token.balance.amount), React__default.createElement(Typography, {
|
|
3567
|
+
variant: "caption"
|
|
3568
|
+
}, token.balance.usdValue + "$"))
|
|
3569
|
+
}, React__default.createElement(TokenNameContainer, null, React__default.createElement(Typography, {
|
|
3570
|
+
variant: "body1"
|
|
3571
|
+
}, token.symbol), React__default.createElement(Typography, {
|
|
3572
|
+
variant: "body2"
|
|
3573
|
+
}, token.name))));
|
|
3574
|
+
}
|
|
3575
|
+
|
|
3576
|
+
var _excluded$D = ["style"];
|
|
3577
|
+
var PAGE_SIZE = 20;
|
|
3538
3578
|
function TokenList(props) {
|
|
3539
3579
|
var list = props.list,
|
|
3540
3580
|
searchedText = props.searchedText,
|
|
@@ -3548,7 +3588,7 @@ function TokenList(props) {
|
|
|
3548
3588
|
setSelected(token);
|
|
3549
3589
|
onChange(token);
|
|
3550
3590
|
};
|
|
3551
|
-
var
|
|
3591
|
+
var isSelected = function isSelected(token) {
|
|
3552
3592
|
if (multiSelect && selectedList) {
|
|
3553
3593
|
return selectedList === 'all' || selectedList.map(function (item) {
|
|
3554
3594
|
return item.symbol + item.address;
|
|
@@ -3556,71 +3596,28 @@ function TokenList(props) {
|
|
|
3556
3596
|
}
|
|
3557
3597
|
return (selected == null ? void 0 : selected.symbol) === token.symbol && (selected == null ? void 0 : selected.address) === token.address;
|
|
3558
3598
|
};
|
|
3559
|
-
var Token = function Token(_ref) {
|
|
3560
|
-
var _currentToken$balance;
|
|
3561
|
-
var filteredTokens = _ref.filteredTokens,
|
|
3562
|
-
index = _ref.index,
|
|
3563
|
-
style = _ref.style;
|
|
3564
|
-
var currentToken = filteredTokens[index];
|
|
3565
|
-
return React__default.createElement("div", {
|
|
3566
|
-
style: _extends({
|
|
3567
|
-
display: 'flex',
|
|
3568
|
-
alignItems: 'center',
|
|
3569
|
-
width: '100%'
|
|
3570
|
-
}, style, {
|
|
3571
|
-
height: '48px',
|
|
3572
|
-
top: parseFloat(style == null ? void 0 : style.top) + 0 + "px"
|
|
3573
|
-
})
|
|
3574
|
-
}, React__default.createElement(Button, {
|
|
3575
|
-
variant: "outlined",
|
|
3576
|
-
size: "large",
|
|
3577
|
-
align: "start",
|
|
3578
|
-
onClick: changeSelected.bind(null, currentToken),
|
|
3579
|
-
type: isSelect(currentToken) ? 'primary' : undefined,
|
|
3580
|
-
prefix: React__default.createElement(TokenImage, {
|
|
3581
|
-
src: currentToken.image
|
|
3582
|
-
}),
|
|
3583
|
-
suffix: ((_currentToken$balance = currentToken.balance) == null ? void 0 : _currentToken$balance.amount) && React__default.createElement(TokenAmountContainer, null, React__default.createElement(Typography, {
|
|
3584
|
-
variant: "body2"
|
|
3585
|
-
}, currentToken.balance.amount), React__default.createElement(Typography, {
|
|
3586
|
-
variant: "caption"
|
|
3587
|
-
}, currentToken.balance.usdValue + "$"))
|
|
3588
|
-
}, React__default.createElement(TokenNameContainer, null, React__default.createElement(Typography, {
|
|
3589
|
-
variant: "body1"
|
|
3590
|
-
}, currentToken.symbol), React__default.createElement(Typography, {
|
|
3591
|
-
variant: "body2"
|
|
3592
|
-
}, currentToken.name))));
|
|
3593
|
-
};
|
|
3594
3599
|
var _useState2 = React.useState(true),
|
|
3595
3600
|
hasNextPage = _useState2[0],
|
|
3596
3601
|
setHasNextPage = _useState2[1];
|
|
3597
|
-
var _useState3 = React.useState(
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
var _useState4 = React.useState(list),
|
|
3601
|
-
filteredTokens = _useState4[0],
|
|
3602
|
-
setFilteredTokens = _useState4[1];
|
|
3602
|
+
var _useState3 = React.useState(list),
|
|
3603
|
+
tokens = _useState3[0],
|
|
3604
|
+
setTokens = _useState3[1];
|
|
3603
3605
|
var loadNextPage = function loadNextPage() {
|
|
3604
|
-
|
|
3605
|
-
setTimeout(function () {
|
|
3606
|
-
setIsNextPageLoading(false);
|
|
3607
|
-
setFilteredTokens(filterTokens(list, searchedText, filteredTokens.length + PAGE_SIZE));
|
|
3608
|
-
}, 0);
|
|
3606
|
+
setTokens(list.slice(0, tokens.length + PAGE_SIZE));
|
|
3609
3607
|
};
|
|
3610
3608
|
React.useEffect(function () {
|
|
3611
|
-
|
|
3609
|
+
setTokens(list.slice(0, PAGE_SIZE));
|
|
3612
3610
|
}, [searchedText]);
|
|
3613
3611
|
React.useEffect(function () {
|
|
3614
|
-
setHasNextPage(
|
|
3615
|
-
}, [
|
|
3616
|
-
var innerElementType = React.forwardRef(function (
|
|
3617
|
-
var style =
|
|
3618
|
-
rest = _objectWithoutPropertiesLoose(
|
|
3612
|
+
setHasNextPage(list.length > tokens.length);
|
|
3613
|
+
}, [tokens.length]);
|
|
3614
|
+
var innerElementType = React.forwardRef(function (_ref, ref) {
|
|
3615
|
+
var style = _ref.style,
|
|
3616
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$D);
|
|
3619
3617
|
return React__default.createElement("div", Object.assign({
|
|
3620
3618
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3621
3619
|
ref: ref,
|
|
3622
3620
|
style: _extends({}, style, {
|
|
3623
|
-
// eslint-disable-next-line react/prop-types
|
|
3624
3621
|
height: parseFloat(style == null ? void 0 : style.height) + 8 * 2 + "px"
|
|
3625
3622
|
})
|
|
3626
3623
|
}, rest));
|
|
@@ -3630,24 +3627,29 @@ function TokenList(props) {
|
|
|
3630
3627
|
height: '450px'
|
|
3631
3628
|
}
|
|
3632
3629
|
}, React__default.createElement(VirtualizedList, {
|
|
3633
|
-
Item: function Item(
|
|
3634
|
-
var index =
|
|
3635
|
-
style =
|
|
3636
|
-
return React__default.createElement(
|
|
3637
|
-
|
|
3630
|
+
Item: function Item(_ref2) {
|
|
3631
|
+
var index = _ref2.index,
|
|
3632
|
+
style = _ref2.style;
|
|
3633
|
+
return React__default.createElement(TokenItem, {
|
|
3634
|
+
token: tokens[index],
|
|
3638
3635
|
style: style,
|
|
3639
|
-
|
|
3636
|
+
onClick: changeSelected,
|
|
3637
|
+
selected: isSelected(tokens[index])
|
|
3640
3638
|
});
|
|
3641
3639
|
},
|
|
3642
3640
|
hasNextPage: hasNextPage,
|
|
3643
|
-
|
|
3644
|
-
itemCount: filteredTokens.length,
|
|
3641
|
+
itemCount: tokens.length,
|
|
3645
3642
|
loadNextPage: loadNextPage,
|
|
3646
3643
|
innerElementType: innerElementType,
|
|
3647
3644
|
size: 56
|
|
3648
3645
|
}));
|
|
3649
3646
|
}
|
|
3650
3647
|
|
|
3648
|
+
var filterTokens = function filterTokens(list, searchedFor) {
|
|
3649
|
+
return list.filter(function (token) {
|
|
3650
|
+
return containsText(token.symbol, searchedFor) || containsText(token.address || '', searchedFor) || containsText(token.name || '', searchedFor);
|
|
3651
|
+
});
|
|
3652
|
+
};
|
|
3651
3653
|
function TokenSelector(props) {
|
|
3652
3654
|
var list = props.list,
|
|
3653
3655
|
type = props.type,
|
|
@@ -3666,7 +3668,7 @@ function TokenSelector(props) {
|
|
|
3666
3668
|
}, function (searchedFor) {
|
|
3667
3669
|
return React__default.createElement(TokenList, {
|
|
3668
3670
|
searchedText: searchedFor,
|
|
3669
|
-
list: list,
|
|
3671
|
+
list: filterTokens(list, searchedFor),
|
|
3670
3672
|
selected: selected,
|
|
3671
3673
|
selectedList: selectedList,
|
|
3672
3674
|
multiSelect: multiSelect,
|