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