import { PopoverField as PopoverFieldType, SchemaFieldProps } from '@vev/utils'; import React, { useRef, useState } from 'react'; import { SilkeBox } from '../../silke-box'; import { SilkeButton } from '../../silke-button'; import { SilkePopover } from '../../silke-popover'; import { SilkeText } from '../../silke-text'; import { SilkeSchemaFields } from '../silke-schema-fields'; import { SilkeSchemaContext, useSchemaContext } from '../silke-schema-context'; import { SilkeIcons } from '../../silke-icon'; import styles from './styles.scss'; /** Icon button that opens a popover with nested fields. Closes on outside click or Escape. */ export default function PopoverField({ value = {}, schema, disabled, readonly, }: SchemaFieldProps) { const schemaContext = useSchemaContext(); const [open, setOpen] = useState(false); const anchorRef = useRef(null); const icon = (schema.options?.icon || 'settings') as SilkeIcons; return ( setOpen((o) => !o)} title={schema.title} /> {open && anchorRef.current && ( setOpen(false)} > {schema.title || 'Settings'} setOpen(false)} /> )} ); }