diff --git a/src/panels/config/js/trigger/geo_location.js b/src/panels/config/js/trigger/geo_location.js
new file mode 100644
index 0000000000..1b06943633
--- /dev/null
+++ b/src/panels/config/js/trigger/geo_location.js
@@ -0,0 +1,85 @@
+import { h, Component } from "preact";
+import "@polymer/paper-radio-button/paper-radio-button";
+import "@polymer/paper-radio-group/paper-radio-group";
+import "../../../../components/entity/ha-entity-picker";
+
+import { onChangeEvent } from "../../../../common/preact/event";
+
+export default class GeolocationTrigger extends Component {
+ constructor() {
+ super();
+
+ this.onChange = onChangeEvent.bind(this, "trigger");
+ this.zonePicked = this.zonePicked.bind(this);
+ this.radioGroupPicked = this.radioGroupPicked.bind(this);
+ }
+
+ zonePicked(ev) {
+ this.props.onChange(
+ this.props.index,
+ Object.assign({}, this.props.trigger, { zone: ev.target.value })
+ );
+ }
+
+ radioGroupPicked(ev) {
+ this.props.onChange(
+ this.props.index,
+ Object.assign({}, this.props.trigger, { event: ev.target.selected })
+ );
+ }
+
+ /* eslint-disable camelcase */
+ render({ trigger, hass, localize }) {
+ const { source, zone, event } = trigger;
+
+ return (
+
+
+
+
+
+
+ {localize(
+ "ui.panel.config.automation.editor.triggers.type.geo_location.enter"
+ )}
+
+
+ {localize(
+ "ui.panel.config.automation.editor.triggers.type.geo_location.leave"
+ )}
+
+
+
+ );
+ }
+}
+
+GeolocationTrigger.defaultConfig = {
+ source: "",
+ zone: "",
+ event: "enter",
+};
diff --git a/src/panels/config/js/trigger/trigger_edit.js b/src/panels/config/js/trigger/trigger_edit.js
index 12de1c3dd3..443c094a3a 100644
--- a/src/panels/config/js/trigger/trigger_edit.js
+++ b/src/panels/config/js/trigger/trigger_edit.js
@@ -5,6 +5,7 @@ import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox";
import EventTrigger from "./event";
+import GeolocationTrigger from "./geo_location";
import HassTrigger from "./homeassistant";
import MQTTTrigger from "./mqtt";
import NumericStateTrigger from "./numeric_state";
@@ -19,6 +20,7 @@ import ZoneTrigger from "./zone";
const TYPES = {
event: EventTrigger,
state: StateTrigger,
+ geo_location: GeolocationTrigger,
homeassistant: HassTrigger,
mqtt: MQTTTrigger,
numeric_state: NumericStateTrigger,
diff --git a/src/translations/en.json b/src/translations/en.json
index db2ae19271..e4be7b7506 100644
--- a/src/translations/en.json
+++ b/src/translations/en.json
@@ -590,6 +590,14 @@
"event_type": "Event type",
"event_data": "Event data"
},
+ "geo_location": {
+ "label": "Geolocation",
+ "source": "Source",
+ "zone": "Zone",
+ "event": "Event:",
+ "enter": "Enter",
+ "leave": "Leave"
+ },
"state": {
"label": "State",
"from": "From",
diff --git a/translations/en.json b/translations/en.json
index c6c37c0896..ba5ac3571d 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -378,6 +378,14 @@
"event_type": "Event type",
"event_data": "Event data"
},
+ "geo_location": {
+ "label": "Geolocation",
+ "source": "Source",
+ "zone": "Zone",
+ "event": "Event:",
+ "enter": "Enter",
+ "leave": "Leave"
+ },
"state": {
"label": "State",
"from": "From",