useColumns.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = useColumns;
  7. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  8. var _devWarning = _interopRequireDefault(require("../../vc-util/devWarning"));
  9. var _vue = require("vue");
  10. var _useSelection = require("./useSelection");
  11. var _vcTable = require("../../vc-table");
  12. function fillSlots(columns, contextSlots) {
  13. var $slots = contextSlots.value;
  14. return columns.map(function (column) {
  15. var _column$slots;
  16. if (column === _useSelection.SELECTION_COLUMN || column === _vcTable.EXPAND_COLUMN) return column;
  17. var cloneColumn = (0, _objectSpread2.default)({}, column);
  18. var _cloneColumn$slots = cloneColumn.slots,
  19. slots = _cloneColumn$slots === void 0 ? {} : _cloneColumn$slots;
  20. cloneColumn.__originColumn__ = column;
  21. (0, _devWarning.default)(!('slots' in cloneColumn), 'Table', '`column.slots` is deprecated. Please use `v-slot:headerCell` `v-slot:bodyCell` instead.');
  22. Object.keys(slots).forEach(function (key) {
  23. var name = slots[key];
  24. if (cloneColumn[key] === undefined && $slots[name]) {
  25. cloneColumn[key] = $slots[name];
  26. }
  27. });
  28. if (contextSlots.value.headerCell && !((_column$slots = column.slots) !== null && _column$slots !== void 0 && _column$slots.title)) {
  29. cloneColumn.title = (0, _vue.renderSlot)(contextSlots.value, 'headerCell', {
  30. title: column.title,
  31. column: column
  32. }, function () {
  33. return [column.title];
  34. });
  35. }
  36. if ('children' in cloneColumn) {
  37. cloneColumn.children = fillSlots(cloneColumn.children, contextSlots);
  38. }
  39. return cloneColumn;
  40. });
  41. }
  42. function useColumns(contextSlots) {
  43. var filledColumns = function filledColumns(columns) {
  44. return fillSlots(columns, contextSlots);
  45. };
  46. return [filledColumns];
  47. }