Fix legacy tabs
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
parent
cd6a193793
commit
b476659ac8
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -3658,10 +3658,9 @@
|
||||||
*/
|
*/
|
||||||
registerTabView: function(tabView) {
|
registerTabView: function(tabView) {
|
||||||
console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.');
|
console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.');
|
||||||
const name = tabView.getLabel()
|
|
||||||
const enabled = tabView.canDisplay || undefined
|
const enabled = tabView.canDisplay || undefined
|
||||||
if (name) {
|
if (tabView.id) {
|
||||||
OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab(name, tabView, enabled, true))
|
OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab(tabView.id, tabView, enabled, true))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,9 @@
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<AppSidebarTab :icon="icon"
|
<AppSidebarTab
|
||||||
|
:id="id"
|
||||||
|
:icon="icon"
|
||||||
:name="name"
|
:name="name"
|
||||||
:active-tab="activeTab" />
|
:active-tab="activeTab" />
|
||||||
</template>
|
</template>
|
||||||
|
@ -38,7 +40,7 @@ export default {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
name: {
|
id: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
@ -52,9 +54,8 @@ export default {
|
||||||
icon() {
|
icon() {
|
||||||
return this.component.getIcon()
|
return this.component.getIcon()
|
||||||
},
|
},
|
||||||
id() {
|
name() {
|
||||||
// copied from AppSidebarTab
|
return this.component.getLabel()
|
||||||
return this.name.toLowerCase().replace(/ /g, '-')
|
|
||||||
},
|
},
|
||||||
order() {
|
order() {
|
||||||
return this.component.order
|
return this.component.order
|
||||||
|
|
|
@ -24,23 +24,23 @@ export default class Tab {
|
||||||
|
|
||||||
#component
|
#component
|
||||||
#legacy
|
#legacy
|
||||||
#name
|
#id
|
||||||
#enabled
|
#enabled
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new tab instance
|
* Create a new tab instance
|
||||||
*
|
*
|
||||||
* @param {string} name the name of this tab
|
* @param {string} id the unique id of this tab
|
||||||
* @param {Object} component the vue component
|
* @param {Object} component the vue component
|
||||||
* @param {Function} [enabled] function that returns if the tab should be shown or not
|
* @param {Function} [enabled] function that returns if the tab should be shown or not
|
||||||
* @param {boolean} [legacy] is this a legacy tab
|
* @param {boolean} [legacy] is this a legacy tab
|
||||||
*/
|
*/
|
||||||
constructor(name, component, enabled = () => true, legacy) {
|
constructor(id, component, enabled = () => true, legacy) {
|
||||||
if (typeof enabled !== 'function') {
|
if (typeof enabled !== 'function') {
|
||||||
throw new Error('The enabled argument should be a function')
|
throw new Error('The enabled argument should be a function')
|
||||||
}
|
}
|
||||||
|
|
||||||
this.#name = name
|
this.#id = id
|
||||||
this.#component = component
|
this.#component = component
|
||||||
this.#enabled = enabled
|
this.#enabled = enabled
|
||||||
this.#legacy = legacy === true
|
this.#legacy = legacy === true
|
||||||
|
@ -51,8 +51,8 @@ export default class Tab {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get name() {
|
get id() {
|
||||||
return this.#name
|
return this.#id
|
||||||
}
|
}
|
||||||
|
|
||||||
get component() {
|
get component() {
|
||||||
|
|
|
@ -56,17 +56,17 @@ export default class Sidebar {
|
||||||
* @returns {Boolean}
|
* @returns {Boolean}
|
||||||
*/
|
*/
|
||||||
registerTab(tab) {
|
registerTab(tab) {
|
||||||
const hasDuplicate = this.#state.tabs.findIndex(check => check.name === tab.name) > -1
|
const hasDuplicate = this.#state.tabs.findIndex(check => check.id === tab.id) > -1
|
||||||
if (!hasDuplicate) {
|
if (!hasDuplicate) {
|
||||||
this.#state.tabs.push(tab)
|
this.#state.tabs.push(tab)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
console.error(`An tab with the same name ${tab.name} already exists`, tab)
|
console.error(`An tab with the same id ${tab.id} already exists`, tab)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
registerSecondaryView(view) {
|
registerSecondaryView(view) {
|
||||||
const hasDuplicate = this.#state.views.findIndex(check => check.name === view.name) > -1
|
const hasDuplicate = this.#state.views.findIndex(check => check.id === view.id) > -1
|
||||||
if (!hasDuplicate) {
|
if (!hasDuplicate) {
|
||||||
this.#state.views.push(view)
|
this.#state.views.push(view)
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
<component
|
<component
|
||||||
:is="tabComponent(tab).is"
|
:is="tabComponent(tab).is"
|
||||||
v-if="canDisplay(tab)"
|
v-if="canDisplay(tab)"
|
||||||
|
:id="tab.id"
|
||||||
:key="tab.id"
|
:key="tab.id"
|
||||||
:component="tabComponent(tab).component"
|
:component="tabComponent(tab).component"
|
||||||
:name="tab.name"
|
:name="tab.name"
|
||||||
|
|
Loading…
Reference in New Issue