element-plus
Version:
A Component Library for Vue 3
1 lines • 13.4 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/transfer/src/index.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\"\n @checked-change=\"onSourceCheckedChange\"\n >\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=\"rightChecked.length === 0\"\n @click=\"addToLeft\"\n >\n <el-icon><arrow-left /></el-icon>\n <span v-if=\"buttonTexts[0] !== undefined\">{{ buttonTexts[0] }}</span>\n </el-button>\n <el-button\n type=\"primary\"\n :class=\"[ns.e('button'), ns.is('with-texts', hasButtonTexts)]\"\n :disabled=\"leftChecked.length === 0\"\n @click=\"addToRight\"\n >\n <span v-if=\"buttonTexts[1] !== undefined\">{{ 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\"\n @checked-change=\"onTargetCheckedChange\"\n >\n <slot name=\"right-footer\" />\n </transfer-panel>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n h,\n inject,\n reactive,\n ref,\n toRefs,\n watch,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport ElIcon from '@element-plus/components/icon'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { formItemContextKey } from '@element-plus/tokens'\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'\nimport { debugWarn } from '@element-plus/utils'\nimport TransferPanel from './transfer-panel.vue'\nimport { useComputedData } from './useComputedData'\nimport {\n LEFT_CHECK_CHANGE_EVENT,\n RIGHT_CHECK_CHANGE_EVENT,\n useCheckedChange,\n} from './useCheckedChange'\nimport { useMove } from './useMove'\nimport { CHANGE_EVENT } from './transfer'\n\nimport type { PropType, VNode } from 'vue'\nimport type { FormItemContext } from '@element-plus/tokens'\nimport type { DataItem, Format, Key, Props, TargetOrder } from './transfer'\n\ntype TransferType = InstanceType<typeof TransferPanel>\n\nexport default defineComponent({\n name: 'ElTransfer',\n\n components: {\n TransferPanel,\n ElButton,\n ElIcon,\n ArrowLeft,\n ArrowRight,\n },\n\n props: {\n data: {\n type: Array as PropType<DataItem[]>,\n default: () => [],\n },\n titles: {\n type: Array as PropType<any> as PropType<[string, string]>,\n default: () => [],\n },\n buttonTexts: {\n type: Array as PropType<any> as PropType<[string, string]>,\n default: () => [],\n },\n filterPlaceholder: {\n type: String,\n default: '',\n },\n filterMethod: Function as PropType<\n (query: string, item: DataItem) => boolean\n >,\n leftDefaultChecked: {\n type: Array as PropType<Key[]>,\n default: () => [],\n },\n rightDefaultChecked: {\n type: Array as PropType<Key[]>,\n default: () => [],\n },\n renderContent: Function as PropType<(h, option) => VNode>,\n modelValue: {\n type: Array as PropType<Key[]>,\n default: () => [],\n },\n format: {\n type: Object as PropType<Format>,\n default: () => ({}),\n },\n filterable: {\n type: Boolean,\n default: false,\n },\n props: {\n type: Object as PropType<Props>,\n default: () => ({\n label: 'label',\n key: 'key',\n disabled: 'disabled',\n }),\n },\n targetOrder: {\n type: String as PropType<TargetOrder>,\n default: 'original',\n validator: (val: string) => {\n return ['original', 'push', 'unshift'].includes(val)\n },\n },\n },\n\n emits: [\n UPDATE_MODEL_EVENT,\n CHANGE_EVENT,\n LEFT_CHECK_CHANGE_EVENT,\n RIGHT_CHECK_CHANGE_EVENT,\n ],\n\n setup(props, { emit, slots }) {\n const { t } = useLocale()\n const ns = useNamespace('transfer')\n const elFormItem = inject(formItemContextKey, {} as FormItemContext)\n\n const checkedState = reactive({\n leftChecked: [],\n rightChecked: [],\n })\n\n const { propsKey, sourceData, targetData } = useComputedData(props)\n\n const { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(\n checkedState,\n emit\n )\n\n const { addToLeft, addToRight } = useMove(\n props,\n checkedState,\n propsKey,\n emit\n )\n\n const leftPanel = ref<TransferType>()\n const rightPanel = ref<TransferType>()\n\n const clearQuery = (which: 'left' | 'right') => {\n switch (which) {\n case 'left':\n leftPanel.value!.query = ''\n break\n case 'right':\n rightPanel.value!.query = ''\n break\n }\n }\n\n const hasButtonTexts = computed(() => props.buttonTexts.length === 2)\n\n const leftPanelTitle = computed(\n () => props.titles[0] || t('el.transfer.titles.0')\n )\n\n const rightPanelTitle = computed(\n () => props.titles[1] || t('el.transfer.titles.1')\n )\n\n const panelFilterPlaceholder = computed(\n () => props.filterPlaceholder || t('el.transfer.filterPlaceholder')\n )\n\n watch(\n () => props.modelValue,\n () => {\n elFormItem.validate?.('change').catch((err) => debugWarn(err))\n }\n )\n\n const optionRender = computed(() => (option) => {\n if (props.renderContent) return props.renderContent(h, option)\n\n if (slots.default) return slots.default({ option })\n\n return h('span', option[props.props.label] || option[props.props.key])\n })\n\n return {\n ns,\n sourceData,\n targetData,\n onSourceCheckedChange,\n onTargetCheckedChange,\n addToLeft,\n addToRight,\n\n ...toRefs(checkedState),\n\n hasButtonTexts,\n leftPanelTitle,\n rightPanelTitle,\n panelFilterPlaceholder,\n clearQuery,\n leftPanel,\n rightPanel,\n\n optionRender,\n }\n },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_normalizeClass","_createVNode","_withCtx","_renderSlot","_createElementVNode","_createElementBlock","_toDisplayString","_createCommentVNode"],"mappings":"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"}