UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 8.15 kB
{"version":3,"file":"use-check.mjs","sources":["../../../../../../../packages/components/transfer/src/composables/use-check.ts"],"sourcesContent":["import { computed, watch } from 'vue'\nimport { isFunction } from '@element-plus/utils'\nimport { CHECKED_CHANGE_EVENT } from '../transfer-panel'\nimport { usePropsAlias } from './use-props-alias'\n\nimport type { SetupContext } from 'vue'\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\nimport type { TransferKey } from '../transfer'\nimport type {\n TransferPanelEmits,\n TransferPanelProps,\n TransferPanelState,\n} from '../transfer-panel'\n\nexport const useCheck = (\n props: Required<\n Pick<TransferPanelProps, 'data' | 'format' | 'defaultChecked'>\n > & { filterMethod: TransferPanelProps['filterMethod'] },\n panelState: TransferPanelState,\n emit: SetupContext<TransferPanelEmits>['emit']\n) => {\n const propsAlias = usePropsAlias(props)\n\n const filteredData = computed(() => {\n return props.data.filter((item) => {\n if (isFunction(props.filterMethod)) {\n return props.filterMethod(panelState.query, item)\n } else {\n const label = String(\n item[propsAlias.value.label] || item[propsAlias.value.key]\n )\n return label.toLowerCase().includes(panelState.query.toLowerCase())\n }\n })\n })\n\n const checkableData = computed(() =>\n filteredData.value.filter((item) => !item[propsAlias.value.disabled])\n )\n\n const checkedSummary = computed(() => {\n const checkedLength = panelState.checked.length\n const dataLength = props.data.length\n const { noChecked, hasChecked } = props.format\n\n if (noChecked && hasChecked) {\n return checkedLength > 0\n ? hasChecked\n .replace(/\\${checked}/g, checkedLength.toString())\n .replace(/\\${total}/g, dataLength.toString())\n : noChecked.replace(/\\${total}/g, dataLength.toString())\n } else {\n return `${checkedLength}/${dataLength}`\n }\n })\n\n const isIndeterminate = computed(() => {\n const checkedLength = panelState.checked.length\n return checkedLength > 0 && checkedLength < checkableData.value.length\n })\n\n const updateAllChecked = () => {\n const checkableDataKeys = checkableData.value.map(\n (item) => item[propsAlias.value.key]\n )\n panelState.allChecked =\n checkableDataKeys.length > 0 &&\n checkableDataKeys.every((item) => panelState.checked.includes(item))\n }\n\n const handleAllCheckedChange = (value: CheckboxValueType) => {\n panelState.checked = value\n ? checkableData.value.map((item) => item[propsAlias.value.key])\n : []\n }\n\n watch(\n () => panelState.checked,\n (val, oldVal) => {\n updateAllChecked()\n\n if (panelState.checkChangeByUser) {\n const movedKeys = val\n .concat(oldVal)\n .filter((v) => !val.includes(v) || !oldVal.includes(v))\n emit(CHECKED_CHANGE_EVENT, val, movedKeys)\n } else {\n emit(CHECKED_CHANGE_EVENT, val)\n panelState.checkChangeByUser = true\n }\n }\n )\n\n watch(checkableData, () => {\n updateAllChecked()\n })\n\n watch(\n () => props.data,\n () => {\n const checked: TransferKey[] = []\n const filteredDataKeys = filteredData.value.map(\n (item) => item[propsAlias.value.key]\n )\n panelState.checked.forEach((item) => {\n if (filteredDataKeys.includes(item)) {\n checked.push(item)\n }\n })\n panelState.checkChangeByUser = false\n panelState.checked = checked\n }\n )\n\n watch(\n () => props.defaultChecked,\n (val, oldVal) => {\n if (\n oldVal &&\n val.length === oldVal.length &&\n val.every((item) => oldVal.includes(item))\n )\n return\n\n const checked: TransferKey[] = []\n const checkableDataKeys = checkableData.value.map(\n (item) => item[propsAlias.value.key]\n )\n\n val.forEach((item) => {\n if (checkableDataKeys.includes(item)) {\n checked.push(item)\n }\n })\n panelState.checkChangeByUser = false\n panelState.checked = checked\n },\n {\n immediate: true,\n }\n )\n\n return {\n filteredData,\n checkableData,\n checkedSummary,\n isIndeterminate,\n updateAllChecked,\n handleAllCheckedChange,\n }\n}\n"],"names":[],"mappings":"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"}