import type { BasicWidgetInstance, BasicWidgetProps } from '../../utils'

export interface CheckedOption {
    key: string
    value: OptionItem
}

export interface OptionItem {
    text: string
    value: string
    checked?: boolean
    disabled?: boolean
    [key: string]: any
}

export interface Option {
    // 标识
    key: string
    // 提示信息
    placeholder?: string
    // 选项
    items: OptionItem[]
    // 选项改变时的回调
    onChange?: (checkedOption: CheckedOption, checkedOptions: CheckedOption[]) => void
}

export interface AffixFilterProps extends BasicWidgetProps {
    /**
     * 布局方式，水平或垂直
     * @default horizontal
     */
    layout?: 'horizontal' | 'vertical'
    /**
     * 风格，按钮或者条形
     * @default button
     */
    style?: 'button' | 'bar'
    /**
     * 距离顶部的距离 rpx
     * @default 130rpx
     */
    top?: number
    /**
     * 距离左侧的距离 rpx
     * @default 30rpx
     */
    left?: number
    /**
     * 过滤选项集合，仅支持 Select
     */
    options: Option[]
}

export interface AffixFilterInstance extends BasicWidgetInstance<AffixFilterProps> {
    /**
     * 设置选项
     * @param key 选项标识
     * @param items 选项可选 options
     */
    setOptionItems: (key: string, items: OptionItem[]) => void
    /**
     * 设置选项选中
     * @param key 选项标识
     * @param value 选项值
     */
    setOptionItemChecked: (key: string, value: string) => void
}
