UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 10.8 kB
{"version":3,"file":"transfer.mjs","sources":["../../../../../../packages/components/transfer/src/transfer.vue"],"sourcesContent":["<template>\n <div :class=\"ns.b()\">\n <transfer-panel\n ref=\"leftPanel\"\n :data=\"sourceData\"\n :option-render=\"optionRender\"\n :placeholder=\"panelFilterPlaceholder\"\n :title=\"leftPanelTitle\"\n :filterable=\"filterable\"\n :format=\"format\"\n :filter-method=\"filterMethod\"\n :default-checked=\"leftDefaultChecked\"\n :props=\"props.props\"\n @checked-change=\"onSourceCheckedChange\"\n >\n <template #empty>\n <slot name=\"left-empty\" />\n </template>\n <slot name=\"left-footer\" />\n </transfer-panel>\n <div :class=\"ns.e('buttons')\">\n <el-button\n type=\"primary\"\n :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n :disabled=\"isEmpty(checkedState.rightChecked)\"\n @click=\"addToLeft\"\n >\n <el-icon><arrow-left /></el-icon>\n <span v-if=\"!isUndefined(buttonTexts[0])\">{{ buttonTexts[0] }}</span>\n </el-button>\n <el-button\n type=\"primary\"\n :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n :disabled=\"isEmpty(checkedState.leftChecked)\"\n @click=\"addToRight\"\n >\n <span v-if=\"!isUndefined(buttonTexts[1])\">{{ buttonTexts[1] }}</span>\n <el-icon><arrow-right /></el-icon>\n </el-button>\n </div>\n <transfer-panel\n ref=\"rightPanel\"\n :data=\"targetData\"\n :option-render=\"optionRender\"\n :placeholder=\"panelFilterPlaceholder\"\n :filterable=\"filterable\"\n :format=\"format\"\n :filter-method=\"filterMethod\"\n :title=\"rightPanelTitle\"\n :default-checked=\"rightDefaultChecked\"\n :props=\"props.props\"\n @checked-change=\"onTargetCheckedChange\"\n >\n <template #empty>\n <slot name=\"right-empty\" />\n </template>\n <slot name=\"right-footer\" />\n </transfer-panel>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Comment, computed, h, reactive, ref, useSlots, watch } from 'vue'\nimport { debugWarn, isEmpty, isUndefined } from '@element-plus/utils'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { ElButton } from '@element-plus/components/button'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { useFormItem } from '@element-plus/components/form'\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'\nimport { transferEmits, transferProps } from './transfer'\nimport {\n useCheckedChange,\n useComputedData,\n useMove,\n usePropsAlias,\n} from './composables'\nimport TransferPanel from './transfer-panel.vue'\n\nimport type {\n TransferCheckedState,\n TransferDataItem,\n TransferDirection,\n} from './transfer'\nimport type { TransferPanelInstance } from './transfer-panel'\n\ndefineOptions({\n name: 'ElTransfer',\n})\n\nconst props = defineProps(transferProps)\nconst emit = defineEmits(transferEmits)\nconst slots = useSlots()\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\nconst { formItem } = useFormItem()\n\nconst checkedState = reactive<TransferCheckedState>({\n leftChecked: [],\n rightChecked: [],\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst { sourceData, targetData } = useComputedData(props)\n\nconst { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(\n checkedState,\n emit\n)\n\nconst { addToLeft, addToRight } = useMove(props, checkedState, emit)\n\nconst leftPanel = ref<TransferPanelInstance>()\nconst rightPanel = ref<TransferPanelInstance>()\n\nconst clearQuery = (which: TransferDirection) => {\n switch (which) {\n case 'left':\n leftPanel.value!.query = ''\n break\n case 'right':\n rightPanel.value!.query = ''\n break\n }\n}\n\nconst hasButtonTexts = computed(() => props.buttonTexts.length === 2)\n\nconst leftPanelTitle = computed(\n () => props.titles[0] || t('el.transfer.titles.0')\n)\n\nconst rightPanelTitle = computed(\n () => props.titles[1] || t('el.transfer.titles.1')\n)\n\nconst panelFilterPlaceholder = computed(\n () => props.filterPlaceholder || t('el.transfer.filterPlaceholder')\n)\n\nwatch(\n () => props.modelValue,\n () => {\n if (props.validateEvent) {\n formItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n)\n\nconst optionRender = computed(() => (option: TransferDataItem) => {\n if (props.renderContent) return props.renderContent(h, option)\n\n const defaultSlotVNodes = (slots.default?.({ option }) || []).filter(\n (node) => node.type !== Comment\n )\n if (defaultSlotVNodes.length) {\n return defaultSlotVNodes\n }\n\n return h(\n 'span',\n option[propsAlias.value.label] || option[propsAlias.value.key]\n )\n})\n\ndefineExpose({\n /** @description clear the filter keyword of a certain panel */\n clearQuery,\n /** @description left panel ref */\n leftPanel,\n /** @description right panel ref */\n rightPanel,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","filterable","format","filterMethod","leftDefaultChecked","_withCtx","_renderSlot","_createElementVNode","buttonTexts","_toDisplayString","_createCommentVNode","rightDefaultChecked"],"mappings":"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"}