Kairo-Jinkendo/frontend/src/components/SprintTransferSelect.jsx

47 lines
1.3 KiB
React
Raw Normal View History

import { listCarryoverTargetSprints } from '../utils/workCycleActions.js'
/**
* Schnellzuweisung: AP in einen anderen Sprint verschieben.
*/
export function SprintTransferSelect({
action,
workCycles = [],
busy = false,
onMove,
className = '',
}) {
if (!action?.work_cycle_id || action.status === 'done' || action.status === 'discarded') {
return null
}
const targets = listCarryoverTargetSprints(workCycles, action.work_cycle_id)
if (targets.length === 0) return null
return (
<label className={`sprint-transfer-select ${className}`.trim()}>
<span className="sr-only">In anderen Sprint verschieben</span>
<select
className="inline-select"
value=""
disabled={busy}
aria-label={`${action.title} in anderen Sprint verschieben`}
onChange={(e) => {
const targetId = e.target.value
if (targetId && typeof onMove === 'function') {
onMove(action, targetId)
}
e.target.value = ''
}}
>
<option value="">→ Sprint …</option>
{targets.map((cycle) => (
<option key={cycle.id} value={cycle.id}>
{cycle.title}
{cycle.status === 'active' ? ' (aktiv)' : cycle.status === 'planned' ? ' (geplant)' : ''}
</option>
))}
</select>
</label>
)
}