silika-website/wwwroot/assets/js/forms-extras.js

165 lines
4.0 KiB
JavaScript

/**
* Form Extras
*/
'use strict';
(function () {
const textarea = document.querySelector('#autosize-demo'),
creditCard = document.querySelector('.credit-card-mask'),
phoneMask = document.querySelector('.phone-number-mask'),
dateMask = document.querySelector('.date-mask'),
timeMask = document.querySelector('.time-mask'),
numeralMask = document.querySelector('.numeral-mask'),
blockMask = document.querySelector('.block-mask'),
delimiterMask = document.querySelector('.delimiter-mask'),
customDelimiter = document.querySelector('.custom-delimiter-mask'),
prefixMask = document.querySelector('.prefix-mask');
// Autosize
// --------------------------------------------------------------------
if (textarea) {
autosize(textarea);
}
// Cleave JS Input Mask
// --------------------------------------------------------------------
// Credit Card
if (creditCard) {
new Cleave(creditCard, {
creditCard: true,
onCreditCardTypeChanged: function (type) {
if (type != '' && type != 'unknown') {
document.querySelector('.card-type').innerHTML =
'<img src="' + assetsPath + 'img/icons/payments/' + type + '-cc.png" height="28"/>';
} else {
document.querySelector('.card-type').innerHTML = '';
}
}
});
}
// Phone Number
if (phoneMask) {
new Cleave(phoneMask, {
phone: true,
phoneRegionCode: 'US'
});
}
// Date
if (dateMask) {
new Cleave(dateMask, {
date: true,
delimiter: '-',
datePattern: ['Y', 'm', 'd']
});
}
// Time
if (timeMask) {
new Cleave(timeMask, {
time: true,
timePattern: ['h', 'm', 's']
});
}
//Numeral
if (numeralMask) {
new Cleave(numeralMask, {
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
}
//Block
if (blockMask) {
new Cleave(blockMask, {
blocks: [4, 3, 3],
uppercase: true
});
}
// Delimiter
if (delimiterMask) {
new Cleave(delimiterMask, {
delimiter: '·',
blocks: [3, 3, 3],
uppercase: true
});
}
// Custom Delimiter
if (customDelimiter) {
new Cleave(customDelimiter, {
delimiters: ['.', '.', '-'],
blocks: [3, 3, 3, 2],
uppercase: true
});
}
// Prefix
if (prefixMask) {
new Cleave(prefixMask, {
prefix: '+63',
blocks: [3, 3, 3, 4],
uppercase: true
});
}
})();
// bootstrap-maxlength & repeater (jquery)
$(function () {
var maxlengthInput = $('.bootstrap-maxlength-example'),
formRepeater = $('.form-repeater');
// Bootstrap Max Length
// --------------------------------------------------------------------
if (maxlengthInput.length) {
maxlengthInput.each(function () {
$(this).maxlength({
warningClass: 'label label-success bg-success text-white',
limitReachedClass: 'label label-danger',
separator: ' out of ',
preText: 'You typed ',
postText: ' chars available.',
validate: true,
threshold: +this.getAttribute('maxlength')
});
});
}
// Form Repeater
// ! Using jQuery each loop to add dynamic id and class for inputs. You may need to improve it based on form fields.
// -----------------------------------------------------------------------------------------------------------------
if (formRepeater.length) {
var row = 2;
var col = 1;
formRepeater.on('submit', function (e) {
e.preventDefault();
});
formRepeater.repeater({
show: function () {
var fromControl = $(this).find('.form-control, .form-select');
var formLabel = $(this).find('.form-label');
fromControl.each(function (i) {
var id = 'form-repeater-' + row + '-' + col;
$(fromControl[i]).attr('id', id);
$(formLabel[i]).attr('for', id);
col++;
});
row++;
$(this).slideDown();
},
hide: function (e) {
confirm('Are you sure you want to delete this element?') && $(this).slideUp(e);
}
});
}
});