import { Box, Button } from "@prismicio/editor-ui";
import { ButtonProps } from "@prismicio/editor-ui/dist/components/Button";
import { forwardRef, useState } from "react";
import {
AddFieldDropdown,
type AddFieldDropdownProps,
} from "@/features/builder/AddFieldDropdown";
import { StaticFieldsInfoDialog } from "@/features/builder/StaticFieldsInfoDialog";
import { usePersistedState } from "@/hooks/usePersistedState";
import { staticFieldsInfoDialogDismissedKey } from "@/utils/localStorageKeys";
const AddFieldButton = forwardRef<
HTMLButtonElement,
ButtonProps & { "data-testid"?: string }
>((props, ref) => (
));
type AddStaticFieldDropdownProps = AddFieldDropdownProps & {
zoneTypeFormat: "page" | "custom";
};
export function AddStaticFieldDropdown(props: AddStaticFieldDropdownProps) {
const { zoneTypeFormat, ...remainingProps } = props;
if (zoneTypeFormat === "page") {
return ;
}
return ;
}
const hiddenTrigger = (
// DropdownMenu requires the presence of a trigger
);
function PageTypeAddStaticFieldDropdown(props: AddFieldDropdownProps) {
const { disabled, fields, triggerDataTestId, onSelectField } = props;
const [isFieldDropdownOpen, setFieldsDropdownOpen] = useState(false);
const [isInfoDialogOpen, setInfoDialogOpen] = useState(false);
const [isInfoDialogSeen, setInfoDialogSeen] = usePersistedState(
staticFieldsInfoDialogDismissedKey,
false,
);
const onAddFieldClick = () => {
if (isInfoDialogSeen) {
setFieldsDropdownOpen(true);
} else {
setInfoDialogOpen(true);
}
};
const onDialogConfirm = () => setInfoDialogSeen(true);
const onDialogOpenChange = (open: boolean) => {
setInfoDialogOpen(open);
if (!open) setFieldsDropdownOpen(true);
};
return (
);
}
function CustomTypeAddStaticFieldDropdown(props: AddFieldDropdownProps) {
const { disabled, fields, triggerDataTestId, onSelectField } = props;
return (
}
/>
);
}