Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: token components lint errors #554

Merged
merged 2 commits into from
Jun 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions .changeset/tame-planets-search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@coinbase/onchainkit": patch
---

- **fix**: fix token component biome lint errors. By @kyhyco #554
2 changes: 2 additions & 0 deletions src/token/components/SearchIcon.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
export function SearchIcon() {
return (
<svg
role="img"
aria-label="ock-search-icon"
width="16"
height="16"
viewBox="0 0 16 16"
Expand Down
14 changes: 10 additions & 4 deletions src/token/components/TextInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ type TextInputReact = {
};

export function TextInput({ placeholder, value, onChange }: TextInputReact) {
const handleChange = useCallback((evt: ChangeEvent<HTMLInputElement>) => {
onChange(evt.target.value);
}, []);
const handleChange = useCallback(
(evt: ChangeEvent<HTMLInputElement>) => {
onChange(evt.target.value);
},
[onChange],
);

const handleClear = useCallback(() => {
onChange('');
}, []);
}, [onChange]);

return (
<div className="relative flex items-center">
Expand All @@ -31,11 +34,14 @@ export function TextInput({ placeholder, value, onChange }: TextInputReact) {
/>
{value && (
<button
type="button"
data-testid="ockTextInput_Clear"
className="-translate-y-1/2 absolute top-1/2 right-4"
onClick={handleClear}
>
<svg
role="img"
aria-label="ock-close-icon"
width="16"
height="16"
viewBox="0 0 16 16"
Expand Down
4 changes: 2 additions & 2 deletions src/token/components/TokenChip.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe('TokenChip Component', () => {
expect(spanElement).toBeInTheDocument();
});

it('should render without an image', async () => {
it('should render a placeholder if no image', async () => {
const token = {
address: '0x123' as Address,
chainId: 1,
Expand All @@ -45,7 +45,7 @@ describe('TokenChip Component', () => {
const buttonElement = screen.getByRole('button');
expect(buttonElement).toBeInTheDocument();

const imgElement = screen.queryByRole('img');
const imgElement = screen.getByTestId('ockTokenImage_NoImage');
const spanElement = within(buttonElement).getByText(token.symbol);

expect(imgElement).toBeInTheDocument();
Expand Down
6 changes: 4 additions & 2 deletions src/token/components/TokenChip.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { TextBody } from '../../internal/text';
import type { TokenChipReact } from '../types';
import { TokenImage } from './TokenImage';

/**
* Small button that display a given token symbol and image.
Expand All @@ -10,11 +11,12 @@ import type { TokenChipReact } from '../types';
export function TokenChip({ token, onClick }: TokenChipReact) {
return (
<button
type="button"
data-testid="ockTokenChip_Button"
className="flex w-fit items-center rounded-2xl bg-[#eef0f3] py-1 pr-3 pl-1 hover:active:bg-[#bfc1c3] hover:bg-[#cacbce] shrink-0 shadow-[0px_8px_12px_0px_#5B616E1F] "
className="flex w-fit shrink-0 items-center gap-2 rounded-2xl bg-[#eef0f3] py-1 pr-3 pl-1 shadow-[0px_8px_12px_0px_#5B616E1F] hover:active:bg-[#bfc1c3] hover:bg-[#cacbce]"
onClick={() => onClick?.(token)}
>
<img className="mr-2 h-6 w-6" src={token.image || ''} />
<TokenImage token={token} size={24} />
<TextBody>{token.symbol}</TextBody>
</button>
);
Expand Down
3 changes: 2 additions & 1 deletion src/token/components/TokenImage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function TokenImage({ className, size = 24, token }: TokenImageReact) {
height: `${size}px`,
},
};
}, [size]);
}, [size, name]);

if (!image) {
return (
Expand All @@ -35,6 +35,7 @@ export function TokenImage({ className, size = 24, token }: TokenImageReact) {
return (
<img
className={className || 'ock-tokenimage'}
alt="token-image"
data-testid="ockTokenImage_Image"
style={styles.image}
src={image}
Expand Down
1 change: 1 addition & 0 deletions src/token/components/TokenRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export const TokenRow = memo(function TokenRow({
return (
<button
data-testid="ockTokenRow_Container"
type="button"
className="flex h-16 w-full cursor-pointer items-center justify-between bg-white px-2 py-1 active:bg-[#bfc1c3] hover:bg-[#cacbce]"
onClick={() => onClick?.(token)}
>
Expand Down
19 changes: 11 additions & 8 deletions src/token/components/TokenSearch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,18 @@ export function TokenSearch({ onChange, delayMs = 200 }: TokenSearchReact) {
onChange(value);
}, delayMs);

const handleChange = useCallback((value: string) => {
setValue(value);
const handleChange = useCallback(
(value: string) => {
setValue(value);

if (delayMs > 0) {
handleDebounce(value);
} else {
onChange(value);
}
}, []);
if (delayMs > 0) {
handleDebounce(value);
} else {
onChange(value);
}
},
[onChange, handleDebounce, delayMs],
);

return (
<TextInput
Expand Down
5 changes: 5 additions & 0 deletions src/token/components/TokenSelectButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ function CaretUp() {
return (
<svg
data-testid="ockTokenSelectButton_CaretUp"
role="img"
aria-label="ock-caretup-icon"
width="16"
height="16"
viewBox="0 0 16 16"
Expand All @@ -25,6 +27,8 @@ function CaretDown() {
return (
<svg
data-testid="ockTokenSelectButton_CaretDown"
role="img"
aria-label="ock-caretdown-icon"
width="16"
height="17"
viewBox="0 0 16 17"
Expand All @@ -45,6 +49,7 @@ export const TokenSelectButton = forwardRef(function TokenSelectButton(
) {
return (
<button
type="button"
data-testid="ockTokenSelectButton_Button"
className="flex w-fit items-center gap-2 rounded-2xl bg-[#eef0f3] px-3 py-1 outline-none active:bg-[#bfc1c3] hover:bg-[#cacbce]"
onClick={onClick}
Expand Down
2 changes: 1 addition & 1 deletion src/token/components/TokenSelectDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export function TokenSelectDropdown({
return () => {
document.removeEventListener('click', handleBlur);
};
}, []);
}, [handleBlur]);

return (
<div className={'relative'}>
Expand Down
Loading