<template> <Dialog @close="$emit('close')"> <h3>{{heading || "New Fee"}}</h3> <label>Name</label> <input type="" :value="fee.name" @input="(e) => fee.name = stripLetters(e)"> <label>Amount</label> <input type="" :value="fee.amount / 100 || ''" @input="(e) => {fee.perc = 0; fee.amount = Math.round(strip(e) * 100)}"> <label>Percentage of price</label> <input type="" :value="fee.perc" @input="changePerc"> <select id="" name="" v-model="fee.type"> <option value="Title">Title Company</option> <option value="Government">Government</option> <option value="Lender">Lender</option> <option value="Required">Required by Lender</option> <option value="Other">Other</option> </select> <button :disabled="!validFee" @click="() => $emit('save', fee, true)"> Debit </button> <button :disabled="!validFee" @click="() => $emit('save', fee, false)"> Credit </button> </Dialog> </template> <script> import Dialog from "./dialog.vue" import { stripLetters, strip, stripInt, stripPerc } from "../helpers.js" function validFee() { const fee = this.fee if (!fee.name || !fee.type) return false if (!fee.amount && !fee.perc) return false return true } function changePerc(e){ this.fee.perc = stripPerc(e) this.fee.amount = stripPerc(e)/100*this.price } export default { components: { Dialog }, methods: { stripLetters, strip, stripInt, stripPerc, changePerc }, computed: { validFee, }, props: ['initial', 'heading', 'price'], emits: ['close', 'save'], data() { return { fee: Object.assign({}, this.initial) } }, } </script>