1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

remove static, improve multi-select

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen 2022-01-03 08:30:56 +02:00
parent 7755385793
commit 7db5112454

View File

@ -76,16 +76,16 @@ interface NamespaceSelectFilterDependencies {
} }
@observer @observer
export class NonInjectedNamespaceSelectFilter extends React.Component<NamespaceSelectFilterProps & NamespaceSelectFilterDependencies> { class NonInjectedNamespaceSelectFilter extends React.Component<NamespaceSelectFilterProps & NamespaceSelectFilterDependencies> {
static isMultiSelection = observable.box(false); private _isMultiSelection = observable.box(false);
static isMenuOpen = observable.box(false); private _isMenuOpen = observable.box(false);
/** /**
* Only updated on every open * Only updated on every open
*/ */
private selected = observable.set<string>(); private selected = observable.set<string>();
private didToggle = false; private didToggle = false;
private inputValue: string; @observable private inputValue: string;
constructor(props: NamespaceSelectFilterProps & NamespaceSelectFilterDependencies) { constructor(props: NamespaceSelectFilterProps & NamespaceSelectFilterDependencies) {
super(props); super(props);
@ -96,16 +96,20 @@ export class NonInjectedNamespaceSelectFilter extends React.Component<NamespaceS
return this.props.namespaceStore; return this.props.namespaceStore;
} }
@computed get isMultiSelection() {
return this._isMultiSelection.get();
}
set isMultiSelection(val: boolean) { set isMultiSelection(val: boolean) {
NonInjectedNamespaceSelectFilter.isMultiSelection.set(val); this._isMultiSelection.set(val);
} }
@computed get isMenuOpen() { @computed get isMenuOpen() {
return NonInjectedNamespaceSelectFilter.isMenuOpen.get(); return this._isMenuOpen.get();
} }
set isMenuOpen(val: boolean) { set isMenuOpen(val: boolean) {
NonInjectedNamespaceSelectFilter.isMenuOpen.set(val); this._isMenuOpen.set(val);
} }
get maxItems() { get maxItems() {
@ -165,8 +169,13 @@ export class NonInjectedNamespaceSelectFilter extends React.Component<NamespaceS
}; };
onInputChange = (value: string, meta: InputActionMeta) => { onInputChange = (value: string, meta: InputActionMeta) => {
if (meta.action === "input-change") this.inputValue = value; if (meta.action === "input-change") {
if (meta.action === "menu-close") this.inputValue = ""; this.inputValue = value;
} else if (!this.isMultiSelection && meta.action === "set-value") {
this.inputValue = value;
} else if (meta.action === "menu-close") {
this.inputValue = "";
}
}; };
private isSelectionKey(e: React.KeyboardEvent): boolean { private isSelectionKey(e: React.KeyboardEvent): boolean {