mirror of
https://github.com/home-assistant/frontend.git
synced 2026-02-04 01:10:33 -06:00
Fix quick search apps (#29238)
This commit is contained in:
parent
feb9ce421d
commit
6cca48e79d
@ -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 {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -86,7 +86,7 @@ export const configSections: Record<string, PageNavigation[]> = {
|
||||
},
|
||||
{
|
||||
path: "/config/apps",
|
||||
translationKey: "supervisor",
|
||||
translationKey: "apps",
|
||||
iconPath: mdiPuzzle,
|
||||
iconColor: "#F1C447",
|
||||
component: "hassio",
|
||||
|
||||
@ -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"
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user