type DateType = 'date' | 'dateTime' | 'week' | 'month' | 'quarter' | 'year' | 'time'
type DateRangeType = 'dateRange' | 'dateTimeRange' | 'weekRange' | 'monthRange' | 'yearRange' | 'timeRange'
type FormType =
  | 'input'
  | 'textarea'
  | 'password'
  | 'select'
  | 'treeSelect'
  | 'radio'
  | 'checkbox'
  | 'switch'
  | 'custom'
  | DateType
  | DateRangeType
  | 'cascader'
  | 'colorPicker'
  | 'selectInput'
  | 'inputDialogSelect'
  | 'inputNumber'

interface Props {
  
  title?: any

  
  labelLength?: number | string

  
  labelPosition?: 'left' | 'right' | 'top'

  
  showFilterPanel?: boolean

  
  options?: SearchFormItemProp[]

   
   isExpandAtFocus?: boolean 

   
   isExpandFilter?: boolean 
}

interface SearchFormItemProp {
  
  key?: string

  
  value?: any

  
  checkedNodes?: any[]

  
  label?: any

  
  type: FormType | 'searchInput' | 'selectSearch' | 'selectDateRange' | 'inputSelect'

  
  layout?: 'out' | 'inner'

  
  closable?: boolean

  
  options?: any

  
  optionValue?: any

  
  optionsLabelKey?: string | number | object

  
  optionsValueKey?: string | number

  
  custom?: boolean

  
  customerActive?: boolean

  
  customOption?: any

  
  dateType?: string

  
  mode?: string

  
  isChangeTrigger?: boolean

  
  marginRight?: string

  
  labelWidth?:string

  [idx: string]: any
}

export type Exposes = {
  
  treeSelectResetLazyLoad: (key: any) => void

  
  closeSearch: (data: SearchFormProp | any[]) => void

  
  resetSearch: (isTriggerEvent: boolean) => void
}
