Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6e4ffcd
feat: implement market list search
geositta Jan 16, 2026
8623e11
feat: layout changes to follow mobile design
geositta Jan 16, 2026
a814695
fix: use correct styles on max leverage label
geositta Jan 20, 2026
579edf3
feat: introduce stock/comm subfilter
geositta Jan 20, 2026
a14bf6e
feat: make perp search global
geositta Jan 20, 2026
6c613b8
fix: rm extra route
geositta Jan 20, 2026
cdbbc08
feat: use dropdown for perps sorting
geositta Jan 20, 2026
a8ec594
chore: rm duplicate sort market fn
geositta Jan 20, 2026
109b4b2
chore: add labels
geositta Jan 20, 2026
c84a73f
chore: add labels and tests
geositta Jan 20, 2026
8967662
chore: use ButtonBase in dropdown and search
geositta Jan 20, 2026
3f89c39
chore: rm polling and refresh
geositta Jan 20, 2026
e95ab3d
chore: button style fixes
geositta Jan 20, 2026
0203aa0
chore: replace div with Box in dropdown
geositta Jan 20, 2026
c3c06fc
chore: rm unused filter-chips component
geositta Jan 20, 2026
f92e982
chore: bug fixes, rm unused code
geositta Jan 21, 2026
2cb8ea9
chore: fix rebase typo
geositta Jan 21, 2026
1084704
chore: fix text color potential bug
geositta Jan 21, 2026
0f0158b
chore: refactor filterByType logic
geositta Jan 21, 2026
9c916c3
chore: fix whitespace potential bug
geositta Jan 21, 2026
74fb958
chore: rm unused market badge component
geositta Jan 21, 2026
9f3c496
fix: add types to tests
geositta Jan 21, 2026
6fccb18
fix: add tests to console baseline config
geositta Jan 21, 2026
1a2a3c4
Fix: a11y navigation for filter dropdown, use ButtonBase for back arrow
geositta Jan 21, 2026
ae225af
chore: rm unused hooks
geositta Jan 21, 2026
4e8ffb9
chore: update selected perp test
geositta Jan 21, 2026
be9f504
chore: add missing translations
geositta Jan 21, 2026
fd3b9de
chore: linting for jsdoc
geositta Jan 21, 2026
4b5551f
feat: use textfieldsearch component
geositta Jan 21, 2026
48a7008
chore: linting
geositta Jan 21, 2026
597b58e
fix: use ml-auto in dropdown
geositta Jan 21, 2026
da52964
chore: use existing getChangeColor util
geositta Jan 21, 2026
94ce943
chore: use feature flag for market-list, include test
geositta Jan 21, 2026
8a52a6f
feat: use DS skeleton
geositta Jan 22, 2026
e4edf37
Merge branch 'main' into perps/search-market-list
geositta Jan 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: use textfieldsearch component
  • Loading branch information
geositta committed Jan 22, 2026
commit 4b5551f1a5fcf51686176e3f17c24deaea94a8c6
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ describe('SearchInput', () => {
renderWithProvider(<SearchInput {...defaultProps} value="" />, mockStore);

expect(
screen.queryByTestId('search-clear-button'),
screen.queryByTestId('text-field-search-clear-button'),
).not.toBeInTheDocument();
});

Expand All @@ -68,7 +68,9 @@ describe('SearchInput', () => {
mockStore,
);

expect(screen.getByTestId('search-clear-button')).toBeInTheDocument();
expect(
screen.getByTestId('text-field-search-clear-button'),
).toBeInTheDocument();
});

it('calls onClear when clear button is clicked', () => {
Expand All @@ -78,7 +80,7 @@ describe('SearchInput', () => {
mockStore,
);

const clearButton = screen.getByTestId('search-clear-button');
const clearButton = screen.getByTestId('text-field-search-clear-button');
fireEvent.click(clearButton);

expect(onClear).toHaveBeenCalledTimes(1);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
import React, { useCallback, useRef, useEffect } from 'react';
import React, { useCallback } from 'react';
import {
Box,
BoxFlexDirection,
BoxAlignItems,
Icon,
IconName,
IconSize,
IconColor,
} from '@metamask/design-system-react';
TextFieldSearch,
TextFieldSearchSize,
} from '../../../../../components/component-library';
import { BorderRadius } from '../../../../../helpers/constants/design-system';
import { useI18nContext } from '../../../../../hooks/useI18nContext';

export type SearchInputProps = {
Expand Down Expand Up @@ -38,27 +34,6 @@ export const SearchInput: React.FC<SearchInputProps> = ({
autoFocus = false,
}) => {
const t = useI18nContext();
const inputRef = useRef<HTMLInputElement>(null);

useEffect(() => {
if (autoFocus && inputRef.current) {
inputRef.current.focus();
}
}, [autoFocus]);

const handleChange = useCallback(
(event: React.ChangeEvent<HTMLInputElement>) => {
onChange(event.target.value);
},
[onChange],
);

const handleClear = useCallback(() => {
onClear();
if (inputRef.current) {
inputRef.current.focus();
}
}, [onClear]);

const handleKeyDown = useCallback(
(event: React.KeyboardEvent<HTMLInputElement>) => {
Expand All @@ -70,46 +45,20 @@ export const SearchInput: React.FC<SearchInputProps> = ({
);

return (
<Box
className="flex-1 rounded-full border border-border-muted bg-background-default"
flexDirection={BoxFlexDirection.Row}
alignItems={BoxAlignItems.Center}
gap={2}
paddingLeft={3}
paddingRight={2}
<TextFieldSearch
size={TextFieldSearchSize.Md}
placeholder={t('perpsSearchMarkets')}
autoFocus={autoFocus}
value={value}
onChange={(e) => onChange(e.target.value)}
clearButtonOnClick={onClear}
borderRadius={BorderRadius.MD}
data-testid="search-input-container"
>
<Icon
name={IconName.Search}
size={IconSize.Sm}
color={IconColor.IconAlternative}
/>
<input
ref={inputRef}
type="text"
value={value}
onChange={handleChange}
onKeyDown={handleKeyDown}
placeholder={t('perpsSearchMarkets')}
className="min-w-0 flex-1 border-none bg-transparent py-2 text-sm text-text-default outline-none placeholder:text-text-alternative"
data-testid="search-input"
/>
{value && (
<button
type="button"
onClick={handleClear}
className="flex items-center justify-center rounded-full p-1 hover:bg-hover active:bg-pressed"
data-testid="search-clear-button"
aria-label={t('clear')}
>
<Icon
name={IconName.Close}
size={IconSize.Xs}
color={IconColor.IconAlternative}
/>
</button>
)}
</Box>
inputProps={{
'data-testid': 'search-input',
onKeyDown: handleKeyDown,
}}
/>
);
};

Expand Down