/* * Copyright (c) 2015 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause */ import React from 'react'; import classNames from '../utils/classNames'; interface ComplexItem { key: string; renderItem: React.ReactNode; title?: string; } type SelectItem = string | ComplexItem; const convertToComplex = (item: SelectItem): ComplexItem => { if (typeof item === 'string') { return { key: item, renderItem: item, title: undefined, } as ComplexItem; } return item as ComplexItem; }; const SwitchButton: React.FC<{ variant: string; onClick: () => void; disabled: boolean; children: React.ReactNode; size?: 'sm' | 'md'; title?: string; active?: boolean; }> = ({ variant, onClick, disabled, children, size = 'md', title, active }) => ( ); export interface Props { items: SelectItem[]; onSelect: (index: number) => void; disabled?: boolean; selectedItem: SelectItem; size?: 'sm' | 'md'; } export default ({ items, onSelect, disabled = false, selectedItem, size = 'md', }: Props) => { const selectionButton = (item: SelectItem, index: number) => { const complexItem = convertToComplex(item); const complexSelectedItem = convertToComplex(selectedItem); return ( { onSelect(index); }} disabled={disabled} size={size} title={complexItem.title} active={complexSelectedItem.key === complexItem.key} > {complexItem.renderItem} ); }; return (
{items.map((item, index) => selectionButton(item, index))}
); };