diff --git a/src/components/molecules/DisplayWhereConditionSettings.tsx b/src/components/molecules/DisplayWhereConditionSettings.tsx new file mode 100644 index 00000000..98d63459 --- /dev/null +++ b/src/components/molecules/DisplayWhereConditionSettings.tsx @@ -0,0 +1,126 @@ +import React from "react"; +import { Dropdown as MuiDropdown } from "../atoms/DropdownMui"; +import { Checkbox, FormControlLabel, FormGroup, MenuItem, Stack, TextField } from "@mui/material"; +import { AddButton } from "../atoms/buttons/AddButton"; +import { RemoveButton } from "../atoms/buttons/RemoveButton"; +import { KeyValueForm } from "./KeyValueForm"; +import { WarningText } from "../atoms/texts"; + +interface DisplayConditionSettingsProps { + whereProp: string; + additionalSettings: string; + setAdditionalSettings: (value: any) => void; + newValue: any; + setNewValue: (value: any) => void; + keyValueFormRef: React.RefObject<{getObject: () => object}>; + whereKeys: string[]; + checked: boolean[]; + setChecked: (value: boolean[]) => void; +} + +export const DisplayConditionSettings = ( + {whereProp, setAdditionalSettings, additionalSettings, + setNewValue, newValue, keyValueFormRef, whereKeys, checked, setChecked} + : DisplayConditionSettingsProps) => { + switch (whereProp) { + case 'url': + return ( + + setAdditionalSettings(e.target.value)}> + string + regex + + { additionalSettings ? setNewValue(e.target.value)} + value={newValue} + /> : null} + + ) + case 'selectors': + return ( + + + { + newValue.map((selector: string, index: number) => { + return setNewValue([ + ...newValue.slice(0, index), + e.target.value, + ...newValue.slice(index + 1) + ])}/> + }) + } + + setNewValue([...newValue, ''])}/> + { + const arr = newValue; + arr.splice(-1); + setNewValue([...arr]); + }}/> + + ) + case 'cookies': + return + case 'before': + return setNewValue(e.target.value)} + /> + case 'after': + return setNewValue(e.target.value)} + /> + case 'boolean': + return ( + + setAdditionalSettings(e.target.value)}> + and + or + + + { + whereKeys.map((key: string, index: number) => { + return ( + setChecked([ + ...checked.slice(0, index), + !checked[index], + ...checked.slice(index + 1) + ])} + key={`checkbox-${key}-${index}`} + /> + } label={key} key={`control-label-form-${key}-${index}`}/> + ) + }) + } + + + Choose at least 2 where conditions. Nesting of boolean operators + is possible by adding more conditions. + + + ) + default: + return null; + } +}