Fix quick search apps (#29238)

This commit is contained in:
Wendelin 2026-01-29 12:30:09 +01:00 committed by GitHub
parent feb9ce421d
commit 6cca48e79d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 43 additions and 43 deletions

View File

@ -1,7 +1,6 @@
import {
mdiKeyboard,
mdiNavigationVariant,
mdiPuzzle,
mdiReload,
mdiServerNetwork,
mdiStorePlus,
@ -12,11 +11,11 @@ import { isComponentLoaded } from "../common/config/is_component_loaded";
import type { PickerComboBoxItem } from "../components/ha-picker-combo-box";
import type { PageNavigation } from "../layouts/hass-tabs-subpage";
import { configSections } from "../panels/config/ha-panel-config";
import type { FuseWeightedKey } from "../resources/fuseMultiTerm";
import type { HomeAssistant } from "../types";
import type { HassioAddonInfo } from "./hassio/addon";
import { domainToName } from "./integration";
import { getPanelIcon, getPanelNameTranslationKey } from "./panel";
import type { FuseWeightedKey } from "../resources/fuseMultiTerm";
export interface NavigationComboBoxItem extends PickerComboBoxItem {
path: string;
@ -27,6 +26,7 @@ export interface NavigationComboBoxItem extends PickerComboBoxItem {
export interface BaseNavigationCommand {
path: string;
primary: string;
secondary?: string;
icon_path?: string;
iconPath?: string;
iconColor?: string;
@ -45,7 +45,7 @@ export interface NavigationInfo extends PageNavigation {
const generateNavigationPanelCommands = (
localize: HomeAssistant["localize"],
panels: HomeAssistant["panels"],
addons?: HassioAddonInfo[]
apps?: HassioAddonInfo[]
): BaseNavigationCommand[] =>
Object.entries(panels)
.filter(
@ -59,12 +59,10 @@ const generateNavigationPanelCommands = (
let image: string | undefined;
if (addons) {
const addon = addons.find(({ slug }) => slug === panel.url_path);
if (addon) {
image = addon.icon
? `/api/hassio/addons/${addon.slug}/icon`
: undefined;
if (apps) {
const app = apps.find(({ slug }) => slug === panel.url_path);
if (app) {
image = app.icon ? `/api/hassio/addons/${app.slug}/icon` : undefined;
}
}
@ -140,7 +138,7 @@ const finalizeNavigationCommands = (
return {
id: `navigation_${index}_${item.path}`,
icon_path: item.iconPath || mdiNavigationVariant,
secondary,
secondary: item.secondary || secondary,
sorting_label: `${item.primary}_${secondary}`,
...item,
};
@ -148,41 +146,38 @@ const finalizeNavigationCommands = (
export const generateNavigationCommands = (
hass: HomeAssistant,
addons?: HassioAddonInfo[]
apps?: HassioAddonInfo[]
): NavigationComboBoxItem[] => {
const panelItems = generateNavigationPanelCommands(
hass.localize,
hass.panels,
addons
apps
);
const sectionItems = generateNavigationConfigSectionCommands(hass);
const supervisorItems: BaseNavigationCommand[] = [];
const appItems: BaseNavigationCommand[] = [];
if (hass.user?.is_admin && isComponentLoaded(hass, "hassio")) {
supervisorItems.push({
path: "/hassio/store",
appItems.push({
path: "/config/apps/available",
icon_path: mdiStorePlus,
primary: hass.localize(
"ui.dialogs.quick-bar.commands.navigation.addon_store"
"ui.dialogs.quick-bar.commands.navigation.app_store"
),
iconColor: "#F1C447",
});
supervisorItems.push({
path: "/hassio/dashboard",
icon_path: mdiPuzzle,
primary: hass.localize(
"ui.dialogs.quick-bar.commands.navigation.addon_dashboard"
),
});
if (addons) {
for (const addon of addons.filter((a) => a.version)) {
supervisorItems.push({
path: `/hassio/addon/${addon.slug}`,
image: addon.icon
? `/api/hassio/addons/${addon.slug}/icon`
: undefined,
if (apps) {
for (const app of apps.filter((a) => a.version)) {
appItems.push({
path: `/config/app/${app.slug}`,
image: app.icon ? `/api/hassio/addons/${app.slug}/icon` : undefined,
primary: hass.localize(
"ui.dialogs.quick-bar.commands.navigation.addon_info",
{ addon: addon.name }
"ui.dialogs.quick-bar.commands.navigation.app_info",
{ app: app.name }
),
secondary: hass.localize(
"ui.dialogs.quick-bar.commands.types.app_settings"
),
iconColor: "#F1C447",
});
}
}
@ -201,7 +196,7 @@ export const generateNavigationCommands = (
return finalizeNavigationCommands(hass.localize, [
...panelItems,
...sectionItems,
...supervisorItems,
...appItems,
...additionalItems,
]);
};
@ -265,16 +260,16 @@ const generateServerControlCommands = (
return serverActions.map((action, index) => {
const primary = hass.localize(
"ui.dialogs.quick-bar.commands.server_control.perform_action",
"ui.dialogs.quick-bar.commands.home_assistant_control.perform_action",
{
action: hass.localize(
`ui.dialogs.quick-bar.commands.server_control.${action}`
`ui.dialogs.quick-bar.commands.home_assistant_control.${action}`
),
}
);
const secondary = hass.localize(
"ui.dialogs.quick-bar.commands.types.server_control"
"ui.dialogs.quick-bar.commands.types.home_assistant_control"
);
return {

View File

@ -282,6 +282,9 @@ export class QuickBar extends LitElement {
slot="start"
alt=${item.primary ?? "Unknown"}
.src=${item.image}
style=${"iconColor" in item && item.iconColor
? `background-color: ${item.iconColor}; padding: 4px; border-radius: var(--ha-border-radius-circle); width: 24px; height: 24px`
: ""}
/>
`
: item.icon

View File

@ -86,7 +86,7 @@ export const configSections: Record<string, PageNavigation[]> = {
},
{
path: "/config/apps",
translationKey: "supervisor",
translationKey: "apps",
iconPath: mdiPuzzle,
iconColor: "#F1C447",
component: "hassio",

View File

@ -1402,15 +1402,16 @@
"rpi_gpio": "[%key:ui::panel::config::developer-tools::tabs::yaml::section::reloading::rpi_gpio%]",
"themes": "[%key:ui::panel::config::developer-tools::tabs::yaml::section::reloading::themes%]"
},
"server_control": {
"perform_action": "{action} server",
"home_assistant_control": {
"perform_action": "{action} Home Assistant",
"restart": "[%key:ui::panel::config::developer-tools::tabs::yaml::section::server_management::restart%]",
"stop": "[%key:ui::panel::config::developer-tools::tabs::yaml::section::server_management::stop%]"
},
"types": {
"reload": "Reload",
"navigation": "Navigate",
"server_control": "Server"
"app_settings": "App settings",
"home_assistant_control": "Interrupts all running automations and scripts"
},
"navigation": {
"logs": "[%key:ui::panel::config::logs::caption%]",
@ -1441,11 +1442,12 @@
"blueprint": "[%key:ui::panel::config::blueprint::caption%]",
"server_control": "[%key:ui::panel::config::developer-tools::tabs::yaml::title%]",
"system": "[%key:ui::panel::config::dashboard::system::main%]",
"app_dashboard": "App dashboard",
"apps": "Apps",
"app_store": "App store",
"app_info": "{app} info",
"shortcuts": "[%key:ui::panel::config::info::shortcuts%]",
"labs": "[%key:ui::panel::config::labs::caption%]"
"labs": "[%key:ui::panel::config::labs::caption%]",
"developer-tools": "[%key:ui::panel::config::dashboard::developer_tools::main%]"
}
},
"filter_placeholder": "Search entities",
@ -2336,7 +2338,7 @@
"main": "Backup",
"secondary": "Generate backups of your Home Assistant configuration"
},
"supervisor": {
"apps": {
"main": "Apps",
"secondary": "Run extra applications next to Home Assistant"
},