Meta.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { createVNode as _createVNode } from "vue";
  2. import { defineComponent } from 'vue';
  3. import { getPropsSlot } from '../_util/props-util';
  4. import useConfigInject from '../config-provider/hooks/useConfigInject';
  5. import { vNodeType } from '../_util/type';
  6. export const cardMetaProps = () => ({
  7. prefixCls: String,
  8. title: vNodeType(),
  9. description: vNodeType(),
  10. avatar: vNodeType()
  11. });
  12. export default defineComponent({
  13. compatConfig: {
  14. MODE: 3
  15. },
  16. name: 'ACardMeta',
  17. props: cardMetaProps(),
  18. slots: Object,
  19. setup(props, _ref) {
  20. let {
  21. slots
  22. } = _ref;
  23. const {
  24. prefixCls
  25. } = useConfigInject('card', props);
  26. return () => {
  27. const classString = {
  28. [`${prefixCls.value}-meta`]: true
  29. };
  30. const avatar = getPropsSlot(slots, props, 'avatar');
  31. const title = getPropsSlot(slots, props, 'title');
  32. const description = getPropsSlot(slots, props, 'description');
  33. const avatarDom = avatar ? _createVNode("div", {
  34. "class": `${prefixCls.value}-meta-avatar`
  35. }, [avatar]) : null;
  36. const titleDom = title ? _createVNode("div", {
  37. "class": `${prefixCls.value}-meta-title`
  38. }, [title]) : null;
  39. const descriptionDom = description ? _createVNode("div", {
  40. "class": `${prefixCls.value}-meta-description`
  41. }, [description]) : null;
  42. const MetaDetail = titleDom || descriptionDom ? _createVNode("div", {
  43. "class": `${prefixCls.value}-meta-detail`
  44. }, [titleDom, descriptionDom]) : null;
  45. return _createVNode("div", {
  46. "class": classString
  47. }, [avatarDom, MetaDetail]);
  48. };
  49. }
  50. });