Improve some components

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-11-06 10:08:20 +01:00
parent c806beddcd
commit 096c3a435a
15 changed files with 299 additions and 225 deletions

View File

@@ -1,4 +1,3 @@
import { mixins } from "vue-class-component";
import { Component, Prop, Vue, Watch } from "vue-property-decorator";
import { LatLng } from "leaflet";
import { Address, IAddress } from "../types/address.model";
@@ -7,6 +6,7 @@ import { CONFIG } from "../graphql/config";
import { IConfig } from "../types/config.model";
import debounce from "lodash/debounce";
import { DebouncedFunc } from "lodash";
import { PropType } from "vue";
@Component({
components: {
@@ -17,8 +17,9 @@ import { DebouncedFunc } from "lodash";
config: CONFIG,
},
})
export default class AddressAutoCompleteMixin extends mixins(Vue) {
@Prop({ required: true }) value!: IAddress;
export default class AddressAutoCompleteMixin extends Vue {
@Prop({ required: true, type: Object as PropType<IAddress> })
value!: IAddress;
gettingLocationError: string | null = null;
gettingLocation = false;
@@ -29,8 +30,6 @@ export default class AddressAutoCompleteMixin extends mixins(Vue) {
selected: IAddress = new Address();
queryText: string = (this.value && new Address(this.value).fullName) || "";
config!: IConfig;
isFetching = false;
@@ -85,6 +84,22 @@ export default class AddressAutoCompleteMixin extends mixins(Vue) {
this.isFetching = false;
}
get queryText(): string {
return (this.value && new Address(this.value).fullName) || "";
}
set queryText(text: string) {
if (text === "" && this.selected?.id) {
console.log("doing reset");
this.resetAddress();
}
}
resetAddress(): void {
this.$emit("input", null);
this.selected = new Address();
}
async locateMe(): Promise<void> {
this.gettingLocation = true;
this.gettingLocationError = null;
@@ -124,7 +139,6 @@ export default class AddressAutoCompleteMixin extends mixins(Vue) {
const defaultAddress = new Address(this.addressData[0]);
this.selected = defaultAddress;
this.$emit("input", this.selected);
this.queryText = `${defaultAddress.poiInfos.name} ${defaultAddress.poiInfos.alternativeName}`;
}
}