12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <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: String,
- 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>
|