Files
speckle-server/packages/frontend/src/components/dialogs/CommitDialog.vue
T
2021-01-03 13:35:53 +02:00

106 lines
2.3 KiB
Vue

<template>
<v-dialog v-model="show" width="500" @keydown.esc="cancel">
<v-card class="pa-4" color="background2">
<v-card-title class="subtitle-1">Edit Commit</v-card-title>
<v-card-text class="pl-2 pr-2 pt-0 pb-0">
<v-form
ref="form"
v-model="valid"
lazy-validation
@submit.prevent="agree"
>
<v-container>
<v-row>
<v-col cols="12" class="pb-0">
<v-text-field
v-model="commit.message"
label="Message"
:rules="nameRules"
required
filled
autofocus
></v-text-field>
</v-col>
</v-row>
</v-container>
</v-form>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn :disabled="!valid" color="primary" text @click.native="agree">
Save
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
data: () => ({
dialog: false,
commit: {},
nameRules: [],
valid: true
}),
computed: {
show: {
get() {
return this.dialog
},
set(value) {
this.dialog = value
if (value === false) {
this.cancel()
}
}
}
},
watch: {
"commit.name"(val) {
this.nameRules = []
}
},
methods: {
open(commit, streamId) {
this.dialog = true
if (this.$refs.form) this.$refs.form.resetValidation()
this.commit = {
message: commit.message,
id: commit.id,
streamId: streamId
}
return new Promise((resolve, reject) => {
this.resolve = resolve
this.reject = reject
})
},
agree() {
this.nameRules = [
(v) => !!v || "Please write a commit message",
(v) => (v && v.length >= 3) || "Message must be at least 3 characters"
]
let self = this
setTimeout(function () {
if (self.$refs.form.validate()) {
self.resolve({
result: true,
commit: self.commit
})
self.dialog = false
}
})
},
cancel() {
this.resolve({
result: false
})
this.dialog = false
}
}
}
</script>