vuetify
Version:
Vue Material Component Framework
81 lines • 2.73 kB
JavaScript
import { createVNode as _createVNode } from "vue";
// Components
import { VAvatar } from "../VAvatar/index.mjs";
import { VCardSubtitle } from "./VCardSubtitle.mjs";
import { VCardTitle } from "./VCardTitle.mjs";
import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs"; // Composables
import { IconValue } from "../../composables/icons.mjs";
import { makeDensityProps } from "../../composables/density.mjs"; // Utility
import { genericComponent, useRender } from "../../util/index.mjs"; // Types
export const VCardItem = genericComponent()({
name: 'VCardItem',
props: {
appendAvatar: String,
appendIcon: IconValue,
prependAvatar: String,
prependIcon: IconValue,
subtitle: String,
title: String,
...makeDensityProps()
},
setup(props, _ref) {
let {
slots
} = _ref;
useRender(() => {
const hasPrepend = !!(props.prependAvatar || props.prependIcon || slots.prepend);
const hasAppend = !!(props.appendAvatar || props.appendIcon || slots.append);
const hasTitle = !!(props.title || slots.title);
const hasSubtitle = !!(props.subtitle || slots.subtitle);
return _createVNode("div", {
"class": "v-card-item"
}, [hasPrepend && _createVNode(VDefaultsProvider, {
"key": "prepend",
"defaults": {
VAvatar: {
density: props.density,
icon: props.prependIcon,
image: props.prependAvatar
},
VIcon: {
density: props.density,
icon: props.prependIcon
}
}
}, {
default: () => [_createVNode("div", {
"class": "v-card-item__prepend"
}, [slots.prepend?.() ?? _createVNode(VAvatar, null, null)])]
}), _createVNode("div", {
"class": "v-card-item__content"
}, [hasTitle && _createVNode(VCardTitle, {
"key": "title"
}, {
default: () => [slots.title?.() ?? props.title]
}), hasSubtitle && _createVNode(VCardSubtitle, {
"key": "subtitle"
}, {
default: () => [slots.subtitle?.() ?? props.subtitle]
}), slots.default?.()]), hasAppend && _createVNode(VDefaultsProvider, {
"key": "append",
"defaults": {
VAvatar: {
density: props.density,
icon: props.appendIcon,
image: props.appendAvatar
},
VIcon: {
density: props.density,
icon: props.appendIcon
}
}
}, {
default: () => [_createVNode("div", {
"class": "v-card-item__append"
}, [slots.append?.() ?? _createVNode(VAvatar, null, null)])]
})]);
});
return {};
}
});
//# sourceMappingURL=VCardItem.mjs.map