@csegames/camelot-unchained
Version:
Camelot Unchained Client Library
56 lines (55 loc) • 1.91 kB
TypeScript
/// <reference types="react" />
import * as React from 'react';
import { StyleDeclaration } from 'aphrodite';
import { MultiSelectStyle } from './MultiSelect';
export interface InlineMultiSelectEditStyle extends StyleDeclaration {
defaultView: React.CSSProperties;
editModeContainer: React.CSSProperties;
editModeButtons: React.CSSProperties;
editButton: React.CSSProperties;
saveButton: React.CSSProperties;
error: React.CSSProperties;
}
export declare const defaultInlineMultiSelectEditStyle: InlineMultiSelectEditStyle;
export interface comparisonFunction<T> {
(a: T, b: T): boolean;
}
export interface InlineMultiSelectEditProps {
items: any[];
value: any[];
filter: (text: string, item: any) => boolean;
renderListItem: (item: any, renderData: any) => JSX.Element;
renderSelectedItem: (item: any, renderData: any) => JSX.Element;
itemComparison: comparisonFunction<any>;
renderData?: any;
onSave: (prev: any, selected: any) => Promise<{
ok: boolean;
error?: string;
}>;
styles?: Partial<InlineMultiSelectEditStyle>;
selectStyles?: Partial<MultiSelectStyle>;
}
export interface InlineMultiSelectEditState {
editMode: boolean;
showEditButton: boolean;
saving: boolean;
errors: string;
}
export declare class InlineMultiSelectEdit extends React.Component<InlineMultiSelectEditProps, InlineMultiSelectEditState> {
private static editModeActiveEvent;
private editModeListenerID;
private id;
private selectRef;
constructor(props: InlineMultiSelectEditProps);
render(): JSX.Element;
componentDidMount(): void;
componentWillUnmount(): void;
private onEditModeActiveEvent;
private onMouseleave;
private onKeyDown;
private showEditButton;
private doSave;
private activateEditMode;
private deactivateEditMode;
}
export default InlineMultiSelectEdit;