feat: add click on tab led for connect
This commit is contained in:
@ -45,6 +45,9 @@ function App() {
|
|||||||
onAddClick={() => {
|
onAddClick={() => {
|
||||||
setPage('add-dsp');
|
setPage('add-dsp');
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
onConnect={dsp408.connectDSP}
|
||||||
|
onDisconnect={dsp408.disconnectDSP}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<main className="stage">
|
<main className="stage">
|
||||||
|
|||||||
@ -176,6 +176,8 @@
|
|||||||
|
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|
||||||
|
border-radius: var(--radius-sm);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-close {
|
.tab-close {
|
||||||
|
|||||||
@ -22,6 +22,8 @@ function Tab({
|
|||||||
step,
|
step,
|
||||||
onSelect,
|
onSelect,
|
||||||
onRemove,
|
onRemove,
|
||||||
|
onConnect,
|
||||||
|
onDisconnect,
|
||||||
}: {
|
}: {
|
||||||
dsp: DSP;
|
dsp: DSP;
|
||||||
active: boolean;
|
active: boolean;
|
||||||
@ -29,25 +31,71 @@ function Tab({
|
|||||||
step: number;
|
step: number;
|
||||||
onSelect: () => void;
|
onSelect: () => void;
|
||||||
onRemove: () => void;
|
onRemove: () => void;
|
||||||
|
onConnect: (dsp: DSP) => void;
|
||||||
|
onDisconnect: (dsp: DSP) => void;
|
||||||
}) {
|
}) {
|
||||||
|
const handleLedClick = (e: React.MouseEvent) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
if (dsp.status === 'connected') {
|
||||||
|
onDisconnect(dsp);
|
||||||
|
} else {
|
||||||
|
onConnect(dsp);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
className={'tab' + (active ? ' tab--active' : '') + (dimmed ? ' tab--dimmed' : '')}
|
type="button"
|
||||||
|
className={
|
||||||
|
'tab' +
|
||||||
|
(active ? ' tab--active' : '') +
|
||||||
|
(dimmed ? ' tab--dimmed' : '')
|
||||||
|
}
|
||||||
data-step={step}
|
data-step={step}
|
||||||
onClick={onSelect}
|
onClick={onSelect}
|
||||||
>
|
>
|
||||||
<span className="tab-led">
|
<span
|
||||||
|
className="tab-led"
|
||||||
|
role="button"
|
||||||
|
tabIndex={0}
|
||||||
|
onClick={handleLedClick}
|
||||||
|
onKeyDown={(e) => {
|
||||||
|
if (e.key === 'Enter' || e.key === ' ') {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
if (dsp.status === 'connected') {
|
||||||
|
onDisconnect(dsp);
|
||||||
|
} else {
|
||||||
|
onConnect(dsp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
<Led status={dsp.status} />
|
<Led status={dsp.status} />
|
||||||
</span>
|
</span>
|
||||||
<span title={dsp.name}>{dsp.name}</span>
|
|
||||||
|
<span className="tab-name" title={dsp.name}>
|
||||||
|
{dsp.name}
|
||||||
|
</span>
|
||||||
|
|
||||||
<span
|
<span
|
||||||
className="tab-close"
|
className="tab-close"
|
||||||
role="button"
|
role="button"
|
||||||
|
tabIndex={0}
|
||||||
aria-label={`Remove ${dsp.name}`}
|
aria-label={`Remove ${dsp.name}`}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
onRemove();
|
onRemove();
|
||||||
}}
|
}}
|
||||||
|
onKeyDown={(e) => {
|
||||||
|
if (e.key === 'Enter' || e.key === ' ') {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
onRemove();
|
||||||
|
}
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<CloseIcon />
|
<CloseIcon />
|
||||||
</span>
|
</span>
|
||||||
@ -64,6 +112,8 @@ function TopBar({
|
|||||||
onSelect,
|
onSelect,
|
||||||
onRemove,
|
onRemove,
|
||||||
onAddClick,
|
onAddClick,
|
||||||
|
onConnect,
|
||||||
|
onDisconnect,
|
||||||
}: {
|
}: {
|
||||||
dsps: DSP[];
|
dsps: DSP[];
|
||||||
selected: number | null;
|
selected: number | null;
|
||||||
@ -73,6 +123,8 @@ function TopBar({
|
|||||||
onSelect: (id: number) => void;
|
onSelect: (id: number) => void;
|
||||||
onRemove: (dsp: DSP) => void;
|
onRemove: (dsp: DSP) => void;
|
||||||
onAddClick: () => void;
|
onAddClick: () => void;
|
||||||
|
onConnect: (dsp: DSP) => void;
|
||||||
|
onDisconnect: (dsp: DSP) => void;
|
||||||
}) {
|
}) {
|
||||||
const hasTabs = dsps.length > 0;
|
const hasTabs = dsps.length > 0;
|
||||||
const tabstripRef = useRef<HTMLDivElement>(null);
|
const tabstripRef = useRef<HTMLDivElement>(null);
|
||||||
@ -145,6 +197,8 @@ function TopBar({
|
|||||||
dimmed={page === 'add-dsp'}
|
dimmed={page === 'add-dsp'}
|
||||||
onSelect={() => onSelect(dsp.id)}
|
onSelect={() => onSelect(dsp.id)}
|
||||||
onRemove={() => onRemove(dsp)}
|
onRemove={() => onRemove(dsp)}
|
||||||
|
onConnect={onConnect}
|
||||||
|
onDisconnect={onDisconnect}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user