import type { ExtractPropTypes, ComputedRef } from 'vue'
import type { checkboxProps, $constants } from '@/checkbox/src'
import type { ISharedRenderlessFunctionParams, ISharedRenderlessParamUtils } from './shared.type'
import type {
addToStore,
removeFromStore,
computedStore,
computedFormItemSize,
computedIsChecked,
computedIsLimitDisabled,
computedIsDisabled,
computedIsDisplayOnly,
computedIsGroupDisplayOnly,
computedGetModelGet,
computedIsGroup,
computedCheckboxSize,
computedGetModelSet,
mounted,
handleChange,
computedDisplayLabel,
computedIsShowText,
computedShowText
} from '../src/checkbox'
export type ICheckboxSizeEnum = 'medium' | 'small' | 'mini'
export type ICheckboxModalValue = string | number | boolean
export interface ICheckboxChangeEvent extends Event {
target: HTMLInputElement
}
export interface ICheckboxState {
size: ICheckboxSizeEnum
vertical: boolean
focus: boolean
selfModel: ICheckboxModalValue
showLabel: boolean
isLimitExceeded: boolean
checkboxGroup: ISharedRenderlessFunctionParams<ICheckboxConstants>['parent']
store: ICheckboxModalValue | ICheckboxModalValue[]
isGroup: boolean
isChecked: boolean
isDisabled: boolean
checkboxSize: boolean
isLimitDisabled: boolean
formDisabled: boolean
formDisplayOnly: boolean
isDisplayOnly: boolean
isGroupDisplayOnly: boolean
displayLabel: string
inputDisabled: boolean
model: ICheckboxModalValue | ICheckboxModalValue[]
showText: boolean
isShowText: boolean
tooltipVisible: boolean
displayedValue: string
}
export type ICheckboxProps = ExtractPropTypes<typeof checkboxProps>
export type ICheckboxConstants = typeof $constants
export type ICheckboxRenderlessParams = ISharedRenderlessFunctionParams<ICheckboxConstants> & {
state: ICheckboxState
props: ICheckboxProps
formItemSize: ComputedRef<string>
type: string
api: ICheckboxApi
}
export interface ICheckboxApi {
state: ICheckboxState
dispatch: ISharedRenderlessParamUtils<ICheckboxConstants>['dispatch']
addToStore: ReturnType<typeof addToStore>
removeFromStore: ReturnType<typeof removeFromStore>
computedStore: ReturnType<typeof computedStore>
computedFormItemSize: ReturnType<typeof computedFormItemSize>
computedIsChecked: ReturnType<typeof computedIsChecked>
computedIsLimitDisabled: ReturnType<typeof computedIsLimitDisabled>
computedIsDisabled: ReturnType<typeof computedIsDisabled>
computedIsDisplayOnly: ReturnType<typeof computedIsDisplayOnly>
computedIsGroupDisplayOnly: ReturnType<typeof computedIsGroupDisplayOnly>
computedGetModelGet: ReturnType<typeof computedGetModelGet>
computedIsGroup: ReturnType<typeof computedIsGroup>
computedCheckboxSize: ReturnType<typeof computedCheckboxSize>
computedGetModelSet: ReturnType<typeof computedGetModelSet>
mounted: ReturnType<typeof mounted>
handleChange: ReturnType<typeof handleChange>
computedDisplayLabel: ReturnType<typeof computedDisplayLabel>
computedIsShowText: ReturnType<typeof computedIsShowText>
computedShowText: ReturnType<typeof computedShowText>
}
export type ICheckboxRenderlessParamUtils = ISharedRenderlessParamUtils<ICheckboxConstants>