diff --git a/assets/main.css b/assets/main.css index 86e6a4f..7613ceb 100644 --- a/assets/main.css +++ b/assets/main.css @@ -16,6 +16,19 @@ h2 { color: var(--text); } +label { + font-size: 16px; +} + +section.form label { + display: flex; + align-items: center; +} + +.page section.form h3 { + margin: 10px 0 10px 30px; +} + main .panel { height: 100%; width: 100%; @@ -114,11 +127,14 @@ menu.sidebar svg { .page { padding: 0 2%; width: 100%; + overflow-y: scroll; + scrollbar-width: none; } .page section { margin-top: 50px; margin: auto; + margin-bottom: 40px; max-width: 700px; } @@ -147,8 +163,11 @@ section.loans-list { display: flex; flex-direction: column; width: fit-content; - margin: 0; + margin: 0 0 50px 0; justify-content: center; + border-left: 1px solid var(--text-lightest); + padding: 10px; + margin-bottom: 50px; } .loans-list h3:not(.sel) { @@ -160,13 +179,6 @@ section.loans-list { width: fit-content; } -.loans-list { - /* cursor: pointer; */ - border: 1px solid var(--text-lightest); - padding: 10px; - border-radius: 3px; -} - .loans-list .add svg { width: 35px; height: 35px; @@ -177,3 +189,21 @@ section.loans-list { .loans-list .add svg:hover { color: black; } + +section.radios { + display: grid; + grid-template-columns: 50px 1fr; + row-gap: 20px; + /* border-bottom: 1px solid var(--text-lightest); */ + /* padding-bottom: 50px; */ + /* box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; */ + /* border-radius: 3px; */ +} + +section.radios h3 { + grid-column: 1 / 3; +} + +.form.radios input { + height: 20px; +} diff --git a/components/new.vue b/components/new.vue index acfb234..204705b 100644 --- a/components/new.vue +++ b/components/new.vue @@ -6,8 +6,8 @@ <section class="loans-list"> <h3 v-for="(l, indx) in loans" -:class="selected == indx ? 'sel' : ''" -@click="() => selected = indx" +:class="sel == indx ? 'sel' : ''" +@click="() => sel = indx" > {{l.title}} </h3> @@ -21,19 +21,135 @@ fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> <path d="M8 4a.5.5 0 </section> +<section class="radios form"> +<h3>Transaction Type</h3> +<input type="radio" name="transaction_type" value="transaction" +@input="e => loans[sel].transaction = 0" +selected="loans[sel].transaction == 0"> +<label>Purchase</label> +<input type="radio" name="transaction_type" value="refinance" +@input="e => loans[sel].transaction = 1" +selected="loans[sel].transaction == 1"> +<label>Refinance</label> +</section> + +<section class="form"> +<h3>Property Details</h3> +<label>Price ($)</label> +<input :value="loans[sel].price" @input="setPrice"> +<label>Type</label> +<select id="" name="" v-model="loans[sel].property"> + <option value="attched">Single Family Attached</option> + <option value="detached">Single Family Detached</option> + <option value="lorise">Lo-rise (4 stories or less)</option> + <option value="hirise">Hi-rise (over 4 stories)</option> +</select> +<label></label> +</section> + +<section class="radios form"> +<h3>Loan Type</h3> +<input type="radio" name="loan_type" value="conv" v-model="loans[sel].type" +> +<label>Conventional</label> +<input type="radio" name="loan_type" value="fha" v-model="loans[sel].type"> +<label>FHA</label> +<input type="radio" name="loan_type" value="va" v-model="loans[sel].type"> +<label>VA</label> +<input type="radio" name="loan_type" value="usda" v-model="loans[sel].type"> +<label>USDA</label> +</section> + +<section class="form"> +<h3>Loan Details</h3> +<label>Loan Term (years)</label> +<input :value="loans[sel].term" +@input="(e) => loans[sel].term = parseInt(e.target.value.replace(/[^0-9]/g, ''))"> + +<label>Loan Program</label> +<select id="" name="" v-model="loans[sel].program"> + <option value="none">None</option> +</select> + +<label>Loan to Value</label> +<input :value="loans[sel].ltv" @input="setLtv"> +<label>Loan Amount</label> +<input :value="loans[sel].amount" +@input="setAmount"> +</section> + </div> </template> <script> +function setLtv(loan, ltv) { + if (ltv > 100) ltv = 100 + if (ltv < 0) ltv = 0 + + loan.ltv = ltv + loan.amount = ltv / 100 * loan.price +} + +function setAmount(e) { + let amount = parseInt(e.target.value.replace(/[^0-9]/g, '')) + let loan = this.loans[this.sel] + + if (amount > loan.price) amount = loan.price + if (amount < 0) amount = 0 + loan.amount = amount + loan.ltv = amount / loan.price * 100 +} + +function setPrice(e) { + let value = + parseInt(e.target.value.replace(/[^0-9]/g, '')) + // Should check for NaN after backspace + + console.log("the price is %s", value) + + this.loans[this.sel].price = + value +} + const loans = [ - {title: "Loan Example"}, - {title: "Another One"} + { + title: "Loan Example", + property: "", + transaction: 0, + type: "", + price: 0, + term: 0, + ltv: 0, + amount: 0, + program: "", + pud: false, + zip: '' + }, + { + title: "Another One", + property: "", + transaction: 0, + type: "", + price: 0, + term: 0, + ltv: 0, + program: "", + pud: true, + zip: '' + } +] + +const propertyTypes = [ + ] export default { + methods: { setPrice }, props: ['user'], data() { - return {loans: loans, selected: 0} + return { + loans: loans, sel: 0, loan: loans[0], + } } } </script> diff --git a/main.css b/main.css deleted file mode 100644 index e69de29..0000000