14bf64cc2093477ea34d2ad928a8f05655821cca25e37a5bcfd475e3e4b114ad97b8fcd68ad14a62f14bc97510cabbd7c681aa332ff84f080ca50bd173181a 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var tokens = require('../tokens.js');
  5. const getAllColumns = (columns) => {
  6. const result = [];
  7. columns.forEach((column) => {
  8. if (column.children) {
  9. result.push(column);
  10. result.push.apply(result, getAllColumns(column.children));
  11. } else {
  12. result.push(column);
  13. }
  14. });
  15. return result;
  16. };
  17. const convertToRows = (originColumns) => {
  18. let maxLevel = 1;
  19. const traverse = (column, parent) => {
  20. if (parent) {
  21. column.level = parent.level + 1;
  22. if (maxLevel < column.level) {
  23. maxLevel = column.level;
  24. }
  25. }
  26. if (column.children) {
  27. let colSpan = 0;
  28. column.children.forEach((subColumn) => {
  29. traverse(subColumn, column);
  30. colSpan += subColumn.colSpan;
  31. });
  32. column.colSpan = colSpan;
  33. } else {
  34. column.colSpan = 1;
  35. }
  36. };
  37. originColumns.forEach((column) => {
  38. column.level = 1;
  39. traverse(column, void 0);
  40. });
  41. const rows = [];
  42. for (let i = 0; i < maxLevel; i++) {
  43. rows.push([]);
  44. }
  45. const allColumns = getAllColumns(originColumns);
  46. allColumns.forEach((column) => {
  47. if (!column.children) {
  48. column.rowSpan = maxLevel - column.level + 1;
  49. } else {
  50. column.rowSpan = 1;
  51. column.children.forEach((col) => col.isSubColumn = true);
  52. }
  53. rows[column.level - 1].push(column);
  54. });
  55. return rows;
  56. };
  57. function useUtils(props) {
  58. const parent = vue.inject(tokens.TABLE_INJECTION_KEY);
  59. const columnRows = vue.computed(() => {
  60. return convertToRows(props.store.states.originColumns.value);
  61. });
  62. const isGroup = vue.computed(() => {
  63. const result = columnRows.value.length > 1;
  64. if (result && parent) {
  65. parent.state.isGroup.value = true;
  66. }
  67. return result;
  68. });
  69. const toggleAllSelection = (event) => {
  70. event.stopPropagation();
  71. parent == null ? void 0 : parent.store.commit("toggleAllSelection");
  72. };
  73. return {
  74. isGroup,
  75. toggleAllSelection,
  76. columnRows
  77. };
  78. }
  79. exports.convertToRows = convertToRows;
  80. exports["default"] = useUtils;
  81. //# sourceMappingURL=utils-helper.js.map