56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
|
const ScopeSelector = {
|
||
|
props: [
|
||
|
'showAll',
|
||
|
'userEnabled',
|
||
|
'userDefault',
|
||
|
'originalScope',
|
||
|
'initialScope',
|
||
|
'onScopeChange'
|
||
|
],
|
||
|
data () {
|
||
|
return {
|
||
|
currentScope: this.initialScope
|
||
|
}
|
||
|
},
|
||
|
computed: {
|
||
|
showNothing () {
|
||
|
return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect
|
||
|
},
|
||
|
showPublic () {
|
||
|
return this.originalScope !== 'direct' && this.shouldShow('public')
|
||
|
},
|
||
|
showUnlisted () {
|
||
|
return this.originalScope !== 'direct' && this.shouldShow('unlisted')
|
||
|
},
|
||
|
showPrivate () {
|
||
|
return this.originalScope !== 'direct' && this.shouldShow('private')
|
||
|
},
|
||
|
showDirect () {
|
||
|
return this.shouldShow('direct')
|
||
|
},
|
||
|
css () {
|
||
|
return {
|
||
|
public: {selected: this.currentScope === 'public'},
|
||
|
unlisted: {selected: this.currentScope === 'unlisted'},
|
||
|
private: {selected: this.currentScope === 'private'},
|
||
|
direct: {selected: this.currentScope === 'direct'}
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
methods: {
|
||
|
shouldShow (scope) {
|
||
|
return this.showAll ||
|
||
|
this.currentScope === scope ||
|
||
|
this.originalScope === scope ||
|
||
|
this.userDefault === scope ||
|
||
|
this.userEnabled.includes(scope)
|
||
|
},
|
||
|
changeVis (scope) {
|
||
|
this.currentScope = scope
|
||
|
this.onScopeChange && this.onScopeChange(scope)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default ScopeSelector
|