{"version":3,"file":"checkbox.mjs","sources":["../../../../../../packages/components/checkbox/src/checkbox.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, nextTick, ref, watch } from 'vue'\nimport { toTypeString } from '@vue/shared'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { formContextKey, formItemContextKey } from '@element-plus/tokens'\nimport { useFormItemInputId, useSize, useSizeProp } from '@element-plus/hooks'\nimport {\n  debugWarn,\n  isArray,\n  isBoolean,\n  isNumber,\n  isString,\n} from '@element-plus/utils'\nimport type { ComponentInternalInstance, ExtractPropTypes, PropType } from 'vue'\nimport type { FormContext, FormItemContext } from '@element-plus/tokens'\nimport type { ICheckboxGroupInstance } from './checkbox.type'\nimport type Checkbox from './checkbox.vue'\n\nexport const useCheckboxGroupProps = {\n  modelValue: {\n    type: Array as PropType<Array<string | number>>,\n    default: () => [],\n  },\n  disabled: Boolean,\n  min: {\n    type: Number,\n    default: undefined,\n  },\n  max: {\n    type: Number,\n    default: undefined,\n  },\n  size: useSizeProp,\n  id: {\n    type: String,\n    default: undefined,\n  },\n  label: {\n    type: String,\n    default: undefined,\n  },\n  fill: {\n    type: String,\n    default: undefined,\n  },\n  textColor: {\n    type: String,\n    default: undefined,\n  },\n  tag: {\n    type: String,\n    default: 'div',\n  },\n}\n\nexport type IUseCheckboxGroupProps = ExtractPropTypes<\n  typeof useCheckboxGroupProps\n>\n\nexport const checkboxProps = {\n  modelValue: {\n    type: [Number, String, Boolean],\n    default: () => undefined,\n  },\n  label: {\n    type: [String, Boolean, Number, Object],\n  },\n  indeterminate: Boolean,\n  disabled: Boolean,\n  checked: Boolean,\n  name: {\n    type: String,\n    default: undefined,\n  },\n  trueLabel: {\n    type: [String, Number],\n    default: undefined,\n  },\n  falseLabel: {\n    type: [String, Number],\n    default: undefined,\n  },\n  id: {\n    type: String,\n    default: undefined,\n  },\n  controls: {\n    type: String,\n    default: undefined,\n  },\n  border: Boolean,\n  size: useSizeProp,\n  tabindex: [String, Number],\n}\n\nexport const useCheckboxGroup = () => {\n  const elForm = inject(formContextKey, {} as FormContext)\n  const elFormItem = inject(formItemContextKey, {} as FormItemContext)\n  const checkboxGroup = inject<ICheckboxGroupInstance>('CheckboxGroup', {})\n  const isGroup = computed(\n    () => checkboxGroup && checkboxGroup?.name === 'ElCheckboxGroup'\n  )\n  const elFormItemSize = computed(() => {\n    return elFormItem.size\n  })\n  return {\n    isGroup,\n    checkboxGroup,\n    elForm,\n    elFormItemSize,\n    elFormItem,\n  }\n}\n\nexport const useCheckboxGroupId = (\n  props: IUseCheckboxGroupProps,\n  { elFormItem }: Partial<ReturnType<typeof useCheckboxGroup>>\n) => {\n  const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {\n    formItemContext: elFormItem,\n  })\n\n  return {\n    isLabeledByFormItem,\n    groupId,\n  }\n}\n\nconst useModel = (props: CheckboxProps) => {\n  const selfModel = ref<any>(false)\n  const { emit } = getCurrentInstance()!\n  const { isGroup, checkboxGroup, elFormItem } = useCheckboxGroup()\n  const isLimitExceeded = ref(false)\n  const model = computed({\n    get() {\n      return isGroup.value\n        ? checkboxGroup.modelValue?.value\n        : props.modelValue ?? selfModel.value\n    },\n\n    set(val: unknown) {\n      if (isGroup.value && Array.isArray(val)) {\n        isLimitExceeded.value =\n          checkboxGroup.max !== undefined &&\n          val.length > checkboxGroup.max.value\n        isLimitExceeded.value === false && checkboxGroup?.changeEvent?.(val)\n      } else {\n        emit(UPDATE_MODEL_EVENT, val)\n        selfModel.value = val\n      }\n    },\n  })\n\n  return {\n    model,\n    isGroup,\n    isLimitExceeded,\n    elFormItem,\n  }\n}\n\nconst useCheckboxStatus = (\n  props: CheckboxProps,\n  slots: ComponentInternalInstance['slots'],\n  { model }: Partial<ReturnType<typeof useModel>>\n) => {\n  const { isGroup, checkboxGroup } = useCheckboxGroup()\n  const focus = ref(false)\n  const size = useSize(checkboxGroup?.checkboxGroupSize, { prop: true })\n  const isChecked = computed<boolean>(() => {\n    const value = model!.value\n    if (toTypeString(value) === '[object Boolean]') {\n      return value\n    } else if (Array.isArray(value)) {\n      return value.includes(props.label)\n    } else if (value !== null && value !== undefined) {\n      return value === props.trueLabel\n    } else {\n      return !!value\n    }\n  })\n\n  const checkboxSize = useSize(\n    computed(() =>\n      isGroup.value ? checkboxGroup?.checkboxGroupSize?.value : undefined\n    )\n  )\n\n  const hasOwnLabel = computed<boolean>(() => {\n    return !!(slots.default || props.label)\n  })\n\n  return {\n    isChecked,\n    focus,\n    size,\n    checkboxSize,\n    hasOwnLabel,\n  }\n}\n\nconst useDisabled = (\n  props: CheckboxProps,\n  {\n    model,\n    isChecked,\n  }: Partial<ReturnType<typeof useModel>> &\n    Partial<ReturnType<typeof useCheckboxStatus>>\n) => {\n  const { elForm, isGroup, checkboxGroup } = useCheckboxGroup()\n  const isLimitDisabled = computed(() => {\n    const max = checkboxGroup.max?.value!\n    const min = checkboxGroup.min?.value!\n    return (\n      (!!(max || min) && model!.value.length >= max && !isChecked!.value) ||\n      (model!.value.length <= min && isChecked!.value)\n    )\n  })\n  const isDisabled = computed(() => {\n    const disabled = props.disabled || elForm?.disabled\n    return (\n      (isGroup.value\n        ? checkboxGroup.disabled?.value || disabled || isLimitDisabled.value\n        : disabled) ?? false\n    )\n  })\n\n  return {\n    isDisabled,\n    isLimitDisabled,\n  }\n}\n\nconst setStoreValue = (\n  props: CheckboxProps,\n  { model }: Partial<ReturnType<typeof useModel>>\n) => {\n  function addToStore() {\n    if (Array.isArray(model!.value) && !model!.value.includes(props.label)) {\n      model!.value.push(props.label)\n    } else {\n      model!.value = props.trueLabel || true\n    }\n  }\n  props.checked && addToStore()\n}\n\nconst useEvent = (\n  props: CheckboxProps,\n  {\n    model,\n    isLimitExceeded,\n    hasOwnLabel,\n    isDisabled,\n    isLabeledByFormItem,\n  }: Partial<\n    ReturnType<typeof useModel> &\n      ReturnType<typeof useCheckboxStatus> &\n      ReturnType<typeof useDisabled> &\n      ReturnType<typeof useFormItemInputId>\n  >\n) => {\n  const { elFormItem } = useCheckboxGroup()\n  const { emit } = getCurrentInstance()!\n\n  function getLabeledValue(value: string | number | boolean) {\n    return value === props.trueLabel || value === true\n      ? props.trueLabel ?? true\n      : props.falseLabel ?? false\n  }\n\n  function emitChangeEvent(\n    checked: string | number | boolean,\n    e: InputEvent | MouseEvent\n  ) {\n    emit('change', getLabeledValue(checked), e)\n  }\n\n  function handleChange(e: Event) {\n    if (isLimitExceeded!.value) return\n    const target = e.target as HTMLInputElement\n    emit('change', getLabeledValue(target.checked), e)\n  }\n\n  async function onClickRoot(e: MouseEvent) {\n    if (isLimitExceeded!.value) return\n    if (\n      !hasOwnLabel!.value &&\n      !isDisabled!.value &&\n      isLabeledByFormItem!.value\n    ) {\n      model!.value = getLabeledValue(\n        [false, props.falseLabel].includes(model!.value)\n      )\n      await nextTick()\n      emitChangeEvent(model!.value, e)\n    }\n  }\n\n  watch(\n    () => props.modelValue,\n    () => {\n      elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n    }\n  )\n\n  return {\n    handleChange,\n    onClickRoot,\n  }\n}\n\nexport type CheckboxValueType = string | number | boolean\n\nexport const checkboxEmits = {\n  [UPDATE_MODEL_EVENT]: (val: CheckboxValueType) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n  change: (val: CheckboxValueType) =>\n    isString(val) || isNumber(val) || isBoolean(val),\n}\n\nexport const checkboxGroupEmits = {\n  [UPDATE_MODEL_EVENT]: (val: CheckboxValueType[]) => isArray(val),\n  change: (val: CheckboxValueType[]) => isArray(val),\n}\n\nexport const useCheckbox = (\n  props: CheckboxProps,\n  slots: ComponentInternalInstance['slots']\n) => {\n  const { model, isGroup, isLimitExceeded, elFormItem } = useModel(props)\n  const { focus, size, isChecked, checkboxSize, hasOwnLabel } =\n    useCheckboxStatus(props, slots, {\n      model,\n    })\n  const { isDisabled } = useDisabled(props, { model, isChecked })\n  const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n    formItemContext: elFormItem,\n    disableIdGeneration: hasOwnLabel,\n    disableIdManagement: isGroup,\n  })\n  const { handleChange, onClickRoot } = useEvent(props, {\n    model,\n    isLimitExceeded,\n    hasOwnLabel,\n    isDisabled,\n    isLabeledByFormItem,\n  })\n\n  setStoreValue(props, { model })\n\n  return {\n    elFormItem,\n    inputId,\n    isLabeledByFormItem,\n    isChecked,\n    isDisabled,\n    isGroup,\n    checkboxSize,\n    hasOwnLabel,\n    model,\n    handleChange,\n    onClickRoot,\n    focus,\n    size,\n  }\n}\n\nexport type CheckboxProps = ExtractPropTypes<typeof checkboxProps>\nexport type CheckboxEmits = typeof checkboxEmits\nexport type CheckboxInstance = InstanceType<typeof Checkbox>\n"],"names":[],"mappings":"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"}