routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
Generated
Vendored
+88
@@ -0,0 +1,88 @@
|
||||
import { createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives } from "vue";
|
||||
// Components
|
||||
import { VExpansionPanelSymbol } from "./shared.js";
|
||||
import { VDefaultsProvider } from "../VDefaultsProvider/index.js";
|
||||
import { VIcon } from "../VIcon/index.js"; // Composables
|
||||
import { useBackgroundColor } from "../../composables/color.js";
|
||||
import { makeComponentProps } from "../../composables/component.js";
|
||||
import { makeDimensionProps, useDimension } from "../../composables/dimensions.js";
|
||||
import { IconValue } from "../../composables/icons.js"; // Directives
|
||||
import vRipple from "../../directives/ripple/index.js"; // Utilities
|
||||
import { computed, inject, toRef } from 'vue';
|
||||
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVExpansionPanelTitleProps = propsFactory({
|
||||
color: String,
|
||||
expandIcon: {
|
||||
type: IconValue,
|
||||
default: '$expand'
|
||||
},
|
||||
collapseIcon: {
|
||||
type: IconValue,
|
||||
default: '$collapse'
|
||||
},
|
||||
hideActions: Boolean,
|
||||
focusable: Boolean,
|
||||
static: Boolean,
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
},
|
||||
readonly: Boolean,
|
||||
...makeComponentProps(),
|
||||
...makeDimensionProps()
|
||||
}, 'VExpansionPanelTitle');
|
||||
export const VExpansionPanelTitle = genericComponent()({
|
||||
name: 'VExpansionPanelTitle',
|
||||
directives: {
|
||||
vRipple
|
||||
},
|
||||
props: makeVExpansionPanelTitleProps(),
|
||||
setup(props, {
|
||||
slots
|
||||
}) {
|
||||
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 {
|
||||
dimensionStyles
|
||||
} = useDimension(props);
|
||||
const slotProps = computed(() => ({
|
||||
collapseIcon: props.collapseIcon,
|
||||
disabled: expansionPanel.disabled.value,
|
||||
expanded: expansionPanel.isSelected.value,
|
||||
expandIcon: props.expandIcon,
|
||||
readonly: props.readonly
|
||||
}));
|
||||
const icon = toRef(() => expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon);
|
||||
useRender(() => _withDirectives(_createElementVNode("button", {
|
||||
"class": _normalizeClass(['v-expansion-panel-title', {
|
||||
'v-expansion-panel-title--active': expansionPanel.isSelected.value,
|
||||
'v-expansion-panel-title--focusable': props.focusable,
|
||||
'v-expansion-panel-title--static': props.static
|
||||
}, backgroundColorClasses.value, props.class]),
|
||||
"style": _normalizeStyle([backgroundColorStyles.value, dimensionStyles.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
|
||||
}, [_createElementVNode("span", {
|
||||
"class": "v-expansion-panel-title__overlay"
|
||||
}, null), slots.default?.(slotProps.value), !props.hideActions && _createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VIcon: {
|
||||
icon: icon.value
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [_createElementVNode("span", {
|
||||
"class": "v-expansion-panel-title__icon"
|
||||
}, [slots.actions?.(slotProps.value) ?? _createVNode(VIcon, null, null)])]
|
||||
})]), [[vRipple, props.ripple]]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VExpansionPanelTitle.js.map
|
||||
Reference in New Issue
Block a user