116 lines
3.1 KiB
Vue
116 lines
3.1 KiB
Vue
<template>
|
|
<div class="flex items-center justify-center space-x-1">
|
|
<button
|
|
v-track.delete_record_click
|
|
class="border rounded py-1 px-2 text-gray-500 dark:text-gray-400 hover:text-blue-700"
|
|
@click="showEditSubmissionModal = true"
|
|
>
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
fill="none"
|
|
viewBox="0 0 24 24"
|
|
stroke-width="1.5"
|
|
stroke="currentColor"
|
|
class="w-4 h-4"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125"
|
|
/>
|
|
</svg>
|
|
</button>
|
|
<button
|
|
v-track.delete_record_click
|
|
class="border rounded py-1 px-2 text-gray-500 dark:text-gray-400 hover:text-red-700"
|
|
@click="onDeleteClick"
|
|
>
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
fill="none"
|
|
viewBox="0 0 24 24"
|
|
stroke-width="1.5"
|
|
stroke="currentColor"
|
|
class="w-4 h-4"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
|
|
/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<EditSubmissionModal
|
|
:show="showEditSubmissionModal"
|
|
:form="form"
|
|
:submission="submission"
|
|
@close="showEditSubmissionModal = false"
|
|
@updated="(submission) => $emit('updated', submission)"
|
|
/>
|
|
</template>
|
|
|
|
<script>
|
|
import EditSubmissionModal from "./EditSubmissionModal.vue"
|
|
|
|
export default {
|
|
components: { EditSubmissionModal },
|
|
props: {
|
|
form: {
|
|
type: Object,
|
|
required: true,
|
|
},
|
|
structure: {
|
|
type: Array,
|
|
default: () => [],
|
|
},
|
|
submission: {
|
|
type: Object,
|
|
default: () => {},
|
|
},
|
|
},
|
|
emits: ["updated", "deleted"],
|
|
setup() {
|
|
return {
|
|
useAlert: useAlert(),
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
showEditSubmissionModal: false,
|
|
}
|
|
},
|
|
computed: {},
|
|
mounted() {},
|
|
methods: {
|
|
onDeleteClick() {
|
|
this.useAlert.confirm(
|
|
"Do you really want to delete this record?",
|
|
this.deleteRecord,
|
|
)
|
|
},
|
|
async deleteRecord() {
|
|
opnFetch(
|
|
"/open/forms/" +
|
|
this.form.id +
|
|
"/records/" +
|
|
this.submission.id +
|
|
"/delete",
|
|
{ method: "DELETE" },
|
|
)
|
|
.then(async (data) => {
|
|
if (data.type === "success") {
|
|
this.$emit("deleted", this.submission)
|
|
this.useAlert.success(data.message)
|
|
} else {
|
|
this.useAlert.error("Something went wrong!")
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.useAlert.error(error.data.message)
|
|
})
|
|
},
|
|
},
|
|
}
|
|
</script>
|