<template> <q-btn v-if="pricePerVolume" color="positive" icon-right="add" label="Abgabe hinzufügen" size="xs" > <q-menu anchor="center middle" self="center middle"> <div class="row justify-around q-pa-sm"> <q-input v-model.number="newVolume.volume" filled dense label="Liter" type="number" min="0" step="0.01" /> </div> <div class="row justify-between q-pa-sm"> <q-btn v-close-popup label="Abbrechen" @click="cancelAddVolume" /> <q-btn v-close-popup label="Speichern" color="primary" @click="addVolume(rows)" /> </div> </q-menu> </q-btn> </template> <script lang="ts"> import { DrinkPriceVolume } from '../../../store'; import { ref, defineComponent } from 'vue'; export default defineComponent({ name: 'NewVolume', props: { pricePerVolume: { type: undefined, required: true, }, }, emits: { addVolume: (val: DrinkPriceVolume) => !!val }, setup(_, { emit }) { const emptyVolume: DrinkPriceVolume = { id: -1, _volume: 0, min_prices: [{ percentage: 100 }, { percentage: 250 }, { percentage: 300 }], prices: [], ingredients: [], }; const newVolume = ref<DrinkPriceVolume>(emptyVolume); function cancelAddVolume() { setTimeout(() => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore newVolume.value = emptyVolume; }, 200); } function addVolume() { emit('addVolume', <DrinkPriceVolume>newVolume.value); } return { addVolume, cancelAddVolume, newVolume, }; }, }); </script> <style scoped></style>