more editable fields, created CheckboxEditable
This commit is contained in:
64
src/components/editable/CheckboxEditable.vue
Normal file
64
src/components/editable/CheckboxEditable.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<script>
|
||||
|
||||
import REST from '@api/rest-axios'
|
||||
|
||||
import { mapActions, mapState } from 'pinia'
|
||||
import { UserStore } from '@stores/user'
|
||||
|
||||
|
||||
export default {
|
||||
props: {
|
||||
label: String,
|
||||
data: Object
|
||||
},
|
||||
// emits: ['returned'],
|
||||
data(){
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(UserStore,['csrf_token']),
|
||||
},
|
||||
created () {
|
||||
console.log('ContentEditable created');
|
||||
},
|
||||
mounted () {
|
||||
|
||||
},
|
||||
methods: {
|
||||
onInput(e){
|
||||
// console.log('onInput checkbox e', e);
|
||||
let checked = e.target.checked;
|
||||
// console.log('onInput checkbox checked', checked);
|
||||
this.save(checked)
|
||||
},
|
||||
save(checked){
|
||||
// console.log('save csrf_token', this.csrf_token);
|
||||
const params = {
|
||||
type: this.data.bundle,
|
||||
nid: [{"value":this.data.nid}],
|
||||
[this.data.field]: {value: checked}
|
||||
};
|
||||
const configs = {
|
||||
headers: {'X-CSRF-Token': this.csrf_token}
|
||||
};
|
||||
REST.patch(`/node/${this.data.nid}?_format=json`, params, configs)
|
||||
.then(({ data }) => {
|
||||
console.log('user REST post node data', data)
|
||||
// TODO if success update the data in pinia
|
||||
})
|
||||
.catch(error => {
|
||||
console.warn(`Issue with patch node ${this.data.bundle}`, error)
|
||||
Promise.reject(error)
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<section class="editable">
|
||||
<label><input type="checkbox" @input="onInput"> {{ label }}</label>
|
||||
</section>
|
||||
</template>
|
Reference in New Issue
Block a user