react-toolbox/spec/ts/autocomplete.tsx

97 lines
2.6 KiB
TypeScript

import * as React from 'react';
import Autocomplete from 'components/autocomplete';
class AutocompleteTest extends React.Component<any, any> {
state: any = {
simple: 'Spain',
simpleShowAll: 'England',
multipleArray: ['ES-es', 'TH-th'],
multipleObject: {'ES-es': 'Spain', 'TH-th': 'Thailand'},
countriesArray: ['Spain', 'England', 'USA', 'Thailand', 'Tongo', 'Slovenia'],
countriesObject: {
'EN-gb': 'England',
'EN-en': 'United States of America', 'EN-nz': 'New Zealand'
}
};
handleFocus = (event: React.MouseEvent<any>) => {
console.log('This is focused');
console.log(event);
};
handleMultipleArrayChange = (value: any) => {
this.setState({
multipleArray: value,
countriesObject: {
...this.state.countriesObject,
...(value[0] && !this.state.countriesObject[value[0]]) ? {[value[0]]: value[0]} : {}
}
});
};
handleMultipleObjectChange = (value: any) => {
this.setState({
multipleObject: value
});
};
handleSimpleChange = (value: any) => {
this.setState({simple: value});
};
handleSimpleShowAllChange = (value: any) => {
this.setState({simpleShowAll: value});
};
render () {
return (
<section>
<h5>Autocomplete</h5>
<p>You can have a multiple or simple autocomplete.</p>
<Autocomplete
allowCreate
keepFocusOnChange
label="Pick multiple elements..."
onFocus={this.handleFocus}
onChange={this.handleMultipleArrayChange}
source={this.state.countriesObject}
suggestionMatch="anywhere"
value={this.state.multipleArray}
/>
<Autocomplete
allowCreate
label="Pick multiple elements with object value..."
onChange={this.handleMultipleObjectChange}
showSelectedWhenNotInSource
source={this.state.countriesObject}
suggestionMatch="anywhere"
value={this.state.multipleObject}
/>
<Autocomplete
hint="Elements up to you..."
label="Choose a country"
multiple={false}
onChange={this.handleSimpleChange}
source={this.state.countriesArray}
value={this.state.simple}
/>
<Autocomplete
hint="Elements up to you..."
label="Choose a country (showing all suggestions)"
multiple={false}
onChange={this.handleSimpleShowAllChange}
showSuggestionsWhenValueIsSet
source={this.state.countriesArray}
value={this.state.simpleShowAll}
/>
</section>
);
}
}
export default AutocompleteTest;