routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
import { Fragment as _Fragment, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
|
||||
// Components
|
||||
import { VCardSubtitle } from "./VCardSubtitle.js";
|
||||
import { VCardTitle } from "./VCardTitle.js";
|
||||
import { VAvatar } from "../VAvatar/index.js";
|
||||
import { VDefaultsProvider } from "../VDefaultsProvider/index.js";
|
||||
import { VIcon } from "../VIcon/index.js"; // Composables
|
||||
import { makeComponentProps } from "../../composables/component.js";
|
||||
import { makeDensityProps } from "../../composables/density.js";
|
||||
import { IconValue } from "../../composables/icons.js";
|
||||
import { makeTagProps } from "../../composables/tag.js"; // Utilities
|
||||
import { toDisplayString } from 'vue';
|
||||
import { genericComponent, propsFactory, useRender } from "../../util/index.js";
|
||||
export const makeCardItemProps = propsFactory({
|
||||
appendAvatar: String,
|
||||
appendIcon: IconValue,
|
||||
prependAvatar: String,
|
||||
prependIcon: IconValue,
|
||||
subtitle: {
|
||||
type: [String, Number, Boolean],
|
||||
default: undefined
|
||||
},
|
||||
title: {
|
||||
type: [String, Number, Boolean],
|
||||
default: undefined
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeTagProps()
|
||||
}, 'VCardItem');
|
||||
export const VCardItem = genericComponent()({
|
||||
name: 'VCardItem',
|
||||
props: makeCardItemProps(),
|
||||
setup(props, {
|
||||
slots
|
||||
}) {
|
||||
useRender(() => {
|
||||
const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
|
||||
const hasPrepend = !!(hasPrependMedia || slots.prepend);
|
||||
const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
|
||||
const hasAppend = !!(hasAppendMedia || slots.append);
|
||||
const hasTitle = !!(props.title != null || slots.title);
|
||||
const hasSubtitle = !!(props.subtitle != null || slots.subtitle);
|
||||
return _createVNode(props.tag, {
|
||||
"class": _normalizeClass(['v-card-item', props.class]),
|
||||
"style": _normalizeStyle(props.style)
|
||||
}, {
|
||||
default: () => [hasPrepend && _createElementVNode("div", {
|
||||
"key": "prepend",
|
||||
"class": "v-card-item__prepend"
|
||||
}, [!slots.prepend ? _createElementVNode(_Fragment, null, [props.prependAvatar && _createVNode(VAvatar, {
|
||||
"key": "prepend-avatar",
|
||||
"density": props.density,
|
||||
"image": props.prependAvatar
|
||||
}, null), props.prependIcon && _createVNode(VIcon, {
|
||||
"key": "prepend-icon",
|
||||
"density": props.density,
|
||||
"icon": props.prependIcon
|
||||
}, null)]) : _createVNode(VDefaultsProvider, {
|
||||
"key": "prepend-defaults",
|
||||
"disabled": !hasPrependMedia,
|
||||
"defaults": {
|
||||
VAvatar: {
|
||||
density: props.density,
|
||||
image: props.prependAvatar
|
||||
},
|
||||
VIcon: {
|
||||
density: props.density,
|
||||
icon: props.prependIcon
|
||||
}
|
||||
}
|
||||
}, slots.prepend)]), _createElementVNode("div", {
|
||||
"class": "v-card-item__content"
|
||||
}, [hasTitle && _createVNode(VCardTitle, {
|
||||
"key": "title"
|
||||
}, {
|
||||
default: () => [slots.title?.() ?? toDisplayString(props.title)]
|
||||
}), hasSubtitle && _createVNode(VCardSubtitle, {
|
||||
"key": "subtitle"
|
||||
}, {
|
||||
default: () => [slots.subtitle?.() ?? toDisplayString(props.subtitle)]
|
||||
}), slots.default?.()]), hasAppend && _createElementVNode("div", {
|
||||
"key": "append",
|
||||
"class": "v-card-item__append"
|
||||
}, [!slots.append ? _createElementVNode(_Fragment, null, [props.appendIcon && _createVNode(VIcon, {
|
||||
"key": "append-icon",
|
||||
"density": props.density,
|
||||
"icon": props.appendIcon
|
||||
}, null), props.appendAvatar && _createVNode(VAvatar, {
|
||||
"key": "append-avatar",
|
||||
"density": props.density,
|
||||
"image": props.appendAvatar
|
||||
}, null)]) : _createVNode(VDefaultsProvider, {
|
||||
"key": "append-defaults",
|
||||
"disabled": !hasAppendMedia,
|
||||
"defaults": {
|
||||
VAvatar: {
|
||||
density: props.density,
|
||||
image: props.appendAvatar
|
||||
},
|
||||
VIcon: {
|
||||
density: props.density,
|
||||
icon: props.appendIcon
|
||||
}
|
||||
}
|
||||
}, slots.append)])]
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VCardItem.js.map
|
||||
Reference in New Issue
Block a user