food-grapqhl-client/src/storeSelect.tsx

47 lines
958 B
TypeScript
Raw Normal View History

2019-02-11 18:56:58 +00:00
import React from 'react';
import { Query } from 'react-apollo';
import styled from 'styled-components';
import * as queries from './queries.graphql';
const Select = styled.select`
height: 32px;
width: 200px;
`;
interface Store {
id: string;
name: string;
}
interface StoreSelectProps {
value: string;
onChange: Function;
}
const StoreSelect = React.memo(({ value, onChange }: StoreSelectProps) => {
const onChangeStore = React.useCallback((e) => {
e.preventDefault();
onChange(e.target.value);
}, []);
return (
2021-02-04 15:17:21 +00:00
<Query query={queries.getStores}>
2021-02-04 16:48:17 +00:00
{({ data: { stores = [] } = {} }) => (
2021-02-04 15:17:21 +00:00
<Select value={value} onChange={onChangeStore}>
<option key="default" value="">Select a store</option>
{stores.map(({ id, name }: Store) => {
return (<option key={id} value={id}>{name}</option>)
})}
</Select>
)}
</Query>
2019-02-11 18:56:58 +00:00
);
});
export default StoreSelect;