[Enterprise Search] Rename top-level plugin to "Overview" in prep for new "Content" plugin (#126738)
|
@ -45,7 +45,7 @@ export const PROJECTS = [
|
|||
{ name: 'enterprise_search/shared/cypress' }
|
||||
),
|
||||
createProject(
|
||||
'x-pack/plugins/enterprise_search/public/applications/enterprise_search/cypress/tsconfig.json',
|
||||
'x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/cypress/tsconfig.json',
|
||||
{ name: 'enterprise_search/overview/cypress' }
|
||||
),
|
||||
createProject(
|
||||
|
|
|
@ -7,21 +7,37 @@
|
|||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
export const ENTERPRISE_SEARCH_PLUGIN = {
|
||||
export const ENTERPRISE_SEARCH_OVERVIEW_PLUGIN = {
|
||||
ID: 'enterpriseSearch',
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.productName', {
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.overview.productName', {
|
||||
defaultMessage: 'Enterprise Search',
|
||||
}),
|
||||
NAV_TITLE: i18n.translate('xpack.enterpriseSearch.navTitle', {
|
||||
NAV_TITLE: i18n.translate('xpack.enterpriseSearch.overview.navTitle', {
|
||||
defaultMessage: 'Overview',
|
||||
}),
|
||||
DESCRIPTION: i18n.translate('xpack.enterpriseSearch.FeatureCatalogue.description', {
|
||||
DESCRIPTION: i18n.translate('xpack.enterpriseSearch.overview.description', {
|
||||
defaultMessage: 'Create search experiences with a refined set of APIs and tools.',
|
||||
}),
|
||||
URL: '/app/enterprise_search/overview',
|
||||
LOGO: 'logoEnterpriseSearch',
|
||||
};
|
||||
|
||||
export const ENTERPRISE_SEARCH_CONTENT_PLUGIN = {
|
||||
ID: 'enterpriseSearchContent',
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.content.productName', {
|
||||
defaultMessage: 'Enterprise Search',
|
||||
}),
|
||||
NAV_TITLE: i18n.translate('xpack.enterpriseSearch.content.navTitle', {
|
||||
defaultMessage: 'Content',
|
||||
}),
|
||||
DESCRIPTION: i18n.translate('xpack.enterpriseSearch.content.description', {
|
||||
defaultMessage:
|
||||
'Enterprise search offers a number of ways to easily make your data searchable. Choose from the web crawler, Elasticsearch indices, API, direct uploads, or thrid party connectors.', // TODO: Make sure this content is correct.
|
||||
}),
|
||||
URL: '/app/enterprise_search/content',
|
||||
LOGO: 'logoEnterpriseSearch',
|
||||
};
|
||||
|
||||
export const APP_SEARCH_PLUGIN = {
|
||||
ID: 'appSearch',
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.appSearch.productName', {
|
||||
|
|
|
@ -14,7 +14,7 @@ import React from 'react';
|
|||
|
||||
import { shallow } from 'enzyme';
|
||||
|
||||
import { EnterpriseSearchPageTemplate } from '../../../../shared/layout';
|
||||
import { EnterpriseSearchPageTemplateWrapper } from '../../../../shared/layout';
|
||||
import { rerender } from '../../../../test_helpers';
|
||||
|
||||
jest.mock('./curation_logic', () => ({ CurationLogic: jest.fn() }));
|
||||
|
@ -55,7 +55,7 @@ describe('Curation', () => {
|
|||
setMockValues({ dataLoading: true });
|
||||
const wrapper = shallow(<Curation />);
|
||||
|
||||
expect(wrapper.is(EnterpriseSearchPageTemplate)).toBe(true);
|
||||
expect(wrapper.is(EnterpriseSearchPageTemplateWrapper)).toBe(true);
|
||||
});
|
||||
|
||||
it('renders a view for automated curations', () => {
|
||||
|
|
|
@ -10,7 +10,7 @@ import { useParams } from 'react-router-dom';
|
|||
|
||||
import { useValues, useActions } from 'kea';
|
||||
|
||||
import { EnterpriseSearchPageTemplate } from '../../../../shared/layout';
|
||||
import { EnterpriseSearchPageTemplateWrapper } from '../../../../shared/layout';
|
||||
|
||||
import { AutomatedCuration } from './automated_curation';
|
||||
import { CurationLogic } from './curation_logic';
|
||||
|
@ -26,7 +26,7 @@ export const Curation: React.FC = () => {
|
|||
}, [curationId]);
|
||||
|
||||
if (dataLoading) {
|
||||
return <EnterpriseSearchPageTemplate isLoading />;
|
||||
return <EnterpriseSearchPageTemplateWrapper isLoading />;
|
||||
}
|
||||
return isAutomated ? <AutomatedCuration /> : <ManualCuration />;
|
||||
};
|
||||
|
|
|
@ -14,7 +14,7 @@ import React from 'react';
|
|||
import { shallow } from 'enzyme';
|
||||
|
||||
import { SetAppSearchChrome } from '../../../shared/kibana_chrome';
|
||||
import { EnterpriseSearchPageTemplate } from '../../../shared/layout';
|
||||
import { EnterpriseSearchPageTemplateWrapper } from '../../../shared/layout';
|
||||
import { SendAppSearchTelemetry } from '../../../shared/telemetry';
|
||||
|
||||
import { AppSearchPageTemplate } from './page_template';
|
||||
|
@ -27,7 +27,7 @@ describe('AppSearchPageTemplate', () => {
|
|||
</AppSearchPageTemplate>
|
||||
);
|
||||
|
||||
expect(wrapper.type()).toEqual(EnterpriseSearchPageTemplate);
|
||||
expect(wrapper.type()).toEqual(EnterpriseSearchPageTemplateWrapper);
|
||||
expect(wrapper.prop('solutionNav')).toEqual({ name: 'App Search', items: [] });
|
||||
expect(wrapper.find('.hello').text()).toEqual('world');
|
||||
});
|
||||
|
@ -35,7 +35,9 @@ describe('AppSearchPageTemplate', () => {
|
|||
describe('page chrome', () => {
|
||||
it('takes a breadcrumb array & renders a product-specific page chrome', () => {
|
||||
const wrapper = shallow(<AppSearchPageTemplate pageChrome={['Some page']} />);
|
||||
const setPageChrome = wrapper.find(EnterpriseSearchPageTemplate).prop('setPageChrome') as any;
|
||||
const setPageChrome = wrapper
|
||||
.find(EnterpriseSearchPageTemplateWrapper)
|
||||
.prop('setPageChrome') as any;
|
||||
|
||||
expect(setPageChrome.type).toEqual(SetAppSearchChrome);
|
||||
expect(setPageChrome.props.trail).toEqual(['Some page']);
|
||||
|
@ -51,7 +53,7 @@ describe('AppSearchPageTemplate', () => {
|
|||
});
|
||||
});
|
||||
|
||||
it('passes down any ...pageTemplateProps that EnterpriseSearchPageTemplate accepts', () => {
|
||||
it('passes down any ...pageTemplateProps that EnterpriseSearchPageTemplateWrapper accepts', () => {
|
||||
const wrapper = shallow(
|
||||
<AppSearchPageTemplate
|
||||
pageHeader={{ pageTitle: 'hello world' }}
|
||||
|
@ -60,10 +62,10 @@ describe('AppSearchPageTemplate', () => {
|
|||
/>
|
||||
);
|
||||
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('pageHeader')!.pageTitle).toEqual(
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('pageHeader')!.pageTitle).toEqual(
|
||||
'hello world'
|
||||
);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('isLoading')).toEqual(false);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('emptyState')).toEqual(<div />);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('isLoading')).toEqual(false);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('emptyState')).toEqual(<div />);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -9,7 +9,7 @@ import React from 'react';
|
|||
|
||||
import { APP_SEARCH_PLUGIN } from '../../../../../common/constants';
|
||||
import { SetAppSearchChrome } from '../../../shared/kibana_chrome';
|
||||
import { EnterpriseSearchPageTemplate, PageTemplateProps } from '../../../shared/layout';
|
||||
import { EnterpriseSearchPageTemplateWrapper, PageTemplateProps } from '../../../shared/layout';
|
||||
import { SendAppSearchTelemetry } from '../../../shared/telemetry';
|
||||
|
||||
import { useAppSearchNav } from './nav';
|
||||
|
@ -21,7 +21,7 @@ export const AppSearchPageTemplate: React.FC<PageTemplateProps> = ({
|
|||
...pageTemplateProps
|
||||
}) => {
|
||||
return (
|
||||
<EnterpriseSearchPageTemplate
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
{...pageTemplateProps}
|
||||
solutionNav={{
|
||||
name: APP_SEARCH_PLUGIN.NAME,
|
||||
|
@ -31,6 +31,6 @@ export const AppSearchPageTemplate: React.FC<PageTemplateProps> = ({
|
|||
>
|
||||
{pageViewTelemetry && <SendAppSearchTelemetry action="viewed" metric={pageViewTelemetry} />}
|
||||
{children}
|
||||
</EnterpriseSearchPageTemplate>
|
||||
</EnterpriseSearchPageTemplateWrapper>
|
||||
);
|
||||
};
|
||||
|
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
|
@ -11,7 +11,7 @@ import { EuiSpacer, EuiTitle, EuiText } from '@elastic/eui';
|
|||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n-react';
|
||||
|
||||
import { ENTERPRISE_SEARCH_PLUGIN } from '../../../../../common/constants';
|
||||
import { ENTERPRISE_SEARCH_OVERVIEW_PLUGIN } from '../../../../../common/constants';
|
||||
import { SetEnterpriseSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome';
|
||||
import { SetupGuideLayout, SETUP_GUIDE_TITLE } from '../../../shared/setup_guide';
|
||||
import { SendEnterpriseSearchTelemetry as SendTelemetry } from '../../../shared/telemetry';
|
||||
|
@ -20,7 +20,7 @@ import GettingStarted from './assets/getting_started.png';
|
|||
|
||||
export const SetupGuide: React.FC = () => (
|
||||
<SetupGuideLayout
|
||||
productName={ENTERPRISE_SEARCH_PLUGIN.NAME}
|
||||
productName={ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAME}
|
||||
productEuiIcon="logoEnterpriseSearch"
|
||||
>
|
||||
<SetPageChrome trail={[SETUP_GUIDE_TITLE]} />
|
|
@ -18,15 +18,15 @@ import { ErrorConnecting } from './components/error_connecting';
|
|||
import { ProductSelector } from './components/product_selector';
|
||||
import { SetupGuide } from './components/setup_guide';
|
||||
|
||||
import { EnterpriseSearch } from './';
|
||||
import { EnterpriseSearchOverview } from './';
|
||||
|
||||
describe('EnterpriseSearch', () => {
|
||||
describe('EnterpriseSearchOverview', () => {
|
||||
it('renders the Setup Guide and Product Selector', () => {
|
||||
setMockValues({
|
||||
errorConnectingMessage: '',
|
||||
config: { host: 'localhost' },
|
||||
});
|
||||
const wrapper = shallow(<EnterpriseSearch />);
|
||||
const wrapper = shallow(<EnterpriseSearchOverview />);
|
||||
|
||||
expect(wrapper.find(SetupGuide)).toHaveLength(1);
|
||||
expect(wrapper.find(ProductSelector)).toHaveLength(1);
|
||||
|
@ -37,7 +37,7 @@ describe('EnterpriseSearch', () => {
|
|||
errorConnectingMessage: '502 Bad Gateway',
|
||||
config: { host: 'localhost' },
|
||||
});
|
||||
const wrapper = shallow(<EnterpriseSearch />);
|
||||
const wrapper = shallow(<EnterpriseSearchOverview />);
|
||||
|
||||
expect(wrapper.find(VersionMismatchPage)).toHaveLength(0);
|
||||
const errorConnecting = wrapper.find(ErrorConnecting);
|
||||
|
@ -61,7 +61,7 @@ describe('EnterpriseSearch', () => {
|
|||
config: { host: 'localhost' },
|
||||
});
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearch enterpriseSearchVersion="7.15.0" kibanaVersion="7.16.0" />
|
||||
<EnterpriseSearchOverview enterpriseSearchVersion="7.15.0" kibanaVersion="7.16.0" />
|
||||
);
|
||||
|
||||
expect(wrapper.find(VersionMismatchPage)).toHaveLength(1);
|
|
@ -21,7 +21,7 @@ import { ProductSelector } from './components/product_selector';
|
|||
import { SetupGuide } from './components/setup_guide';
|
||||
import { ROOT_PATH, SETUP_GUIDE_PATH } from './routes';
|
||||
|
||||
export const EnterpriseSearch: React.FC<InitialAppData> = ({
|
||||
export const EnterpriseSearchOverview: React.FC<InitialAppData> = ({
|
||||
access = {},
|
||||
workplaceSearch,
|
||||
enterpriseSearchVersion,
|
|
@ -15,7 +15,7 @@ import { licensingMock } from '../../../licensing/public/mocks';
|
|||
import { securityMock } from '../../../security/public/mocks';
|
||||
|
||||
import { AppSearch } from './app_search';
|
||||
import { EnterpriseSearch } from './enterprise_search';
|
||||
import { EnterpriseSearchOverview } from './enterprise_search_overview';
|
||||
import { KibanaLogic } from './shared/kibana';
|
||||
import { WorkplaceSearch } from './workplace_search';
|
||||
|
||||
|
@ -62,8 +62,8 @@ describe('renderApp', () => {
|
|||
describe('Enterprise Search apps', () => {
|
||||
afterEach(() => unmount());
|
||||
|
||||
it('renders EnterpriseSearch', () => {
|
||||
mount(EnterpriseSearch);
|
||||
it('renders EnterpriseSearchOverview', () => {
|
||||
mount(EnterpriseSearchOverview);
|
||||
expect(mockContainer.querySelector('.kbnPageTemplate')).not.toBeNull();
|
||||
});
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import { useValues } from 'kea';
|
|||
import { EuiBreadcrumb } from '@elastic/eui';
|
||||
|
||||
import {
|
||||
ENTERPRISE_SEARCH_PLUGIN,
|
||||
ENTERPRISE_SEARCH_OVERVIEW_PLUGIN,
|
||||
APP_SEARCH_PLUGIN,
|
||||
WORKPLACE_SEARCH_PLUGIN,
|
||||
} from '../../../../common/constants';
|
||||
|
@ -97,8 +97,8 @@ export const useEuiBreadcrumbs = (breadcrumbs: Breadcrumbs): EuiBreadcrumb[] =>
|
|||
export const useEnterpriseSearchBreadcrumbs = (breadcrumbs: Breadcrumbs = []) =>
|
||||
useEuiBreadcrumbs([
|
||||
{
|
||||
text: ENTERPRISE_SEARCH_PLUGIN.NAME,
|
||||
path: ENTERPRISE_SEARCH_PLUGIN.URL,
|
||||
text: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAME,
|
||||
path: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.URL,
|
||||
shouldNotCreateHref: true,
|
||||
},
|
||||
...breadcrumbs,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
import {
|
||||
ENTERPRISE_SEARCH_PLUGIN,
|
||||
ENTERPRISE_SEARCH_OVERVIEW_PLUGIN,
|
||||
APP_SEARCH_PLUGIN,
|
||||
WORKPLACE_SEARCH_PLUGIN,
|
||||
} from '../../../../common/constants';
|
||||
|
@ -30,7 +30,7 @@ export const generateTitle = (pages: Title) => pages.join(' - ');
|
|||
*/
|
||||
|
||||
export const enterpriseSearchTitle = (page: Title = []) =>
|
||||
generateTitle([...page, ENTERPRISE_SEARCH_PLUGIN.NAME]);
|
||||
generateTitle([...page, ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAME]);
|
||||
|
||||
export const appSearchTitle = (page: Title = []) =>
|
||||
generateTitle([...page, APP_SEARCH_PLUGIN.NAME]);
|
||||
|
|
|
@ -6,5 +6,5 @@
|
|||
*/
|
||||
|
||||
export type { PageTemplateProps } from './page_template';
|
||||
export { EnterpriseSearchPageTemplate } from './page_template';
|
||||
export { EnterpriseSearchPageTemplateWrapper } from './page_template';
|
||||
export { generateNavLink } from './nav_link_helpers';
|
||||
|
|
|
@ -17,25 +17,25 @@ import { KibanaPageTemplate } from '../../../../../../../src/plugins/kibana_reac
|
|||
import { FlashMessages } from '../flash_messages';
|
||||
import { Loading } from '../loading';
|
||||
|
||||
import { EnterpriseSearchPageTemplate } from './page_template';
|
||||
import { EnterpriseSearchPageTemplateWrapper } from './page_template';
|
||||
|
||||
describe('EnterpriseSearchPageTemplate', () => {
|
||||
describe('EnterpriseSearchPageTemplateWrapper', () => {
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
setMockValues({ readOnlyMode: false });
|
||||
});
|
||||
|
||||
it('renders', () => {
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplate />);
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplateWrapper />);
|
||||
|
||||
expect(wrapper.type()).toEqual(KibanaPageTemplate);
|
||||
});
|
||||
|
||||
it('renders children', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate>
|
||||
<EnterpriseSearchPageTemplateWrapper>
|
||||
<div className="hello">world</div>
|
||||
</EnterpriseSearchPageTemplate>
|
||||
</EnterpriseSearchPageTemplateWrapper>
|
||||
);
|
||||
|
||||
expect(wrapper.find('.hello').text()).toEqual('world');
|
||||
|
@ -44,9 +44,9 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
describe('loading state', () => {
|
||||
it('renders a loading icon in place of children', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate isLoading>
|
||||
<EnterpriseSearchPageTemplateWrapper isLoading>
|
||||
<div className="test" />
|
||||
</EnterpriseSearchPageTemplate>
|
||||
</EnterpriseSearchPageTemplateWrapper>
|
||||
);
|
||||
|
||||
expect(wrapper.find(Loading).exists()).toBe(true);
|
||||
|
@ -55,9 +55,9 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
|
||||
it('renders children & does not render a loading icon when the page is done loading', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate isLoading={false}>
|
||||
<EnterpriseSearchPageTemplateWrapper isLoading={false}>
|
||||
<div className="test" />
|
||||
</EnterpriseSearchPageTemplate>
|
||||
</EnterpriseSearchPageTemplateWrapper>
|
||||
);
|
||||
|
||||
expect(wrapper.find(Loading).exists()).toBe(false);
|
||||
|
@ -68,12 +68,12 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
describe('empty state', () => {
|
||||
it('renders a custom empty state in place of children', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
isEmptyState
|
||||
emptyState={<div className="emptyState">Nothing here yet!</div>}
|
||||
>
|
||||
<div className="test" />
|
||||
</EnterpriseSearchPageTemplate>
|
||||
</EnterpriseSearchPageTemplateWrapper>
|
||||
);
|
||||
|
||||
expect(wrapper.find('.emptyState').exists()).toBe(true);
|
||||
|
@ -85,12 +85,12 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
|
||||
it('does not render the custom empty state if the page is not empty', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
isEmptyState={false}
|
||||
emptyState={<div className="emptyState">Nothing here yet!</div>}
|
||||
>
|
||||
<div className="test" />
|
||||
</EnterpriseSearchPageTemplate>
|
||||
</EnterpriseSearchPageTemplateWrapper>
|
||||
);
|
||||
|
||||
expect(wrapper.find('.emptyState').exists()).toBe(false);
|
||||
|
@ -99,7 +99,7 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
|
||||
it('does not render an empty state if the page is still loading', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
isLoading
|
||||
isEmptyState
|
||||
emptyState={<div className="emptyState" />}
|
||||
|
@ -114,14 +114,14 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
describe('read-only mode', () => {
|
||||
it('renders a callout if in read-only mode', () => {
|
||||
setMockValues({ readOnlyMode: true });
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplate />);
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplateWrapper />);
|
||||
|
||||
expect(wrapper.find(EuiCallOut).exists()).toBe(true);
|
||||
});
|
||||
|
||||
it('does not render a callout if not in read-only mode', () => {
|
||||
setMockValues({ readOnlyMode: false });
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplate />);
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplateWrapper />);
|
||||
|
||||
expect(wrapper.find(EuiCallOut).exists()).toBe(false);
|
||||
});
|
||||
|
@ -129,7 +129,7 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
|
||||
describe('flash messages', () => {
|
||||
it('renders FlashMessages by default', () => {
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplate />);
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplateWrapper />);
|
||||
|
||||
expect(wrapper.find(FlashMessages).exists()).toBe(true);
|
||||
});
|
||||
|
@ -137,7 +137,7 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
it('does not render FlashMessages if hidden', () => {
|
||||
// Example use case: manually showing flash messages in an open flyout or modal
|
||||
// and not wanting to duplicate flash messages on the overlayed page
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplate hideFlashMessages />);
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplateWrapper hideFlashMessages />);
|
||||
|
||||
expect(wrapper.find(FlashMessages).exists()).toBe(false);
|
||||
});
|
||||
|
@ -147,14 +147,16 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
const SetPageChrome = () => <div />;
|
||||
|
||||
it('renders a product-specific <SetPageChrome />', () => {
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplate setPageChrome={<SetPageChrome />} />);
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplateWrapper setPageChrome={<SetPageChrome />} />
|
||||
);
|
||||
|
||||
expect(wrapper.find(SetPageChrome).exists()).toBe(true);
|
||||
});
|
||||
|
||||
it('invokes page chrome immediately (without waiting for isLoading to be finished)', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate setPageChrome={<SetPageChrome />} isLoading />
|
||||
<EnterpriseSearchPageTemplateWrapper setPageChrome={<SetPageChrome />} isLoading />
|
||||
);
|
||||
|
||||
expect(wrapper.find(SetPageChrome).exists()).toBe(true);
|
||||
|
@ -166,14 +168,14 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
|
||||
describe('EuiPageTemplate props', () => {
|
||||
it('overrides the restrictWidth prop', () => {
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplate restrictWidth />);
|
||||
const wrapper = shallow(<EnterpriseSearchPageTemplateWrapper restrictWidth />);
|
||||
|
||||
expect(wrapper.find(KibanaPageTemplate).prop('restrictWidth')).toEqual(true);
|
||||
});
|
||||
|
||||
it('passes down any ...pageTemplateProps that EuiPageTemplate accepts', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
template="empty"
|
||||
paddingSize="s"
|
||||
pageHeader={{ pageTitle: 'hello world' }}
|
||||
|
@ -187,7 +189,10 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
|
||||
it('sets enterpriseSearchPageTemplate classNames while still accepting custom classNames', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate className="hello" pageContentProps={{ className: 'world' }} />
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
className="hello"
|
||||
pageContentProps={{ className: 'world' }}
|
||||
/>
|
||||
);
|
||||
|
||||
expect(wrapper.find(KibanaPageTemplate).prop('className')).toEqual(
|
||||
|
@ -200,7 +205,9 @@ describe('EnterpriseSearchPageTemplate', () => {
|
|||
|
||||
it('automatically sets the Enterprise Search logo onto passed solution navs', () => {
|
||||
const wrapper = shallow(
|
||||
<EnterpriseSearchPageTemplate solutionNav={{ name: 'Enterprise Search', items: [] }} />
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
solutionNav={{ name: 'Enterprise Search', items: [] }}
|
||||
/>
|
||||
);
|
||||
|
||||
expect(wrapper.find(KibanaPageTemplate).prop('solutionNav')).toEqual({
|
||||
|
|
|
@ -26,7 +26,7 @@ import { Loading } from '../loading';
|
|||
import './page_template.scss';
|
||||
|
||||
/*
|
||||
* EnterpriseSearchPageTemplate is a light wrapper for KibanaPageTemplate (which
|
||||
* EnterpriseSearchPageTemplateWrapper is a light wrapper for KibanaPageTemplate (which
|
||||
* is a light wrapper for EuiPageTemplate). It should contain only concerns shared
|
||||
* between both AS & WS, which should have their own AppSearchPageTemplate &
|
||||
* WorkplaceSearchPageTemplate sitting on top of this template (:nesting_dolls:),
|
||||
|
@ -46,7 +46,7 @@ export type PageTemplateProps = KibanaPageTemplateProps & {
|
|||
pageViewTelemetry?: string;
|
||||
};
|
||||
|
||||
export const EnterpriseSearchPageTemplate: React.FC<PageTemplateProps> = ({
|
||||
export const EnterpriseSearchPageTemplateWrapper: React.FC<PageTemplateProps> = ({
|
||||
children,
|
||||
className,
|
||||
hideFlashMessages,
|
||||
|
|
|
@ -14,7 +14,7 @@ import React from 'react';
|
|||
import { shallow } from 'enzyme';
|
||||
|
||||
import { SetWorkplaceSearchChrome } from '../../../shared/kibana_chrome';
|
||||
import { EnterpriseSearchPageTemplate } from '../../../shared/layout';
|
||||
import { EnterpriseSearchPageTemplateWrapper } from '../../../shared/layout';
|
||||
import { SendWorkplaceSearchTelemetry } from '../../../shared/telemetry';
|
||||
|
||||
import { WorkplaceSearchPageTemplate } from './page_template';
|
||||
|
@ -27,7 +27,7 @@ describe('WorkplaceSearchPageTemplate', () => {
|
|||
</WorkplaceSearchPageTemplate>
|
||||
);
|
||||
|
||||
expect(wrapper.type()).toEqual(EnterpriseSearchPageTemplate);
|
||||
expect(wrapper.type()).toEqual(EnterpriseSearchPageTemplateWrapper);
|
||||
expect(wrapper.prop('solutionNav')).toEqual({ name: 'Workplace Search', items: [] });
|
||||
expect(wrapper.find('.hello').text()).toEqual('world');
|
||||
});
|
||||
|
@ -35,7 +35,9 @@ describe('WorkplaceSearchPageTemplate', () => {
|
|||
describe('page chrome', () => {
|
||||
it('takes a breadcrumb array & renders a product-specific page chrome', () => {
|
||||
const wrapper = shallow(<WorkplaceSearchPageTemplate pageChrome={['Some page']} />);
|
||||
const setPageChrome = wrapper.find(EnterpriseSearchPageTemplate).prop('setPageChrome') as any;
|
||||
const setPageChrome = wrapper
|
||||
.find(EnterpriseSearchPageTemplateWrapper)
|
||||
.prop('setPageChrome') as any;
|
||||
|
||||
expect(setPageChrome.type).toEqual(SetWorkplaceSearchChrome);
|
||||
expect(setPageChrome.props.trail).toEqual(['Some page']);
|
||||
|
@ -54,13 +56,15 @@ describe('WorkplaceSearchPageTemplate', () => {
|
|||
describe('props', () => {
|
||||
it('allows overriding the restrictWidth default', () => {
|
||||
const wrapper = shallow(<WorkplaceSearchPageTemplate />);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('restrictWidth')).toEqual(true);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('restrictWidth')).toEqual(true);
|
||||
|
||||
wrapper.setProps({ restrictWidth: false });
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('restrictWidth')).toEqual(false);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('restrictWidth')).toEqual(
|
||||
false
|
||||
);
|
||||
});
|
||||
|
||||
it('passes down any ...pageTemplateProps that EnterpriseSearchPageTemplate accepts', () => {
|
||||
it('passes down any ...pageTemplateProps that EnterpriseSearchPageTemplateWrapper accepts', () => {
|
||||
const wrapper = shallow(
|
||||
<WorkplaceSearchPageTemplate
|
||||
pageHeader={{ pageTitle: 'hello world' }}
|
||||
|
@ -69,11 +73,11 @@ describe('WorkplaceSearchPageTemplate', () => {
|
|||
/>
|
||||
);
|
||||
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('pageHeader')!.pageTitle).toEqual(
|
||||
'hello world'
|
||||
);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('isLoading')).toEqual(false);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplate).prop('emptyState')).toEqual(<div />);
|
||||
expect(
|
||||
wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('pageHeader')!.pageTitle
|
||||
).toEqual('hello world');
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('isLoading')).toEqual(false);
|
||||
expect(wrapper.find(EnterpriseSearchPageTemplateWrapper).prop('emptyState')).toEqual(<div />);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -9,7 +9,7 @@ import React from 'react';
|
|||
|
||||
import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants';
|
||||
import { SetWorkplaceSearchChrome } from '../../../shared/kibana_chrome';
|
||||
import { EnterpriseSearchPageTemplate, PageTemplateProps } from '../../../shared/layout';
|
||||
import { EnterpriseSearchPageTemplateWrapper, PageTemplateProps } from '../../../shared/layout';
|
||||
import { SendWorkplaceSearchTelemetry } from '../../../shared/telemetry';
|
||||
|
||||
import { useWorkplaceSearchNav } from './nav';
|
||||
|
@ -21,7 +21,7 @@ export const WorkplaceSearchPageTemplate: React.FC<PageTemplateProps> = ({
|
|||
...pageTemplateProps
|
||||
}) => {
|
||||
return (
|
||||
<EnterpriseSearchPageTemplate
|
||||
<EnterpriseSearchPageTemplateWrapper
|
||||
restrictWidth
|
||||
{...pageTemplateProps}
|
||||
solutionNav={{
|
||||
|
@ -34,6 +34,6 @@ export const WorkplaceSearchPageTemplate: React.FC<PageTemplateProps> = ({
|
|||
<SendWorkplaceSearchTelemetry action="viewed" metric={pageViewTelemetry} />
|
||||
)}
|
||||
{children}
|
||||
</EnterpriseSearchPageTemplate>
|
||||
</EnterpriseSearchPageTemplateWrapper>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -26,7 +26,7 @@ import { SecurityPluginSetup, SecurityPluginStart } from '../../security/public'
|
|||
|
||||
import {
|
||||
APP_SEARCH_PLUGIN,
|
||||
ENTERPRISE_SEARCH_PLUGIN,
|
||||
ENTERPRISE_SEARCH_OVERVIEW_PLUGIN,
|
||||
WORKPLACE_SEARCH_PLUGIN,
|
||||
} from '../common/constants';
|
||||
import { InitialAppData } from '../common/types';
|
||||
|
@ -67,30 +67,32 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
const { cloud } = plugins;
|
||||
|
||||
core.application.register({
|
||||
id: ENTERPRISE_SEARCH_PLUGIN.ID,
|
||||
title: ENTERPRISE_SEARCH_PLUGIN.NAV_TITLE,
|
||||
euiIconType: ENTERPRISE_SEARCH_PLUGIN.LOGO,
|
||||
appRoute: ENTERPRISE_SEARCH_PLUGIN.URL,
|
||||
id: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.ID,
|
||||
title: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAV_TITLE,
|
||||
euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO,
|
||||
appRoute: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.URL,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
mount: async (params: AppMountParameters) => {
|
||||
const kibanaDeps = await this.getKibanaDeps(core, params, cloud);
|
||||
const { chrome, http } = kibanaDeps.core;
|
||||
chrome.docTitle.change(ENTERPRISE_SEARCH_PLUGIN.NAME);
|
||||
chrome.docTitle.change(ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAME);
|
||||
|
||||
await this.getInitialData(http);
|
||||
const pluginData = this.getPluginData();
|
||||
|
||||
const { renderApp } = await import('./applications');
|
||||
const { EnterpriseSearch } = await import('./applications/enterprise_search');
|
||||
const { EnterpriseSearchOverview } = await import(
|
||||
'./applications/enterprise_search_overview'
|
||||
);
|
||||
|
||||
return renderApp(EnterpriseSearch, kibanaDeps, pluginData);
|
||||
return renderApp(EnterpriseSearchOverview, kibanaDeps, pluginData);
|
||||
},
|
||||
});
|
||||
|
||||
core.application.register({
|
||||
id: APP_SEARCH_PLUGIN.ID,
|
||||
title: APP_SEARCH_PLUGIN.NAME,
|
||||
euiIconType: ENTERPRISE_SEARCH_PLUGIN.LOGO,
|
||||
euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO,
|
||||
appRoute: APP_SEARCH_PLUGIN.URL,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
mount: async (params: AppMountParameters) => {
|
||||
|
@ -111,7 +113,7 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
core.application.register({
|
||||
id: WORKPLACE_SEARCH_PLUGIN.ID,
|
||||
title: WORKPLACE_SEARCH_PLUGIN.NAME,
|
||||
euiIconType: ENTERPRISE_SEARCH_PLUGIN.LOGO,
|
||||
euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO,
|
||||
appRoute: WORKPLACE_SEARCH_PLUGIN.URL,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
mount: async (params: AppMountParameters) => {
|
||||
|
@ -134,11 +136,11 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
|
||||
if (plugins.home) {
|
||||
plugins.home.featureCatalogue.registerSolution({
|
||||
id: ENTERPRISE_SEARCH_PLUGIN.ID,
|
||||
title: ENTERPRISE_SEARCH_PLUGIN.NAME,
|
||||
id: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.ID,
|
||||
title: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAME,
|
||||
icon: 'logoEnterpriseSearch',
|
||||
description: ENTERPRISE_SEARCH_PLUGIN.DESCRIPTION,
|
||||
path: ENTERPRISE_SEARCH_PLUGIN.URL,
|
||||
description: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.DESCRIPTION,
|
||||
path: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.URL,
|
||||
order: 100,
|
||||
});
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ import { SecurityPluginSetup } from '../../security/server';
|
|||
import { SpacesPluginStart } from '../../spaces/server';
|
||||
|
||||
import {
|
||||
ENTERPRISE_SEARCH_PLUGIN,
|
||||
ENTERPRISE_SEARCH_OVERVIEW_PLUGIN,
|
||||
APP_SEARCH_PLUGIN,
|
||||
WORKPLACE_SEARCH_PLUGIN,
|
||||
LOGS_SOURCE_ID,
|
||||
|
@ -101,17 +101,21 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
* Register space/feature control
|
||||
*/
|
||||
features.registerKibanaFeature({
|
||||
id: ENTERPRISE_SEARCH_PLUGIN.ID,
|
||||
name: ENTERPRISE_SEARCH_PLUGIN.NAME,
|
||||
id: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.ID,
|
||||
name: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.NAME,
|
||||
order: 0,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
app: [
|
||||
'kibana',
|
||||
ENTERPRISE_SEARCH_PLUGIN.ID,
|
||||
ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.ID,
|
||||
APP_SEARCH_PLUGIN.ID,
|
||||
WORKPLACE_SEARCH_PLUGIN.ID,
|
||||
],
|
||||
catalogue: [
|
||||
ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.ID,
|
||||
APP_SEARCH_PLUGIN.ID,
|
||||
WORKPLACE_SEARCH_PLUGIN.ID,
|
||||
],
|
||||
catalogue: [ENTERPRISE_SEARCH_PLUGIN.ID, APP_SEARCH_PLUGIN.ID, WORKPLACE_SEARCH_PLUGIN.ID],
|
||||
privileges: null,
|
||||
});
|
||||
|
||||
|
|
|
@ -10859,13 +10859,13 @@
|
|||
"xpack.enterpriseSearch.errorConnectingState.troubleshootAuth": "ユーザー認証を確認してください。",
|
||||
"xpack.enterpriseSearch.errorConnectingState.troubleshootAuthNative": "Elasticsearchネイティブ認証、SSO/SAML、またはOpenID Connectを使用して認証する必要があります。",
|
||||
"xpack.enterpriseSearch.errorConnectingState.troubleshootAuthSAML": "SAMLやOpenID Connectなどの外部SSOプロバイダーを使用している場合は、エンタープライズ サーチでSAML/OIDCレルムを設定できる必要があります。",
|
||||
"xpack.enterpriseSearch.FeatureCatalogue.description": "厳選されたAPIとツールを使用して検索エクスペリエンスを作成します。",
|
||||
"xpack.enterpriseSearch.overview.description": "厳選されたAPIとツールを使用して検索エクスペリエンスを作成します。",
|
||||
"xpack.enterpriseSearch.hiddenText": "非表示のテキスト",
|
||||
"xpack.enterpriseSearch.inlineEditableTable.newRowButtonLabel": "新しい行",
|
||||
"xpack.enterpriseSearch.licenseCalloutBody": "SAML経由のエンタープライズ認証、ドキュメントレベルのアクセス権と許可サポート、カスタム検索経験などは有効なPlatinumライセンスで提供されます。",
|
||||
"xpack.enterpriseSearch.licenseDocumentationLink": "ライセンス機能の詳細",
|
||||
"xpack.enterpriseSearch.licenseManagementLink": "ライセンスを更新",
|
||||
"xpack.enterpriseSearch.navTitle": "概要",
|
||||
"xpack.enterpriseSearch.overview.navTitle": "概要",
|
||||
"xpack.enterpriseSearch.notFound.action1": "ダッシュボードに戻す",
|
||||
"xpack.enterpriseSearch.notFound.action2": "サポートに問い合わせる",
|
||||
"xpack.enterpriseSearch.notFound.description": "お探しのページは見つかりませんでした。",
|
||||
|
@ -10882,7 +10882,7 @@
|
|||
"xpack.enterpriseSearch.overview.setupCta.description": "Elastic App Search および Workplace Search を使用して、アプリまたは社内組織に検索を追加できます。検索が簡単になるとどのような利点があるのかについては、動画をご覧ください。",
|
||||
"xpack.enterpriseSearch.overview.setupHeading": "セットアップする製品を選択し、開始してください。",
|
||||
"xpack.enterpriseSearch.overview.subheading": "アプリまたは組織に検索機能を追加できます。",
|
||||
"xpack.enterpriseSearch.productName": "Enterprise Search",
|
||||
"xpack.enterpriseSearch.overview.productName": "Enterprise Search",
|
||||
"xpack.enterpriseSearch.productSelectorCalloutTitle": "あらゆる規模のチームに対応するエンタープライズ級の機能",
|
||||
"xpack.enterpriseSearch.readOnlyMode.warning": "エンタープライズ サーチは読み取り専用モードです。作成、編集、削除などの変更を実行できません。",
|
||||
"xpack.enterpriseSearch.roleMapping.addRoleMappingButtonLabel": "マッピングを追加",
|
||||
|
|
|
@ -10880,13 +10880,13 @@
|
|||
"xpack.enterpriseSearch.errorConnectingState.troubleshootAuth": "检查您的用户身份验证:",
|
||||
"xpack.enterpriseSearch.errorConnectingState.troubleshootAuthNative": "必须使用 Elasticsearch 本机身份验证、SSO/SAML 或 OpenID Connect 执行身份验证。",
|
||||
"xpack.enterpriseSearch.errorConnectingState.troubleshootAuthSAML": "如果使用外部 SSO 提供程序,如 SAML 或 OpenID Connect,还必须在 Enterprise Search 上设置 SAML/OIDC Realm。",
|
||||
"xpack.enterpriseSearch.FeatureCatalogue.description": "使用一组优化的 API 和工具打造搜索体验。",
|
||||
"xpack.enterpriseSearch.overview.description": "使用一组优化的 API 和工具打造搜索体验。",
|
||||
"xpack.enterpriseSearch.hiddenText": "隐藏文本",
|
||||
"xpack.enterpriseSearch.inlineEditableTable.newRowButtonLabel": "新行",
|
||||
"xpack.enterpriseSearch.licenseCalloutBody": "使用有效的白金级许可证,可获得通过 SAML 实现的企业验证、文档级别权限和授权支持、定制搜索体验等等。",
|
||||
"xpack.enterpriseSearch.licenseDocumentationLink": "详细了解许可证功能",
|
||||
"xpack.enterpriseSearch.licenseManagementLink": "管理您的许可",
|
||||
"xpack.enterpriseSearch.navTitle": "概览",
|
||||
"xpack.enterpriseSearch.overview.navTitle": "概览",
|
||||
"xpack.enterpriseSearch.notFound.action1": "返回到您的仪表板",
|
||||
"xpack.enterpriseSearch.notFound.action2": "联系支持人员",
|
||||
"xpack.enterpriseSearch.notFound.description": "找不到您要查找的页面。",
|
||||
|
@ -10903,7 +10903,7 @@
|
|||
"xpack.enterpriseSearch.overview.setupCta.description": "通过 Elastic App Search 和 Workplace Search,将搜索添加到您的应用或内部组织中。观看视频,了解方便易用的搜索功能可以帮您做些什么。",
|
||||
"xpack.enterpriseSearch.overview.setupHeading": "选择产品进行设置并开始使用。",
|
||||
"xpack.enterpriseSearch.overview.subheading": "将搜索功能添加到您的应用或组织。",
|
||||
"xpack.enterpriseSearch.productName": "Enterprise Search",
|
||||
"xpack.enterpriseSearch.overview.productName": "Enterprise Search",
|
||||
"xpack.enterpriseSearch.productSelectorCalloutTitle": "适用于大型和小型团队的企业级功能",
|
||||
"xpack.enterpriseSearch.readOnlyMode.warning": "企业搜索处于只读模式。您将无法执行更改,例如创建、编辑或删除。",
|
||||
"xpack.enterpriseSearch.roleMapping.addRoleMappingButtonLabel": "添加映射",
|
||||
|
|