import React, { useCallback } from 'react'; import { SilkeBox } from '../../silke-box'; import { SilkeImage } from '../../silke-image'; import { SilkeIcon } from '../../silke-icon'; import { SilkeText } from '../../silke-text'; import { SilkeTextFieldOutline } from '../../silke-text-field/silke-text-field-outline'; import { ImageField as ImageFieldType, SchemaFieldProps } from '@vev/utils'; import { useSchemaContext } from '../silke-schema-context'; import { getTitle } from './utils/schema-util'; const ImageField = ({ value, schema, disabled, readonly, onChange, }: SchemaFieldProps) => { const { actions } = useSchemaContext(); const handleDeleteImage = useCallback( (e: React.MouseEvent) => { e.stopPropagation(); onChange(null); }, [onChange], ); const handleSelectImage = useCallback(() => { if (!actions) return; actions.imageLibraryOpen((image: any) => { if (!image || !image.url) return; onChange({ key: image.key, url: image.url }); actions.imageLibraryClose(); }); }, [onChange, actions]); const hasImage = !!value?.url; return ( { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleSelectImage(); } }} > {hasImage ? ( ) : ( )} {hasImage ? 'Change image' : 'Select image'} ); }; export default ImageField;