diff --git a/packages/grafana-data/src/types/navModel.ts b/packages/grafana-data/src/types/navModel.ts index 0f6acfe430a..066d879df3d 100644 --- a/packages/grafana-data/src/types/navModel.ts +++ b/packages/grafana-data/src/types/navModel.ts @@ -26,6 +26,8 @@ export interface NavLinkDTO { pluginId?: string; // Whether the page is used to create a new resource. We may place these in a different position in the UI. isCreateAction?: boolean; + // Optional keywords to match on when searching (e.g. in the CommandPalette) + keywords?: string[]; } export interface NavModelItem extends NavLinkDTO { diff --git a/pkg/services/navtree/models.go b/pkg/services/navtree/models.go index 17ec7ed67fa..22e0e412558 100644 --- a/pkg/services/navtree/models.go +++ b/pkg/services/navtree/models.go @@ -67,6 +67,7 @@ type NavLink struct { EmptyMessageId string `json:"emptyMessageId,omitempty"` PluginID string `json:"pluginId,omitempty"` // (Optional) The ID of the plugin that registered nav link (e.g. as a standalone plugin page) IsCreateAction bool `json:"isCreateAction,omitempty"` + Keywords []string `json:"keywords,omitempty"` } func (node *NavLink) Sort() { diff --git a/pkg/services/navtree/navtreeimpl/navtree.go b/pkg/services/navtree/navtreeimpl/navtree.go index 20e56c7865d..ef5c52f7ba1 100644 --- a/pkg/services/navtree/navtreeimpl/navtree.go +++ b/pkg/services/navtree/navtreeimpl/navtree.go @@ -500,6 +500,7 @@ func (s *ServiceImpl) buildDataConnectionsNavLink(c *contextmodel.ReqContext) *n SubTitle: "Browse and create new connections", Url: baseUrl + "/add-new-connection", Children: []*navtree.NavLink{}, + Keywords: []string{"csv", "graphite", "json", "loki", "prometheus", "sql", "tempo"}, }) // Data sources diff --git a/public/app/features/commandPalette/actions/staticActions.ts b/public/app/features/commandPalette/actions/staticActions.ts index 9d4e9dbd4ff..ed93b54d5e9 100644 --- a/public/app/features/commandPalette/actions/staticActions.ts +++ b/public/app/features/commandPalette/actions/staticActions.ts @@ -22,7 +22,7 @@ function navTreeToActions(navTree: NavModelItem[], parents: NavModelItem[] = []) navItem = enrichHelpItem({ ...navItem }); delete navItem.url; } - const { url, target, text, isCreateAction, children, onClick } = navItem; + const { url, target, text, isCreateAction, children, onClick, keywords } = navItem; const hasChildren = Boolean(children?.length); if (!(url || onClick || hasChildren)) { @@ -44,6 +44,7 @@ function navTreeToActions(navTree: NavModelItem[], parents: NavModelItem[] = []) target, parent: parents.length > 0 && !isCreateAction ? idForNavItem(parents[parents.length - 1]) : undefined, perform: onClick, + keywords: keywords?.join(' '), priority: priority, subtitle: isCreateAction ? undefined : subtitle, };