{"version":3,"file":"transfer-panel.mjs","sources":["../../../../../../packages/components/transfer/src/transfer-panel.vue"],"sourcesContent":["<template>\n  <div :class=\"ns.b('panel')\">\n    <p :class=\"ns.be('panel', 'header')\">\n      <el-checkbox\n        v-model=\"allChecked\"\n        :indeterminate=\"isIndeterminate\"\n        @change=\"handleAllCheckedChange\"\n      >\n        {{ title }}\n        <span>{{ checkedSummary }}</span>\n      </el-checkbox>\n    </p>\n\n    <div :class=\"[ns.be('panel', 'body'), ns.is('with-footer', hasFooter)]\">\n      <el-input\n        v-if=\"filterable\"\n        v-model=\"query\"\n        :class=\"ns.be('panel', 'filter')\"\n        size=\"default\"\n        :placeholder=\"placeholder\"\n        :prefix-icon=\"SearchIcon\"\n        clearable\n        @mouseenter=\"inputHover = true\"\n        @mouseleave=\"inputHover = false\"\n      >\n      </el-input>\n      <el-checkbox-group\n        v-show=\"!hasNoMatch && data.length > 0\"\n        v-model=\"checked\"\n        :class=\"[ns.is('filterable', filterable), ns.be('panel', 'list')]\"\n      >\n        <el-checkbox\n          v-for=\"item in filteredData\"\n          :key=\"item[keyProp]\"\n          :class=\"ns.be('panel', 'item')\"\n          :label=\"item[keyProp]\"\n          :disabled=\"item[disabledProp]\"\n        >\n          <option-content :option=\"optionRender(item)\" />\n        </el-checkbox>\n      </el-checkbox-group>\n      <p\n        v-show=\"hasNoMatch || data.length === 0\"\n        :class=\"ns.be('panel', 'empty')\"\n      >\n        {{ hasNoMatch ? t('el.transfer.noMatch') : t('el.transfer.noData') }}\n      </p>\n    </div>\n    <p v-if=\"hasFooter\" :class=\"ns.be('panel', 'footer')\">\n      <slot></slot>\n    </p>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, toRefs } from 'vue'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { ElCheckbox, ElCheckboxGroup } from '@element-plus/components/checkbox'\nimport ElInput from '@element-plus/components/input'\nimport { Search } from '@element-plus/icons-vue'\nimport { useCheck, useCheckProps, CHECKED_CHANGE_EVENT } from './useCheck'\n\nexport default defineComponent({\n  name: 'ElTransferPanel',\n\n  components: {\n    ElCheckboxGroup,\n    ElCheckbox,\n    ElInput,\n    OptionContent: ({ option }) => option,\n  },\n\n  props: useCheckProps,\n\n  emits: [CHECKED_CHANGE_EVENT],\n\n  setup(props, { slots }) {\n    const { t } = useLocale()\n    const ns = useNamespace('transfer')\n\n    const panelState = reactive({\n      checked: [],\n      allChecked: false,\n      query: '',\n      inputHover: false,\n      checkChangeByUser: true,\n    })\n\n    const {\n      labelProp,\n      keyProp,\n      disabledProp,\n      filteredData,\n      checkedSummary,\n      isIndeterminate,\n      handleAllCheckedChange,\n    } = useCheck(props, panelState)\n\n    const hasNoMatch = computed(() => {\n      return panelState.query.length > 0 && filteredData.value.length === 0\n    })\n\n    const hasFooter = computed(() => !!slots.default()[0].children.length)\n\n    const { checked, allChecked, query, inputHover, checkChangeByUser } =\n      toRefs(panelState)\n\n    return {\n      ns,\n      labelProp,\n      keyProp,\n      disabledProp,\n      filteredData,\n      checkedSummary,\n      isIndeterminate,\n      handleAllCheckedChange,\n\n      checked,\n      allChecked,\n      query,\n      inputHover,\n      checkChangeByUser,\n\n      hasNoMatch,\n      SearchIcon: Search,\n      hasFooter,\n\n      t,\n    }\n  },\n})\n</script>\n"],"names":["_openBlock","_createTextVNode","_normalizeClass","_createVNode","_Fragment","_createBlock","_withCtx","_createElementVNode"],"mappings":";;;;;;;;;;AA8DA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,CAAC,EAAE,aAAa;AAAA;AAAA,EAGjC,OAAO;AAAA,EAEP,OAAO,CAAC;AAAA,EAER,MAAM,OAAO,EAAE,SAAS;AACtB,UAAM,EAAE,MAAM;AACd,UAAM,KAAK,aAAa;AAExB,UAAM,aAAa,SAAS;AAAA,MAC1B,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,mBAAmB;AAAA;AAGrB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,SAAS,OAAO;AAEpB,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,WAAW,MAAM,SAAS,KAAK,aAAa,MAAM,WAAW;AAAA;AAGtE,UAAM,YAAY,SAAS,MAAM,CAAC,CAAC,MAAM,UAAU,GAAG,SAAS;AAE/D,UAAM,EAAE,SAAS,YAAY,OAAO,YAAY,sBAC9C,OAAO;AAET,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MAEA;AAAA;AAAA;AAAA;;;;;;SA9HOA,gCAAM;AAAA;KACf;AAAA,uBAAS,KAAE;AAAA;OACT;AAAA,0CACqB;AAAA;QAClB,uBAAe;AAAe,QAC9B,eAAQ;AAAA;;;UAGTC,gCAAiC,mBAAxB;AAAA;;;;OAIb;AAAA,uBAAW,OAAG;AAAA;OAEJ;AAAA;;;QAEL,uBAAO,OAAE;AAAG,QACb,OAAKC,eAAS;AAAA,QACb;AAAA,QACA,aAAW,KAAE;AAAA,QACd,eAAS;AAAA,QACR;AAAA,QACA,cAAU,sCAAE,kBAAU;AAAA;+FAGzB,QAcoB;AAAA,qBAZTC,YAAO;AAAA;QACf,uBAAK,OAAG,mBAAoB,iBAAU,UAAQ;AAAA;;+BAE/C;AAAA,+CAQcC;mBANNJ,aAAKK,YAAO;AAAA,cACjB,KAAK;AAAA,cACL,OAAOH,eAAK,KAAO;AAAA,cACnB,YAAU,KAAK;AAAA;;uBAEhBI,QAA+C;AAAA,4BAAtB,2BAAiB;AAAA;;;;;;;;YAXnC,eAAc,WAAK;AAAA;;qBAgBtBC,mBAAO;AAAA,8BAEV,WAAU,SAAI;AAAA,yBAHT,kBAAc,KAAK,2BAAM;AAAA;;OAM5B;AAAA;MAAY,KAAK;AAAA;OACxB;AAAA;;;;;;;;"}