made draft-mode and source inject-able
This commit is contained in:
parent
6b40fc9895
commit
2bf224e214
7 changed files with 50 additions and 84 deletions
|
|
@ -31,10 +31,18 @@ export default {
|
|||
},
|
||||
source: {
|
||||
type: String,
|
||||
default: 'default'
|
||||
default: undefined
|
||||
},
|
||||
draftMode: {
|
||||
type: Boolean,
|
||||
default: undefined
|
||||
}
|
||||
},
|
||||
inject: {
|
||||
defaultSource: {
|
||||
default: 'default'
|
||||
},
|
||||
defaultDraftMode: {
|
||||
default: false
|
||||
}
|
||||
},
|
||||
|
|
@ -44,7 +52,7 @@ export default {
|
|||
}
|
||||
},
|
||||
created () {
|
||||
if (this.draftMode) {
|
||||
if (this.realDraftMode) {
|
||||
this.draft = this.state
|
||||
}
|
||||
},
|
||||
|
|
@ -57,6 +65,12 @@ export default {
|
|||
return value
|
||||
}
|
||||
},
|
||||
realSource () {
|
||||
return this.source || this.defaultSource
|
||||
},
|
||||
realDraftMode () {
|
||||
return typeof this.draftMode === 'undefined' ? this.defaultDraftMode : this.draftMode
|
||||
},
|
||||
backendDescription () {
|
||||
return get(this.$store.state.adminSettings.descriptions, this.path)
|
||||
},
|
||||
|
|
@ -74,7 +88,8 @@ export default {
|
|||
return this.disabled || (parentValue !== null ? (this.parentInvert ? parentValue : !parentValue) : false)
|
||||
},
|
||||
configSource () {
|
||||
switch (this.source) {
|
||||
console.log('SRC', this.realSource)
|
||||
switch (this.realSource) {
|
||||
case 'profile':
|
||||
return this.$store.state.profileConfig
|
||||
case 'admin':
|
||||
|
|
@ -84,7 +99,7 @@ export default {
|
|||
}
|
||||
},
|
||||
configSink () {
|
||||
switch (this.source) {
|
||||
switch (this.realSource) {
|
||||
case 'profile':
|
||||
return (k, v) => this.$store.dispatch('setProfileOption', { name: k, value: v })
|
||||
case 'admin':
|
||||
|
|
@ -94,7 +109,7 @@ export default {
|
|||
}
|
||||
},
|
||||
defaultState () {
|
||||
switch (this.source) {
|
||||
switch (this.realSource) {
|
||||
case 'profile':
|
||||
return {}
|
||||
default:
|
||||
|
|
@ -102,10 +117,10 @@ export default {
|
|||
}
|
||||
},
|
||||
isProfileSetting () {
|
||||
return this.source === 'profile'
|
||||
return this.realSource === 'profile'
|
||||
},
|
||||
isChanged () {
|
||||
switch (this.source) {
|
||||
switch (this.realSource) {
|
||||
case 'profile':
|
||||
case 'admin':
|
||||
return false
|
||||
|
|
@ -114,10 +129,10 @@ export default {
|
|||
}
|
||||
},
|
||||
isDirty () {
|
||||
return this.draftMode && this.draft !== this.state
|
||||
return this.realDraftMode && this.draft !== this.state
|
||||
},
|
||||
canHardReset () {
|
||||
return this.source === 'admin' && this.$store.state.adminSettings.modifiedPaths.has(this.path)
|
||||
return this.realSource === 'admin' && this.$store.state.adminSettings.modifiedPaths.has(this.path)
|
||||
},
|
||||
matchesExpertLevel () {
|
||||
return (this.expert || 0) <= this.$store.state.config.expertLevel > 0
|
||||
|
|
@ -128,20 +143,20 @@ export default {
|
|||
return e.target.value
|
||||
},
|
||||
update (e) {
|
||||
if (this.draftMode) {
|
||||
if (this.realDraftMode) {
|
||||
this.draft = this.getValue(e)
|
||||
} else {
|
||||
this.configSink(this.path, this.getValue(e))
|
||||
}
|
||||
},
|
||||
commitDraft () {
|
||||
if (this.draftMode) {
|
||||
if (this.realDraftMode) {
|
||||
this.configSink(this.path, this.draft)
|
||||
}
|
||||
},
|
||||
reset () {
|
||||
console.log('reset')
|
||||
if (this.draftMode) {
|
||||
if (this.realDraftMode) {
|
||||
console.log(this.draft)
|
||||
console.log(this.state)
|
||||
this.draft = this.state
|
||||
|
|
@ -150,7 +165,7 @@ export default {
|
|||
}
|
||||
},
|
||||
hardReset () {
|
||||
switch (this.source) {
|
||||
switch (this.realSource) {
|
||||
case 'admin':
|
||||
return this.$store.dispatch('resetAdminSetting', { path: this.path })
|
||||
.then(() => { this.draft = this.state })
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue