Remove badge
Playground
TSX
'use client';
import { useRef, useState } from 'react';
import { RemoveBadge, Button, type RemoveBadgeSize } from '@mbsw/ui';
export default function Demo() {
const settings = {
"size": "md"
};
const [visible, setVisible] = useState(true);
const transferFocus = useRef(false);
const changeVisibility = (next: boolean, button: HTMLButtonElement) => {
transferFocus.current = button === button.ownerDocument.activeElement;
setVisible(next);
};
const restoreFocus = (button: HTMLButtonElement | null) => {
if (button && transferFocus.current) {
transferFocus.current = false;
button.focus();
}
};
return visible ? (
<span style={{ display: 'inline-flex', alignItems: 'center', gap: 8 }}>
{"항목 1"}
<RemoveBadge
ref={restoreFocus}
aria-label={"항목 1 제거"}
size={settings.size as RemoveBadgeSize}
onClick={(event) => changeVisibility(false, event.currentTarget)}
/>
</span>
) : (
<Button
ref={restoreFocus}
variant="outline"
onClick={(event) => changeVisibility(true, event.currentTarget)}
>
{"다시 추가"}
</Button>
);
}
Properties
Size
Usage
제거할 항목 옆에 배치하고 onClick에서 실제 제거를 처리합니다.
TSX
'use client';
import { useRef, useState } from 'react';
import { RemoveBadge, Button } from '@mbsw/ui';
export default function Example() {
const [visible, setVisible] = useState(true);
const transferFocus = useRef(false);
const changeVisibility = (next: boolean, button: HTMLButtonElement) => {
transferFocus.current = button === button.ownerDocument.activeElement;
setVisible(next);
};
const restoreFocus = (button: HTMLButtonElement | null) => {
if (button && transferFocus.current) {
transferFocus.current = false;
button.focus();
}
};
return visible ? (
<span style={{ display: 'inline-flex', alignItems: 'center', gap: 8 }}>
{"항목 1"}
<RemoveBadge
ref={restoreFocus}
aria-label={"항목 1 제거"}
onClick={(event) => changeVisibility(false, event.currentTarget)}
/>
</span>
) : (
<Button
ref={restoreFocus}
onClick={(event) => changeVisibility(true, event.currentTarget)}
>
{"다시 추가"}
</Button>
);
}
Playground의 Code 탭에서 현재 설정과 동작이 포함된 예제 전체를 복사할 수 있습니다. 공통 CSS 설치는 설치하기를 확인하세요.