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