]> BookStack Code Mirror - bookstack/blob - resources/js/components/tag-manager.js
b51cfe9b2c2609a9dbe15e2c45e126dbd641f401
[bookstack] / resources / js / components / tag-manager.js
1 import {Component} from "./component";
2
3 export class TagManager extends Component {
4     setup() {
5         this.addRemoveComponentEl = this.$refs.addRemove;
6         this.container = this.$el;
7         this.rowSelector = this.$opts.rowSelector;
8
9         this.setupListeners();
10     }
11
12     setupListeners() {
13         this.container.addEventListener('change', event => {
14             const addRemoveComponent = this.addRemoveComponentEl.components['add-remove-rows'];
15             if (!this.hasEmptyRows()) {
16                 addRemoveComponent.add();
17             }
18         });
19     }
20
21     hasEmptyRows() {
22         const rows = this.container.querySelectorAll(this.rowSelector);
23         const firstEmpty = [...rows].find(row => {
24             return [...row.querySelectorAll('input')].filter(input => input.value).length === 0;
25         });
26         return firstEmpty !== undefined;
27     }
28 }