import classNames from "classnames"; import Checkbox from "../checkbox"; import { useContext, useEffect, useState } from "react"; import { useClickAway, useDebounce } from "@uidotdev/usehooks"; import { CMSContext } from "../../cms-provider"; export default function URLPickerRef({ label, value, onSetURL, onChangeOpenInNewTab = () => {}, }: { label: string; value: string; onSetURL: (url: string) => void; onChangeOpenInNewTab: (openInNewTab: boolean) => void; }) { const [openInNewTab, setOpenInNewTab] = useState(false); const [search, setSearch] = useState(""); const [showDropdown, setShowDropdown] = useState(false); const debouncedSearchTerm = useDebounce(search, 500); const { pages, onPageSearch } = useContext(CMSContext); // const [pages, setPages] = useState([]); const dropdownRef = useClickAway(() => { setShowDropdown(false); }); useEffect(() => { if (value) setSearch(value); }, [value]); useEffect(() => { if (debouncedSearchTerm) { onPageSearch?.(debouncedSearchTerm).then(); // supabase // .from("pages") // .select("*") // .ilike("path", `%${debouncedSearchTerm}%`) // .then(({ data }) => { // setPages(data || []); // }); } }, [debouncedSearchTerm, value]); useEffect(() => { onChangeOpenInNewTab(openInNewTab); }, [openInNewTab, onChangeOpenInNewTab]); return ( <>
{ setSearch(e.target.value); setShowDropdown(true); }} onFocus={() => setShowDropdown(true)} // onBlur={() => setTimeout(() => setShowDropdown(false), 100)} className="ctz:p-3 ctz:w-full ctz:border ctz:rounded ctz:focus:ring-0 ctz:focus:outline-none" />
setOpenInNewTab(checked)} /> ); }