Skip to content
Snippets Groups Projects
Unverified Commit ffa03620 authored by Alexander Polyankin's avatar Alexander Polyankin Committed by GitHub
Browse files

Allow only single value to be selected for variable template tags (#28118)

parent a1b302a1
No related branches found
No related tags found
No related merge requests found
......@@ -49,9 +49,12 @@ export default function ParameterFieldWidget({
const disableSearch = operator && isFuzzyOperator(operator);
const hasValue = Array.isArray(value) ? value.length > 0 : value != null;
const supportsMultipleValues =
multi && !parameter.hasVariableTemplateTagTarget;
const isValid =
unsavedValue.every(value => value != null) &&
(multi || unsavedValue.length === numFields);
(supportsMultipleValues || unsavedValue.length === numFields);
return (
<WidgetRoot>
......@@ -61,8 +64,10 @@ export default function ParameterFieldWidget({
)}
{_.times(numFields, index => {
const value = multi ? unsavedValue : [unsavedValue[index]];
const onValueChange = multi
const value = supportsMultipleValues
? unsavedValue
: [unsavedValue[index]];
const onValueChange = supportsMultipleValues
? newValues => setUnsavedValue(newValues)
: ([value]) => {
const newValues = [...unsavedValue];
......@@ -82,7 +87,7 @@ export default function ParameterFieldWidget({
placeholder={isEditing ? t`Enter a default value…` : undefined}
fields={fields}
autoFocus={index === 0}
multi={multi}
multi={supportsMultipleValues}
disableSearch={disableSearch}
formatOptions={
operator && getFilterArgumentFormatOptions(operator, index)
......
......@@ -38,10 +38,13 @@ export function setWidgetStringFilter(value) {
* @param {string} value
*/
export function selectFilterValueFromList(value) {
export function selectFilterValueFromList(value, { addFilter = true } = {}) {
popover().within(() => {
cy.findByText(value).click();
cy.button("Add filter").click();
if (addFilter) {
cy.button("Add filter").click();
}
});
}
......
......@@ -15,7 +15,6 @@ import { SAMPLE_DB_ID, USER_GROUPS } from "__support__/e2e/cypress_data";
import { SAMPLE_DATABASE } from "__support__/e2e/cypress_sample_database";
import * as SQLFilter from "./helpers/e2e-sql-filter-helpers";
import * as FieldFilter from "./helpers/e2e-field-filter-helpers";
import { toggleRequired } from "./helpers/e2e-sql-filter-helpers";
const { PRODUCTS_ID, PRODUCTS } = SAMPLE_DATABASE;
const { COLLECTION_GROUP } = USER_GROUPS;
......@@ -69,7 +68,7 @@ describe("scenarios > filters > sql filters > values source", () => {
FieldFilter.selectFilterValueFromList("Gizmo");
SQLFilter.runQuery("cardQuery");
toggleRequired();
SQLFilter.toggleRequired();
FieldFilter.openEntryForm(true);
FieldFilter.selectFilterValueFromList("Gadget");
});
......@@ -86,10 +85,12 @@ describe("scenarios > filters > sql filters > values source", () => {
FieldFilter.openEntryForm();
checkFilterValueNotInList("Doohickey");
FieldFilter.selectFilterValueFromList("Gadget", { addFilter: false });
FieldFilter.selectFilterValueFromList("Gizmo");
SQLFilter.runQuery("cardQuery");
cy.findByText("Showing 51 rows").should("exist");
toggleRequired();
SQLFilter.toggleRequired();
FieldFilter.openEntryForm(true);
FieldFilter.selectFilterValueFromList("Gadget");
});
......@@ -105,8 +106,6 @@ describe("scenarios > filters > sql filters > values source", () => {
FieldFilter.openEntryForm();
checkFilterValueNotInList("Doohickey");
FieldFilter.setWidgetStringFilter("Gizmo");
checkFilterValueNotInList("Widget");
FieldFilter.selectFilterValueFromList("Gizmo");
SQLFilter.runQuery("dataset");
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment