import { UPDATE_MODEL_EVENT } from '@element-plus/constants' import { useSizeProp } from '@element-plus/hooks' import { isBoolean, isNumber, isString } from '@element-plus/utils' import type { ExtractPropTypes } from 'vue' import type Checkbox from './checkbox.vue' export type CheckboxValueType = string | number | boolean export const checkboxProps = { modelValue: { type: [Number, String, Boolean], default: undefined, }, label: { type: [String, Boolean, Number, Object], }, indeterminate: Boolean, disabled: Boolean, checked: Boolean, name: { type: String, default: undefined, }, trueLabel: { type: [String, Number], default: undefined, }, falseLabel: { type: [String, Number], default: undefined, }, id: { type: String, default: undefined, }, controls: { type: String, default: undefined, }, border: Boolean, size: useSizeProp, tabindex: [String, Number], validateEvent: { type: Boolean, default: true, }, } export const checkboxEmits = { [UPDATE_MODEL_EVENT]: (val: CheckboxValueType) => isString(val) || isNumber(val) || isBoolean(val), change: (val: CheckboxValueType) => isString(val) || isNumber(val) || isBoolean(val), } export type CheckboxProps = ExtractPropTypes export type CheckboxEmits = typeof checkboxEmits export type CheckboxInstance = InstanceType