{"version":3,"file":"table-select-dialog.vue2.mjs","sources":["../../../../../packages/components/table-select/src/table-select-dialog.vue"],"sourcesContent":["<template>\n  <el-dialog\n    :title=\"rootProps.dialogTitle\"\n    body-height=\"max\"\n    v-model=\"visible\"\n    :width=\"rootProps.dialogWidth\"\n    append-to-body\n    :class=\"ns.e('dialog')\"\n  >\n    <div\n      v-if=\"$slots.searcher\"\n      ref=\"searcherRef\"\n      :class=\"ns.e('dialog-searcher')\"\n      @keyup.enter=\"fetchData()\"\n    >\n      <slot name=\"searcher\" />\n      <el-button type=\"primary\" @click=\"fetchData()\">查询</el-button>\n      <slot name=\"tools\" />\n    </div>\n\n    <el-table\n      :class=\"ns.e('dialog-table')\"\n      :size=\"rootProps.size\"\n      :data=\"data\"\n      :columns=\"columns\"\n      :style=\"{\n        height: tableHeight\n      }\"\n      @row-click=\"handleRowClick\"\n      v-loading=\"loading\"\n      :row-key=\"rootProps.valueKey\"\n      :slots=\"rootSlots\"\n    ></el-table>\n\n    <el-pagination\n      :class=\"ns.e('dialog-pagination')\"\n      v-if=\"rootProps.api && rootProps.pagination\"\n      v-model:currentPage=\"pageQuery.page\"\n      v-model:page-size=\"pageQuery.size\"\n      @change=\"fetchData(false)\"\n      small\n      :page-sizes=\"[20, 40, 80, 100, 150, 200]\"\n      layout=\"total, sizes, prev, pager, next, jumper\"\n      :total=\"total\"\n    >\n    </el-pagination>\n\n    <template v-if=\"rootProps.multiple\" #footer-left>\n      <span style=\"color: var(--el-text-color-regular); vertical-align: middle\">\n        已选择 {{ checkedSize }} 条\n      </span>\n\n      <el-button @click=\"handleClear\">清空</el-button>\n    </template>\n\n    <template #footer>\n      <el-button @click=\"toggleVisible(false)\">取消</el-button>\n      <el-button type=\"primary\" @click=\"handleSubmit\">确认</el-button>\n    </template>\n  </el-dialog>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ElTable } from '@element-ultra/components/table'\nimport { ElDialog } from '@element-ultra/components/dialog'\nimport { ElButton } from '@element-ultra/components/button'\nimport { ElPagination } from '@element-ultra/components/pagination'\nimport { ElLoadingDirective as vLoading } from '@element-ultra/components/loading'\nimport { inject, ref, watch } from 'vue'\nimport { tableSelectToken } from './token'\nimport useApi from './use-api'\nimport useModel from './use-model'\nimport useTableHeight from './use-table-height'\nimport useColumns from './use-columns'\n\nconst { rootProps, ns, rootEmit, rootSlots } = inject(tableSelectToken)!\n\nconst { fetchData, data, loading, total, pageQuery } = useApi({\n  props: rootProps,\n  type: 'inject'\n})\n\nwatch(\n  () => rootProps.api,\n  api => {\n    api && fetchData()\n  },\n  { immediate: true }\n)\n\n// 显示隐藏\nconst visible = ref(false)\nconst toggleVisible = (v: boolean) => {\n  visible.value = v\n}\n\n// 数据勾选相关模型\nconst {\n  checkedData,\n  allChecked,\n  selected,\n  indeterminate,\n  checkedSize,\n  handleToggleCheck,\n  toggleAllChecked,\n  setSelectedData,\n  handleClear\n} = useModel({\n  props: rootProps,\n  data,\n  visible\n})\n\n/** 点击行 */\nconst handleRowClick = (ctx: { row: any; index: number }) => {\n  const { row, index } = ctx\n  if (rootProps.multiple) {\n    handleToggleCheck(row, index)\n  } else {\n    !rootProps.rowDisabled?.(row, index) && setSelectedData(row)\n  }\n}\n\n// 计算表格的高度\nconst { searcherRef, tableHeight } = useTableHeight({ props: rootProps })\n\n// 列\nconst columns = useColumns({\n  allChecked,\n  toggleAllChecked,\n  setSelectedData,\n  indeterminate,\n  props: rootProps,\n  selected,\n  checkedData,\n  handleToggleCheck\n})\n\n/** 提交 */\nconst handleSubmit = () => {\n  const data: Record<string, any>[] | Record<string, any> | null =\n    rootProps.multiple\n      ? (Object.values(checkedData.value) as Record<string, any>[])\n      : (selected.value as Record<string, any> | null)\n\n  rootEmit('update:modelValue', data)\n  rootEmit('change', data)\n\n  toggleVisible(false)\n}\n\ndefineExpose({\n  open() {\n    toggleVisible(true)\n  },\n  clear: handleClear,\n\n  fetchData\n})\n</script>\n"],"names":["data"],"mappings":";;;;;;;;;;;;;;;;;;;;AA2EA,IAAA,MAAM,EAAE,SAAW,EAAA,EAAA,EAAI,UAAU,SAAU,EAAA,GAAI,OAAO,gBAAgB,CAAA,CAAA;AAEtE,IAAA,MAAM,EAAE,SAAW,EAAA,IAAA,EAAM,SAAS,KAAO,EAAA,SAAA,KAAc,MAAO,CAAA;AAAA,MAC5D,KAAO,EAAA,SAAA;AAAA,MACP,IAAM,EAAA,QAAA;AAAA,KACP,CAAA,CAAA;AAED,IAAA,KAAA;AAAA,MACE,MAAM,SAAU,CAAA,GAAA;AAAA,MAChB,CAAO,GAAA,KAAA;AACL,QAAA,GAAA,IAAO,SAAU,EAAA,CAAA;AAAA,OACnB;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACpB,CAAA;AAGA,IAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AACzB,IAAM,MAAA,aAAA,GAAgB,CAAC,CAAe,KAAA;AACpC,MAAA,OAAA,CAAQ,KAAQ,GAAA,CAAA,CAAA;AAAA,KAClB,CAAA;AAGA,IAAM,MAAA;AAAA,MACJ,WAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,QACE,QAAS,CAAA;AAAA,MACX,KAAO,EAAA,SAAA;AAAA,MACP,IAAA;AAAA,MACA,OAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAM,MAAA,cAAA,GAAiB,CAAC,GAAqC,KAAA;;AAC3D,MAAM,MAAA,EAAE,GAAK,EAAA,KAAA,EAAU,GAAA,GAAA,CAAA;AACvB,MAAA,IAAI,UAAU,QAAU,EAAA;AACtB,QAAA,iBAAA,CAAkB,KAAK,KAAK,CAAA,CAAA;AAAA,OACvB,MAAA;AACL,QAAA,EAAA,CAAC,eAAU,WAAV,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,EAAwB,GAAK,EAAA,KAAA,CAAA,CAAA,IAAU,gBAAgB,GAAG,CAAA,CAAA;AAAA,OAC7D;AAAA,KACF,CAAA;AAGA,IAAM,MAAA,EAAE,aAAa,WAAY,EAAA,GAAI,eAAe,EAAE,KAAA,EAAO,WAAW,CAAA,CAAA;AAGxE,IAAA,MAAM,UAAU,UAAW,CAAA;AAAA,MACzB,UAAA;AAAA,MACA,gBAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACP,QAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAA,MAAM,eAAe,MAAM;AACzB,MAAMA,MAAAA,KAAAA,GACJ,UAAU,QACL,GAAA,MAAA,CAAO,OAAO,WAAY,CAAA,KAAK,IAC/B,QAAS,CAAA,KAAA,CAAA;AAEhB,MAAA,QAAA,CAAS,qBAAqBA,KAAI,CAAA,CAAA;AAClC,MAAA,QAAA,CAAS,UAAUA,KAAI,CAAA,CAAA;AAEvB,MAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,KACrB,CAAA;AAEA,IAAa,MAAA,CAAA;AAAA,MACX,IAAO,GAAA;AACL,QAAA,aAAA,CAAc,IAAI,CAAA,CAAA;AAAA,OACpB;AAAA,MACA,KAAO,EAAA,WAAA;AAAA,MAEP,SAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}