@hashuplabs/omni-filter
Version:
OmniFilter Search component
54 lines (53 loc) • 1.68 kB
TypeScript
import { Component } from 'react';
import { OmniToken } from '../OmniToken';
import { OmniOperator } from '../operators/OmniOperator';
import { OmniEntityReference } from '../types';
interface OmniFilterSuggestionWindowProps {
visible: boolean;
offset: number;
token: OmniToken;
filters: OmniEntityReference[];
tokenInput: string;
onUpdate(token: OmniToken | null): void;
onComplete(token: OmniToken | null): void;
inputElement: HTMLInputElement | null;
}
interface OmniFilterSuggestionWindowState {
_operator: OmniOperator | null;
_entityName: string | null;
_entity: OmniEntityReference | null;
_values: string[] | string | null;
_awaitedValue: any;
_waiting: boolean;
_selectionList: OmniFilterSuggestion<any>[];
_selectionIndex: number | null;
_selectionWidget: JSX.Element | null;
}
declare type OmniFilterSuggestion<T> = {
label: string;
value: T;
onSelect: (value: OmniFilterSuggestion<T>) => void;
};
export declare class OmniFilterSuggestionWindow extends Component<OmniFilterSuggestionWindowProps, OmniFilterSuggestionWindowState> {
private _entities;
private _isWaiting;
private _hasInput;
private _defaultEntity;
constructor(props: OmniFilterSuggestionWindowProps);
private _handleUpdate;
private _handleCompleted;
private refocus;
private applyValue;
componentDidUpdate(): void;
private boldify;
private _renderEntities;
private _renderOperators;
private _renderValues;
private _inner;
private _filteredSelections;
private renderSuggestions;
private _list_i;
private _list;
render(): JSX.Element;
}
export {};