UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.97 kB
{"version":3,"file":"use-checkbox.mjs","names":[],"sources":["../../../../../../../packages/components/checkbox/src/composables/use-checkbox.ts"],"sourcesContent":["import { computed } from 'vue'\nimport { useFormItem, useFormItemInputId } from '@element-plus/components/form'\nimport { isArray, isPropAbsent } from '@element-plus/utils'\nimport { useDeprecated } from '@element-plus/hooks'\nimport { useCheckboxDisabled } from './use-checkbox-disabled'\nimport { useCheckboxEvent } from './use-checkbox-event'\nimport { useCheckboxModel } from './use-checkbox-model'\nimport { useCheckboxStatus } from './use-checkbox-status'\n\nimport type { ComponentInternalInstance } from 'vue'\nimport type { CheckboxProps } from '../checkbox'\n\nexport const useCheckbox = (\n props: CheckboxProps,\n slots: ComponentInternalInstance['slots']\n) => {\n const { formItem: elFormItem } = useFormItem()\n const { model, isGroup, isLimitExceeded } = useCheckboxModel(props)\n const {\n isFocused,\n isChecked,\n checkboxButtonSize,\n checkboxSize,\n hasOwnLabel,\n actualValue,\n } = useCheckboxStatus(props, slots, { model })\n const { isDisabled } = useCheckboxDisabled({ model, isChecked })\n const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n disableIdGeneration: hasOwnLabel,\n disableIdManagement: isGroup,\n })\n const { handleChange, onClickRoot } = useCheckboxEvent(props, {\n model,\n isLimitExceeded,\n hasOwnLabel,\n isDisabled,\n isLabeledByFormItem,\n })\n\n const setStoreValue = () => {\n function addToStore() {\n if (isArray(model.value) && !model.value.includes(actualValue.value)) {\n model.value.push(actualValue.value)\n } else {\n model.value = props.trueValue ?? props.trueLabel ?? true\n }\n }\n props.checked && addToStore()\n }\n\n setStoreValue()\n\n useDeprecated(\n {\n from: 'label act as value',\n replacement: 'value',\n version: '3.0.0',\n scope: 'el-checkbox',\n ref: 'https://element-plus.org/en-US/component/checkbox.html',\n },\n computed(() => isGroup.value && isPropAbsent(props.value))\n )\n\n useDeprecated(\n {\n from: 'true-label',\n replacement: 'true-value',\n version: '3.0.0',\n scope: 'el-checkbox',\n ref: 'https://element-plus.org/en-US/component/checkbox.html',\n },\n computed(() => !!props.trueLabel)\n )\n\n useDeprecated(\n {\n from: 'false-label',\n replacement: 'false-value',\n version: '3.0.0',\n scope: 'el-checkbox',\n ref: 'https://element-plus.org/en-US/component/checkbox.html',\n },\n computed(() => !!props.falseLabel)\n )\n\n return {\n inputId,\n isLabeledByFormItem,\n isChecked,\n isDisabled,\n isFocused,\n checkboxButtonSize,\n checkboxSize,\n hasOwnLabel,\n model,\n actualValue,\n handleChange,\n onClickRoot,\n }\n}\n"],"mappings":";;;;;;;;;;AAYA,MAAa,eACX,OACA,UACG;CACH,MAAM,EAAE,UAAU,eAAe,aAAa;CAC9C,MAAM,EAAE,OAAO,SAAS,oBAAoB,iBAAiB,MAAM;CACnE,MAAM,EACJ,WACA,WACA,oBACA,cACA,aACA,gBACE,kBAAkB,OAAO,OAAO,EAAE,OAAO,CAAC;CAC9C,MAAM,EAAE,eAAe,oBAAoB;EAAE;EAAO;EAAW,CAAC;CAChE,MAAM,EAAE,SAAS,wBAAwB,mBAAmB,OAAO;EACjE,iBAAiB;EACjB,qBAAqB;EACrB,qBAAqB;EACtB,CAAC;CACF,MAAM,EAAE,cAAc,gBAAgB,iBAAiB,OAAO;EAC5D;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,sBAAsB;EAC1B,SAAS,aAAa;AACpB,OAAI,QAAQ,MAAM,MAAM,IAAI,CAAC,MAAM,MAAM,SAAS,YAAY,MAAM,CAClE,OAAM,MAAM,KAAK,YAAY,MAAM;OAEnC,OAAM,QAAQ,MAAM,aAAa,MAAM,aAAa;;AAGxD,QAAM,WAAW,YAAY;;AAG/B,gBAAe;AAEf,eACE;EACE,MAAM;EACN,aAAa;EACb,SAAS;EACT,OAAO;EACP,KAAK;EACN,EACD,eAAe,QAAQ,SAAS,aAAa,MAAM,MAAM,CAAC,CAC3D;AAED,eACE;EACE,MAAM;EACN,aAAa;EACb,SAAS;EACT,OAAO;EACP,KAAK;EACN,EACD,eAAe,CAAC,CAAC,MAAM,UAAU,CAClC;AAED,eACE;EACE,MAAM;EACN,aAAa;EACb,SAAS;EACT,OAAO;EACP,KAAK;EACN,EACD,eAAe,CAAC,CAAC,MAAM,WAAW,CACnC;AAED,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}