You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
| 
											5 years ago
										 | import React, { useEffect, useState } from 'react'; | ||
| 
											6 years ago
										 | 
 | ||
|  | import { SessionRadio } from './SessionRadio'; | ||
| 
											6 years ago
										 | 
 | ||
|  | interface Props { | ||
| 
											5 years ago
										 |   // tslint:disable: react-unused-props-and-state
 | ||
|  |   initialItem: string; | ||
| 
											6 years ago
										 |   items: Array<any>; | ||
|  |   group: string; | ||
| 
											5 years ago
										 |   onClick: (selectedValue: string) => any; | ||
| 
											6 years ago
										 | } | ||
|  | 
 | ||
| 
											5 years ago
										 | export const SessionRadioGroup = (props: Props) => { | ||
|  |   const [activeItem, setActiveItem] = useState(''); | ||
|  |   const { items, group, initialItem } = props; | ||
|  | 
 | ||
|  |   useEffect(() => { | ||
|  |     setActiveItem(initialItem); | ||
|  |   }, []); | ||
|  | 
 | ||
|  |   return ( | ||
|  |     <div className="session-radio-group"> | ||
|  |       <fieldset id={group}> | ||
|  |         {items.map(item => { | ||
|  |           const itemIsActive = item.value === activeItem; | ||
|  | 
 | ||
|  |           return ( | ||
|  |             <SessionRadio | ||
|  |               key={item.value} | ||
|  |               label={item.label} | ||
|  |               active={itemIsActive} | ||
|  |               value={item.value} | ||
|  |               group={group} | ||
|  |               onClick={(value: string) => { | ||
|  |                 setActiveItem(value); | ||
|  |                 props.onClick(value); | ||
|  |               }} | ||
|  |             /> | ||
|  |           ); | ||
|  |         })} | ||
|  |       </fieldset> | ||
|  |     </div> | ||
|  |   ); | ||
|  | }; |