f14dbc40e04d98ae4f3dfc1ad2a3df31c54de5ef68861c44f9561590eed7c254aad215718aab73660d52efa85d2336c428318cccec563dee38a21de38d13db 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var constants = require('../constants.js');
  5. var _private = require('../private.js');
  6. var utils = require('../utils.js');
  7. var headerCell = require('../components/header-cell.js');
  8. var sortIcon = require('../components/sort-icon.js');
  9. const HeaderCellRenderer = (props, {
  10. slots
  11. }) => {
  12. const {
  13. column,
  14. ns,
  15. style,
  16. onColumnSorted
  17. } = props;
  18. const cellStyle = utils.enforceUnit(style);
  19. if (column.placeholderSign === _private.placeholderSign) {
  20. return vue.createVNode("div", {
  21. "class": ns.em("header-row-cell", "placeholder"),
  22. "style": cellStyle
  23. }, null);
  24. }
  25. const {
  26. headerCellRenderer,
  27. headerClass,
  28. sortable
  29. } = column;
  30. const cellProps = {
  31. ...props,
  32. class: ns.e("header-cell-text")
  33. };
  34. const columnCellRenderer = utils.componentToSlot(headerCellRenderer);
  35. const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : vue.renderSlot(slots, "default", cellProps, () => [vue.createVNode(headerCell["default"], cellProps, null)]);
  36. const {
  37. sortBy,
  38. sortState,
  39. headerCellProps
  40. } = props;
  41. let sorting, sortOrder;
  42. if (sortState) {
  43. const order = sortState[column.key];
  44. sorting = Boolean(constants.oppositeOrderMap[order]);
  45. sortOrder = sorting ? order : constants.SortOrder.ASC;
  46. } else {
  47. sorting = column.key === sortBy.key;
  48. sortOrder = sorting ? sortBy.order : constants.SortOrder.ASC;
  49. }
  50. const cellKls = [ns.e("header-cell"), utils.tryCall(headerClass, props, ""), column.align === constants.Alignment.CENTER && ns.is("align-center"), column.align === constants.Alignment.RIGHT && ns.is("align-right"), sortable && ns.is("sortable")];
  51. const cellWrapperProps = {
  52. ...utils.tryCall(headerCellProps, props),
  53. onClick: column.sortable ? onColumnSorted : void 0,
  54. class: cellKls,
  55. style: cellStyle,
  56. ["data-key"]: column.key
  57. };
  58. return vue.createVNode("div", vue.mergeProps(cellWrapperProps, {
  59. "role": "columnheader"
  60. }), [Cell, sortable && vue.createVNode(sortIcon["default"], {
  61. "class": [ns.e("sort-icon"), sorting && ns.is("sorting")],
  62. "sortOrder": sortOrder
  63. }, null)]);
  64. };
  65. var HeaderCell = HeaderCellRenderer;
  66. exports["default"] = HeaderCell;
  67. //# sourceMappingURL=header-cell.js.map