import { VExpandTransition } from "./chunk-B4JFJDWM.js"; import { makeLazyProps, useLazy } from "./chunk-YGX2Z63P.js"; import { makeGroupItemProps, makeGroupProps, useGroup, useGroupItem } from "./chunk-W6DJL42A.js"; import { makeElevationProps, useElevation } from "./chunk-YJD2PNP6.js"; import { VIcon } from "./chunk-4XZHKYGH.js"; import { makeRoundedProps, useRounded } from "./chunk-AQK3CYVW.js"; import { VDefaultsProvider } from "./chunk-PAT7NP2Z.js"; import { makeTagProps } from "./chunk-2HZIACSB.js"; import { IconValue } from "./chunk-OJDZBU5D.js"; import { ripple_default } from "./chunk-DS4J67XG.js"; import { useBackgroundColor } from "./chunk-BHV5Z34M.js"; import { makeDimensionProps, useDimension } from "./chunk-6EZKHCRW.js"; import { makeThemeProps, provideTheme } from "./chunk-3DSR7NCB.js"; import { genericComponent, makeComponentProps, pick, propsFactory, provideDefaults, useRender } from "./chunk-LZ5T2ERG.js"; import { computed, createBaseVNode, createVNode, inject, normalizeClass, normalizeStyle, provide, toRef, vShow, withDirectives } from "./chunk-2MKFL3BX.js"; // node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanels.js import "/home/david/gitea_repo/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.css"; // node_modules/vuetify/lib/components/VExpansionPanel/shared.js var VExpansionPanelSymbol = /* @__PURE__ */ Symbol.for("vuetify:v-expansion-panel"); // node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelText.js var makeVExpansionPanelTextProps = propsFactory({ ...makeComponentProps(), ...makeLazyProps() }, "VExpansionPanelText"); var VExpansionPanelText = genericComponent()({ name: "VExpansionPanelText", props: makeVExpansionPanelTextProps(), setup(props, _ref) { let { slots } = _ref; const expansionPanel = inject(VExpansionPanelSymbol); if (!expansionPanel) throw new Error("[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel"); const { hasContent, onAfterLeave } = useLazy(props, expansionPanel.isSelected); useRender(() => createVNode(VExpandTransition, { "onAfterLeave": onAfterLeave }, { default: () => [withDirectives(createBaseVNode("div", { "class": normalizeClass(["v-expansion-panel-text", props.class]), "style": normalizeStyle(props.style) }, [slots.default && hasContent.value && createBaseVNode("div", { "class": "v-expansion-panel-text__wrapper" }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])] })); return {}; } }); // node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanelTitle.js var 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"); var VExpansionPanelTitle = genericComponent()({ name: "VExpansionPanelTitle", directives: { vRipple: ripple_default }, 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 { 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(createBaseVNode("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 : void 0, "disabled": expansionPanel.disabled.value, "aria-expanded": expansionPanel.isSelected.value, "onClick": !props.readonly ? expansionPanel.toggle : void 0 }, [createBaseVNode("span", { "class": "v-expansion-panel-title__overlay" }, null), slots.default?.(slotProps.value), !props.hideActions && createVNode(VDefaultsProvider, { "defaults": { VIcon: { icon: icon.value } } }, { default: () => [createBaseVNode("span", { "class": "v-expansion-panel-title__icon" }, [slots.actions?.(slotProps.value) ?? createVNode(VIcon, null, null)])] })]), [[ripple_default, props.ripple]])); return {}; } }); // node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanel.js var makeVExpansionPanelProps = propsFactory({ title: String, text: String, bgColor: String, ...makeElevationProps(), ...makeGroupItemProps(), ...makeRoundedProps(), ...makeTagProps(), ...makeVExpansionPanelTitleProps(), ...makeVExpansionPanelTextProps() }, "VExpansionPanel"); var 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 = toRef(() => 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); useRender(() => { const hasText = !!(slots.text || props.text); const hasTitle = !!(slots.title || props.title); const expansionPanelTitleProps = VExpansionPanelTitle.filterProps(props); const expansionPanelTextProps = VExpansionPanelText.filterProps(props); return createVNode(props.tag, { "class": normalizeClass(["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": normalizeStyle([backgroundColorStyles.value, props.style]) }, { default: () => [createBaseVNode("div", { "class": normalizeClass(["v-expansion-panel__shadow", ...elevationClasses.value]) }, null), createVNode(VDefaultsProvider, { "defaults": { VExpansionPanelTitle: { ...expansionPanelTitleProps }, VExpansionPanelText: { ...expansionPanelTextProps } } }, { default: () => [hasTitle && createVNode(VExpansionPanelTitle, { "key": "title" }, { default: () => [slots.title ? slots.title() : props.title] }), hasText && createVNode(VExpansionPanelText, { "key": "text" }, { default: () => [slots.text ? slots.text() : props.text] }), slots.default?.()] })] }); }); return { groupItem }; } }); // node_modules/vuetify/lib/components/VExpansionPanel/VExpansionPanels.js var allowedVariants = ["default", "accordion", "inset", "popout"]; var makeVExpansionPanelsProps = propsFactory({ flat: Boolean, ...makeGroupProps(), ...pick(makeVExpansionPanelProps(), ["bgColor", "collapseIcon", "color", "eager", "elevation", "expandIcon", "focusable", "hideActions", "readonly", "ripple", "rounded", "tile", "static"]), ...makeThemeProps(), ...makeComponentProps(), ...makeTagProps(), variant: { type: String, default: "default", validator: (v) => allowedVariants.includes(v) } }, "VExpansionPanels"); var VExpansionPanels = genericComponent()({ name: "VExpansionPanels", props: makeVExpansionPanelsProps(), emits: { "update:modelValue": (val) => true }, setup(props, _ref) { let { slots } = _ref; const { next, prev } = useGroup(props, VExpansionPanelSymbol); const { themeClasses } = provideTheme(props); const variantClass = toRef(() => props.variant && `v-expansion-panels--variant-${props.variant}`); provideDefaults({ VExpansionPanel: { bgColor: toRef(() => props.bgColor), collapseIcon: toRef(() => props.collapseIcon), color: toRef(() => props.color), eager: toRef(() => props.eager), elevation: toRef(() => props.elevation), expandIcon: toRef(() => props.expandIcon), focusable: toRef(() => props.focusable), hideActions: toRef(() => props.hideActions), readonly: toRef(() => props.readonly), ripple: toRef(() => props.ripple), rounded: toRef(() => props.rounded), static: toRef(() => props.static) } }); useRender(() => createVNode(props.tag, { "class": normalizeClass(["v-expansion-panels", { "v-expansion-panels--flat": props.flat, "v-expansion-panels--tile": props.tile }, themeClasses.value, variantClass.value, props.class]), "style": normalizeStyle(props.style) }, { default: () => [slots.default?.({ prev, next })] })); return { next, prev }; } }); export { VExpansionPanelText, VExpansionPanelTitle, VExpansionPanel, VExpansionPanels }; //# sourceMappingURL=chunk-SCY7DFFY.js.map