From fe57e8c6b31394248c3e2c19a7b90263713f2dbb Mon Sep 17 00:00:00 2001 From: ale <ale.tasistro@gmail.com> Date: Mon, 19 May 2025 03:05:06 -0300 Subject: [PATCH] BarrioSelect y RegionSelect usan la store --- .../js/components/comunes/BarrioSelect.vue | 69 +++++++++---------- .../js/components/comunes/RegionSelect.vue | 54 ++++++++------- 2 files changed, 62 insertions(+), 61 deletions(-) diff --git a/resources/js/components/comunes/BarrioSelect.vue b/resources/js/components/comunes/BarrioSelect.vue index 6743f4b..215e449 100644 --- a/resources/js/components/comunes/BarrioSelect.vue +++ b/resources/js/components/comunes/BarrioSelect.vue @@ -1,13 +1,19 @@ <template> - <div v-show="visible" class="block"> + <div v-if="region_elegida !== null" class="block"> <div class="field"> - <label class="label" :class="isAdmin ? 'has-text-white' : ''">Seleccioná tu barrio o grupo de compra</label> + <label class="label" :class="admin ? 'has-text-white' : ''"> + Seleccioná tu barrio o grupo de compra + </label> <div class="control"> <div class="select"> - <select @change="onGDCSelected" v-model="gdc" name="name"> - <option :disabled="isDefaultDisabled==1" value=null>Seleccionar</option> - <option v-for="(gdc, index) in gdcs" :key="index" v-text="gdc.nombre + (isAdmin ? '_admin' : '')" - :name="gdc.nombre + (isAdmin ? '_admin' : '')"> + <select @change="selectGrupoDeCompra({ grupo_de_compra: barrio })" v-model="barrio"> + <option :disabled="grupo_de_compra_elegido !== null" value=null> + Seleccionar + </option> + <option v-for="(gdc, index) in grupos_de_compra" + :key="index" + v-text="gdc.nombre" + :name="gdc.nombre"> </option> </select> </div> @@ -17,35 +23,24 @@ </template> <script> - export default { - data() { - return { - visible: false, - region: null, - gdcs: [], - isDefaultDisabled: 0, - gdc: null, - isAdmin: this.admin == null ? false : this.admin - } - }, - mounted() { - Event.$on('region-seleccionada', (region)=> { - this.region = region; - this.fillGDC(region); - this.visible = true; - }); - }, - methods : { - fillGDC(region) { - axios.get("/api/grupos-de-compra").then(response => { - this.gdcs = response.data[this.region]; - }); - }, - onGDCSelected() { - this.isDefaultDisabled = 1; - Event.$emit("gdc-seleccionado",this.gdc); - } - }, - props: {'admin': Boolean} - } +import { mapActions, mapGetters, mapMutations, mapState } from "vuex"; +export default { + name: 'BarrioSelect', + async mounted() { + await this.getRegiones(); + }, + methods: { + ...mapMutations('login',["selectGrupoDeCompra"]), + ...mapActions('login',["getRegiones", "getGruposDeCompra"]), + }, + computed: { + ...mapState('login',["region_elegida","grupos_de_compra","grupo_de_compra_elegido"]), + ...mapGetters('login',["admin"]), + }, + data() { + return { + barrio: null, + }; + }, +} </script> diff --git a/resources/js/components/comunes/RegionSelect.vue b/resources/js/components/comunes/RegionSelect.vue index 55d6c8f..ca543bd 100644 --- a/resources/js/components/comunes/RegionSelect.vue +++ b/resources/js/components/comunes/RegionSelect.vue @@ -1,12 +1,20 @@ <template> <div class="block"> <div class="field"> - <label class="label" :class="whiteText ? 'has-text-white' : ''">Seleccioná tu región</label> + <label class="label" :class="admin ? 'has-text-white' : ''"> + Seleccioná tu región + </label> <div class="control"> <div class="select"> - <select @change="onRegionSelected" v-model="region"> - <option :disabled="isDefaultDisabled===1" value=null>Seleccionar</option> - <option v-for="(region, index) in regiones" :key="index" v-text="region" :name="region"></option> + <select @change="selectRegion({ region })" v-model="region"> + <option :disabled="region_elegida !== null" value=null> + Seleccionar + </option> + <option v-for="(region, index) in regiones" + :key="index" + v-text="region" + :name="region"> + </option> </select> </div> </div> @@ -15,24 +23,22 @@ </template> <script> - export default { - data() { - return { - regiones: [], - isDefaultDisabled: 0, - region: null, - whiteText: this.admin == null ? false : this.admin - } - }, - mounted() { - axios.get("/api/regiones").then(response => this.regiones = response.data); - }, - methods: { - onRegionSelected() { - this.isDefaultDisabled = 1; - Event.$emit("region-seleccionada",this.region); - } - }, - props: {'admin': Boolean} - } +import {mapActions, mapGetters, mapState} from "vuex"; +export default { + async mounted() { + await this.getRegiones(); + }, + data() { + return { + region: null, + }; + }, + methods: { + ...mapActions('login',["getRegiones","selectRegion"]), + }, + computed: { + ...mapState('login',["regiones","region_elegida"]), + ...mapGetters('login',["admin"]), + } +} </script>