summaryrefslogtreecommitdiff
path: root/html/assets/js/plugins/accordion.js
diff options
context:
space:
mode:
authorGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-03-12 23:57:48 +0200
committerGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-03-12 23:57:48 +0200
commit7aa203150fc1a2ec79c681c13f0d486d531746eb (patch)
treef09ba9f69ccd434e9c7fdeb41807fc8008784d8a /html/assets/js/plugins/accordion.js
parent221af3a2e035bd6689294509feb52f286d3bd5be (diff)
downloadclassroom-7aa203150fc1a2ec79c681c13f0d486d531746eb.tar.gz
classroom-7aa203150fc1a2ec79c681c13f0d486d531746eb.tar.bz2
classroom-7aa203150fc1a2ec79c681c13f0d486d531746eb.zip
error pages; js system to support back/front-end
Diffstat (limited to 'html/assets/js/plugins/accordion.js')
-rw-r--r--html/assets/js/plugins/accordion.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/html/assets/js/plugins/accordion.js b/html/assets/js/plugins/accordion.js
new file mode 100644
index 0000000..62e25ad
--- /dev/null
+++ b/html/assets/js/plugins/accordion.js
@@ -0,0 +1,43 @@
+$$plugins.define('accordion', ['domHelper'], function (element, options, $) {
+ var animating = false,
+ $header = $(element).find('.acc:not(.acc--disabled) .acc__header'),
+ $content,
+ $prevActiveAcc,
+ $this,
+ $accItem,
+ singleOpen = options.singleOpen ? options.singleOpen : false;
+
+ $header.on('click', function (e) {
+ $this = $(this);
+ $accItem = $this.parent('.acc');
+ $content = $this.next('.acc__content');
+ if (animating === true) {
+ return;
+ }
+ animating = true;
+ if ($accItem.is('.open')) {
+ $content.slideUp(300, function () {
+ $accItem.removeClass('open');
+ $content.removeAttr('style');
+ animating = false;
+ });
+ } else {
+ $content.slideDown(300, function () {
+ $accItem.addClass('open');
+ $content.removeAttr('style');
+ animating = false;
+ });
+
+ if (singleOpen) {
+ $prevActiveAcc = $accItem.siblings('.acc.open');
+ if ($prevActiveAcc.length != 0) {
+ $prevActiveAcc.find('.acc__content').slideUp(300, function () {
+ $prevActiveAcc.removeClass('open');
+ $prevActiveAcc.find('.acc__content').removeAttr('style');
+ animating = false;
+ });
+ }
+ }
+ }
+ });
+});