UNPKG

element-plus

Version:

A Component Library for Vue 3

153 lines (148 loc) 6.09 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); require('../../../hooks/index.js'); var index = require('../../checkbox/index.js'); var index$1 = require('../../input/index.js'); var iconsVue = require('@element-plus/icons-vue'); var useCheck = require('./useCheck.js'); var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js'); var index$2 = require('../../../hooks/use-locale/index.js'); var index$3 = require('../../../hooks/use-namespace/index.js'); const _sfc_main = vue.defineComponent({ name: "ElTransferPanel", components: { ElCheckboxGroup: index.ElCheckboxGroup, ElCheckbox: index.ElCheckbox, ElInput: index$1.ElInput, OptionContent: ({ option }) => option }, props: useCheck.useCheckProps, emits: [useCheck.CHECKED_CHANGE_EVENT], setup(props, { slots }) { const { t } = index$2.useLocale(); const ns = index$3.useNamespace("transfer"); const panelState = vue.reactive({ checked: [], allChecked: false, query: "", inputHover: false, checkChangeByUser: true }); const { labelProp, keyProp, disabledProp, filteredData, checkedSummary, isIndeterminate, handleAllCheckedChange } = useCheck.useCheck(props, panelState); const hasNoMatch = vue.computed(() => { return panelState.query.length > 0 && filteredData.value.length === 0; }); const hasFooter = vue.computed(() => !!slots.default()[0].children.length); const { checked, allChecked, query, inputHover, checkChangeByUser } = vue.toRefs(panelState); return { ns, labelProp, keyProp, disabledProp, filteredData, checkedSummary, isIndeterminate, handleAllCheckedChange, checked, allChecked, query, inputHover, checkChangeByUser, hasNoMatch, SearchIcon: iconsVue.Search, hasFooter, t }; } }); function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_el_checkbox = vue.resolveComponent("el-checkbox"); const _component_el_input = vue.resolveComponent("el-input"); const _component_option_content = vue.resolveComponent("option-content"); const _component_el_checkbox_group = vue.resolveComponent("el-checkbox-group"); return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(_ctx.ns.b("panel")) }, [ vue.createElementVNode("p", { class: vue.normalizeClass(_ctx.ns.be("panel", "header")) }, [ vue.createVNode(_component_el_checkbox, { modelValue: _ctx.allChecked, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.allChecked = $event), indeterminate: _ctx.isIndeterminate, onChange: _ctx.handleAllCheckedChange }, { default: vue.withCtx(() => [ vue.createTextVNode(vue.toDisplayString(_ctx.title) + " ", 1), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.checkedSummary), 1) ]), _: 1 }, 8, ["modelValue", "indeterminate", "onChange"]) ], 2), vue.createElementVNode("div", { class: vue.normalizeClass([_ctx.ns.be("panel", "body"), _ctx.ns.is("with-footer", _ctx.hasFooter)]) }, [ _ctx.filterable ? (vue.openBlock(), vue.createBlock(_component_el_input, { key: 0, modelValue: _ctx.query, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.query = $event), class: vue.normalizeClass(_ctx.ns.be("panel", "filter")), size: "default", placeholder: _ctx.placeholder, "prefix-icon": _ctx.SearchIcon, clearable: "", onMouseenter: _cache[2] || (_cache[2] = ($event) => _ctx.inputHover = true), onMouseleave: _cache[3] || (_cache[3] = ($event) => _ctx.inputHover = false) }, null, 8, ["modelValue", "class", "placeholder", "prefix-icon"])) : vue.createCommentVNode("v-if", true), vue.withDirectives(vue.createVNode(_component_el_checkbox_group, { modelValue: _ctx.checked, "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => _ctx.checked = $event), class: vue.normalizeClass([_ctx.ns.is("filterable", _ctx.filterable), _ctx.ns.be("panel", "list")]) }, { default: vue.withCtx(() => [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.filteredData, (item) => { return vue.openBlock(), vue.createBlock(_component_el_checkbox, { key: item[_ctx.keyProp], class: vue.normalizeClass(_ctx.ns.be("panel", "item")), label: item[_ctx.keyProp], disabled: item[_ctx.disabledProp] }, { default: vue.withCtx(() => [ vue.createVNode(_component_option_content, { option: _ctx.optionRender(item) }, null, 8, ["option"]) ]), _: 2 }, 1032, ["class", "label", "disabled"]); }), 128)) ]), _: 1 }, 8, ["modelValue", "class"]), [ [vue.vShow, !_ctx.hasNoMatch && _ctx.data.length > 0] ]), vue.withDirectives(vue.createElementVNode("p", { class: vue.normalizeClass(_ctx.ns.be("panel", "empty")) }, vue.toDisplayString(_ctx.hasNoMatch ? _ctx.t("el.transfer.noMatch") : _ctx.t("el.transfer.noData")), 3), [ [vue.vShow, _ctx.hasNoMatch || _ctx.data.length === 0] ]) ], 2), _ctx.hasFooter ? (vue.openBlock(), vue.createElementBlock("p", { key: 0, class: vue.normalizeClass(_ctx.ns.be("panel", "footer")) }, [ vue.renderSlot(_ctx.$slots, "default") ], 2)) : vue.createCommentVNode("v-if", true) ], 2); } var TransferPanel = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/transfer/src/transfer-panel.vue"]]); exports["default"] = TransferPanel; //# sourceMappingURL=transfer-panel.js.map