@rango-dev/ui 0.1.10-next.81 → 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/TokenList/TokenItem.d.ts +11 -0
- package/dist/components/VirtualizedList/VirtualizedList.d.ts +0 -1
- package/dist/ui.cjs.development.js +75 -85
- 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 +76 -86
- package/dist/ui.esm.js.map +1 -1
- package/package.json +1 -1
- 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
|
@@ -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;
|
|
@@ -3483,30 +3483,27 @@ function SwapDetail(_ref) {
|
|
|
3483
3483
|
function VirtualizedList(props) {
|
|
3484
3484
|
var itemCount = props.itemCount,
|
|
3485
3485
|
hasNextPage = props.hasNextPage,
|
|
3486
|
-
isNextPageLoading = props.isNextPageLoading,
|
|
3487
3486
|
loadNextPage = props.loadNextPage,
|
|
3488
3487
|
Item = props.Item,
|
|
3489
3488
|
innerElementType = props.innerElementType,
|
|
3490
3489
|
size = props.size;
|
|
3491
|
-
var listRef = React.useRef(null);
|
|
3492
3490
|
var isItemLoaded = function isItemLoaded(index) {
|
|
3493
3491
|
return !hasNextPage || index < itemCount;
|
|
3494
3492
|
};
|
|
3495
|
-
return React__default.createElement(
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
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;
|
|
3507
3504
|
return React__default.createElement(reactWindow.VariableSizeList, {
|
|
3508
3505
|
innerElementType: innerElementType,
|
|
3509
|
-
ref:
|
|
3506
|
+
ref: ref,
|
|
3510
3507
|
itemSize: function itemSize() {
|
|
3511
3508
|
return size;
|
|
3512
3509
|
},
|
|
@@ -3526,8 +3523,6 @@ function VirtualizedList(props) {
|
|
|
3526
3523
|
});
|
|
3527
3524
|
}
|
|
3528
3525
|
|
|
3529
|
-
var _excluded$D = ["style"];
|
|
3530
|
-
var PAGE_SIZE = 20;
|
|
3531
3526
|
var TokenImage = /*#__PURE__*/styled('img', {
|
|
3532
3527
|
width: '$32',
|
|
3533
3528
|
maxHeight: '$32',
|
|
@@ -3542,11 +3537,44 @@ var TokenAmountContainer = /*#__PURE__*/styled('div', {
|
|
|
3542
3537
|
flexDirection: 'column',
|
|
3543
3538
|
alignItems: 'flex-end'
|
|
3544
3539
|
});
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
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;
|
|
3550
3578
|
function TokenList(props) {
|
|
3551
3579
|
var list = props.list,
|
|
3552
3580
|
searchedText = props.searchedText,
|
|
@@ -3560,7 +3588,7 @@ function TokenList(props) {
|
|
|
3560
3588
|
setSelected(token);
|
|
3561
3589
|
onChange(token);
|
|
3562
3590
|
};
|
|
3563
|
-
var
|
|
3591
|
+
var isSelected = function isSelected(token) {
|
|
3564
3592
|
if (multiSelect && selectedList) {
|
|
3565
3593
|
return selectedList === 'all' || selectedList.map(function (item) {
|
|
3566
3594
|
return item.symbol + item.address;
|
|
@@ -3568,71 +3596,28 @@ function TokenList(props) {
|
|
|
3568
3596
|
}
|
|
3569
3597
|
return (selected == null ? void 0 : selected.symbol) === token.symbol && (selected == null ? void 0 : selected.address) === token.address;
|
|
3570
3598
|
};
|
|
3571
|
-
var Token = function Token(_ref) {
|
|
3572
|
-
var _currentToken$balance;
|
|
3573
|
-
var filteredTokens = _ref.filteredTokens,
|
|
3574
|
-
index = _ref.index,
|
|
3575
|
-
style = _ref.style;
|
|
3576
|
-
var currentToken = filteredTokens[index];
|
|
3577
|
-
return React__default.createElement("div", {
|
|
3578
|
-
style: _extends({
|
|
3579
|
-
display: 'flex',
|
|
3580
|
-
alignItems: 'center',
|
|
3581
|
-
width: '100%'
|
|
3582
|
-
}, style, {
|
|
3583
|
-
height: '48px',
|
|
3584
|
-
top: parseFloat(style == null ? void 0 : style.top) + 0 + "px"
|
|
3585
|
-
})
|
|
3586
|
-
}, React__default.createElement(Button, {
|
|
3587
|
-
variant: "outlined",
|
|
3588
|
-
size: "large",
|
|
3589
|
-
align: "start",
|
|
3590
|
-
onClick: changeSelected.bind(null, currentToken),
|
|
3591
|
-
type: isSelect(currentToken) ? 'primary' : undefined,
|
|
3592
|
-
prefix: React__default.createElement(TokenImage, {
|
|
3593
|
-
src: currentToken.image
|
|
3594
|
-
}),
|
|
3595
|
-
suffix: ((_currentToken$balance = currentToken.balance) == null ? void 0 : _currentToken$balance.amount) && React__default.createElement(TokenAmountContainer, null, React__default.createElement(Typography, {
|
|
3596
|
-
variant: "body2"
|
|
3597
|
-
}, currentToken.balance.amount), React__default.createElement(Typography, {
|
|
3598
|
-
variant: "caption"
|
|
3599
|
-
}, currentToken.balance.usdValue + "$"))
|
|
3600
|
-
}, React__default.createElement(TokenNameContainer, null, React__default.createElement(Typography, {
|
|
3601
|
-
variant: "body1"
|
|
3602
|
-
}, currentToken.symbol), React__default.createElement(Typography, {
|
|
3603
|
-
variant: "body2"
|
|
3604
|
-
}, currentToken.name))));
|
|
3605
|
-
};
|
|
3606
3599
|
var _useState2 = React.useState(true),
|
|
3607
3600
|
hasNextPage = _useState2[0],
|
|
3608
3601
|
setHasNextPage = _useState2[1];
|
|
3609
|
-
var _useState3 = React.useState(
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
var _useState4 = React.useState(list),
|
|
3613
|
-
filteredTokens = _useState4[0],
|
|
3614
|
-
setFilteredTokens = _useState4[1];
|
|
3602
|
+
var _useState3 = React.useState(list),
|
|
3603
|
+
tokens = _useState3[0],
|
|
3604
|
+
setTokens = _useState3[1];
|
|
3615
3605
|
var loadNextPage = function loadNextPage() {
|
|
3616
|
-
|
|
3617
|
-
setTimeout(function () {
|
|
3618
|
-
setIsNextPageLoading(false);
|
|
3619
|
-
setFilteredTokens(filterTokens(list, searchedText, filteredTokens.length + PAGE_SIZE));
|
|
3620
|
-
}, 0);
|
|
3606
|
+
setTokens(list.slice(0, tokens.length + PAGE_SIZE));
|
|
3621
3607
|
};
|
|
3622
3608
|
React.useEffect(function () {
|
|
3623
|
-
|
|
3609
|
+
setTokens(list.slice(0, PAGE_SIZE));
|
|
3624
3610
|
}, [searchedText]);
|
|
3625
3611
|
React.useEffect(function () {
|
|
3626
|
-
setHasNextPage(
|
|
3627
|
-
}, [
|
|
3628
|
-
var innerElementType = React.forwardRef(function (
|
|
3629
|
-
var style =
|
|
3630
|
-
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);
|
|
3631
3617
|
return React__default.createElement("div", Object.assign({
|
|
3632
3618
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3633
3619
|
ref: ref,
|
|
3634
3620
|
style: _extends({}, style, {
|
|
3635
|
-
// eslint-disable-next-line react/prop-types
|
|
3636
3621
|
height: parseFloat(style == null ? void 0 : style.height) + 8 * 2 + "px"
|
|
3637
3622
|
})
|
|
3638
3623
|
}, rest));
|
|
@@ -3642,24 +3627,29 @@ function TokenList(props) {
|
|
|
3642
3627
|
height: '450px'
|
|
3643
3628
|
}
|
|
3644
3629
|
}, React__default.createElement(VirtualizedList, {
|
|
3645
|
-
Item: function Item(
|
|
3646
|
-
var index =
|
|
3647
|
-
style =
|
|
3648
|
-
return React__default.createElement(
|
|
3649
|
-
|
|
3630
|
+
Item: function Item(_ref2) {
|
|
3631
|
+
var index = _ref2.index,
|
|
3632
|
+
style = _ref2.style;
|
|
3633
|
+
return React__default.createElement(TokenItem, {
|
|
3634
|
+
token: tokens[index],
|
|
3650
3635
|
style: style,
|
|
3651
|
-
|
|
3636
|
+
onClick: changeSelected,
|
|
3637
|
+
selected: isSelected(tokens[index])
|
|
3652
3638
|
});
|
|
3653
3639
|
},
|
|
3654
3640
|
hasNextPage: hasNextPage,
|
|
3655
|
-
|
|
3656
|
-
itemCount: filteredTokens.length,
|
|
3641
|
+
itemCount: tokens.length,
|
|
3657
3642
|
loadNextPage: loadNextPage,
|
|
3658
3643
|
innerElementType: innerElementType,
|
|
3659
3644
|
size: 56
|
|
3660
3645
|
}));
|
|
3661
3646
|
}
|
|
3662
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
|
+
};
|
|
3663
3653
|
function TokenSelector(props) {
|
|
3664
3654
|
var list = props.list,
|
|
3665
3655
|
type = props.type,
|
|
@@ -3678,7 +3668,7 @@ function TokenSelector(props) {
|
|
|
3678
3668
|
}, function (searchedFor) {
|
|
3679
3669
|
return React__default.createElement(TokenList, {
|
|
3680
3670
|
searchedText: searchedFor,
|
|
3681
|
-
list: list,
|
|
3671
|
+
list: filterTokens(list, searchedFor),
|
|
3682
3672
|
selected: selected,
|
|
3683
3673
|
selectedList: selectedList,
|
|
3684
3674
|
multiSelect: multiSelect,
|