element-plus
Version:
A Component Library for Vue 3
1 lines • 3 kB
Source Map (JSON)
{"version":3,"file":"use-checkbox-status.mjs","names":[],"sources":["../../../../../../../packages/components/checkbox/src/composables/use-checkbox-status.ts"],"sourcesContent":["import { computed, inject, ref, toRaw } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useFormSize } from '@element-plus/components/form'\nimport { isArray, isBoolean, isObject, isPropAbsent } from '@element-plus/utils'\nimport { checkboxGroupContextKey } from '../constants'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { CheckboxProps } from '../checkbox'\nimport type { CheckboxModel } from '../composables'\n\nexport const useCheckboxStatus = (\n props: CheckboxProps,\n slots: ComponentInternalInstance['slots'],\n { model }: Pick<CheckboxModel, 'model'>\n) => {\n const checkboxGroup = inject(checkboxGroupContextKey, undefined)\n const isFocused = ref(false)\n const actualValue = computed(() => {\n // In version 2.x, if there's no props.value, props.label will act as props.value\n // In version 3.x, remove this computed value, use props.value instead.\n if (!isPropAbsent(props.value)) {\n return props.value\n }\n return props.label\n })\n const isChecked = computed<boolean>(() => {\n const value = model.value\n if (isBoolean(value)) {\n return value\n } else if (isArray(value)) {\n if (isObject(actualValue.value)) {\n return value.map(toRaw).some((o) => isEqual(o, actualValue.value))\n } else {\n return value.map(toRaw).includes(actualValue.value)\n }\n } else if (value !== null && value !== undefined) {\n return value === props.trueValue || value === props.trueLabel\n } else {\n return !!value\n }\n })\n\n const checkboxButtonSize = useFormSize(\n computed(() => checkboxGroup?.size?.value),\n {\n prop: true,\n }\n )\n const checkboxSize = useFormSize(computed(() => checkboxGroup?.size?.value))\n\n const hasOwnLabel = computed<boolean>(() => {\n return !!slots.default || !isPropAbsent(actualValue.value)\n })\n\n return {\n checkboxButtonSize,\n isChecked,\n isFocused,\n checkboxSize,\n hasOwnLabel,\n actualValue,\n }\n}\n\nexport type CheckboxStatus = ReturnType<typeof useCheckboxStatus>\n"],"mappings":";;;;;;;AAUA,MAAa,qBACX,OACA,OACA,EAAE,YACC;CACH,MAAM,gBAAgB,OAAO,yBAAyB,OAAU;CAChE,MAAM,YAAY,IAAI,MAAM;CAC5B,MAAM,cAAc,eAAe;AAGjC,MAAI,CAAC,aAAa,MAAM,MAAM,CAC5B,QAAO,MAAM;AAEf,SAAO,MAAM;GACb;CACF,MAAM,YAAY,eAAwB;EACxC,MAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,MAAM,CAClB,QAAO;WACE,QAAQ,MAAM,CACvB,KAAI,SAAS,YAAY,MAAM,CAC7B,QAAO,MAAM,IAAI,MAAM,CAAC,MAAM,MAAM,QAAQ,GAAG,YAAY,MAAM,CAAC;MAElE,QAAO,MAAM,IAAI,MAAM,CAAC,SAAS,YAAY,MAAM;WAE5C,UAAU,QAAQ,UAAU,OACrC,QAAO,UAAU,MAAM,aAAa,UAAU,MAAM;MAEpD,QAAO,CAAC,CAAC;GAEX;AAcF,QAAO;EACL,oBAbyB,YACzB,eAAe,eAAe,MAAM,MAAM,EAC1C,EACE,MAAM,MACP,CACF;EASC;EACA;EACA,cAVmB,YAAY,eAAe,eAAe,MAAM,MAAM,CAAC;EAW1E,aATkB,eAAwB;AAC1C,UAAO,CAAC,CAAC,MAAM,WAAW,CAAC,aAAa,YAAY,MAAM;IAC1D;EAQA;EACD"}