51 lines
1.4 KiB
Vue
51 lines
1.4 KiB
Vue
<template>
|
|
<div>
|
|
<div class="flex space-x-3" v-if="model">
|
|
<f-text size="sm" id="name" v-model="model.name" label="Name" required></f-text>
|
|
<f-switch size="sm" v-model="model.is_filterable" name="subactivity_is_filterable" id="subactivity_is_filterable" label="Filterbar"></f-switch>
|
|
</div>
|
|
<icon-button class="mt-3" icon="save" @click.prevent="store">Speichern</icon-button>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data: function () {
|
|
return {
|
|
visible: false,
|
|
model: {...this.value},
|
|
};
|
|
},
|
|
props: {
|
|
value: {
|
|
required: true,
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
async store() {
|
|
try {
|
|
if (this.model.id) {
|
|
var response = await this.axios.patch(this.model.links.update, this.model);
|
|
this.$emit('updated', response.data);
|
|
} else {
|
|
var response = await this.axios.post('/subactivity', this.model);
|
|
this.$emit('stored', response.data);
|
|
}
|
|
} catch (e) {
|
|
this.errorsFromException(e);
|
|
}
|
|
},
|
|
},
|
|
|
|
async created() {
|
|
if (this.value.id) {
|
|
var payload = (await this.axios.get(this.value.links.show)).data;
|
|
this.model = payload.data;
|
|
} else {
|
|
this.model = this.value;
|
|
}
|
|
},
|
|
};
|
|
</script>
|