@blinkk/editor
Version:
Structured content editor with live previews.
93 lines (92 loc) • 3.68 kB
TypeScript
import { DeepObject, Field, FieldComponent, FieldConfig, SelectiveEditor, SortableFieldComponent, TemplateResult, Types } from '@blinkk/selective-edit';
import { MediaFieldComponent, MediaFieldConfig } from './media';
import { LiveEditorGlobalConfig } from '../editor';
export interface MediaListFieldConfig extends FieldConfig {
/**
* Label for adding more list items.
*/
addLabel?: string;
/**
* Label for when the list is empty.
*/
emptyLabel?: string;
/**
* Field definition for the media field.
*/
fieldConfig?: MediaFieldConfig;
}
export interface MediaListFieldComponent extends FieldComponent {
/**
* Can the list add more items?
*/
allowAdd?: boolean;
/**
* Can the list remove items?
*/
allowRemove?: boolean;
/**
* Handle expanding an item.
*
* @param item List item
*/
expandItem(item: MediaListItemComponent): void;
/**
* Event handler for deleting items.
*
* @param evt Click event from delete action.
* @param index Item index being deleted.
*/
handleDeleteItem(evt: Event, index: number): void;
/**
* Number of items in the list.
*/
length: number;
}
export interface MediaListItemComponent {
listField: MediaListFieldComponent & SortableFieldComponent;
mediaField: MediaFieldComponent;
isExpanded: boolean;
template: (editor: SelectiveEditor, data: DeepObject, index: number) => TemplateResult;
uid: string;
}
export interface MediaListItemConstructor {
new (listField: MediaListFieldComponent & SortableFieldComponent, mediaField: MediaFieldComponent): MediaListItemComponent;
}
declare const MediaListField_base: (new (...args: any[]) => {
_droppableUi?: import("@blinkk/selective-edit").DroppableUiComponent | undefined;
droppableUi: import("@blinkk/selective-edit").DroppableUiComponent;
}) & (new (...args: any[]) => {
_sortableUi?: import("@blinkk/selective-edit/dist/src/mixins/sortable").SortableUiComponent | undefined;
sortableUi: import("@blinkk/selective-edit/dist/src/mixins/sortable").SortableUiComponent;
}) & typeof Field;
export declare class MediaListField extends MediaListField_base implements MediaListFieldComponent {
config: MediaListFieldConfig;
globalConfig: LiveEditorGlobalConfig;
protected items: Array<MediaListItemComponent> | null;
protected MediaListItemCls: MediaListItemConstructor;
protected MediaListItemDefaultConfig: MediaFieldConfig;
usingAutoFields: boolean;
constructor(types: Types, config: MediaListFieldConfig, globalConfig: LiveEditorGlobalConfig, fieldType?: string);
get allowAdd(): boolean;
get allowRemove(): boolean;
protected ensureItems(editor: SelectiveEditor): Array<MediaListItemComponent>;
expandItem(item: MediaListItemComponent): void;
handleAddItem(evt: Event, editor: SelectiveEditor, data: DeepObject): void;
handleDeleteItem(evt: Event, index: number): void;
handleFiles(files: Array<File>): void;
handleSort(startIndex: number, endIndex: number): void;
get isClean(): boolean;
get isValid(): boolean;
/**
* Length of the list.
*/
get length(): number;
templateAdd(editor: SelectiveEditor, data: DeepObject): TemplateResult;
templateEmpty(editor: SelectiveEditor, data: DeepObject): TemplateResult;
templateInput(editor: SelectiveEditor, data: DeepObject): TemplateResult;
get value(): any;
}
export declare class RemoteMediaListField extends MediaListField {
constructor(types: Types, config: MediaListFieldConfig, globalConfig: LiveEditorGlobalConfig, fieldType?: string);
}
export {};