diff options
Diffstat (limited to 'apps/files/src/sidebar.ts')
-rw-r--r-- | apps/files/src/sidebar.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/apps/files/src/sidebar.ts b/apps/files/src/sidebar.ts new file mode 100644 index 00000000000..35a379ad649 --- /dev/null +++ b/apps/files/src/sidebar.ts @@ -0,0 +1,54 @@ +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import Vue from 'vue' +import { translate as t } from '@nextcloud/l10n' + +import SidebarView from './views/Sidebar.vue' +import Sidebar from './services/Sidebar.js' +import Tab from './models/Tab.js' + +Vue.prototype.t = t + +// Init Sidebar Service +if (!window.OCA.Files) { + window.OCA.Files = {} +} +Object.assign(window.OCA.Files, { Sidebar: new Sidebar() }) +Object.assign(window.OCA.Files.Sidebar, { Tab }) + +window.addEventListener('DOMContentLoaded', function() { + const contentElement = document.querySelector('body > .content') + || document.querySelector('body > #content') + + let vueParent + + // Make sure we have a proper layout + if (contentElement) { + // Make sure we have a mountpoint + if (!document.getElementById('app-sidebar')) { + const sidebarElement = document.createElement('div') + sidebarElement.id = 'app-sidebar' + contentElement.appendChild(sidebarElement) + } + + // Helps with vue debug, as we mount the sidebar to the + // content element which is a vue instance itself + vueParent = contentElement.__vue__ as Vue + } + + // Init vue app + const View = Vue.extend(SidebarView) + const AppSidebar = new View({ + name: 'SidebarRoot', + parent: vueParent, + }).$mount('#app-sidebar') + + // Expose Sidebar methods + window.OCA.Files.Sidebar.open = AppSidebar.open + window.OCA.Files.Sidebar.close = AppSidebar.close + window.OCA.Files.Sidebar.setFullScreenMode = AppSidebar.setFullScreenMode + window.OCA.Files.Sidebar.setShowTagsDefault = AppSidebar.setShowTagsDefault +}) |