import React from 'react'; export interface IScopeClusterSelectorProps { clusters: string[]; required?: boolean; onChange: ({ clusterName }: { clusterName: string }) => void; model: string; } export interface IScopeClusterSelectorState { freeFormClusterField: boolean; } export class ScopeClusterSelector extends React.Component { constructor(props: IScopeClusterSelectorProps) { super(props); const { clusters, model } = this.props; const selectedNotInClusterList = !(Array.isArray(clusters) && clusters.some((cluster) => cluster === model)); const modelIsSet = model != null || (model || '').trim() !== ''; this.state = { freeFormClusterField: modelIsSet ? selectedNotInClusterList : false, }; } private handleClusterChange = (event: React.FormEvent) => { this.props.onChange && this.props.onChange({ clusterName: event.currentTarget.value }); }; private toggleFreeFormClusterField = () => this.setState({ freeFormClusterField: !this.state.freeFormClusterField }); public render() { return (
{!this.state.freeFormClusterField && ( )} {this.state.freeFormClusterField && ( )}
{!this.state.freeFormClusterField && ( Toggle for text input )} {this.state.freeFormClusterField && ( Toggle for list of existing clusters )}
); } }