import { AdsClick, FindInPage } from "@mui/icons-material"; import React, { useEffect, useState } from "react"; import { ConditionGroup } from "../components/form/conditionGroup"; import { NumberedSection } from "../components/form/numberedSection"; import { SelectInput } from "../components/form/select"; import { URLContainsBuilder, URLContainsItem, } from "../components/form/urlContains"; import { attributeRule, audienceWithOptions, Field, personalizationKeyWithOptions, SelectOption, targetMethod, type, urlContains, } from "../data/pfa-fields"; import { CallbackFnEditor } from "./form/callbackFn"; interface TargetingSectionProps { formValues: { [key: string]: string }; isFieldSet: (id: string) => boolean; handleChange: (id: string, value: URLContainsItem[] | string) => void; handleCallbackChange: (field: Field, value: string) => void; audiences: SelectOption[]; personalizationKeys: SelectOption[]; formFieldVisibility: { [key: string]: boolean }; } export const TargetingSection: React.FC = ({ formValues, handleChange, handleCallbackChange, isFieldSet, audiences, personalizationKeys, formFieldVisibility, }) => { const [audienceField, setAudienceField] = useState(null); const [personalizationKeyField, setPersonalizationKeyField] = useState(null); useEffect(() => { setAudienceField(audienceWithOptions(audiences)); setPersonalizationKeyField( personalizationKeyWithOptions(personalizationKeys), ); }, []); return ( <> } headline={"How would you like to determine who should see your widget?"} > {audienceField && formFieldVisibility[audienceField.id] && ( )} {personalizationKeyField && formFieldVisibility[personalizationKeyField.id] && ( )} {formFieldVisibility[attributeRule.id] && ( )} } headline={"Where would you like your widget to be displayed?"} sx={{ pt: 0 }} > ); };