Vulture/VApp/node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs

74 lines
2.9 KiB
JavaScript

import { withDirectives as _withDirectives, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
// Components
import { VExpansionPanelSymbol } from "./VExpansionPanels.mjs";
import { VIcon } from "../VIcon/index.mjs"; // Composables
import { useBackgroundColor } from "../../composables/color.mjs";
import { makeComponentProps } from "../../composables/component.mjs";
import { IconValue } from "../../composables/icons.mjs"; // Directives
import { Ripple } from "../../directives/ripple/index.mjs"; // Utilities
import { computed, inject } from 'vue';
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVExpansionPanelTitleProps = propsFactory({
color: String,
expandIcon: {
type: IconValue,
default: '$expand'
},
collapseIcon: {
type: IconValue,
default: '$collapse'
},
hideActions: Boolean,
static: Boolean,
ripple: {
type: [Boolean, Object],
default: false
},
readonly: Boolean,
...makeComponentProps()
}, 'VExpansionPanelTitle');
export const VExpansionPanelTitle = genericComponent()({
name: 'VExpansionPanelTitle',
directives: {
Ripple
},
props: makeVExpansionPanelTitleProps(),
setup(props, _ref) {
let {
slots
} = _ref;
const expansionPanel = inject(VExpansionPanelSymbol);
if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel');
const {
backgroundColorClasses,
backgroundColorStyles
} = useBackgroundColor(props, 'color');
const slotProps = computed(() => ({
collapseIcon: props.collapseIcon,
disabled: expansionPanel.disabled.value,
expanded: expansionPanel.isSelected.value,
expandIcon: props.expandIcon,
readonly: props.readonly
}));
useRender(() => _withDirectives(_createVNode("button", {
"class": ['v-expansion-panel-title', {
'v-expansion-panel-title--active': expansionPanel.isSelected.value,
'v-expansion-panel-title--static': props.static
}, backgroundColorClasses.value, props.class],
"style": [backgroundColorStyles.value, props.style],
"type": "button",
"tabindex": expansionPanel.disabled.value ? -1 : undefined,
"disabled": expansionPanel.disabled.value,
"aria-expanded": expansionPanel.isSelected.value,
"onClick": !props.readonly ? expansionPanel.toggle : undefined
}, [_createVNode("span", {
"class": "v-expansion-panel-title__overlay"
}, null), slots.default?.(slotProps.value), !props.hideActions && _createVNode("span", {
"class": "v-expansion-panel-title__icon"
}, [slots.actions ? slots.actions(slotProps.value) : _createVNode(VIcon, {
"icon": expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon
}, null)])]), [[_resolveDirective("ripple"), props.ripple]]));
return {};
}
});
//# sourceMappingURL=VExpansionPanelTitle.mjs.map