From 6aeef477fc15e48ae0e910715d3409497a1ced45 Mon Sep 17 00:00:00 2001 From: mahula Date: Tue, 25 Apr 2023 10:59:17 +0200 Subject: [PATCH] replace user setting's select by location select component --- webapp/components/Select/LocationSelect.vue | 118 ++++++++++++++++++++ webapp/pages/settings/index.vue | 62 +--------- 2 files changed, 123 insertions(+), 57 deletions(-) create mode 100644 webapp/components/Select/LocationSelect.vue diff --git a/webapp/components/Select/LocationSelect.vue b/webapp/components/Select/LocationSelect.vue new file mode 100644 index 000000000..deac9c541 --- /dev/null +++ b/webapp/components/Select/LocationSelect.vue @@ -0,0 +1,118 @@ + + + diff --git a/webapp/pages/settings/index.vue b/webapp/pages/settings/index.vue index 6cae7e44c..cd60ac053 100644 --- a/webapp/pages/settings/index.vue +++ b/webapp/pages/settings/index.vue @@ -11,20 +11,7 @@ :placeholder="$t('settings.data.namePlaceholder')" /> - - - - {{ $t('settings.data.labelCityHint') }} - + import { mapGetters, mapMutations } from 'vuex' import UniqueSlugForm from '~/components/utils/UniqueSlugForm' +import LocationSelect from '~/components/Select/LocationSelect' import { updateUserMutation } from '~/graphql/User' -import { queryLocations } from '~/graphql/location' - -let timeout export default { name: 'NewsFeed', + components: { + LocationSelect + }, data() { return { cities: [], @@ -121,52 +109,12 @@ export default { this.loadingData = false } }, - handleCityInput(value) { - clearTimeout(timeout) - timeout = setTimeout(() => this.requestGeoData(value), 500) - }, - processLocationsResult(places) { - if (!places.length) { - return [] - } - const result = [] - places.forEach((place) => { - result.push({ - label: place.place_name, - value: place.place_name, - id: place.id, - }) - }) - - return result - }, - async requestGeoData(e) { - const value = e.target ? e.target.value.trim() : '' - if (value === '') { - this.cities = [] - return - } - this.loadingGeo = true - - const place = encodeURIComponent(value) - const lang = this.$i18n.locale() - - const { - data: { queryLocations: res }, - } = await this.$apollo.query({ query: queryLocations(), variables: { place, lang } }) - - this.cities = this.processLocationsResult(res) - this.loadingGeo = false - }, }, }