X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/14b6cd1091a8e111081787b4b7ef932552786853..refs/pull/2227/head:/resources/js/components/attachments.js diff --git a/resources/js/components/attachments.js b/resources/js/components/attachments.js index 49ba8f388..51e54054e 100644 --- a/resources/js/components/attachments.js +++ b/resources/js/components/attachments.js @@ -1,14 +1,16 @@ - /** * Attachments * @extends {Component} */ +import {showLoading} from "../services/dom"; + class Attachments { setup() { this.container = this.$el; this.pageId = this.$opts.pageId; this.editContainer = this.$refs.editContainer; + this.listContainer = this.$refs.listContainer; this.mainTabs = this.$refs.mainTabs; this.list = this.$refs.list; @@ -16,23 +18,30 @@ class Attachments { } setupListeners() { - this.container.addEventListener('dropzone-success', event => { - this.mainTabs.components.tabs.show('items'); - window.$http.get(`/attachments/get/page/${this.pageId}`).then(resp => { - this.list.innerHTML = resp.data; - window.components.init(this.list); - }) - }); + const reloadListBound = this.reloadList.bind(this); + this.container.addEventListener('dropzone-success', reloadListBound); + this.container.addEventListener('ajax-form-success', reloadListBound); this.container.addEventListener('sortable-list-sort', event => { this.updateOrder(event.detail.ids); }); - this.editContainer.addEventListener('keypress', event => { - if (event.key === 'Enter') { - // TODO - Update editing file - } - }) + this.container.addEventListener('event-emit-select-edit', event => { + this.startEdit(event.detail.id); + }); + + this.container.addEventListener('event-emit-select-edit-back', event => { + this.stopEdit(); + }); + } + + reloadList() { + this.stopEdit(); + this.mainTabs.components.tabs.show('items'); + window.$http.get(`/attachments/get/page/${this.pageId}`).then(resp => { + this.list.innerHTML = resp.data; + window.components.init(this.list); + }); } updateOrder(idOrder) { @@ -41,6 +50,21 @@ class Attachments { }); } + async startEdit(id) { + this.editContainer.classList.remove('hidden'); + this.listContainer.classList.add('hidden'); + + showLoading(this.editContainer); + const resp = await window.$http.get(`/attachments/edit/${id}`); + this.editContainer.innerHTML = resp.data; + window.components.init(this.editContainer); + } + + stopEdit() { + this.editContainer.classList.add('hidden'); + this.listContainer.classList.remove('hidden'); + } + } export default Attachments; \ No newline at end of file