Item.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  3. import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
  4. var _excluded = ["class"];
  5. import { createVNode as _createVNode } from "vue";
  6. import PropTypes from '../_util/vue-types';
  7. import classNames from '../_util/classNames';
  8. import { isStringElement, isEmptyElement, flattenChildren } from '../_util/props-util';
  9. import { Col } from '../grid';
  10. import { cloneElement } from '../_util/vnode';
  11. import { defineComponent, inject, ref } from 'vue';
  12. import ItemMeta from './ItemMeta';
  13. import useConfigInject from '../_util/hooks/useConfigInject';
  14. import { ListContextKey } from './contextKey';
  15. export var listItemProps = function listItemProps() {
  16. return {
  17. prefixCls: String,
  18. extra: PropTypes.any,
  19. actions: PropTypes.array,
  20. grid: Object,
  21. colStyle: {
  22. type: Object,
  23. default: undefined
  24. }
  25. };
  26. };
  27. export default defineComponent({
  28. compatConfig: {
  29. MODE: 3
  30. },
  31. name: 'AListItem',
  32. inheritAttrs: false,
  33. Meta: ItemMeta,
  34. props: listItemProps(),
  35. slots: ['actions', 'extra'],
  36. setup: function setup(props, _ref) {
  37. var slots = _ref.slots,
  38. attrs = _ref.attrs;
  39. var _inject = inject(ListContextKey, {
  40. grid: ref(),
  41. itemLayout: ref()
  42. }),
  43. itemLayout = _inject.itemLayout,
  44. grid = _inject.grid;
  45. var _useConfigInject = useConfigInject('list', props),
  46. prefixCls = _useConfigInject.prefixCls;
  47. var isItemContainsTextNodeAndNotSingular = function isItemContainsTextNodeAndNotSingular() {
  48. var _slots$default;
  49. var children = ((_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)) || [];
  50. var result;
  51. children.forEach(function (element) {
  52. if (isStringElement(element) && !isEmptyElement(element)) {
  53. result = true;
  54. }
  55. });
  56. return result && children.length > 1;
  57. };
  58. var isFlexMode = function isFlexMode() {
  59. var _props$extra, _slots$extra;
  60. var extra = (_props$extra = props.extra) !== null && _props$extra !== void 0 ? _props$extra : (_slots$extra = slots.extra) === null || _slots$extra === void 0 ? void 0 : _slots$extra.call(slots);
  61. if (itemLayout.value === 'vertical') {
  62. return !!extra;
  63. }
  64. return !isItemContainsTextNodeAndNotSingular();
  65. };
  66. return function () {
  67. var _props$extra2, _slots$extra2, _slots$default2, _props$actions, _slots$actions;
  68. var className = attrs.class,
  69. restAttrs = _objectWithoutProperties(attrs, _excluded);
  70. var pre = prefixCls.value;
  71. var extra = (_props$extra2 = props.extra) !== null && _props$extra2 !== void 0 ? _props$extra2 : (_slots$extra2 = slots.extra) === null || _slots$extra2 === void 0 ? void 0 : _slots$extra2.call(slots);
  72. var children = (_slots$default2 = slots.default) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots);
  73. var actions = (_props$actions = props.actions) !== null && _props$actions !== void 0 ? _props$actions : flattenChildren((_slots$actions = slots.actions) === null || _slots$actions === void 0 ? void 0 : _slots$actions.call(slots));
  74. actions = actions && !Array.isArray(actions) ? [actions] : actions;
  75. var actionsContent = actions && actions.length > 0 && _createVNode("ul", {
  76. "class": "".concat(pre, "-item-action"),
  77. "key": "actions"
  78. }, [actions.map(function (action, i) {
  79. return _createVNode("li", {
  80. "key": "".concat(pre, "-item-action-").concat(i)
  81. }, [action, i !== actions.length - 1 && _createVNode("em", {
  82. "class": "".concat(pre, "-item-action-split")
  83. }, null)]);
  84. })]);
  85. var Element = grid.value ? 'div' : 'li';
  86. var itemChildren = _createVNode(Element, _objectSpread(_objectSpread({}, restAttrs), {}, {
  87. "class": classNames("".concat(pre, "-item"), _defineProperty({}, "".concat(pre, "-item-no-flex"), !isFlexMode()), className)
  88. }), {
  89. default: function _default() {
  90. return [itemLayout.value === 'vertical' && extra ? [_createVNode("div", {
  91. "class": "".concat(pre, "-item-main"),
  92. "key": "content"
  93. }, [children, actionsContent]), _createVNode("div", {
  94. "class": "".concat(pre, "-item-extra"),
  95. "key": "extra"
  96. }, [extra])] : [children, actionsContent, cloneElement(extra, {
  97. key: 'extra'
  98. })]];
  99. }
  100. });
  101. return grid.value ? _createVNode(Col, {
  102. "flex": 1,
  103. "style": props.colStyle
  104. }, {
  105. default: function _default() {
  106. return [itemChildren];
  107. }
  108. }) : itemChildren;
  109. };
  110. }
  111. });