diff --git a/css/sideMenu.css b/css/sideMenu.css index f7661e4..6fbd51b 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -49,7 +49,7 @@ border: 0; } -#side-menu.hide-opener .side-menu-opener { +#side-menu.hide-opener .side-menu-opener, .side-menu-opener.hide { display: none; } diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 0bbeebf..0c98d33 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -54,6 +54,7 @@ class JsController extends Controller $parameters = [ 'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'), 'opener-hover' => (bool) $this->config->getAppValue('side_menu', 'opener-hover', '0'), + 'hide-when-no-apps' => (bool) $this->config->getAppValue('side_menu', 'hide-when-no-apps', '0'), ]; $response = new TemplateResponse('side_menu', 'js/script', $parameters, 'blank'); diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index fd889db..083d58b 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -61,6 +61,7 @@ class Admin implements ISettings 'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'), 'opener-hover' => $this->config->getAppValue('side_menu', 'opener-hover', '0'), 'opener-only' => $this->config->getAppValue('side_menu', 'opener-only', '0'), + 'hide-when-no-apps' => $this->config->getAppValue('side_menu', 'hide-when-no-apps', '0'), 'size-icon' => $this->config->getAppValue('side_menu', 'size-icon', 'normal'), 'size-text' => $this->config->getAppValue('side_menu', 'size-text', 'normal'), ]; diff --git a/src/SideMenu.js b/src/SideMenu.js index 0e5c8dd..dd7d323 100644 --- a/src/SideMenu.js +++ b/src/SideMenu.js @@ -30,6 +30,7 @@ const mountSideMenuComponent = () => { if (sideMenuContainer) { sideMenu.$mount('#side-menu') + $('body').trigger('side-menu.ready') } else { window.setTimeout(mountSideMenuComponent, 50) diff --git a/src/SideMenu.vue b/src/SideMenu.vue index 8c796df..7593222 100644 --- a/src/SideMenu.vue +++ b/src/SideMenu.vue @@ -46,8 +46,8 @@ export default { }, methods: { retrieveApps() { - this.apps = []; - const links = document.querySelectorAll('#appmenu a'); + this.apps = [] + const links = document.querySelectorAll('#appmenu a') for (let element of links) { let href = element.getAttribute('href') @@ -65,6 +65,12 @@ export default { }); } } + + (function(apps) { + window.setTimeout(function() { + jQuery('body').trigger('side-menu.apps', [apps]) + }, 1000) + })(this.apps) }, retrieveLogo() { const ncLogo = document.querySelector('#nextcloud .logo') diff --git a/src/admin.js b/src/admin.js index a05bd00..fe2a18e 100644 --- a/src/admin.js +++ b/src/admin.js @@ -25,6 +25,7 @@ const elements = [ 'side-menu-opener-hover', 'side-menu-opener-only', 'side-menu-display-logo', + 'side-menu-hide-when-no-apps', 'side-menu-size-icon', 'side-menu-size-text', 'side-menu-cache', diff --git a/templates/js/script.php b/templates/js/script.php index b93058e..33a9f50 100644 --- a/templates/js/script.php +++ b/templates/js/script.php @@ -3,19 +3,21 @@ var sideMenuOpener = $('') var sideMenu = $('
') var body = $('body') - - body.append(sideMenuContainer) - - sideMenuContainer.append(sideMenu) - - - sideMenuOpener.insertBefore('#nextcloud') - - sideMenuOpener.insertAfter('#nextcloud') - - var isTouchDevice = window.matchMedia("(pointer: coarse)").matches + body.on('side-menu.apps', function(e, apps) { + + sideMenu = $('#side-menu') + + if (apps.length === 0) { + sideMenu.removeClass('open') + sideMenuOpener.addClass('hide') + } else { + sideMenuOpener.removeClass('hide') + } + + }) + body.on('side-menu.ready', function() { sideMenu = $('#side-menu') @@ -54,4 +56,13 @@ sideMenu.removeClass('open'); }) }) + + body.append(sideMenuContainer) + sideMenuContainer.append(sideMenu) + + + sideMenuOpener.insertBefore('#nextcloud') + + sideMenuOpener.insertAfter('#nextcloud') + })(); diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index 20cdb31..ac1df82 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -151,6 +151,22 @@ $choicesSizes = [
+ +
+ +
+ +
+ +