forked from jchomaz/Vulture
Tracking de l'application VApp (IHM du jeu)
This commit is contained in:
104
VApp/node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.mjs
generated
vendored
Normal file
104
VApp/node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.mjs
generated
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
import { createVNode as _createVNode } from "vue";
|
||||
// Components
|
||||
import { VExpansionPanelSymbol } from "./VExpansionPanels.mjs";
|
||||
import { VExpansionPanelText } from "./VExpansionPanelText.mjs";
|
||||
import { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from "./VExpansionPanelTitle.mjs"; // Composables
|
||||
import { useBackgroundColor } from "../../composables/color.mjs";
|
||||
import { makeComponentProps } from "../../composables/component.mjs";
|
||||
import { provideDefaults } from "../../composables/defaults.mjs";
|
||||
import { makeElevationProps, useElevation } from "../../composables/elevation.mjs";
|
||||
import { makeGroupItemProps, useGroupItem } from "../../composables/group.mjs";
|
||||
import { makeLazyProps } from "../../composables/lazy.mjs";
|
||||
import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs";
|
||||
import { makeTagProps } from "../../composables/tag.mjs"; // Utilities
|
||||
import { computed, provide, toRef } from 'vue';
|
||||
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
|
||||
export const makeVExpansionPanelProps = propsFactory({
|
||||
title: String,
|
||||
text: String,
|
||||
bgColor: String,
|
||||
...makeComponentProps(),
|
||||
...makeElevationProps(),
|
||||
...makeGroupItemProps(),
|
||||
...makeLazyProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeVExpansionPanelTitleProps()
|
||||
}, 'VExpansionPanel');
|
||||
export const VExpansionPanel = genericComponent()({
|
||||
name: 'VExpansionPanel',
|
||||
props: makeVExpansionPanelProps(),
|
||||
emits: {
|
||||
'group:selected': val => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const groupItem = useGroupItem(props, VExpansionPanelSymbol);
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(props, 'bgColor');
|
||||
const {
|
||||
elevationClasses
|
||||
} = useElevation(props);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const isDisabled = computed(() => groupItem?.disabled.value || props.disabled);
|
||||
const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
|
||||
if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
|
||||
return arr;
|
||||
}, []));
|
||||
const isBeforeSelected = computed(() => {
|
||||
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
||||
return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === 1);
|
||||
});
|
||||
const isAfterSelected = computed(() => {
|
||||
const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
|
||||
return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === -1);
|
||||
});
|
||||
provide(VExpansionPanelSymbol, groupItem);
|
||||
provideDefaults({
|
||||
VExpansionPanelText: {
|
||||
eager: toRef(props, 'eager')
|
||||
},
|
||||
VExpansionPanelTitle: {
|
||||
readonly: toRef(props, 'readonly')
|
||||
}
|
||||
});
|
||||
useRender(() => {
|
||||
const hasText = !!(slots.text || props.text);
|
||||
const hasTitle = !!(slots.title || props.title);
|
||||
return _createVNode(props.tag, {
|
||||
"class": ['v-expansion-panel', {
|
||||
'v-expansion-panel--active': groupItem.isSelected.value,
|
||||
'v-expansion-panel--before-active': isBeforeSelected.value,
|
||||
'v-expansion-panel--after-active': isAfterSelected.value,
|
||||
'v-expansion-panel--disabled': isDisabled.value
|
||||
}, roundedClasses.value, backgroundColorClasses.value, props.class],
|
||||
"style": [backgroundColorStyles.value, props.style]
|
||||
}, {
|
||||
default: () => [_createVNode("div", {
|
||||
"class": ['v-expansion-panel__shadow', ...elevationClasses.value]
|
||||
}, null), hasTitle && _createVNode(VExpansionPanelTitle, {
|
||||
"key": "title",
|
||||
"collapseIcon": props.collapseIcon,
|
||||
"color": props.color,
|
||||
"expandIcon": props.expandIcon,
|
||||
"hideActions": props.hideActions,
|
||||
"ripple": props.ripple
|
||||
}, {
|
||||
default: () => [slots.title ? slots.title() : props.title]
|
||||
}), hasText && _createVNode(VExpansionPanelText, {
|
||||
"key": "text"
|
||||
}, {
|
||||
default: () => [slots.text ? slots.text() : props.text]
|
||||
}), slots.default?.()]
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VExpansionPanel.mjs.map
|
||||
Reference in New Issue
Block a user