vuetify
Version:
Vue Material Component Framework
56 lines (55 loc) • 1.92 kB
JavaScript
import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
// Styles
import "./VMessages.css";
// Components
import { VSlideYTransition } from "../transitions/index.js"; // Composables
import { useTextColor } from "../../composables/color.js";
import { makeComponentProps } from "../../composables/component.js";
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.js"; // Utilities
import { computed } from 'vue';
import { genericComponent, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
export const makeVMessagesProps = propsFactory({
active: Boolean,
color: String,
messages: {
type: [Array, String],
default: () => []
},
...makeComponentProps(),
...makeTransitionProps({
transition: {
component: VSlideYTransition,
leaveAbsolute: true,
group: true
}
})
}, 'VMessages');
export const VMessages = genericComponent()({
name: 'VMessages',
props: makeVMessagesProps(),
setup(props, _ref) {
let {
slots
} = _ref;
const messages = computed(() => wrapInArray(props.messages));
const {
textColorClasses,
textColorStyles
} = useTextColor(() => props.color);
useRender(() => _createVNode(MaybeTransition, {
"transition": props.transition,
"tag": "div",
"class": _normalizeClass(['v-messages', textColorClasses.value, props.class]),
"style": _normalizeStyle([textColorStyles.value, props.style])
}, {
default: () => [props.active && messages.value.map((message, i) => _createElementVNode("div", {
"class": "v-messages__message",
"key": `${i}-${messages.value}`
}, [slots.message ? slots.message({
message
}) : message]))]
}));
return {};
}
});
//# sourceMappingURL=VMessages.js.map