fix: address feedback

This commit is contained in:
Edd
2023-06-15 15:46:43 +01:00
parent b7ebc7ce12
commit f8cb42a38d
4 changed files with 44 additions and 47 deletions
@@ -1,13 +1,5 @@
import { t } from '@vegaprotocol/i18n';
import { Icon } from '@vegaprotocol/ui-toolkit';
// These are cribbed from dropdown-menu.tsx, so that the classes match
// the filter button this sits next to on the TXs list page
const defaultClasses = [
'text-sm py-1 px-2 rounded bg-transparent border whitespace-nowrap',
'border-vega-light-200 dark:border-vega-dark-200',
'hover:border-vega-light-300 dark:hover:border-vega-dark-300',
].join(' ');
import { Button, Icon } from '@vegaprotocol/ui-toolkit';
interface BlocksRefetchProps {
refetch: () => void;
@@ -19,15 +11,9 @@ export const BlocksRefetch = ({ refetch }: BlocksRefetchProps) => {
};
return (
<div className="inline mr-2">
<button
onClick={refresh}
data-testid="refresh"
className={defaultClasses}
>
<Icon name="refresh" className="mr-2" />
{t('Load new')}
</button>
</div>
<Button onClick={refresh} data-testid="refresh" size="xs">
<Icon name="refresh" className="!align-baseline mr-2" size={3} />
{t('Load new')}
</Button>
);
};
@@ -0,0 +1,24 @@
import { t } from '@vegaprotocol/i18n';
export interface FilterLabelProps {
filters: Set<string>;
}
/**
* Renders the list (currently limited to 1) of filters set by the
* Transaction Filter
*/
export function FilterLabel({ filters }: FilterLabelProps) {
if (!filters || filters.size !== 1) {
return <span className="uppercase">{t('Filter')}</span>;
}
return (
<div>
<span className="uppercase">{t('Filters')}:</span>&nbsp;
<code className="bg-vega-light-150 px-2 rounded-md capitalize">
{Array.from(filters)[0]}
</code>
</div>
);
}
@@ -8,11 +8,12 @@ import {
DropdownMenuSub,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
Icon,
DropdownMenuSubContent,
Icon,
Button,
} from '@vegaprotocol/ui-toolkit';
import classNames from 'classnames';
import type { Dispatch, SetStateAction } from 'react';
import { FilterLabel } from './tx-filter-label';
// All possible transaction types. Should be generated.
export type FilterOption =
@@ -80,28 +81,6 @@ export const AllFilterOptions: FilterOption[] = [
...SecondaryFilterOptions,
];
export function getFilterLabel(filters: Set<string>) {
if (!filters || filters.size !== 1) {
return <span>{t('Filter')}</span>;
}
return (
<span>
{t('Filters')}: <code>{Array.from(filters)[0]}</code>
</span>
);
}
// Effectively a copy & paste of the Vega DropdownMenuItem styles
const itemClass = classNames(
'relative flex gap-2 items-center rounded-sm p-2 text-sm',
'cursor-default',
'hover:bg-white dark:hover:bg-vega-dark-200',
'focus:bg-white dark:focus:bg-vega-dark-200',
'select-none',
'whitespace-nowrap'
);
export interface TxFilterProps {
filters: Set<FilterOption>;
setFilters: Dispatch<SetStateAction<Set<FilterOption>>>;
@@ -121,7 +100,11 @@ export const TxsFilter = ({ filters, setFilters }: TxFilterProps) => {
<DropdownMenu
modal={false}
trigger={
<DropdownMenuTrigger>{getFilterLabel(filters)}</DropdownMenuTrigger>
<DropdownMenuTrigger className="ml-2">
<Button size="xs">
<FilterLabel filters={filters} />
</Button>
</DropdownMenuTrigger>
}
>
<DropdownMenuContent>
@@ -152,7 +135,7 @@ export const TxsFilter = ({ filters, setFilters }: TxFilterProps) => {
</DropdownMenuCheckboxItem>
))}
<DropdownMenuSub>
<DropdownMenuSubTrigger className={itemClass}>
<DropdownMenuSubTrigger>
{t('More Types')}
<Icon name="chevron-right" />
</DropdownMenuSubTrigger>
@@ -189,8 +189,12 @@ export const DropdownMenuSubContent = forwardRef<
export const DropdownMenuSubTrigger = forwardRef<
React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger>
>(({ ...subTriggerProps }, forwardedRef) => (
<DropdownMenuPrimitive.SubTrigger ref={forwardedRef} {...subTriggerProps} />
>(({ className, ...subTriggerProps }, forwardedRef) => (
<DropdownMenuPrimitive.SubTrigger
className={classNames(className, itemClass)}
ref={forwardedRef}
{...subTriggerProps}
/>
));
/**