UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.09 kB
{"version":3,"file":"use-checkbox-model.mjs","names":[],"sources":["../../../../../../../packages/components/checkbox/src/composables/use-checkbox-model.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, ref } from 'vue'\nimport { isArray, isUndefined } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { checkboxGroupContextKey } from '../constants'\n\nimport type { CheckboxProps } from '../checkbox'\n\nexport const useCheckboxModel = (props: CheckboxProps) => {\n const selfModel = ref<unknown>(false)\n const { emit } = getCurrentInstance()!\n const checkboxGroup = inject(checkboxGroupContextKey, undefined)\n const isGroup = computed(() => isUndefined(checkboxGroup) === false)\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 && isArray(val)) {\n isLimitExceeded.value =\n checkboxGroup?.max?.value !== undefined &&\n val.length > checkboxGroup?.max.value &&\n val.length > model.value.length\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 }\n}\n\nexport type CheckboxModel = ReturnType<typeof useCheckboxModel>\n"],"mappings":";;;;;;AAOA,MAAa,oBAAoB,UAAyB;CACxD,MAAM,YAAY,IAAa,MAAM;CACrC,MAAM,EAAE,SAAS,oBAAoB;CACrC,MAAM,gBAAgB,OAAO,yBAAyB,OAAU;CAChE,MAAM,UAAU,eAAe,YAAY,cAAc,KAAK,MAAM;CACpE,MAAM,kBAAkB,IAAI,MAAM;CAClC,MAAM,QAAQ,SAAS;EACrB,MAAM;AACJ,UAAO,QAAQ,QACX,eAAe,YAAY,QAC1B,MAAM,cAAc,UAAU;;EAGrC,IAAI,KAAc;AAChB,OAAI,QAAQ,SAAS,QAAQ,IAAI,EAAE;AACjC,oBAAgB,QACd,eAAe,KAAK,UAAU,UAC9B,IAAI,SAAS,eAAe,IAAI,SAChC,IAAI,SAAS,MAAM,MAAM;AAC3B,oBAAgB,UAAU,SAAS,eAAe,cAAc,IAAI;UAC/D;AACL,SAAK,oBAAoB,IAAI;AAC7B,cAAU,QAAQ;;;EAGvB,CAAC;AAEF,QAAO;EACL;EACA;EACA;EACD"}