|
|
|
|
@ -28,6 +28,7 @@ export default class Tab {
|
|
|
|
|
_icon
|
|
|
|
|
_iconSvgSanitized
|
|
|
|
|
_mount
|
|
|
|
|
_setIsActive
|
|
|
|
|
_update
|
|
|
|
|
_destroy
|
|
|
|
|
_enabled
|
|
|
|
|
@ -42,12 +43,13 @@ export default class Tab {
|
|
|
|
|
* @param {?string} options.icon the icon css class
|
|
|
|
|
* @param {?string} options.iconSvg the icon in svg format
|
|
|
|
|
* @param {Function} options.mount function to mount the tab
|
|
|
|
|
* @param {Function} [options.setIsActive] function to forward the active state of the tab
|
|
|
|
|
* @param {Function} options.update function to update the tab
|
|
|
|
|
* @param {Function} options.destroy function to destroy the tab
|
|
|
|
|
* @param {Function} [options.enabled] define conditions whether this tab is active. Must returns a boolean
|
|
|
|
|
* @param {Function} [options.scrollBottomReached] executed when the tab is scrolled to the bottom
|
|
|
|
|
*/
|
|
|
|
|
constructor({ id, name, icon, iconSvg, mount, update, destroy, enabled, scrollBottomReached } = {}) {
|
|
|
|
|
constructor({ id, name, icon, iconSvg, mount, setIsActive, update, destroy, enabled, scrollBottomReached } = {}) {
|
|
|
|
|
if (enabled === undefined) {
|
|
|
|
|
enabled = () => true
|
|
|
|
|
}
|
|
|
|
|
@ -68,6 +70,9 @@ export default class Tab {
|
|
|
|
|
if (typeof mount !== 'function') {
|
|
|
|
|
throw new Error('The mount argument should be a function')
|
|
|
|
|
}
|
|
|
|
|
if (setIsActive !== undefined && typeof setIsActive !== 'function') {
|
|
|
|
|
throw new Error('The setIsActive argument should be a function')
|
|
|
|
|
}
|
|
|
|
|
if (typeof update !== 'function') {
|
|
|
|
|
throw new Error('The update argument should be a function')
|
|
|
|
|
}
|
|
|
|
|
@ -85,6 +90,7 @@ export default class Tab {
|
|
|
|
|
this._name = name
|
|
|
|
|
this._icon = icon
|
|
|
|
|
this._mount = mount
|
|
|
|
|
this._setIsActive = setIsActive
|
|
|
|
|
this._update = update
|
|
|
|
|
this._destroy = destroy
|
|
|
|
|
this._enabled = enabled
|
|
|
|
|
@ -119,6 +125,10 @@ export default class Tab {
|
|
|
|
|
return this._mount
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get setIsActive() {
|
|
|
|
|
return this._setIsActive || (() => undefined)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
get update() {
|
|
|
|
|
return this._update
|
|
|
|
|
}
|
|
|
|
|
|