diff --git a/src/dialogs/shortcuts/dialog-shortcuts.ts b/src/dialogs/shortcuts/dialog-shortcuts.ts index 061d1176055a..202d40f8ca05 100644 --- a/src/dialogs/shortcuts/dialog-shortcuts.ts +++ b/src/dialogs/shortcuts/dialog-shortcuts.ts @@ -63,6 +63,11 @@ const _SHORTCUTS: Section[] = [ descriptionTranslationKey: "ui.dialogs.shortcuts.searching.search_in_table", }, + { + shortcut: ["N"], + descriptionTranslationKey: + "ui.dialogs.shortcuts.searching.new_in_table", + }, ], }, { diff --git a/src/layouts/hass-tabs-subpage-data-table.ts b/src/layouts/hass-tabs-subpage-data-table.ts index 7290a76e20fe..ef7d59b78014 100644 --- a/src/layouts/hass-tabs-subpage-data-table.ts +++ b/src/layouts/hass-tabs-subpage-data-table.ts @@ -190,6 +190,21 @@ export class HaTabsSubpageDataTable extends KeyboardShortcutMixin(LitElement) { }; } + protected supportedSingleKeyShortcuts(): SupportedShortcuts { + if (this.hasFab) { + return { + n: () => { + const fab = this.querySelector('[slot="fab"]'); + if (fab) { + fab.click(); + } + }, + }; + } + + return {}; + } + private _showPaneController = new ResizeController(this, { callback: (entries) => entries[0]?.contentRect.width > 750, }); diff --git a/src/panels/config/integrations/ha-config-integrations-dashboard.ts b/src/panels/config/integrations/ha-config-integrations-dashboard.ts index 5c23131ceb74..0375a4342f12 100644 --- a/src/panels/config/integrations/ha-config-integrations-dashboard.ts +++ b/src/panels/config/integrations/ha-config-integrations-dashboard.ts @@ -968,6 +968,12 @@ class HaConfigIntegrationsDashboard extends KeyboardShortcutMixin( }; } + protected supportedSingleKeyShortcuts(): SupportedShortcuts { + return { + n: () => this._createFlow(), + }; + } + static get styles(): CSSResultGroup { return [ haStyle, diff --git a/src/panels/config/zone/ha-config-zone.ts b/src/panels/config/zone/ha-config-zone.ts index 3c40c9b42afc..466c18995523 100644 --- a/src/panels/config/zone/ha-config-zone.ts +++ b/src/panels/config/zone/ha-config-zone.ts @@ -47,9 +47,12 @@ import { configSections } from "../ha-panel-config"; import { showHomeZoneDetailDialog } from "./show-dialog-home-zone-detail"; import { showZoneDetailDialog } from "./show-dialog-zone-detail"; import { slugify } from "../../../common/string/slugify"; +import { KeyboardShortcutMixin } from "../../../mixins/keyboard-shortcut-mixin"; @customElement("ha-config-zone") -export class HaConfigZone extends SubscribeMixin(LitElement) { +export class HaConfigZone extends KeyboardShortcutMixin( + SubscribeMixin(LitElement) +) { @property({ attribute: false }) public hass!: HomeAssistant; @property({ attribute: "is-wide", type: Boolean }) public isWide = false; @@ -537,6 +540,12 @@ export class HaConfigZone extends SubscribeMixin(LitElement) { }); } + protected supportedSingleKeyShortcuts(): SupportedShortcuts { + return { + n: () => this._createZone(), + }; + } + static styles = css` hass-loading-screen { --app-header-background-color: var(--sidebar-background-color); diff --git a/src/translations/en.json b/src/translations/en.json index 42dacbd65cd9..c69482530a54 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2125,7 +2125,8 @@ "search_command": "search command", "search_entities": "search entities", "search_devices": "search devices", - "search_in_table": "to search in tables" + "search_in_table": "to search in tables", + "new_in_table": "to create a new item in tables" }, "assist": { "title": "Assist",