aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/src/models/Tab.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/src/models/Tab.js')
-rw-r--r--apps/files/src/models/Tab.js19
1 files changed, 15 insertions, 4 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
}