diff options
Diffstat (limited to 'apps/files/src')
-rw-r--r-- | apps/files/src/models/Tab.js | 19 | ||||
-rw-r--r-- | apps/files/src/views/Sidebar.vue | 6 |
2 files changed, 16 insertions, 9 deletions
diff --git a/apps/files/src/models/Tab.js b/apps/files/src/models/Tab.js index 28902b0e754..2a045551c54 100644 --- a/apps/files/src/models/Tab.js +++ b/apps/files/src/models/Tab.js @@ -22,20 +22,27 @@ export default class Tab { - #component; - #legacy; - #name; + #component + #legacy + #name + #enabled /** * Create a new tab instance * * @param {string} name the name of this tab * @param {Object} component the vue component + * @param {Function} [enabled] function that returns if the tab should be shown or not * @param {boolean} [legacy] is this a legacy tab */ - constructor(name, component, legacy) { + constructor(name, component, enabled = () => true, legacy) { + if (typeof enabled !== 'function') { + throw new Error('The enabled argument should be a function') + } + this.#name = name this.#component = component + this.#enabled = enabled this.#legacy = legacy === true if (this.#legacy) { @@ -52,6 +59,10 @@ export default class Tab { return this.#component } + get isEnabled() { + return this.#enabled + } + get isLegacyTab() { return this.#legacy === true } diff --git a/apps/files/src/views/Sidebar.vue b/apps/files/src/views/Sidebar.vue index 1758b510b17..97958afa902 100644 --- a/apps/files/src/views/Sidebar.vue +++ b/apps/files/src/views/Sidebar.vue @@ -255,11 +255,7 @@ export default { * @returns {boolean} */ canDisplay(tab) { - if (tab.isLegacyTab) { - return this.fileInfo && tab.component.canDisplay && tab.component.canDisplay(this.fileInfo) - } - // if the tab does not have an enabled method, we assume it's always available - return tab.enabled ? tab.enabled(this.fileInfo) : true + return tab.isEnabled(this.fileInfo) }, onClose() { this.resetData() |