From 5b1dfddbffd983134f965e94d809ed97ddab34fc Mon Sep 17 00:00:00 2001 From: Matthew Russell Date: Wed, 28 Jun 2023 19:55:47 -0700 Subject: [PATCH] feat: adapt market-selector for popover --- apps/trading/client-pages/layout/layout.tsx | 4 +- .../market/market-selector-item.tsx | 49 ++++++++++++------- .../client-pages/market/market-selector.tsx | 48 ++++++------------ .../client-pages/market/trade-grid.tsx | 12 ++++- .../src/components/popover/popover.tsx | 6 +-- 5 files changed, 61 insertions(+), 58 deletions(-) diff --git a/apps/trading/client-pages/layout/layout.tsx b/apps/trading/client-pages/layout/layout.tsx index 23c2abe62..bed51ee47 100644 --- a/apps/trading/client-pages/layout/layout.tsx +++ b/apps/trading/client-pages/layout/layout.tsx @@ -1,5 +1,4 @@ import { Outlet, useLocation } from 'react-router-dom'; -import { Networks, useEnvironment } from '@vegaprotocol/environment'; import { Sidebar, SidebarContent, useSidebar } from '../../components/sidebar'; import classNames from 'classnames'; import { Navbar } from '../../components/navbar'; @@ -12,7 +11,6 @@ import { export const Layout = () => { const location = useLocation(); - const { VEGA_ENV } = useEnvironment(); const { view } = useSidebar(); const sidebarOpen = view !== null; @@ -40,7 +38,7 @@ export const Layout = () => { )}
- +
void; }) => { - const wrapperClasses = classNames( - 'block bg-vega-light-100 dark:bg-vega-dark-100 rounded-lg p-4', - 'min-h-[120px]', - { - 'ring-1 ring-vega-light-300 dark:ring-vega-dark-300': - currentMarketId === market.id, - } - ); return (
- { - onSelect && onSelect(market.id); - }} - > +
@@ -89,6 +73,37 @@ const MarketData = ({ market }: { market: MarketMaybeWithDataAndCandles }) => { ? addDecimalsFormatNumber(vol, market.positionDecimalPlaces) : '0.00'; + return ( +
+
+
+ {market.tradableInstrument.instrument.code} +
+ {mode && ( +

+ {mode} +

+ )} +
+
+ + +
+
+ {oneDayCandles && ( + Number(c.close))} + /> + )} +
+
+ ); + return ( <>
diff --git a/apps/trading/client-pages/market/market-selector.tsx b/apps/trading/client-pages/market/market-selector.tsx index 1e6e34204..9a52e2f14 100644 --- a/apps/trading/client-pages/market/market-selector.tsx +++ b/apps/trading/client-pages/market/market-selector.tsx @@ -11,7 +11,6 @@ import type { CSSProperties } from 'react'; import { useCallback, useState, useMemo } from 'react'; import { Link } from 'react-router-dom'; import { FixedSizeList } from 'react-window'; -import AutoSizer from 'react-virtualized-auto-sizer'; import { useMarketSelectorList } from './use-market-selector-list'; import type { ProductType } from './product-selector'; import { Product, ProductSelector } from './product-selector'; @@ -48,11 +47,8 @@ export const MarketSelector = ({ const { markets, data, loading, error } = useMarketSelectorList(filter); return ( -
-
+
+
{ @@ -149,18 +145,6 @@ export const MarketSelector = ({ } />
-
- - - {t('All markets')} - - - -
); }; @@ -185,21 +169,17 @@ const MarketList = ({ return
{error.message}
; } return ( - - {({ width, height }) => ( - - - - )} - + + + ); }; @@ -274,7 +254,7 @@ const List = ({ className="virtualized-list" itemCount={data.length} itemData={itemData} - itemSize={130} + itemSize={50} itemKey={itemKey} width={width} height={height} diff --git a/apps/trading/client-pages/market/trade-grid.tsx b/apps/trading/client-pages/market/trade-grid.tsx index d15480ee0..ddbfe7e4e 100644 --- a/apps/trading/client-pages/market/trade-grid.tsx +++ b/apps/trading/client-pages/market/trade-grid.tsx @@ -8,7 +8,13 @@ import { t } from '@vegaprotocol/i18n'; import { OracleBanner } from '@vegaprotocol/markets'; import type { Market } from '@vegaprotocol/markets'; import { Filter } from '@vegaprotocol/orders'; -import { Tab, LocalStoragePersistTabs as Tabs } from '@vegaprotocol/ui-toolkit'; +import { + Popover, + Tab, + LocalStoragePersistTabs as Tabs, + VegaIcon, + VegaIconNames, +} from '@vegaprotocol/ui-toolkit'; import { useMarketClickHandler } from '../../lib/hooks/use-market-click-handler'; import { VegaWalletContainer } from '../../components/vega-wallet-container'; import { HeaderTitle } from '../../components/header'; @@ -19,6 +25,7 @@ import { } from '../../components/resizable-grid'; import { TradingViews } from './trade-views'; import { HeaderStats } from './header-stats'; +import { MarketSelector } from './market-selector'; interface TradeGridProps { market: Market | null; onSelect: (marketId: string, metaKey?: boolean) => void; @@ -167,6 +174,9 @@ export const TradeGrid = ({ market, pinnedAsset }: TradeGridProps) => { primaryContent={market?.tradableInstrument.instrument.code} secondaryContent={market?.tradableInstrument.instrument.name} /> + }> + +
diff --git a/libs/ui-toolkit/src/components/popover/popover.tsx b/libs/ui-toolkit/src/components/popover/popover.tsx index eb06f23b6..6c00a8e8f 100644 --- a/libs/ui-toolkit/src/components/popover/popover.tsx +++ b/libs/ui-toolkit/src/components/popover/popover.tsx @@ -1,5 +1,5 @@ import * as PopoverPrimitive from '@radix-ui/react-popover'; -import { Icon } from '../icon'; +import { VegaIcon, VegaIconNames } from '../icon'; export interface PopoverProps extends PopoverPrimitive.PopoverProps { trigger: React.ReactNode | string; @@ -23,14 +23,14 @@ export const Popover = ({ - + {children}