import { RemoveRedEye } from "@mui/icons-material"; import { Box, Checkbox, FormControlLabel, FormGroup, Stack, } from "@mui/material"; import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns"; import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; import React from "react"; import { ConditionGroup } from "../components/form/conditionGroup"; import { TextInput } from "../components/form/input"; import { NumberedSection } from "../components/form/numberedSection"; import { SectionHeader } from "../components/form/sectionHeader"; import { SelectInput } from "../components/form/select"; import { SelectMultipleInput } from "../components/form/selectMultiple"; import { dateRangeEnd, dateRangeIndefinite, dateRangeStart, displayConditions, hideAfter, hideAfterActionCancelHideCount, hideAfterActionCancelHideDuration, hideAfterActionClosedHideCount, hideAfterActionClosedHideDuration, hideAfterActionConfirmHideCount, hideAfterActionConfirmHideDuration, impressionsGlobalDuration, impressionsGlobalSession, impressionsGlobalTotal, impressionsWidgetDuration, impressionsWidgetSession, impressionsWidgetTotal, layout, pageVisits, scrollPercentageToDisplay, showDelay, showOnExitIntent, } from "../data/pfa-fields"; import { EmptyState } from "../utility/emptyState"; import { DatePickerInput } from "./form/datePicker"; interface DisplayRulesSectionProps { formValues: { [key: string]: string }; isFieldSet: (id: string) => boolean; handleChange: (id: string, value: string) => void; formFieldVisibility: { [key: string]: boolean }; formFieldDisabled: { [key: string]: boolean }; spacing?: number; } export const DisplayRulesSection: React.FC = ({ formValues, handleChange, formFieldVisibility, formFieldDisabled, spacing = 3, isFieldSet, }) => { const fieldValueContains = ( field: string, value: string | string[], ): boolean => { const values = Array.isArray(value) ? value : [value]; return values.some((v) => { const fieldValue = formValues[field]; const fieldValueArray = fieldValue?.split(","); // iterate through fieldValueArray and look for exact match return fieldValueArray.some((fv) => fv === v); // return typeof fieldValue === "string" && fieldValue.includes(v); }); }; return ( } headline={ "Are there any other special conditions you'd like your widget to display under?" } > {!isFieldSet(layout.id) && ( )} {isFieldSet(layout.id) && ( <> {isFieldSet(displayConditions.id) && ( {fieldValueContains(displayConditions.id, [ hideAfter.id, pageVisits.id, scrollPercentageToDisplay.id, showDelay.id, showOnExitIntent.id, ]) && ( )} {fieldValueContains(displayConditions.id, "impressions") && ( )} {fieldValueContains(displayConditions.id, "hideAfterAction") && ( )} {fieldValueContains(displayConditions.id, "dateRange") && ( to handleChange( dateRangeIndefinite.id, `${event.target.checked}`, ) } /> } label={dateRangeIndefinite.label} /> )} )} )} ); };