diff --git a/src/common/navigate.ts b/src/common/navigate.ts new file mode 100644 index 0000000000..6c9675a246 --- /dev/null +++ b/src/common/navigate.ts @@ -0,0 +1,14 @@ +import { fireEvent } from "./dom/fire_event.js"; + +export const navigate = ( + node: HTMLElement, + path: string, + replace: boolean = false +) => { + if (replace) { + history.replaceState(null, "", path); + } else { + history.pushState(null, "", path); + } + fireEvent(node, "location-changed"); +}; diff --git a/src/mixins/navigate-mixin.js b/src/mixins/navigate-mixin.js index 17a55994c9..c00a502b00 100644 --- a/src/mixins/navigate-mixin.js +++ b/src/mixins/navigate-mixin.js @@ -1,5 +1,5 @@ import { dedupingMixin } from "@polymer/polymer/lib/utils/mixin.js"; -import EventsMixin from "./events-mixin"; +import { navigate } from "../common/navigate"; /* * @polymerMixin @@ -7,14 +7,9 @@ import EventsMixin from "./events-mixin"; */ export default dedupingMixin( (superClass) => - class extends EventsMixin(superClass) { - navigate(path, replace = false) { - if (replace) { - history.replaceState(null, null, path); - } else { - history.pushState(null, null, path); - } - this.fire("location-changed"); + class extends superClass { + navigate(...args) { + navigate(this, ...args); } } ); diff --git a/src/panels/config/dashboard/ha-config-dashboard.js b/src/panels/config/dashboard/ha-config-dashboard.js index 7b097e78d8..56da4e2fb8 100644 --- a/src/panels/config/dashboard/ha-config-dashboard.js +++ b/src/panels/config/dashboard/ha-config-dashboard.js @@ -52,7 +52,7 @@ class HaConfigDashboard extends NavigateMixin(LocalizeMixin(PolymerElement)) {