{"version":3,"file":"column-config.vue2.mjs","sources":["../../../../../packages/components/pro-table/src/column-config.vue"],"sourcesContent":["<template>\n  <div :class=\"ns.e('columns-config')\">\n    <div :class=\"ns.e('columns-config-title')\">表格列配置</div>\n    <div\n      style=\"\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        padding: 0 12px;\n      \"\n    >\n      <div :class=\"ns.e('columns-config-name')\"></div>\n      <ElCheckbox\n        :model-value=\"allChecked\"\n        @update:model-value=\"handleCheckAll($event)\"\n        style=\"margin-right: 0\"\n      />\n      <div style=\"width: 80px\"></div>\n      <div style=\"width: 102px\"></div>\n      <div style=\"width: 100px\"></div>\n    </div>\n    <ElScrollbar :class=\"ns.e('columns-config-content')\">\n      <div\n        v-for=\"column in flattedColumns\"\n        :key=\"column.key\"\n        :class=\"ns.e('columns-config-item')\"\n      >\n        <span\n          :class=\"ns.e('columns-config-name')\"\n          :style=\"{ paddingLeft: `${(column.depth ?? 0) * 14}px` }\"\n        >\n          {{ column.name }}</span\n        >\n        <ElCheckbox\n          :disabled=\"column.key.includes('action')\"\n          :model-value=\"column.visible ?? true\"\n          @update:model-value=\"handleUpdateVisible(column, $event)\"\n          style=\"margin-right: 0\"\n        />\n\n        <div style=\"width: 80px; text-align: center\">\n          <ElButtonGroup size=\"small\" v-if=\"showFixed(column)\">\n            <ElButton\n              :icon=\"ArrowLeft\"\n              :disabled=\"!!column.children?.length\"\n              title=\"固定在左侧\"\n              :type=\"column.fixed === 'left' ? 'primary' : 'default'\"\n              @click=\"\n                column.fixed = column.fixed !== 'left' ? 'left' : undefined\n              \"\n            />\n            <ElButton\n              :icon=\"ArrowRight\"\n              :disabled=\"!!column.children?.length\"\n              title=\"固定在右侧\"\n              :type=\"column.fixed === 'right' ? 'primary' : 'default'\"\n              @click=\"\n                column.fixed = column.fixed !== 'right' ? 'right' : undefined\n              \"\n            />\n          </ElButtonGroup>\n        </div>\n\n        <ElSelect\n          v-model=\"column.align\"\n          :options=\"alignOptions\"\n          size=\"small\"\n          placeholder=\"对齐方式\"\n          style=\"width: 102px\"\n        />\n\n        <div style=\"width: 100px\">\n          <ElInputNumber\n            v-if=\"showWidth(column)\"\n            v-model=\"column.width\"\n            size=\"small\"\n            placeholder=\"列宽\"\n            controls\n            :step=\"10\"\n            :min=\"80\"\n          />\n        </div>\n      </div>\n    </ElScrollbar>\n\n    <div :class=\"ns.e('columns-config-footer')\">\n      <ElButton @click=\"execute(handleReset)\">重置</ElButton>\n      <ElButton type=\"primary\" @click=\"execute(handleSave)\">保存</ElButton>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref, watch } from 'vue'\nimport { proTableColumnsKey, proTableKey } from './token'\nimport { ElButton, ElButtonGroup } from '@element-ultra/components/button'\nimport type { ProTableColumn } from './pro-table'\nimport { ArrowLeft, ArrowRight } from 'icon-ultra'\nimport { ElCheckbox } from '@element-ultra/components/checkbox'\nimport { ElSelect } from '@element-ultra/components/select'\nimport { ElInputNumber } from '@element-ultra/components/input-number'\nimport { ElScrollbar } from '@element-ultra/components/scrollbar'\n\nconst emit = defineEmits(['close'])\n\nconst { ns } = inject(proTableKey)!\nconst { flattedColumns, handleSave, handleReset } = inject(proTableColumnsKey)!\n\nconst allChecked = ref(false)\nwatch(\n  flattedColumns,\n  fc => {\n    allChecked.value = fc.every(c => c.visible !== false)\n  },\n  { immediate: true }\n)\n\nfunction handleCheckAll(checked: any) {\n  flattedColumns.value.forEach(column => {\n    if (column.key.includes('action')) return\n    column.visible = checked\n  })\n  allChecked.value = checked\n}\n\nfunction handleUpdateVisible(column: ProTableColumn, visible: any) {\n  column.visible = visible\n}\n\nconst alignOptions = [\n  { label: '左对齐', value: 'left' },\n  { label: '居中', value: 'center' },\n  { label: '右对齐', value: 'right' }\n]\n\nfunction showFixed(column: ProTableColumn) {\n  return !column.children?.length && !column.depth\n}\n\nfunction showWidth(column: ProTableColumn) {\n  return !column.children?.length\n}\n\nfunction execute(fn: Function) {\n  fn()\n  emit('close')\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyGA,IAAA,MAAM,EAAE,EAAA,EAAO,GAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AACjC,IAAA,MAAM,EAAE,cAAgB,EAAA,UAAA,EAAY,WAAY,EAAA,GAAI,OAAO,kBAAkB,CAAA,CAAA;AAE7E,IAAM,MAAA,UAAA,GAAa,IAAI,KAAK,CAAA,CAAA;AAC5B,IAAA,KAAA;AAAA,MACE,cAAA;AAAA,MACA,CAAM,EAAA,KAAA;AACJ,QAAA,UAAA,CAAW,QAAQ,EAAG,CAAA,KAAA,CAAM,CAAK,CAAA,KAAA,CAAA,CAAE,YAAY,KAAK,CAAA,CAAA;AAAA,OACtD;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACpB,CAAA;AAEA,IAAA,SAAS,eAAe,OAAc,EAAA;AACpC,MAAe,cAAA,CAAA,KAAA,CAAM,QAAQ,CAAU,MAAA,KAAA;AACrC,QAAI,IAAA,MAAA,CAAO,GAAI,CAAA,QAAA,CAAS,QAAQ,CAAA;AAAG,UAAA,OAAA;AACnC,QAAA,MAAA,CAAO,OAAU,GAAA,OAAA,CAAA;AAAA,OAClB,CAAA,CAAA;AACD,MAAA,UAAA,CAAW,KAAQ,GAAA,OAAA,CAAA;AAAA,KACrB;AAEA,IAAS,SAAA,mBAAA,CAAoB,QAAwB,OAAc,EAAA;AACjE,MAAA,MAAA,CAAO,OAAU,GAAA,OAAA,CAAA;AAAA,KACnB;AAEA,IAAA,MAAM,YAAe,GAAA;AAAA,MACnB,EAAE,KAAA,EAAO,oBAAO,EAAA,KAAA,EAAO,MAAO,EAAA;AAAA,MAC9B,EAAE,KAAA,EAAO,cAAM,EAAA,KAAA,EAAO,QAAS,EAAA;AAAA,MAC/B,EAAE,KAAA,EAAO,oBAAO,EAAA,KAAA,EAAO,OAAQ,EAAA;AAAA,KACjC,CAAA;AAEA,IAAA,SAAS,UAAU,MAAwB,EAAA;;AACzC,MAAA,OAAO,GAAC,EAAO,GAAA,MAAA,CAAA,QAAA,KAAP,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA,IAAU,CAAC,MAAO,CAAA,KAAA,CAAA;AAAA,KAC7C;AAEA,IAAA,SAAS,UAAU,MAAwB,EAAA;;AACzC,MAAO,OAAA,EAAA,CAAC,EAAO,GAAA,MAAA,CAAA,QAAA,KAAP,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA,KAC3B;AAEA,IAAA,SAAS,QAAQ,EAAc,EAAA;AAC7B,MAAG,EAAA,EAAA,CAAA;AACH,MAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAAA,KACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}