diff --git a/src/common/entity/valid_entity_id.ts b/src/common/entity/valid_entity_id.ts index c9c8d9acb9..b34d3cd797 100644 --- a/src/common/entity/valid_entity_id.ts +++ b/src/common/entity/valid_entity_id.ts @@ -2,11 +2,3 @@ const validEntityId = /^(\w+)\.(\w+)$/; export const isValidEntityId = (entityId: string) => validEntityId.test(entityId); - -export const createValidEntityId = (input: string) => - input - .toLowerCase() - .replace(/\s|'|\./g, "_") // replace spaces, points and quotes with underscore - .replace(/\W/g, "") // remove not allowed chars - .replace(/_{2,}/g, "_") // replace multiple underscores with 1 - .replace(/_$/, ""); // remove underscores at the end diff --git a/src/common/string/slugify.ts b/src/common/string/slugify.ts index a5f0c134cb..dc4015ff68 100644 --- a/src/common/string/slugify.ts +++ b/src/common/string/slugify.ts @@ -1,5 +1,5 @@ // https://gist.github.com/hagemann/382adfc57adbd5af078dc93feef01fe1 -export const slugify = (value: string, delimiter = "-") => { +export const slugify = (value: string, delimiter = "_") => { const a = "àáäâãåăæąçćčđďèéěėëêęğǵḧìíïîįłḿǹńňñòóöôœøṕŕřßşśšșťțùúüûǘůűūųẃẍÿýźžż·/_,:;"; const b = `aaaaaaaaacccddeeeeeeegghiiiiilmnnnnooooooprrsssssttuuuuuuuuuwxyyzzz${delimiter}${delimiter}${delimiter}${delimiter}${delimiter}${delimiter}`; diff --git a/src/panels/config/devices/ha-config-device-page.ts b/src/panels/config/devices/ha-config-device-page.ts index fe49cf76fa..bc96ae7215 100644 --- a/src/panels/config/devices/ha-config-device-page.ts +++ b/src/panels/config/devices/ha-config-device-page.ts @@ -13,7 +13,6 @@ import { ifDefined } from "lit-html/directives/if-defined"; import memoizeOne from "memoize-one"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { computeStateName } from "../../../common/entity/compute_state_name"; -import { createValidEntityId } from "../../../common/entity/valid_entity_id"; import { compare } from "../../../common/string/compare"; import "../../../components/entity/ha-battery-icon"; import "../../../components/ha-icon-next"; @@ -44,6 +43,7 @@ import { configSections } from "../ha-panel-config"; import "./device-detail/ha-device-entities-card"; import "./device-detail/ha-device-info-card"; import { showDeviceAutomationDialog } from "./device-detail/show-dialog-device-automation"; +import { slugify } from "../../../common/string/slugify"; export interface EntityRegistryStateEntry extends EntityRegistryEntry { stateName?: string | null; @@ -556,11 +556,11 @@ export class HaConfigDevicePage extends LitElement { } if (renameEntityid) { - const oldSearch = createValidEntityId(oldDeviceName); + const oldSearch = slugify(oldDeviceName); if (entity.entity_id.includes(oldSearch)) { newEntityId = entity.entity_id.replace( oldSearch, - createValidEntityId(newDeviceName) + slugify(newDeviceName) ); } } @@ -571,7 +571,6 @@ export class HaConfigDevicePage extends LitElement { return updateEntityRegistryEntry(this.hass!, entity.entity_id, { name: newName || name, - disabled_by: entity.disabled_by, new_entity_id: newEntityId || entity.entity_id, }); }); diff --git a/src/panels/config/integrations/integration-panels/zha/zha-device-card.ts b/src/panels/config/integrations/integration-panels/zha/zha-device-card.ts index 148544ad03..0cf283011e 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-device-card.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-device-card.ts @@ -29,11 +29,11 @@ import { EntityRegistryEntry, updateEntityRegistryEntry, } from "../../../../../data/entity_registry"; -import { createValidEntityId } from "../../../../../common/entity/valid_entity_id"; import memoizeOne from "memoize-one"; import { EntityRegistryStateEntry } from "../../../devices/ha-config-device-page"; import { compare } from "../../../../../common/string/compare"; import { getIeeeTail } from "./functions"; +import { slugify } from "../../../../../common/string/slugify"; @customElement("zha-device-card") class ZHADeviceCard extends SubscribeMixin(LitElement) { @@ -142,8 +142,8 @@ class ZHADeviceCard extends SubscribeMixin(LitElement) { } const entities = this._deviceEntities(device.device_reg_id, this._entities); - const oldDeviceEntityId = createValidEntityId(oldDeviceName); - const newDeviceEntityId = createValidEntityId(newDeviceName); + const oldDeviceEntityId = slugify(oldDeviceName); + const newDeviceEntityId = slugify(newDeviceName); const ieeeTail = getIeeeTail(device.ieee); const updateProms = entities.map((entity) => { diff --git a/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts b/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts index f74377609e..d5e4a2fa54 100644 --- a/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts +++ b/src/panels/config/lovelace/dashboards/dialog-lovelace-dashboard-detail.ts @@ -253,7 +253,7 @@ export class DialogLovelaceDashboardDetail extends LitElement { return; } - const slugifyTitle = slugify(this._title); + const slugifyTitle = slugify(this._title, "-"); this._urlPath = slugifyTitle.includes("-") ? slugifyTitle : `lovelace-${slugifyTitle}`; diff --git a/src/panels/config/script/ha-script-editor.ts b/src/panels/config/script/ha-script-editor.ts index c1c1e69ddd..ff3c7b3009 100644 --- a/src/panels/config/script/ha-script-editor.ts +++ b/src/panels/config/script/ha-script-editor.ts @@ -319,7 +319,7 @@ export class HaScriptEditor extends LitElement { if (this.scriptEntityId || this._entityId) { return; } - const aliasSlugify = slugify((ev.target as any).value, "_"); + const aliasSlugify = slugify((ev.target as any).value); let id = aliasSlugify; let i = 2; while (this.hass.states[`script.${id}`]) { diff --git a/src/panels/lovelace/editor/view-editor/hui-view-editor.ts b/src/panels/lovelace/editor/view-editor/hui-view-editor.ts index 5be3a4a4f8..518d92cec4 100644 --- a/src/panels/lovelace/editor/view-editor/hui-view-editor.ts +++ b/src/panels/lovelace/editor/view-editor/hui-view-editor.ts @@ -175,7 +175,10 @@ export class HuiViewEditor extends LitElement { return; } - const config = { ...this._config, path: slugify(ev.currentTarget.value) }; + const config = { + ...this._config, + path: slugify(ev.currentTarget.value, "-"), + }; fireEvent(this, "view-config-changed", { config }); }