This commit is contained in:
Nathan Bierema 2021-06-07 00:11:34 -04:00
parent 1bb2b39423
commit f07cb7a979
4 changed files with 19 additions and 20 deletions

View File

@ -81,7 +81,7 @@ export class Select<
}; };
} }
interface ExternalSelectProps< export interface ExternalSelectProps<
Option extends OptionTypeBase = OptionTypeBase, Option extends OptionTypeBase = OptionTypeBase,
IsMulti extends boolean = false IsMulti extends boolean = false
> extends Omit<ReactSelectProps<Option, IsMulti>, 'theme'> { > extends Omit<ReactSelectProps<Option, IsMulti>, 'theme'> {

View File

@ -23,14 +23,10 @@ class InstanceSelector extends Component<Props> {
return ( return (
<Select <Select
options={this.select} options={this.select}
// TODO Where's the type-checking? onChange={(option) => this.props.onSelect(option!.value)}
onChange={(option: { value: string }) => value={this.select.find(
this.props.onSelect(option.value) (option) => option.value === this.props.selected
} )}
value={
this.select.find((option) => option.value === this.props.selected) ||
''
}
/> />
); );
} }

View File

@ -182,9 +182,10 @@ class Dispatcher extends Component<Props, State> {
); );
} }
let options: { value: string | number; label: string }[] = [ let options: {
{ value: 'default', label: 'Custom action' }, value: 'default' | 'actions-help' | number;
]; label: string;
}[] = [{ value: 'default', label: 'Custom action' }];
if (actionCreators && actionCreators.length > 0) { if (actionCreators && actionCreators.length > 0) {
options = options.concat( options = options.concat(
actionCreators.map(({ name, args }, i) => ({ actionCreators.map(({ name, args }, i) => ({
@ -204,9 +205,11 @@ class Dispatcher extends Component<Props, State> {
{actionElement} {actionElement}
<Toolbar> <Toolbar>
<Select <Select
openOuterUp onChange={(option) => this.selectActionCreator(option!.value)}
onChange={this.selectActionCreator} value={
value={this.state.selected || 'default'} options.find((option) => option.value === this.state.selected) ||
options.find((option) => option.value === 'default')
}
options={options} options={options}
/> />
<Button onClick={this.dispatchAction} primary={this.state.changed}> <Button onClick={this.dispatchAction} primary={this.state.changed}>

View File

@ -52,9 +52,9 @@ export default class TestTab<S, A extends Action<unknown>> extends Component<
(this.props.monitorState as { testGenerator?: TestGeneratorMonitorState }) (this.props.monitorState as { testGenerator?: TestGeneratorMonitorState })
.testGenerator || {}; .testGenerator || {};
handleSelectTemplate = (selectedTemplate: Template) => { handleSelectTemplate = (selectedTemplate: Template | null | undefined) => {
const { templates = getDefaultTemplates() } = this.getPersistedState(); const { templates = getDefaultTemplates() } = this.getPersistedState();
this.updateState({ selected: templates.indexOf(selectedTemplate) }); this.updateState({ selected: templates.indexOf(selectedTemplate!) });
}; };
handleCloseTip = () => { handleCloseTip = () => {
@ -133,9 +133,9 @@ export default class TestTab<S, A extends Action<unknown>> extends Component<
<div style={{ flexGrow: 1, zIndex: 100 }}> <div style={{ flexGrow: 1, zIndex: 100 }}>
<Select <Select
options={templates} options={templates}
getOptionValue={(template: Template) => template.name} getOptionValue={(template: Template) => template.name!}
getOptionLabel={(template: Template) => template.name} getOptionLabel={(template: Template) => template.name!}
value={templates.filter((template) => template.name === name)} value={templates.find((template) => template.name === name)}
onChange={this.handleSelectTemplate} onChange={this.handleSelectTemplate}
/> />
</div> </div>