You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
15 KiB

{"ast":null,"code":"import { defineComponent, useSlots, reactive, ref, computed, watch, h, Comment, openBlock, createElementBlock, normalizeClass, unref, createVNode, withCtx, renderSlot, createElementVNode, toDisplayString, createCommentVNode } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { ElButton } from '../../button/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../form/index.mjs';\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue';\nimport { transferProps, transferEmits } from './transfer2.mjs';\nimport './composables/index.mjs';\nimport TransferPanel from './transfer-panel2.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItem } from '../../form/src/hooks/use-form-item.mjs';\nimport { usePropsAlias } from './composables/use-props-alias.mjs';\nimport { useComputedData } from './composables/use-computed-data.mjs';\nimport { useCheckedChange } from './composables/use-checked-change.mjs';\nimport { useMove } from './composables/use-move.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { isEmpty, isUndefined } from '../../../utils/types.mjs';\nconst __default__ = defineComponent({\n name: \"ElTransfer\"\n});\nconst _sfc_main = /* @__PURE__ */defineComponent({\n ...__default__,\n props: transferProps,\n emits: transferEmits,\n setup(__props, {\n expose,\n emit\n }) {\n const props = __props;\n const slots = useSlots();\n const {\n t\n } = useLocale();\n const ns = useNamespace(\"transfer\");\n const {\n formItem\n } = useFormItem();\n const checkedState = reactive({\n leftChecked: [],\n rightChecked: []\n });\n const propsAlias = usePropsAlias(props);\n const {\n sourceData,\n targetData\n } = useComputedData(props);\n const {\n onSourceCheckedChange,\n onTargetCheckedChange\n } = useCheckedChange(checkedState, emit);\n const {\n addToLeft,\n addToRight\n } = useMove(props, checkedState, emit);\n const leftPanel = ref();\n const rightPanel = ref();\n const clearQuery = which => {\n switch (which) {\n case \"left\":\n leftPanel.value.query = \"\";\n break;\n case \"right\":\n rightPanel.value.query = \"\";\n break;\n }\n };\n const hasButtonTexts = computed(() => props.buttonTexts.length === 2);\n const leftPanelTitle = computed(() => props.titles[0] || t(\"el.transfer.titles.0\"));\n const rightPanelTitle = computed(() => props.titles[1] || t(\"el.transfer.titles.1\"));\n const panelFilterPlaceholder = computed(() => props.filterPlaceholder || t(\"el.transfer.filterPlaceholder\"));\n watch(() => props.modelValue, () => {\n var _a;\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"change\").catch(err => debugWarn(err));\n }\n });\n const optionRender = computed(() => option => {\n var _a;\n if (props.renderContent) return props.renderContent(h, option);\n const defaultSlotVNodes = (((_a = slots.default) == null ? void 0 : _a.call(slots, {\n option\n })) || []).filter(node => node.type !== Comment);\n if (defaultSlotVNodes.length) {\n return defaultSlotVNodes;\n }\n return h(\"span\", option[propsAlias.value.label] || option[propsAlias.value.key]);\n });\n expose({\n clearQuery,\n leftPanel,\n rightPanel\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).b())\n }, [createVNode(TransferPanel, {\n ref_key: \"leftPanel\",\n ref: leftPanel,\n data: unref(sourceData),\n \"option-render\": unref(optionRender),\n placeholder: unref(panelFilterPlaceholder),\n title: unref(leftPanelTitle),\n filterable: _ctx.filterable,\n format: _ctx.format,\n \"filter-method\": _ctx.filterMethod,\n \"default-checked\": _ctx.leftDefaultChecked,\n props: props.props,\n onCheckedChange: unref(onSourceCheckedChange)\n }, {\n default: withCtx(() => [renderSlot(_ctx.$slots, \"left-footer\")]),\n _: 3\n }, 8, [\"data\", \"option-render\", \"placeholder\", \"title\", \"filterable\", \"format\", \"filter-method\", \"default-checked\", \"props\", \"onCheckedChange\"]), createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"buttons\"))\n }, [createVNode(unref(ElButton), {\n type: \"primary\",\n class: normalizeClass([unref(ns).e(\"button\"), unref(ns).is(\"with-texts\", unref(hasButtonTexts))]),\n disabled: unref(isEmpty)(checkedState.rightChecked),\n onClick: unref(addToLeft)\n }, {\n default: withCtx(() => [createVNode(unref(ElIcon), null, {\n default: withCtx(() => [createVNode(unref(ArrowLeft))]),\n _: 1\n }), !unref(isUndefined)(_ctx.buttonTexts[0]) ? (openBlock(), createElementBlock(\"span\", {\n key: 0\n }, toDisplayString(_ctx.buttonTexts[0]), 1)) : createCommentVNode(\"v-if\", true)]),\n _: 1\n }, 8, [\"class\", \"disabled\", \"onClick\"]), createVNode(unref(ElButton), {\n type: \"primary\",\n class: normalizeClass([unref(ns).e(\"button\"), unref(ns).is(\"with-texts\", unref(hasButtonTexts))]),\n disabled: unref(isEmpty)(checkedState.leftChecked),\n onClick: unref(addToRight)\n }, {\n default: withCtx(() => [!unref(isUndefined)(_ctx.buttonTexts[1]) ? (openBlock(), createElementBlock(\"span\", {\n key: 0\n }, toDisplayString(_ctx.buttonTexts[1]), 1)) : createCommentVNode(\"v-if\", true), createVNode(unref(ElIcon), null, {\n default: withCtx(() => [createVNode(unref(ArrowRight))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"class\", \"disabled\", \"onClick\"])], 2), createVNode(TransferPanel, {\n ref_key: \"rightPanel\",\n ref: rightPanel,\n data: unref(targetData),\n \"option-render\": unref(optionRender),\n placeholder: unref(panelFilterPlaceholder),\n filterable: _ctx.filterable,\n format: _ctx.format,\n \"filter-method\": _ctx.filterMethod,\n title: unref(rightPanelTitle),\n \"default-checked\": _ctx.rightDefaultChecked,\n props: props.props,\n onCheckedChange: unref(onTargetCheckedChange)\n }, {\n default: withCtx(() => [renderSlot(_ctx.$slots, \"right-footer\")]),\n _: 3\n }, 8, [\"data\", \"option-render\", \"placeholder\", \"filterable\", \"format\", \"filter-method\", \"title\", \"default-checked\", \"props\", \"onCheckedChange\"])], 2);\n };\n }\n});\nvar Transfer = /* @__PURE__ */_export_sfc(_sfc_main, [[\"__file\", \"transfer.vue\"]]);\nexport { Transfer as default };","map":{"version":3,"names":["name","slots","useSlots","t","useLocale","ns","useNamespace","formItem","useFormItem","checkedState","reactive","leftChecked","rightChecked","propsAlias","usePropsAlias","props","sourceData","targetData","useComputedData","onSourceCheckedChange","onTargetCheckedChange","useCheckedChange","emit","addToLeft","addToRight","useMove","leftPanel","ref","rightPanel","clearQuery","which","value","query","hasButtonTexts","computed","buttonTexts","length","leftPanelTitle","titles","rightPanelTitle","panelFilterPlaceholder","filterPlaceholder","watch","modelValue","_a","validateEvent","validate","call","catch","err","debugWarn","optionRender","option","renderContent","h","defaultSlotVNodes","default","filter","node","type","Comment","label","key","expose","_ctx","_cache","openBlock","createElementBlock","class","normalizeClass","unref","b","createVNode","TransferPanel","ref_key","data","placeholder","title","filterable","format","filterMethod","leftDefaultChecked","onCheckedChange"],"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 <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 <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"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}