From 61820e0a704e50b4e17f4429a11ae5057561c085 Mon Sep 17 00:00:00 2001 From: Tom Robinson <tlrobinson@gmail.com> Date: Thu, 1 Mar 2018 14:45:28 +0700 Subject: [PATCH] Use correct value in parameter widget --- .../widgets/ParameterFieldWidget.jsx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget.jsx b/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget.jsx index 7edef827224..69ba035cb84 100644 --- a/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget.jsx +++ b/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget.jsx @@ -30,6 +30,9 @@ type State = { const BORDER_WIDTH = 2; +const normalizeValue = value => + Array.isArray(value) ? value : value != null ? [value] : []; + // TODO: rename this something else since we're using it for more than searching and more than text export default class ParameterFieldWidget extends Component<*, Props, State> { props: Props; @@ -49,9 +52,7 @@ export default class ParameterFieldWidget extends Component<*, Props, State> { static noPopover = true; static format(value, field) { - if (!Array.isArray(value)) { - value = [value]; - } + value = normalizeValue(value); if (value.length > 1) { return `${value.length} selections`; } else { @@ -77,11 +78,10 @@ export default class ParameterFieldWidget extends Component<*, Props, State> { render() { let { setValue, isEditing, field, parentFocusChanged } = this.props; - let { value, isFocused } = this.state; + let { isFocused } = this.state; - if (!Array.isArray(value)) { - value = value != null ? [value] : []; - } + const savedValue = normalizeValue(this.props.value); + const unsavedValue = normalizeValue(this.state.value); const defaultPlaceholder = isFocused ? "" @@ -103,8 +103,8 @@ export default class ParameterFieldWidget extends Component<*, Props, State> { className="flex-full cursor-pointer" onClick={() => focusChanged(true)} > - {value.length > 0 ? ( - ParameterFieldWidget.format(value, field) + {savedValue.length > 0 ? ( + ParameterFieldWidget.format(savedValue, field) ) : ( <span>{placeholder}</span> )} @@ -122,7 +122,7 @@ export default class ParameterFieldWidget extends Component<*, Props, State> { onClose={() => focusChanged(false)} > <FieldValuesWidget - value={value} + value={unsavedValue} onChange={value => { this.setState({ value }); }} @@ -145,7 +145,7 @@ export default class ParameterFieldWidget extends Component<*, Props, State> { primary className="ml-auto" onClick={() => { - setValue(value.length > 0 ? value : null); + setValue(unsavedValue.length > 0 ? unsavedValue : null); focusChanged(false); }} > -- GitLab