139 lines
4.7 KiB
JavaScript
139 lines
4.7 KiB
JavaScript
|
|
(function ($) {
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Checkbox: Select All
|
||
|
|
*/
|
||
|
|
$(".checkAll").on("click", function () {
|
||
|
|
$("input:checkbox").not(this).prop("checked", this.checked);
|
||
|
|
});
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Toggle Period Duration
|
||
|
|
*/
|
||
|
|
$("#is_period").on("change", function () {
|
||
|
|
if ($(this).val() == 1) {
|
||
|
|
$(".period_duration").removeClass("d-none");
|
||
|
|
} else {
|
||
|
|
$(".period_duration").addClass("d-none");
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Dismiss Notification
|
||
|
|
*/
|
||
|
|
$(".anna-dismiss").on("click", function () {
|
||
|
|
$(".top-header-area").fadeOut();
|
||
|
|
});
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Form Validation Initialization
|
||
|
|
*/
|
||
|
|
$.fn.initFormValidation = function () {
|
||
|
|
let validator = $(this).validate({
|
||
|
|
errorClass: "error",
|
||
|
|
highlight: function (element, errorClass) {
|
||
|
|
let $element = $(element);
|
||
|
|
|
||
|
|
if ($element.hasClass("select2-hidden-accessible")) {
|
||
|
|
$("#select2-" + $element.attr("id") + "-container").parent().addClass(errorClass);
|
||
|
|
} else if ($element.parents().hasClass("image-checkbox")) {
|
||
|
|
Notify("error", null, $element.parent().data("required"));
|
||
|
|
} else {
|
||
|
|
$element.addClass(errorClass);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
unhighlight: function (element, errorClass) {
|
||
|
|
let $element = $(element);
|
||
|
|
|
||
|
|
if ($element.hasClass("select2-hidden-accessible")) {
|
||
|
|
$("#select2-" + $element.attr("id") + "-container").parent().removeClass(errorClass);
|
||
|
|
} else {
|
||
|
|
$element.removeClass(errorClass);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
errorPlacement: function (error, element) {
|
||
|
|
let $element = $(element);
|
||
|
|
|
||
|
|
if ($element.hasClass("select2-hidden-accessible")) {
|
||
|
|
let container = $("#select2-" + $element.attr("id") + "-container").parent();
|
||
|
|
error.insertAfter(container);
|
||
|
|
} else if ($element.parent().hasClass("form-floating")) {
|
||
|
|
error.insertAfter($element.parent().css("color", "text-danger"));
|
||
|
|
} else if ($element.parent().hasClass("input-group")) {
|
||
|
|
error.insertAfter($element.parent());
|
||
|
|
} else {
|
||
|
|
error.insertAfter($element);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
$(this).on("select2:select", function () {
|
||
|
|
if (!$.isEmptyObject(validator.submitted)) {
|
||
|
|
validator.form();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Select2 Initialization
|
||
|
|
*/
|
||
|
|
function initializeSelect2() {
|
||
|
|
if (typeof jQuery !== "undefined" && $.fn.select2 !== undefined) {
|
||
|
|
document
|
||
|
|
.querySelectorAll('[data-control="select2"]')
|
||
|
|
.forEach((element) => {
|
||
|
|
let options = {
|
||
|
|
dir: document.body.getAttribute("direction"),
|
||
|
|
};
|
||
|
|
|
||
|
|
if (element.getAttribute("data-hide-search") === "true") {
|
||
|
|
options.minimumResultsForSearch = Infinity;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (element.hasAttribute("data-placeholder")) {
|
||
|
|
options.placeholder = element.getAttribute("data-placeholder");
|
||
|
|
}
|
||
|
|
|
||
|
|
$(document).ready(function () {
|
||
|
|
$(element).select2(options);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
$(document).on("select2:open", function () {
|
||
|
|
let searchFields = document.querySelectorAll(".select2-container--open .select2-search__field");
|
||
|
|
if (searchFields.length > 0) {
|
||
|
|
searchFields[searchFields.length - 1].focus();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Handle Session Message on Page Load
|
||
|
|
*/
|
||
|
|
$(document).ready(function () {
|
||
|
|
if (window.sessionStorage.hasPreviousMessage === "true") {
|
||
|
|
Notify(window.sessionStorage?.notifyType ?? "success", null, window.sessionStorage.previousMessage, window.sessionStorage.redirect);
|
||
|
|
window.sessionStorage.hasPreviousMessage = false;
|
||
|
|
window.sessionStorage.notifyType = "success";
|
||
|
|
}
|
||
|
|
|
||
|
|
initializeSelect2();
|
||
|
|
});
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Select All Checkbox Functionality
|
||
|
|
*/
|
||
|
|
if ($("#selectAll").length > 0) {
|
||
|
|
let selectAll = document.querySelector("#selectAll");
|
||
|
|
let checkboxes = document.querySelectorAll('[type="checkbox"]');
|
||
|
|
|
||
|
|
selectAll.addEventListener("change", (event) => {
|
||
|
|
checkboxes.forEach((checkbox) => {
|
||
|
|
checkbox.checked = event.target.checked;
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
})(jQuery);
|