silika-website/wwwroot/assets/js/app-invoice-edit.js

135 lines
3.6 KiB
JavaScript

/**
* App Invoice - Edit
*/
'use strict';
(function () {
const invoiceItemPriceList = document.querySelectorAll('.invoice-item-price'),
invoiceItemQtyList = document.querySelectorAll('.invoice-item-qty'),
date = new Date(),
invoiceDate = document.querySelector('.invoice-date'),
dueDate = document.querySelector('.due-date');
// Price
if (invoiceItemPriceList) {
invoiceItemPriceList.forEach(function (invoiceItemPrice) {
new Cleave(invoiceItemPrice, {
delimiter: '',
numeral: true
});
});
}
// Qty
if (invoiceItemQtyList) {
invoiceItemQtyList.forEach(function (invoiceItemQty) {
new Cleave(invoiceItemQty, {
delimiter: '',
numeral: true
});
});
}
// Datepicker
if (invoiceDate) {
invoiceDate.flatpickr({
monthSelectorType: 'static',
defaultDate: date
});
}
if (dueDate) {
dueDate.flatpickr({
monthSelectorType: 'static',
defaultDate: new Date(date.getFullYear(), date.getMonth(), date.getDate() + 5)
});
}
})();
// repeater (jquery)
$(function () {
var applyChangesBtn = $('.btn-apply-changes'),
discount,
tax1,
tax2,
discountInput,
taxInput1,
taxInput2,
sourceItem = $('.source-item'),
adminDetails = {
'App Design': 'Designed UI kit & app pages.',
'App Customization': 'Customization & Bug Fixes.',
'ABC Template': 'Bootstrap 4 admin template.',
'App Development': 'Native App Development.'
};
// Prevent dropdown from closing on tax change
$(document).on('click', '.tax-select', function (e) {
e.stopPropagation();
});
// On tax change update it's value value
function updateValue(listener, el) {
listener.closest('.repeater-wrapper').find(el).text(listener.val());
}
// Apply item changes btn
if (applyChangesBtn.length) {
$(document).on('click', '.btn-apply-changes', function (e) {
var $this = $(this);
taxInput1 = $this.closest('.dropdown-menu').find('#taxInput1');
taxInput2 = $this.closest('.dropdown-menu').find('#taxInput2');
discountInput = $this.closest('.dropdown-menu').find('#discountInput');
tax1 = $this.closest('.repeater-wrapper').find('.tax-1');
tax2 = $this.closest('.repeater-wrapper').find('.tax-2');
discount = $('.discount');
if (taxInput1.val() !== null) {
updateValue(taxInput1, tax1);
}
if (taxInput2.val() !== null) {
updateValue(taxInput2, tax2);
}
if (discountInput.val().length) {
$this
.closest('.repeater-wrapper')
.find(discount)
.text(discountInput.val() + '%');
}
});
}
// Repeater init
if (sourceItem.length) {
sourceItem.on('submit', function (e) {
e.preventDefault();
});
sourceItem.repeater({
show: function () {
$(this).slideDown();
// Initialize tooltip on load of each item
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
},
hide: function (e) {
$(this).slideUp();
}
});
}
// Item details select onchange
$(document).on('change', '.item-details', function () {
var $this = $(this),
value = adminDetails[$this.val()];
if ($this.next('textarea').length) {
$this.next('textarea').val(value);
} else {
$this.after('<textarea class="form-control" rows="2">' + value + '</textarea>');
}
});
});