{"version":3,"file":"data-table-footer.vue2.mjs","sources":["../../../../../packages/components/data-table/src/data-table-footer.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ele = 'footer-cell'\n</script>\n<template>\n  <div :class=\"ns.e('footer-wrap')\" ref=\"footerRef\">\n    <table :class=\"ns.e('footer')\">\n      <!-- 组 -->\n      <colgroup :class=\"ns.e('footer-group')\">\n        <template v-for=\"item in leafColumns\">\n          <col\n            v-for=\"column of item\"\n            :key=\"column.key\"\n            :style=\"getCellStyle(column)\"\n          />\n        </template>\n      </colgroup>\n\n      <tr :class=\"ns.e('footer')\" v-if=\"rootProps.showSummary\">\n        <!-- 左 -->\n        <LeftCell\n          v-for=\"(column, colIndex) in leafColumns.left\"\n          :column=\"column\"\n          :key=\"column.key\"\n          :value=\"summaryData[colIndex]\"\n          :class=\"ns.is('last', colIndex + 1 === leafColumns.left.length)\"\n        />\n        <!-- 中 -->\n        <CenterCell\n          v-for=\"(column, colIndex) in leafColumns.center\"\n          :column=\"column\"\n          :key=\"column.key\"\n          :value=\"summaryData[colIndex + leafColumns.left.length]\"\n          :class=\"ns.is('last', colIndex + 1 === leafColumns.center.length)\"\n        />\n        <!-- 右 -->\n        <RightCell\n          v-for=\"(column, colIndex) in leafColumns.right\"\n          :column=\"column\"\n          :key=\"column.key\"\n          :value=\"\n            summaryData[\n              colIndex + leafColumns.left.length + leafColumns.center.length\n            ]\n          \"\n          :class=\"ns.is('first', colIndex === 0)\"\n        />\n      </tr>\n    </table>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, provide, watch } from 'vue'\nimport { dataFooterToken, dataTableToken } from './token'\nimport { LeftCell, CenterCell, RightCell } from './data-table-footer-cell'\nimport { useDomRefInject } from './hooks/use-dom-ref'\n\nconst { rootProps, leafColumns, ns, scrollState, store, getCellStyle } =\n  inject(dataTableToken)!\n\nconst { footerRef } = useDomRefInject()\n\n\n\nconst zhMoneyFormat = new Intl.NumberFormat('zh-CN', {\n  currency: 'RMB',\n  maximumFractionDigits: 2,\n  minimumFractionDigits: 2\n})\n/** 合计数据 */\nconst summaryData = computed(() => {\n  // 平铺叶子节点的数据\n  const columns = Object.values(leafColumns.value).flat()\n\n  if (rootProps.summaryMethod) {\n    return rootProps.summaryMethod({\n      columns,\n      data: rootProps.data,\n      checked: store.checked\n    })\n  }\n\n  const result: Array<number | string> = columns.map(column => {\n    let ret = 0\n    let isValidNumber = true\n    rootProps.data.some(item => {\n      let v = +item[column.key]\n      if (isNaN(v)) {\n        isValidNumber = false\n        // 退出\n        return true\n      }\n      ret += v\n    })\n    return isValidNumber\n      ? column.preset === 'money'\n        ? zhMoneyFormat.format(ret)\n        : ret\n      : ''\n  })\n\n  result[0] = '合计'\n\n  return result\n})\n\nprovide(dataFooterToken, {\n  cellClass: ns.e(ele),\n  leftCellClass: ns.em(ele, 'left'),\n  centerCellClass: ns.em(ele, 'center'),\n  rightCellClass: ns.em(ele, 'right')\n})\n\nwatch(\n  () => scrollState.scrollLeft,\n  left => {\n    const footer = footerRef.value\n    if (!footer) return\n    footer.scrollLeft = left\n  }\n)\n</script>\n"],"names":[],"mappings":";;;;;AACA,MAAM,GAAM,GAAA,aAAA,CAAA;;;;AAwDZ,IAAM,MAAA,EAAE,WAAW,WAAa,EAAA,EAAA,EAAI,aAAa,KAAO,EAAA,YAAA,EACtD,GAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAEvB,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,eAAgB,EAAA,CAAA;AAItC,IAAA,MAAM,aAAgB,GAAA,IAAI,IAAK,CAAA,YAAA,CAAa,OAAS,EAAA;AAAA,MACnD,QAAU,EAAA,KAAA;AAAA,MACV,qBAAuB,EAAA,CAAA;AAAA,MACvB,qBAAuB,EAAA,CAAA;AAAA,KACxB,CAAA,CAAA;AAED,IAAM,MAAA,WAAA,GAAc,SAAS,MAAM;AAEjC,MAAA,MAAM,UAAU,MAAO,CAAA,MAAA,CAAO,WAAY,CAAA,KAAK,EAAE,IAAK,EAAA,CAAA;AAEtD,MAAA,IAAI,UAAU,aAAe,EAAA;AAC3B,QAAA,OAAO,UAAU,aAAc,CAAA;AAAA,UAC7B,OAAA;AAAA,UACA,MAAM,SAAU,CAAA,IAAA;AAAA,UAChB,SAAS,KAAM,CAAA,OAAA;AAAA,SAChB,CAAA,CAAA;AAAA,OACH;AAEA,MAAM,MAAA,MAAA,GAAiC,OAAQ,CAAA,GAAA,CAAI,CAAU,MAAA,KAAA;AAC3D,QAAA,IAAI,GAAM,GAAA,CAAA,CAAA;AACV,QAAA,IAAI,aAAgB,GAAA,IAAA,CAAA;AACpB,QAAU,SAAA,CAAA,IAAA,CAAK,KAAK,CAAQ,IAAA,KAAA;AAC1B,UAAA,IAAI,CAAI,GAAA,CAAC,IAAK,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AACxB,UAAI,IAAA,KAAA,CAAM,CAAC,CAAG,EAAA;AACZ,YAAgB,aAAA,GAAA,KAAA,CAAA;AAEhB,YAAO,OAAA,IAAA,CAAA;AAAA,WACT;AACA,UAAO,GAAA,IAAA,CAAA,CAAA;AAAA,SACR,CAAA,CAAA;AACD,QAAO,OAAA,aAAA,GACH,OAAO,MAAW,KAAA,OAAA,GAChB,cAAc,MAAO,CAAA,GAAG,IACxB,GACF,GAAA,EAAA,CAAA;AAAA,OACL,CAAA,CAAA;AAED,MAAA,MAAA,CAAO,CAAC,CAAI,GAAA,cAAA,CAAA;AAEZ,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,OAAA,CAAQ,eAAiB,EAAA;AAAA,MACvB,SAAA,EAAW,EAAG,CAAA,CAAA,CAAE,GAAG,CAAA;AAAA,MACnB,aAAe,EAAA,EAAA,CAAG,EAAG,CAAA,GAAA,EAAK,MAAM,CAAA;AAAA,MAChC,eAAiB,EAAA,EAAA,CAAG,EAAG,CAAA,GAAA,EAAK,QAAQ,CAAA;AAAA,MACpC,cAAgB,EAAA,EAAA,CAAG,EAAG,CAAA,GAAA,EAAK,OAAO,CAAA;AAAA,KACnC,CAAA,CAAA;AAED,IAAA,KAAA;AAAA,MACE,MAAM,WAAY,CAAA,UAAA;AAAA,MAClB,CAAQ,IAAA,KAAA;AACN,QAAA,MAAM,SAAS,SAAU,CAAA,KAAA,CAAA;AACzB,QAAA,IAAI,CAAC,MAAA;AAAQ,UAAA,OAAA;AACb,QAAA,MAAA,CAAO,UAAa,GAAA,IAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}