]> BookStack Code Mirror - bookstack/blob - resources/js/components/expand-toggle.js
Updated a whole load more js components
[bookstack] / resources / js / components / expand-toggle.js
1 import {slideUp, slideDown} from "../services/animations";
2 import {Component} from "./component";
3
4 export class ExpandToggle extends Component {
5
6     setup(elem) {
7         this.targetSelector = this.$opts.targetSelector;
8         this.isOpen = this.$opts.isOpen === 'true';
9         this.updateEndpoint = this.$opts.updateEndpoint;
10
11         // Listener setup
12         this.$el.addEventListener('click', this.click.bind(this));
13     }
14
15     open(elemToToggle) {
16         slideDown(elemToToggle, 200);
17     }
18
19     close(elemToToggle) {
20         slideUp(elemToToggle, 200);
21     }
22
23     click(event) {
24         event.preventDefault();
25
26         const matchingElems = document.querySelectorAll(this.targetSelector);
27         for (let match of matchingElems) {
28             this.isOpen ?  this.close(match) : this.open(match);
29         }
30
31         this.isOpen = !this.isOpen;
32         this.updateSystemAjax(this.isOpen);
33     }
34
35     updateSystemAjax(isOpen) {
36         window.$http.patch(this.updateEndpoint, {
37             expand: isOpen ? 'true' : 'false'
38         });
39     }
40
41 }