{scale.map((item: ScaleItem) => {
if (item.value <= 0) {
return
}
const isSelectedItem = selectedItem?.value === item.value
const itemRef = itemRefs.find((i) => item.value === i.value)
// Make control tabbable
let tabIndex = 0
// Unless.. there's an item selected and it's not this one
if (selectedItem && selectedItem.value > 0 && selectedItem.value !== item.value) {
tabIndex = -1
}
const isSelected = selectedItem && item.value <= selectedItem?.value && !hoveredItem
const isSuggested = hoveredItem && hoveredItem.value >= item.value
const isUnselected = selectedItem && selectedItem.value < item.value
return (
handleRadioClick(item)}
onMouseEnter={(): void => setHoveredItem(item)}
onMouseLeave={(): void => setHoveredItem(null)}
onKeyDown={(event): void => handleKeyDown(event, item)}
onFocus={(): void => setHoveredItem(item)}
onBlur={(): void => setHoveredItem(null)}
role="radio"
aria-label={item.label}
aria-checked={isSelectedItem}
aria-posinset={item.value}
aria-setsize={5}
tabIndex={tabIndex}
ref={itemRef?.ref}
>
{isSelectedItem ?
: null}
)
})}