UNPKG

@prisma-cms/front-editor

Version:
103 lines (102 loc) 3.23 kB
/// <reference types="react" /> import { EditableObjectProps, EditableObjectState } from 'apollo-cms'; import EditorComponent from '.'; import { FrontEditorProps } from '..'; export interface ElementWithReactComponent extends Element { reactComponent?: EditorComponent; /** * Используется при вставке новых компонентов в текущий HTML */ editorComponentObject?: EditorComponentObject; } export interface EditorComponentObject<P extends Record<string, any> & { text?: string; } = Record<string, any>> { __typename?: string | undefined; id?: string; name: string; description?: string | null; component: string | EditorComponent; components: Array<EditorComponentObject<P>>; props: P & { text?: string | undefined | null; tag?: keyof JSX.IntrinsicElements | undefined; query?: string | undefined; first?: number | undefined; style?: React.CSSProperties; } & Record<string, any>; createdAt?: string; updatedAt?: string; CreatedBy?: any; } export interface EditorComponentProps extends EditableObjectProps { mode: 'main' | 'panel' | 'settings' | 'add_child'; object: EditorComponentObject; _dirty?: Partial<EditorComponentProps['object']>; props?: EditorComponentProps['object']['props']; /** * Родительский инстанс компонента. * Нужен для того, чтобы получить доступ к родительским элементам */ parent?: EditorComponent | null; deletable?: boolean; delete_component?: Function; /** * Used for delete() */ index?: number; /** * Не рендерить враппер в основном режиме */ hide_wrapper_in_default_mode?: boolean; /** * Рендерить ли бейджик */ render_badge?: boolean; /** * Может ли быть редактируемым во фронт-редакторе */ can_be_edited?: boolean; /** * @deprecated * Устанавливает заголовок для страницы */ page_title?: string; /** * @deprecated */ page_status?: number; maxStructureLengthView?: number; className?: string; createTemplate?: FrontEditorProps['createTemplate']; updateTemplate?: FrontEditorProps['updateTemplate']; deleteTemplate?: FrontEditorProps['deleteTemplate']; /** * @deprecated */ component?: string; /** * @deprecated */ style?: any; /** * Handler on change component data */ onChangeState?: EditorComponent['prepareDirty']; /** * Show button in add children panel */ render_add_button?: boolean; updateObject?: EditorComponent['updateObject']; contentEditable?: boolean | undefined; } export interface EditorComponentState extends EditableObjectState { active: boolean; hovered: boolean; maxStructureLengthView: EditorComponentProps['maxStructureLengthView']; /** * For HTMLTag */ focused?: boolean; components?: EditorComponentObject['components']; }