"use strict"; // Class definition var KTModalOfferADealDetails = function () { // Variables var nextButton; var previousButton; var validator; var form; var stepper; // Private functions var initForm = function() { // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ var dueDate = $(form.querySelector('[name="details_activation_date"]')); dueDate.flatpickr({ enableTime: true, dateFormat: "d, M Y, H:i", }); // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ $(form.querySelector('[name="details_customer"]')).on('change', function() { // Revalidate the field when an option is chosen validator.revalidateField('details_customer'); }); } var initValidation = function() { // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ validator = FormValidation.formValidation( form, { fields: { 'details_customer': { validators: { notEmpty: { message: 'Customer is required' } } }, 'details_title': { validators: { notEmpty: { message: 'Deal title is required' } } }, 'details_activation_date': { validators: { notEmpty: { message: 'Activation date is required' } } }, 'details_notifications[]': { validators: { notEmpty: { message: 'Notifications are required' } } } }, plugins: { trigger: new FormValidation.plugins.Trigger(), bootstrap: new FormValidation.plugins.Bootstrap5({ rowSelector: '.fv-row', eleInvalidClass: '', eleValidClass: '' }) } } ); } var handleForm = function() { nextButton.addEventListener('click', function (e) { // Prevent default button action e.preventDefault(); // Disable button to avoid multiple click nextButton.disabled = true; // Validate form before submit if (validator) { validator.validate().then(function (status) { console.log('validated!'); if (status == 'Valid') { // Show loading indication nextButton.setAttribute('data-kt-indicator', 'on'); // Simulate form submission setTimeout(function() { // Simulate form submission nextButton.removeAttribute('data-kt-indicator'); // Enable button nextButton.disabled = false; // Go to next step stepper.goNext(); }, 1500); } else { // Enable button nextButton.disabled = false; // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ Swal.fire({ text: "Sorry, looks like there are some errors detected, please try again.", icon: "error", buttonsStyling: false, confirmButtonText: "Ok, got it!", customClass: { confirmButton: "btn btn-primary" } }); } }); } }); previousButton.addEventListener('click', function () { // Go to previous step stepper.goPrevious(); }); } return { // Public functions init: function () { form = KTModalOfferADeal.getForm(); stepper = KTModalOfferADeal.getStepperObj(); nextButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="details-next"]'); previousButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="details-previous"]'); initForm(); initValidation(); handleForm(); } }; }(); // Webpack support if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { window.KTModalOfferADealDetails = module.exports = KTModalOfferADealDetails; }