Skip to content

Commit

Permalink
[8.13] [Observability AI Assistant] Mobile fixes (#177154) (#177238)
Browse files Browse the repository at this point in the history
# Backport

This will backport the following commits from `main` to `8.13`:
- [[Observability AI Assistant] Mobile fixes
(#177154)](#177154)

<!--- Backport version: 9.4.3 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Coen
Warmer","email":"coen.warmer@gmail.com"},"sourceCommit":{"committedDate":"2024-02-19T19:47:17Z","message":"[Observability
AI Assistant] Mobile fixes (#177154)\n\nResolves
https://github.com/elastic/kibana/issues/177133\r\n\r\n##
Summary\r\n\r\nThis fixes visual and interactive defects on mobile
viewports. \r\n\r\n<img width=\"1624\" alt=\"Screenshot 2024-02-19 at 14
00
30\"\r\nsrc=\"https://github.com/elastic/kibana/assets/535564/edebe648-6848-42a4-a276-fc286d3b5a46\">\r\n\r\n\r\n##
Checklist:\r\n- [X] Header Link breaks weirdly on mobile\r\n- [x] Make
sure header bar menu closes properly upon opening Assistant\r\n- [x] Fix
title bar visually\r\n- [x] Make sure prompt editor behaves\r\n- [x]
Hide conversation sidebar + new chat button\r\n- [x] Make conversations
scroll properly\r\n- [x] More? Test
thoroughly","sha":"9dd003d24e44b473362741a29e8129a8755c006a","branchLabelMapping":{"^v8.14.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","backport:prev-minor","Team:obs-ux-infra_services","Team:obs-ux-management","v8.13.0","v8.14.0"],"title":"[Observability
AI Assistant] Mobile fixes
","number":177154,"url":"https://github.com/elastic/kibana/pull/177154","mergeCommit":{"message":"[Observability
AI Assistant] Mobile fixes (#177154)\n\nResolves
https://github.com/elastic/kibana/issues/177133\r\n\r\n##
Summary\r\n\r\nThis fixes visual and interactive defects on mobile
viewports. \r\n\r\n<img width=\"1624\" alt=\"Screenshot 2024-02-19 at 14
00
30\"\r\nsrc=\"https://github.com/elastic/kibana/assets/535564/edebe648-6848-42a4-a276-fc286d3b5a46\">\r\n\r\n\r\n##
Checklist:\r\n- [X] Header Link breaks weirdly on mobile\r\n- [x] Make
sure header bar menu closes properly upon opening Assistant\r\n- [x] Fix
title bar visually\r\n- [x] Make sure prompt editor behaves\r\n- [x]
Hide conversation sidebar + new chat button\r\n- [x] Make conversations
scroll properly\r\n- [x] More? Test
thoroughly","sha":"9dd003d24e44b473362741a29e8129a8755c006a"}},"sourceBranch":"main","suggestedTargetBranches":["8.13"],"targetPullRequestStates":[{"branch":"8.13","label":"v8.13.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.14.0","branchLabelMappingKey":"^v8.14.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/177154","number":177154,"mergeCommit":{"message":"[Observability
AI Assistant] Mobile fixes (#177154)\n\nResolves
https://github.com/elastic/kibana/issues/177133\r\n\r\n##
Summary\r\n\r\nThis fixes visual and interactive defects on mobile
viewports. \r\n\r\n<img width=\"1624\" alt=\"Screenshot 2024-02-19 at 14
00
30\"\r\nsrc=\"https://github.com/elastic/kibana/assets/535564/edebe648-6848-42a4-a276-fc286d3b5a46\">\r\n\r\n\r\n##
Checklist:\r\n- [X] Header Link breaks weirdly on mobile\r\n- [x] Make
sure header bar menu closes properly upon opening Assistant\r\n- [x] Fix
title bar visually\r\n- [x] Make sure prompt editor behaves\r\n- [x]
Hide conversation sidebar + new chat button\r\n- [x] Make conversations
scroll properly\r\n- [x] More? Test
thoroughly","sha":"9dd003d24e44b473362741a29e8129a8755c006a"}}]}]
BACKPORT-->

Co-authored-by: Coen Warmer <coen.warmer@gmail.com>
  • Loading branch information
kibanamachine and CoenWarmer authored Feb 19, 2024
1 parent 08c27fd commit dca2f55
Show file tree
Hide file tree
Showing 19 changed files with 287 additions and 134 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,7 @@ import { InspectorHeaderLink } from './inspector_header_link';
import { Labs } from './labs';

export function ApmHeaderActionMenu() {
const {
core,
plugins,
config,
observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
} = useApmPluginContext();
const { core, plugins, config } = useApmPluginContext();
const { search } = window.location;
const { application, http } = core;
const { basePath } = http;
Expand Down Expand Up @@ -101,9 +96,6 @@ export function ApmHeaderActionMenu() {
})}
</EuiHeaderLink>
<InspectorHeaderLink />
{ObservabilityAIAssistantActionMenuItem ? (
<ObservabilityAIAssistantActionMenuItem />
) : null}
</EuiHeaderLinks>
);
}
18 changes: 15 additions & 3 deletions x-pack/plugins/apm/public/components/routing/app_root/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { RouteRenderer, RouterProvider } from '@kbn/typed-react-router-config';
import { euiDarkVars, euiLightVars } from '@kbn/ui-theme';
import React from 'react';
import { DefaultTheme, ThemeProvider } from 'styled-components';
import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { useKibanaEnvironmentContextProvider } from '../../../context/kibana_environment_context/use_kibana_environment_context';
import { AnomalyDetectionJobsContextProvider } from '../../../context/anomaly_detection_jobs/anomaly_detection_jobs_context';
import {
Expand Down Expand Up @@ -128,12 +129,23 @@ export function ApmAppRoot({
}

function MountApmHeaderActionMenu() {
const { setHeaderActionMenu, theme$ } =
useApmPluginContext().appMountParameters;
const {
appMountParameters: { setHeaderActionMenu, theme$ },
observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
} = useApmPluginContext();

return (
<HeaderMenuPortal setHeaderActionMenu={setHeaderActionMenu} theme$={theme$}>
<ApmHeaderActionMenu />
<EuiFlexGroup responsive={false} gutterSize="s">
<EuiFlexItem>
<ApmHeaderActionMenu />
</EuiFlexItem>
{ObservabilityAIAssistantActionMenuItem ? (
<EuiFlexItem>
<ObservabilityAIAssistantActionMenuItem />
</EuiFlexItem>
) : null}
</EuiFlexGroup>
</HeaderMenuPortal>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
import React from 'react';
import { TypedLensByValueInput } from '@kbn/lens-plugin/public';
import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public';
import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { ExpViewActionMenuContent } from './action_menu';
import { useExploratoryView } from '../../contexts/exploratory_view_config';
import { useKibana } from '../../hooks/use_kibana';

interface Props {
timeRange?: { from: string; to: string };
Expand All @@ -18,9 +20,22 @@ interface Props {
export function ExpViewActionMenu(props: Props) {
const { setHeaderActionMenu, theme$ } = useExploratoryView();

const {
observabilityAIAssistant: { ObservabilityAIAssistantActionMenuItem },
} = useKibana().services;

return (
<HeaderMenuPortal setHeaderActionMenu={setHeaderActionMenu} theme$={theme$}>
<ExpViewActionMenuContent {...props} />
<EuiFlexGroup responsive={false} gutterSize="s">
<EuiFlexItem>
<ExpViewActionMenuContent {...props} />
</EuiFlexItem>
{ObservabilityAIAssistantActionMenuItem ? (
<EuiFlexItem>
<ObservabilityAIAssistantActionMenuItem />
</EuiFlexItem>
) : null}
</EuiFlexGroup>
</HeaderMenuPortal>
);
}
36 changes: 21 additions & 15 deletions x-pack/plugins/infra/public/pages/logs/page_content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* 2.0.
*/

import { EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
import { EuiFlexGroup, EuiFlexItem, EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React, { useContext } from 'react';
import { Routes, Route } from '@kbn/shared-ux-router';
Expand Down Expand Up @@ -74,22 +74,28 @@ export const LogsPageContent: React.FunctionComponent = () => {

{setHeaderActionMenu && theme$ && (
<HeaderMenuPortal setHeaderActionMenu={setHeaderActionMenu} theme$={theme$}>
<EuiHeaderLinks gutterSize="xs">
<EuiHeaderLink color={'text'} {...settingsLinkProps}>
{settingsTabTitle}
</EuiHeaderLink>
<LazyAlertDropdownWrapper />
<EuiHeaderLink
href={getUrlForApp('/integrations/browse')}
color="primary"
iconType="indexOpen"
>
{ADD_DATA_LABEL}
</EuiHeaderLink>
<EuiFlexGroup responsive={false} gutterSize="s">
<EuiFlexItem>
<EuiHeaderLinks gutterSize="xs">
<EuiHeaderLink color={'text'} {...settingsLinkProps}>
{settingsTabTitle}
</EuiHeaderLink>
<LazyAlertDropdownWrapper />
<EuiHeaderLink
href={getUrlForApp('/integrations/browse')}
color="primary"
iconType="indexOpen"
>
{ADD_DATA_LABEL}
</EuiHeaderLink>
</EuiHeaderLinks>
</EuiFlexItem>
{ObservabilityAIAssistantActionMenuItem ? (
<ObservabilityAIAssistantActionMenuItem />
<EuiFlexItem>
<ObservabilityAIAssistantActionMenuItem />
</EuiFlexItem>
) : null}
</EuiHeaderLinks>
</EuiFlexGroup>
</HeaderMenuPortal>
)}

Expand Down
50 changes: 32 additions & 18 deletions x-pack/plugins/infra/public/pages/metrics/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,13 @@ import { i18n } from '@kbn/i18n';
import React, { useContext } from 'react';
import { Routes, Route } from '@kbn/shared-ux-router';

import { EuiErrorBoundary, EuiHeaderLinks, EuiHeaderLink } from '@elastic/eui';
import {
EuiErrorBoundary,
EuiHeaderLinks,
EuiHeaderLink,
EuiFlexGroup,
EuiFlexItem,
} from '@elastic/eui';
import { useKibana, useUiSetting } from '@kbn/kibana-react-plugin/public';
import { HeaderMenuPortal, useLinkProps } from '@kbn/observability-shared-plugin/public';
import { enableInfrastructureHostsView } from '@kbn/observability-plugin/common';
Expand Down Expand Up @@ -83,25 +89,33 @@ export const InfrastructurePage = () => {
/>
{setHeaderActionMenu && theme$ && (
<HeaderMenuPortal setHeaderActionMenu={setHeaderActionMenu} theme$={theme$}>
<EuiHeaderLinks gutterSize="xs">
<EuiHeaderLink color={'text'} {...settingsLinkProps}>
{settingsTabTitle}
</EuiHeaderLink>
<Route path={'/inventory'} component={AnomalyDetectionFlyout} />
{config.featureFlags.alertsAndRulesDropdownEnabled && (
<MetricsAlertDropdown />
)}
<EuiHeaderLink
href={kibana.services?.application?.getUrlForApp('/integrations/browse')}
color="primary"
iconType="indexOpen"
>
{ADD_DATA_LABEL}
</EuiHeaderLink>
<EuiFlexGroup responsive={false} gutterSize="s">
<EuiFlexItem>
<EuiHeaderLinks gutterSize="xs">
<EuiHeaderLink color={'text'} {...settingsLinkProps}>
{settingsTabTitle}
</EuiHeaderLink>
<Route path={'/inventory'} component={AnomalyDetectionFlyout} />
{config.featureFlags.alertsAndRulesDropdownEnabled && (
<MetricsAlertDropdown />
)}
<EuiHeaderLink
href={kibana.services?.application?.getUrlForApp(
'/integrations/browse'
)}
color="primary"
iconType="indexOpen"
>
{ADD_DATA_LABEL}
</EuiHeaderLink>
</EuiHeaderLinks>
</EuiFlexItem>
{ObservabilityAIAssistantActionMenuItem ? (
<ObservabilityAIAssistantActionMenuItem />
<EuiFlexItem>
<ObservabilityAIAssistantActionMenuItem />
</EuiFlexItem>
) : null}
</EuiHeaderLinks>
</EuiFlexGroup>
</HeaderMenuPortal>
)}
<Routes>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* 2.0.
*/

import { EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
import { EuiFlexGroup, EuiFlexItem, EuiHeaderLink, EuiHeaderLinks } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React from 'react';
import { usePluginContext } from '../../../../hooks/use_plugin_context';
Expand All @@ -25,20 +25,26 @@ export function HeaderMenu(): React.ReactElement | null {

return (
<HeaderMenuPortal setHeaderActionMenu={setHeaderActionMenu} theme$={theme.theme$}>
<EuiHeaderLinks>
<EuiHeaderLink
color="primary"
href={http.basePath.prepend('/app/integrations/browse')}
iconType="indexOpen"
>
{addDataLinkText}
</EuiHeaderLink>
{ObservabilityAIAssistantActionMenuItem ? <ObservabilityAIAssistantActionMenuItem /> : null}
</EuiHeaderLinks>
<EuiFlexGroup responsive={false} gutterSize="s">
{ObservabilityAIAssistantActionMenuItem ? (
<EuiFlexItem>
<ObservabilityAIAssistantActionMenuItem />
</EuiFlexItem>
) : null}
<EuiFlexItem>
<EuiHeaderLinks>
<EuiHeaderLink
color="primary"
href={http.basePath.prepend('/app/integrations/browse')}
iconType="indexOpen"
>
{i18n.translate('xpack.observability.home.addData', {
defaultMessage: 'Add integrations',
})}
</EuiHeaderLink>
</EuiHeaderLinks>
</EuiFlexItem>
</EuiFlexGroup>
</HeaderMenuPortal>
);
}

const addDataLinkText = i18n.translate('xpack.observability.home.addData', {
defaultMessage: 'Add integrations',
});
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,15 @@
*/
import React, { useEffect, useMemo, useState } from 'react';
import datemath from '@elastic/datemath';
import { EuiFlexGroup, EuiFlexItem, EuiHeaderLink, EuiLoadingSpinner } from '@elastic/eui';
import {
EuiFlexGroup,
EuiFlexItem,
EuiHeaderLink,
EuiLoadingSpinner,
useCurrentEuiBreakpoint,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { css } from '@emotion/css';
import moment from 'moment';
import { ObservabilityAIAssistantChatServiceProvider } from '../../context/observability_ai_assistant_chat_service_provider';
import { useAbortableAsync } from '../../hooks/use_abortable_async';
Expand All @@ -16,8 +23,14 @@ import { AssistantAvatar } from '../assistant_avatar';
import { ChatFlyout } from '../chat/chat_flyout';
import { useKibana } from '../../hooks/use_kibana';

const buttonLabelClassName = css`
display: none;
`;

export function ObservabilityAIAssistantActionMenuItem() {
const service = useObservabilityAIAssistant();
const breakpoint = useCurrentEuiBreakpoint();

const { plugins } = useKibana().services;

const [isOpen, setIsOpen] = useState(false);
Expand Down Expand Up @@ -71,15 +84,15 @@ export function ObservabilityAIAssistantActionMenuItem() {
setIsOpen(() => true);
}}
>
<EuiFlexGroup gutterSize="s" alignItems="center">
<EuiFlexGroup gutterSize="s" alignItems="center" responsive={false}>
<EuiFlexItem grow={false}>
{!isOpen || chatService.value ? (
<AssistantAvatar size="xs" />
) : (
<EuiLoadingSpinner size="m" />
)}
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiFlexItem grow={false} className={breakpoint === 'xs' ? buttonLabelClassName : ''}>
{i18n.translate('xpack.observabilityAiAssistant.actionMenuItemLabel', {
defaultMessage: 'AI Assistant',
})}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,18 @@ export function ChatBody({
}

const containerClassName = css`
background: white;
min-width: 0;
max-height: 100%;
max-width: ${startedFrom === 'conversationView'
? 1200 - 250 + 'px' // page template max width - conversation list width.
: '100%'};
`;

const headerContainerClassName = css`
padding-right: ${showLinkToConversationsApp ? '32px' : '0'};
`;

const [stickToBottom, setStickToBottom] = useState(true);

const isAtBottom = (parent: HTMLElement) =>
Expand Down Expand Up @@ -401,9 +406,10 @@ export function ChatBody({
return (
<EuiFlexGroup
direction="column"
gutterSize="none"
className={containerClassName}
gutterSize="none"
justifyContent="center"
responsive={false}
>
<EuiFlexItem grow={false} className={chatBodyContainerClassNameWithError}>
<EuiCallOut
Expand All @@ -425,7 +431,12 @@ export function ChatBody({
}

return (
<EuiFlexGroup direction="column" gutterSize="none" className={containerClassName}>
<EuiFlexGroup
direction="column"
gutterSize="none"
className={containerClassName}
responsive={false}
>
<EuiFlexItem
grow={false}
className={conversation.error ? chatBodyContainerClassNameWithError : undefined}
Expand All @@ -446,7 +457,7 @@ export function ChatBody({
</EuiCallOut>
) : null}
</EuiFlexItem>
<EuiFlexItem grow={false} css={{ paddingRight: showLinkToConversationsApp ? '24px' : '0' }}>
<EuiFlexItem grow={false} className={headerContainerClassName}>
<ChatHeader
connectors={connectors}
conversationId={
Expand Down
Loading

0 comments on commit dca2f55

Please sign in to comment.