aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/FieldsDropdown.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/FieldsDropdown.tsx')
-rw-r--r--src/client/views/FieldsDropdown.tsx17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/client/views/FieldsDropdown.tsx b/src/client/views/FieldsDropdown.tsx
index e7ab6a180..0bdf92bbc 100644
--- a/src/client/views/FieldsDropdown.tsx
+++ b/src/client/views/FieldsDropdown.tsx
@@ -6,7 +6,7 @@
* this list is then pruned down to only include fields that are not marked in Documents.ts to be non-filterable
*/
-import { computed, makeObservable, observable, runInAction } from 'mobx';
+import { action, computed, makeObservable, observable } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
import Select from 'react-select';
@@ -24,6 +24,7 @@ interface fieldsDropdownProps {
placeholder?: string | (() => string);
showPlaceholder?: true; // if true, then input field always shows the placeholder value; otherwise, it shows the current selection
addedFields?: string[];
+ isInactive?: boolean;
}
@observer
@@ -57,8 +58,8 @@ export class FieldsDropdown extends ObservableReactComponent<fieldsDropdownProps
const filteredOptions = ['author', ...(this._newField ? [this._newField] : []), ...(this._props.addedFields ?? []), ...this.fieldsOfDocuments.filter(facet => facet[0] === facet.charAt(0).toUpperCase())];
Object.entries(DocOptions)
- .filter(opts => opts[1].filterable)
- .forEach((pair: [string, FInfo]) => filteredOptions.push(pair[0]));
+ .filter(opts => opts[1] instanceof FInfo && opts[1].filterable)
+ .forEach((pair: [string, unknown]) => filteredOptions.push(pair[0]));
const options = filteredOptions.sort().map(facet => ({ value: facet, label: facet }));
return (
@@ -77,11 +78,13 @@ export class FieldsDropdown extends ObservableReactComponent<fieldsDropdownProps
...baseStyles,
color: SnappingManager.userColor,
background: SnappingManager.userBackgroundColor,
+ display: this._props.isInactive ? 'none' : undefined,
}),
placeholder: (baseStyles /* , state */) => ({
...baseStyles,
color: SnappingManager.userColor,
background: SnappingManager.userBackgroundColor,
+ display: this._props.isInactive ? 'none' : undefined,
}),
input: (baseStyles /* , state */) => ({
...baseStyles,
@@ -104,14 +107,12 @@ export class FieldsDropdown extends ObservableReactComponent<fieldsDropdownProps
options={options}
isMulti={false}
onChange={val => this._props.selectFunc((val as { value: string; label: string }).value)}
- onKeyDown={e => {
+ onKeyDown={action(e => {
if (e.key === 'Enter') {
- runInAction(() => {
- this._props.selectFunc((this._newField = (e.nativeEvent.target as HTMLSelectElement)?.value));
- });
+ this._props.selectFunc((this._newField = (e.nativeEvent.target as HTMLSelectElement)?.value));
}
e.stopPropagation();
- }}
+ })}
onMenuClose={this._props.menuClose}
closeMenuOnSelect
value={this._props.showPlaceholder ? null : undefined}