{"version":3,"file":"checkbox.vue2.mjs","sources":["../../../../../../packages/components/checkbox/src/checkbox.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { defineComponent, inject, computed, ref, watch } from 'vue'\n  import { getNamespace, getComponentNamespace } from '../../../utils/global-config'\n  import { useFormItem } from '../../form/src/hooks/use-form-item'\n  import { NOOP } from '../../../shared/utils'\n  import { checkboxGroupContextKey } from './constant'\n  import { checkboxProps } from './props'\n  import RenderIcon from './icon'\n\n  import type { CheckboxGroupContext } from './types'\n\n  export default defineComponent({\n    name: getComponentNamespace('Checkbox'),\n    components: {\n      RenderIcon\n    },\n    props: checkboxProps,\n    emits: ['update:modelValue', 'change'],\n    setup(props, { emit, slots }) {\n      const ns = getNamespace('checkbox')\n      const checkboxGroup = inject<CheckboxGroupContext | null>(checkboxGroupContextKey, null)\n      const isGroup = computed(() => !!checkboxGroup)\n      const selfModel = ref<boolean>(false)\n\n      const model = computed({\n        get() {\n          return isGroup.value\n            ? checkboxGroup?.modelValue?.value\n            : props.modelValue ?? selfModel.value\n        },\n        set(val) {\n          if (isGroup.value) {\n            checkboxGroup?.changeEvent?.(val)\n          } else {\n            emit('update:modelValue', val)\n            selfModel.value = val\n          }\n        }\n      })\n\n      const isChecked = computed(() => {\n        const value = model.value\n        if (Array.isArray(value)) {\n          return value.includes(props.label)\n        }\n        return value\n      })\n\n      const isFocused = ref(false)\n\n      const { formItem } = useFormItem()\n\n      const cls = computed(() => {\n        const cls = [ns]\n        props.disabled && cls.push('is-disabled')\n        if (isGroup.value) {\n          isChecked.value && cls.push('is-checked')\n        } else {\n          props.modelValue && cls.push('is-checked')\n        }\n\n        if (props.indeterminate && !props.modelValue) {\n          cls.push('is-indeterminate')\n        }\n\n        if (isFocused.value) {\n          cls.push('is-focus')\n        }\n\n        return cls\n      })\n\n      const isShowLabel = computed(() => slots['default'] || props.label)\n\n      const handleChange = (e: InputEvent) => {\n        const target = e.target as HTMLInputElement\n        const changeValue = target.checked\n        emit('change', changeValue)\n      }\n\n      const validateEvent = computed(() => checkboxGroup?.validateEvent || props.validateEvent)\n\n      // 接入form-item的表单验证\n      watch(\n        () => props.modelValue,\n        () => {\n          if (validateEvent.value) {\n            formItem?.validate('change').catch(NOOP)\n          }\n        }\n      )\n\n      return {\n        ns,\n        cls,\n        handleChange,\n        model,\n        isChecked,\n        isFocused,\n        isShowLabel\n      }\n    }\n  })\n</script>\n\n<template>\n  <label :class=\"cls\">\n    <slot name=\"icon\" :checked=\"isChecked\" :indeterminate=\"indeterminate\">\n      <RenderIcon :is-checked=\"isChecked\" :indeterminate=\"indeterminate\" />\n    </slot>\n    <span :class=\"[`${ns}__input`]\">\n      <input\n        v-model=\"model\"\n        :class=\"[`${ns}__origin`]\"\n        type=\"checkbox\"\n        :name=\"name\"\n        :disabled=\"disabled\"\n        :checked=\"isChecked\"\n        :indeterminate=\"indeterminate\"\n        :value=\"label\"\n        @change=\"handleChange\"\n        @focus=\"isFocused = true\"\n        @blur=\"isFocused = false\"\n      />\n    </span>\n    <span v-if=\"isShowLabel\" :class=\"[`${ns}__label`]\">\n      <slot>{{ label }}</slot>\n    </span>\n  </label>\n</template>\n"],"names":["cls"],"mappings":"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"}