mirror of
https://github.com/formbricks/formbricks.git
synced 2026-02-09 08:09:46 -06:00
feat: adds does not include options in conditions (#4296)
This commit is contained in:
@@ -244,7 +244,13 @@ export function LogicEditorConditions({
|
||||
const conditionOperatorOptions = getConditionOperatorOptions(condition, localSurvey);
|
||||
const { show, options, showInput = false, inputType } = getMatchValueProps(condition, localSurvey, t);
|
||||
|
||||
const allowMultiSelect = ["equalsOneOf", "includesAllOf", "includesOneOf"].includes(condition.operator);
|
||||
const allowMultiSelect = [
|
||||
"equalsOneOf",
|
||||
"includesAllOf",
|
||||
"includesOneOf",
|
||||
"doesNotIncludeOneOf",
|
||||
"doesNotIncludeAllOf",
|
||||
].includes(condition.operator);
|
||||
return (
|
||||
<div key={condition.id} className="flex items-center gap-x-2">
|
||||
<div className="w-10 shrink-0">
|
||||
|
||||
@@ -116,6 +116,14 @@ export const logicRules = {
|
||||
label: "environments.surveys.edit.does_not_equal",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.doesNotEqual,
|
||||
},
|
||||
{
|
||||
label: "environments.surveys.edit.does_not_include_one_of",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.doesNotIncludeOneOf,
|
||||
},
|
||||
{
|
||||
label: "environments.surveys.edit.does_not_include_all_of",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.doesNotIncludeAllOf,
|
||||
},
|
||||
{
|
||||
label: "environments.surveys.edit.includes_all_of",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.includesAllOf,
|
||||
@@ -144,6 +152,14 @@ export const logicRules = {
|
||||
label: "environments.surveys.edit.does_not_equal",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.doesNotEqual,
|
||||
},
|
||||
{
|
||||
label: "environments.surveys.edit.does_not_include_one_of",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.doesNotIncludeOneOf,
|
||||
},
|
||||
{
|
||||
label: "environments.surveys.edit.does_not_include_all_of",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.doesNotIncludeAllOf,
|
||||
},
|
||||
{
|
||||
label: "environments.surveys.edit.includes_all_of",
|
||||
value: ZSurveyLogicConditionsOperator.Enum.includesAllOf,
|
||||
|
||||
@@ -1351,6 +1351,8 @@
|
||||
"does_not_contain": "Enthält nicht",
|
||||
"does_not_end_with": "Endet nicht mit",
|
||||
"does_not_equal": "Ungleich",
|
||||
"does_not_include_all_of": "Enthält nicht alle von",
|
||||
"does_not_include_one_of": "Enthält nicht eines von",
|
||||
"does_not_start_with": "Fängt nicht an mit",
|
||||
"edit_recall": "Erinnerung bearbeiten",
|
||||
"edit_segment": "Segment bearbeiten",
|
||||
|
||||
@@ -1351,6 +1351,8 @@
|
||||
"does_not_contain": "Does not contain",
|
||||
"does_not_end_with": "Does not end with",
|
||||
"does_not_equal": "Does not equal",
|
||||
"does_not_include_all_of": "Does not include all of",
|
||||
"does_not_include_one_of": "Does not include one of",
|
||||
"does_not_start_with": "Does not start with",
|
||||
"edit_recall": "Edit Recall",
|
||||
"edit_segment": "Edit Segment",
|
||||
|
||||
@@ -1351,6 +1351,8 @@
|
||||
"does_not_contain": "não contém",
|
||||
"does_not_end_with": "Não termina com",
|
||||
"does_not_equal": "não é igual",
|
||||
"does_not_include_all_of": "Não inclui todos de",
|
||||
"does_not_include_one_of": "Não inclui um de",
|
||||
"does_not_start_with": "Não começa com",
|
||||
"edit_recall": "Editar Lembrete",
|
||||
"edit_segment": "Editar Segmento",
|
||||
|
||||
@@ -425,6 +425,18 @@ const evaluateSingleCondition = (
|
||||
Array.isArray(rightValue) &&
|
||||
rightValue.some((v) => leftValue.includes(v))
|
||||
);
|
||||
case "doesNotIncludeAllOf":
|
||||
return (
|
||||
Array.isArray(leftValue) &&
|
||||
Array.isArray(rightValue) &&
|
||||
rightValue.every((v) => !leftValue.includes(v))
|
||||
);
|
||||
case "doesNotIncludeOneOf":
|
||||
return (
|
||||
Array.isArray(leftValue) &&
|
||||
Array.isArray(rightValue) &&
|
||||
rightValue.some((v) => !leftValue.includes(v))
|
||||
);
|
||||
case "isAccepted":
|
||||
return leftValue === "accepted";
|
||||
case "isClicked":
|
||||
|
||||
@@ -249,6 +249,8 @@ export const ZSurveyLogicConditionsOperator = z.enum([
|
||||
"equalsOneOf",
|
||||
"includesAllOf",
|
||||
"includesOneOf",
|
||||
"doesNotIncludeOneOf",
|
||||
"doesNotIncludeAllOf",
|
||||
"isClicked",
|
||||
"isAccepted",
|
||||
"isBefore",
|
||||
@@ -1212,9 +1214,16 @@ const isInvalidOperatorsForQuestionType = (
|
||||
case TSurveyQuestionTypeEnum.MultipleChoiceMulti:
|
||||
case TSurveyQuestionTypeEnum.PictureSelection:
|
||||
if (
|
||||
!["equals", "doesNotEqual", "includesAllOf", "includesOneOf", "isSubmitted", "isSkipped"].includes(
|
||||
operator
|
||||
)
|
||||
![
|
||||
"equals",
|
||||
"doesNotEqual",
|
||||
"includesAllOf",
|
||||
"includesOneOf",
|
||||
"doesNotIncludeAllOf",
|
||||
"doesNotIncludeOneOf",
|
||||
"isSubmitted",
|
||||
"isSkipped",
|
||||
].includes(operator)
|
||||
) {
|
||||
isInvalidOperator = true;
|
||||
}
|
||||
@@ -1553,7 +1562,11 @@ const validateConditions = (
|
||||
});
|
||||
}
|
||||
}
|
||||
} else if (condition.operator === "includesAllOf" || condition.operator === "includesOneOf") {
|
||||
} else if (
|
||||
["includesAllOf", "includesOneOf", "doesNotIncludeAllOf", "doesNotIncludeOneOf"].includes(
|
||||
condition.operator
|
||||
)
|
||||
) {
|
||||
if (!Array.isArray(rightOperand.value)) {
|
||||
issues.push({
|
||||
code: z.ZodIssueCode.custom,
|
||||
|
||||
Reference in New Issue
Block a user