|
@@ -0,0 +1,76 @@
|
|
|
+<script>
|
|
|
+
|
|
|
+import REST from '@api/rest-axios'
|
|
|
+
|
|
|
+import { mapActions, mapState } from 'pinia'
|
|
|
+import { ConcernementsStore } from '@stores/concernements'
|
|
|
+import { UserStore } from '@stores/user'
|
|
|
+
|
|
|
+
|
|
|
+export default {
|
|
|
+ props: {
|
|
|
+ value: Number,
|
|
|
+ options: Object,
|
|
|
+ label: String,
|
|
|
+ data: Object
|
|
|
+ },
|
|
|
+ emits: ['updated'],
|
|
|
+ data(){
|
|
|
+ return {
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState(UserStore,['csrf_token']),
|
|
|
+ },
|
|
|
+ created () {
|
|
|
+ console.log('SelectEditable created');
|
|
|
+ },
|
|
|
+ mounted () {
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ ...mapActions(ConcernementsStore, ['reloadConcernements']),
|
|
|
+ onInput(e){
|
|
|
+ console.log('onInput select e', e);
|
|
|
+ // let checked = e.target.checked;
|
|
|
+ let value = e.target.value;
|
|
|
+ // console.log('onInput checkbox checked', checked);
|
|
|
+ this.save(value)
|
|
|
+ },
|
|
|
+ save(value){
|
|
|
+ // console.log('save csrf_token', this.csrf_token);
|
|
|
+ const params = {
|
|
|
+ type: this.data.bundle,
|
|
|
+ nid: [{"value":this.data.nid}],
|
|
|
+ [this.data.field]: {value: value}
|
|
|
+ };
|
|
|
+ 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
|
|
|
+ // this.reloadConcernements();
|
|
|
+ this.$emit('updated');
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ console.warn(`Issue with patch node ${this.data.bundle}`, error)
|
|
|
+ Promise.reject(error)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <section class="editable">
|
|
|
+ <label>{{ label }}</label>
|
|
|
+ <select :value="value" @input="onInput">
|
|
|
+ <template v-for="(name,value,index) in options" :key="index">
|
|
|
+ <option :value="value">{{name}}</option>
|
|
|
+ </template>
|
|
|
+ </select>
|
|
|
+ </section>
|
|
|
+</template>
|