|
- <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>
|