import { useMemo, useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import useMediaQuery from "@calcom/lib/hooks/useMediaQuery"; import classNames from "../../../classNames"; import { Dropdown, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../../dropdown"; import { Input } from "../../form"; import { Icon } from "../../icon"; interface IAddVariablesDropdown { addVariable: (variable: string) => void; isTextEditor?: boolean; variables: string[]; addVariableButtonTop?: boolean; addVariableButtonClassName?: string; } export const AddVariablesDropdown = (props: IAddVariablesDropdown) => { const { t } = useLocale(); const [query, setQuery] = useState(""); const isMobile = useMediaQuery("(max-width: 640px)"); const filteredVariables = useMemo(() => { const q = query.trim().toLowerCase(); if (!q) return props.variables; return props.variables.filter((variable) => { const key = variable.toLowerCase(); const name = t(`${variable}_variable`).toLowerCase(); const info = t(`${variable}_info`).toLowerCase(); return key.includes(q) || name.includes(q) || info.includes(q); }); }, [props.variables, query, t]); return ( { if (!open) setQuery(""); }}>
{props.isTextEditor ? ( <>
{t("add_variable")}
{props.addVariableButtonTop ? (
{t("add_variable")}
) : ( "+" )}
) : (
{t("add_variable")}
)}
{t("add_dynamic_variables")}
setQuery(e.target.value)} placeholder={t("search_variables")} aria-label={t("search_variables")} className="border-subtle bg-default focus:ring-brand-800 w-full rounded-md border px-3 py-2 text-sm outline-none focus:ring-1" />
{filteredVariables.length === 0 ? (
{t("no_variables_found")}
) : ( filteredVariables.map((variable) => (
{ props.addVariable(t(`${variable}_variable`)); setQuery(""); }}>
{`{${t(`${variable}_variable`).toUpperCase().replace(/ /g, "_")}}`}
{t(`${variable}_info`)}
)) )}
); };