@spaceone/design-system
Version:
SpaceONE Design System
71 lines (53 loc) • 1.72 kB
text/typescript
import { ContextMenuType } from '@/inputs/context-menu/type';
export const dataTypes = ['string', 'integer', 'float', 'boolean', 'datetime', 'object'] as const;
export type KeyDataType = typeof dataTypes[number];
export const operators = ['', '!', '>', '>=', '<', '<=', '=', '!=', '$'] as const;
export type OperatorType = typeof operators[number];
export interface ValueItem {
label: string;
name: any;
}
export interface KeyItem {
label: string;
name: any;
dataType?: KeyDataType;
operators?: OperatorType[];
}
export interface QueryItem {
key?: KeyItem;
operator?: OperatorType;
value: ValueItem;
}
export type MenuType ='ROOT_KEY'|'KEY'|'VALUE'|'OPERATOR'
export interface MenuItem<T> {
type: ContextMenuType;
data?: T;
}
export interface KeyMenuItem extends KeyItem, MenuItem<KeyItem> {}
export interface ValueMenuItem extends ValueItem, MenuItem<ValueItem> {}
export interface HandlerResponse {
results: Array<ValueItem|ValueMenuItem>;
totalCount?: number;
dataType?: KeyDataType;
operators?: OperatorType[];
}
export type ValueHandler = (inputText: string, rootKey: KeyItem,
dataType?: KeyDataType, subPath?: string,
operator?: OperatorType) => Promise<HandlerResponse>|HandlerResponse;
export interface ValueHandlerMap {
[key: string]: ValueHandler|undefined;
}
export interface KeyItemSet {
title: string;
items: KeyItem[];
}
export interface QuerySearchProps {
placeholder?: string;
focused: boolean;
keyItemSets: KeyItemSet[];
valueHandlerMap: ValueHandlerMap;
value: string;
}
export interface QuerySearchEventArgs {
search: [QueryItem];
}