Skip to content

Commit 4620b02

Browse files
Merge branch 'master' into add_sysv_init_functions
2 parents c4ab81f + 64b8b88 commit 4620b02

44 files changed

Lines changed: 554 additions & 340 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/delete_phase/index.js renamed to x-pack/plugins/enterprise_search/common/version.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,8 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
export { DeletePhase } from './delete_phase.container';
7+
import { SemVer } from 'semver';
8+
import pkg from '../../../../package.json';
9+
10+
export const CURRENT_VERSION = new SemVer(pkg.version as string);
11+
export const CURRENT_MAJOR_VERSION = CURRENT_VERSION.major;

x-pack/plugins/enterprise_search/public/applications/workplace_search/components/error_state/error_state.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7+
// TODO: Remove EuiPage & EuiPageBody before exposing full app
8+
79
import React from 'react';
810
import { EuiPage, EuiPageBody, EuiPageContent } from '@elastic/eui';
911

x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/hot_phase/index.js renamed to x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
export { HotPhase } from './hot_phase.container';
7+
export { WorkplaceSearchNav } from './nav';
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import '../../../__mocks__/shallow_usecontext.mock';
8+
import React from 'react';
9+
import { shallow } from 'enzyme';
10+
11+
import { SideNav, SideNavLink } from '../../../shared/layout';
12+
import { WorkplaceSearchNav } from './';
13+
14+
describe('WorkplaceSearchNav', () => {
15+
it('renders', () => {
16+
const wrapper = shallow(<WorkplaceSearchNav />);
17+
18+
expect(wrapper.find(SideNav)).toHaveLength(1);
19+
expect(wrapper.find(SideNavLink).first().prop('to')).toEqual('/');
20+
expect(wrapper.find(SideNavLink).last().prop('to')).toEqual('http://localhost:3002/ws/search');
21+
});
22+
});
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
import React, { useContext } from 'react';
7+
import { i18n } from '@kbn/i18n';
8+
9+
import { EuiSpacer } from '@elastic/eui';
10+
11+
import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants';
12+
import { KibanaContext, IKibanaContext } from '../../../index';
13+
import { SideNav, SideNavLink } from '../../../shared/layout';
14+
15+
import {
16+
ORG_SOURCES_PATH,
17+
SOURCES_PATH,
18+
SECURITY_PATH,
19+
ROLE_MAPPINGS_PATH,
20+
GROUPS_PATH,
21+
ORG_SETTINGS_PATH,
22+
} from '../../routes';
23+
24+
export const WorkplaceSearchNav: React.FC = () => {
25+
const { enterpriseSearchUrl } = useContext(KibanaContext) as IKibanaContext;
26+
const legacyUrl = (path: string) => `${enterpriseSearchUrl}/ws#${path}`;
27+
28+
// TODO: icons
29+
return (
30+
<SideNav product={WORKPLACE_SEARCH_PLUGIN}>
31+
<SideNavLink to="/" isRoot>
32+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.overview', {
33+
defaultMessage: 'Overview',
34+
})}
35+
</SideNavLink>
36+
<SideNavLink isExternal to={legacyUrl(ORG_SOURCES_PATH)}>
37+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.sources', {
38+
defaultMessage: 'Sources',
39+
})}
40+
</SideNavLink>
41+
<SideNavLink isExternal to={legacyUrl(GROUPS_PATH)}>
42+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.groups', {
43+
defaultMessage: 'Groups',
44+
})}
45+
</SideNavLink>
46+
<SideNavLink isExternal to={legacyUrl(ROLE_MAPPINGS_PATH)}>
47+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.roleMappings', {
48+
defaultMessage: 'Role Mappings',
49+
})}
50+
</SideNavLink>
51+
<SideNavLink isExternal to={legacyUrl(SECURITY_PATH)}>
52+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.security', {
53+
defaultMessage: 'Security',
54+
})}
55+
</SideNavLink>
56+
<SideNavLink isExternal to={legacyUrl(ORG_SETTINGS_PATH)}>
57+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.settings', {
58+
defaultMessage: 'Settings',
59+
})}
60+
</SideNavLink>
61+
<EuiSpacer />
62+
<SideNavLink isExternal to={legacyUrl(SOURCES_PATH)}>
63+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.personalDashboard', {
64+
defaultMessage: 'View my personal dashboard',
65+
})}
66+
</SideNavLink>
67+
<SideNavLink isExternal to={`${enterpriseSearchUrl}/ws/search`}>
68+
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.search', {
69+
defaultMessage: 'Go to search application',
70+
})}
71+
</SideNavLink>
72+
</SideNav>
73+
);
74+
};

x-pack/plugins/enterprise_search/public/applications/workplace_search/components/overview/overview.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7+
// TODO: Remove EuiPage & EuiPageBody before exposing full app
8+
79
import React, { useContext, useEffect } from 'react';
810
import { EuiPage, EuiPageBody, EuiSpacer } from '@elastic/eui';
911
import { i18n } from '@kbn/i18n';

x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { Overview } from './components/overview';
1515

1616
import { WorkplaceSearch } from './';
1717

18-
describe('Workplace Search Routes', () => {
18+
describe('Workplace Search', () => {
1919
describe('/', () => {
2020
it('redirects to Setup Guide when enterpriseSearchUrl is not set', () => {
2121
(useContext as jest.Mock).mockImplementationOnce(() => ({ enterpriseSearchUrl: '' }));

x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import React, { useContext } from 'react';
8-
import { Route, Redirect } from 'react-router-dom';
8+
import { Route, Redirect, Switch } from 'react-router-dom';
99
import { Provider } from 'react-redux';
1010
import { Store } from 'redux';
1111
import { getContext, resetContext } from 'kea';
@@ -15,6 +15,8 @@ resetContext({ createStore: true });
1515
const store = getContext().store as Store;
1616

1717
import { KibanaContext, IKibanaContext } from '../index';
18+
import { Layout } from '../shared/layout';
19+
import { WorkplaceSearchNav } from './components/layout/nav';
1820

1921
import { SETUP_GUIDE_PATH } from './routes';
2022

@@ -23,14 +25,39 @@ import { Overview } from './components/overview';
2325

2426
export const WorkplaceSearch: React.FC = () => {
2527
const { enterpriseSearchUrl } = useContext(KibanaContext) as IKibanaContext;
28+
if (!enterpriseSearchUrl)
29+
return (
30+
<Switch>
31+
<Route exact path={SETUP_GUIDE_PATH}>
32+
<SetupGuide />
33+
</Route>
34+
<Route>
35+
<Redirect to={SETUP_GUIDE_PATH} />
36+
<SetupGuide /> {/* Kibana displays a blank page on redirect if this isn't included */}
37+
</Route>
38+
</Switch>
39+
);
40+
2641
return (
2742
<Provider store={store}>
28-
<Route exact path="/">
29-
{!enterpriseSearchUrl ? <Redirect to={SETUP_GUIDE_PATH} /> : <Overview />}
30-
</Route>
31-
<Route path={SETUP_GUIDE_PATH}>
32-
<SetupGuide />
33-
</Route>
43+
<Switch>
44+
<Route path={SETUP_GUIDE_PATH}>
45+
<SetupGuide />
46+
</Route>
47+
<Route exact path="/">
48+
<Overview />
49+
</Route>
50+
<Route>
51+
<Layout navigation={<WorkplaceSearchNav />}>
52+
<Switch>
53+
<Route exact path="/groups">
54+
{/* Will replace with groups component subsequent PR */}
55+
<div />
56+
</Route>
57+
</Switch>
58+
</Layout>
59+
</Route>
60+
</Switch>
3461
</Provider>
3562
);
3663
};

x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts

Lines changed: 101 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,107 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
export const ORG_SOURCES_PATH = '/org/sources';
8-
export const USERS_PATH = '/org/users';
9-
export const ORG_SETTINGS_PATH = '/org/settings';
7+
import { CURRENT_MAJOR_VERSION } from '../../../common/version';
8+
109
export const SETUP_GUIDE_PATH = '/setup_guide';
1110

11+
export const LEAVE_FEEDBACK_EMAIL = 'support@elastic.co';
12+
export const LEAVE_FEEDBACK_URL = `mailto:${LEAVE_FEEDBACK_EMAIL}?Subject=Elastic%20Workplace%20Search%20Feedback`;
13+
14+
export const DOCS_PREFIX = `https://www.elastic.co/guide/en/workplace-search/${CURRENT_MAJOR_VERSION}`;
15+
export const ENT_SEARCH_DOCS_PREFIX = `https://www.elastic.co/guide/en/enterprise-search/${CURRENT_MAJOR_VERSION}`;
16+
export const DOCUMENT_PERMISSIONS_DOCS_URL = `${DOCS_PREFIX}/workplace-search-sources-document-permissions.html`;
17+
export const DOCUMENT_PERMISSIONS_SYNC_DOCS_URL = `${DOCUMENT_PERMISSIONS_DOCS_URL}#sources-permissions-synchronizing`;
18+
export const PRIVATE_SOURCES_DOCS_URL = `${DOCUMENT_PERMISSIONS_DOCS_URL}#sources-permissions-org-private`;
19+
export const EXTERNAL_IDENTITIES_DOCS_URL = `${DOCS_PREFIX}/workplace-search-external-identities-api.html`;
20+
export const SECURITY_DOCS_URL = `${DOCS_PREFIX}/workplace-search-security.html`;
21+
export const SMTP_DOCS_URL = `${DOCS_PREFIX}/workplace-search-smtp-mailer.html`;
22+
export const CONFLUENCE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-confluence-cloud-connector.html`;
23+
export const CONFLUENCE_SERVER_DOCS_URL = `${DOCS_PREFIX}/workplace-search-confluence-server-connector.html`;
24+
export const DROPBOX_DOCS_URL = `${DOCS_PREFIX}/workplace-search-dropbox-connector.html`;
25+
export const GITHUB_DOCS_URL = `${DOCS_PREFIX}/workplace-search-github-connector.html`;
26+
export const GITHUB_ENTERPRISE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-github-connector.html`;
27+
export const GMAIL_DOCS_URL = `${DOCS_PREFIX}/workplace-search-gmail-connector.html`;
28+
export const GOOGLE_DRIVE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-google-drive-connector.html`;
29+
export const JIRA_DOCS_URL = `${DOCS_PREFIX}/workplace-search-jira-cloud-connector.html`;
30+
export const JIRA_SERVER_DOCS_URL = `${DOCS_PREFIX}/workplace-search-jira-server-connector.html`;
31+
export const ONE_DRIVE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-onedrive-connector.html`;
32+
export const SALESFORCE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-salesforce-connector.html`;
33+
export const SERVICE_NOW_DOCS_URL = `${DOCS_PREFIX}/workplace-search-servicenow-connector.html`;
34+
export const SHARE_POINT_DOCS_URL = `${DOCS_PREFIX}/workplace-search-sharepoint-online-connector.html`;
35+
export const SLACK_DOCS_URL = `${DOCS_PREFIX}/workplace-search-slack-connector.html`;
36+
export const ZENDESK_DOCS_URL = `${DOCS_PREFIX}/workplace-search-zendesk-connector.html`;
37+
export const CUSTOM_SOURCE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-custom-api-sources.html`;
38+
export const CUSTOM_API_DOCS_URL = `${DOCS_PREFIX}/workplace-search-custom-sources-api.html`;
39+
export const CUSTOM_API_DOCUMENT_PERMISSIONS_DOCS_URL = `${CUSTOM_SOURCE_DOCS_URL}#custom-api-source-document-level-access-control`;
40+
export const ENT_SEARCH_LICENSE_MANAGEMENT = `${ENT_SEARCH_DOCS_PREFIX}/license-management.html`;
41+
42+
export const ORG_PATH = '/org';
43+
44+
export const ROLE_MAPPINGS_PATH = `${ORG_PATH}/role-mappings`;
45+
export const ROLE_MAPPING_PATH = `${ROLE_MAPPINGS_PATH}/:roleId`;
46+
export const ROLE_MAPPING_NEW_PATH = `${ROLE_MAPPINGS_PATH}/new`;
47+
48+
export const USERS_PATH = `${ORG_PATH}/users`;
49+
export const SECURITY_PATH = `${ORG_PATH}/security`;
50+
51+
export const GROUPS_PATH = `${ORG_PATH}/groups`;
52+
export const GROUP_PATH = `${GROUPS_PATH}/:groupId`;
53+
export const GROUP_SOURCE_PRIORITIZATION_PATH = `${GROUPS_PATH}/:groupId/source-prioritization`;
54+
55+
export const SOURCES_PATH = '/sources';
56+
export const ORG_SOURCES_PATH = `${ORG_PATH}${SOURCES_PATH}`;
57+
58+
export const SOURCE_ADDED_PATH = `${SOURCES_PATH}/added`;
59+
export const ADD_SOURCE_PATH = `${SOURCES_PATH}/add`;
60+
export const ADD_CONFLUENCE_PATH = `${SOURCES_PATH}/add/confluence-cloud`;
61+
export const ADD_CONFLUENCE_SERVER_PATH = `${SOURCES_PATH}/add/confluence-server`;
62+
export const ADD_DROPBOX_PATH = `${SOURCES_PATH}/add/dropbox`;
63+
export const ADD_GITHUB_ENTERPRISE_PATH = `${SOURCES_PATH}/add/github-enterprise-server`;
64+
export const ADD_GITHUB_PATH = `${SOURCES_PATH}/add/github`;
65+
export const ADD_GMAIL_PATH = `${SOURCES_PATH}/add/gmail`;
66+
export const ADD_GOOGLE_DRIVE_PATH = `${SOURCES_PATH}/add/google-drive`;
67+
export const ADD_JIRA_PATH = `${SOURCES_PATH}/add/jira-cloud`;
68+
export const ADD_JIRA_SERVER_PATH = `${SOURCES_PATH}/add/jira-server`;
69+
export const ADD_ONE_DRIVE_PATH = `${SOURCES_PATH}/add/one-drive`;
70+
export const ADD_SALESFORCE_PATH = `${SOURCES_PATH}/add/salesforce`;
71+
export const ADD_SERVICE_NOW_PATH = `${SOURCES_PATH}/add/service-now`;
72+
export const ADD_SHARE_POINT_PATH = `${SOURCES_PATH}/add/share-point`;
73+
export const ADD_SLACK_PATH = `${SOURCES_PATH}/add/slack`;
74+
export const ADD_ZENDESK_PATH = `${SOURCES_PATH}/add/zendesk`;
75+
export const ADD_CUSTOM_PATH = `${SOURCES_PATH}/add/custom`;
76+
77+
export const PERSONAL_SETTINGS_PATH = '/settings';
78+
79+
export const SOURCE_DETAILS_PATH = `${SOURCES_PATH}/:sourceId`;
80+
export const SOURCE_CONTENT_PATH = `${SOURCES_PATH}/:sourceId/content`;
81+
export const SOURCE_SCHEMAS_PATH = `${SOURCES_PATH}/:sourceId/schemas`;
82+
export const SOURCE_DISPLAY_SETTINGS_PATH = `${SOURCES_PATH}/:sourceId/display-settings`;
83+
export const SOURCE_SETTINGS_PATH = `${SOURCES_PATH}/:sourceId/settings`;
84+
export const REINDEX_JOB_PATH = `${SOURCES_PATH}/:sourceId/schema-errors/:activeReindexJobId`;
85+
86+
export const DISPLAY_SETTINGS_SEARCH_RESULT_PATH = `${SOURCE_DISPLAY_SETTINGS_PATH}/`;
87+
export const DISPLAY_SETTINGS_RESULT_DETAIL_PATH = `${SOURCE_DISPLAY_SETTINGS_PATH}/result-detail`;
88+
89+
export const ORG_SETTINGS_PATH = `${ORG_PATH}/settings`;
90+
export const ORG_SETTINGS_CUSTOMIZE_PATH = `${ORG_SETTINGS_PATH}/customize`;
91+
export const ORG_SETTINGS_CONNECTORS_PATH = `${ORG_SETTINGS_PATH}/connectors`;
92+
export const ORG_SETTINGS_OAUTH_APPLICATION_PATH = `${ORG_SETTINGS_PATH}/oauth`;
93+
export const EDIT_CONFLUENCE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/confluence-cloud/edit`;
94+
export const EDIT_CONFLUENCE_SERVER_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/confluence-server/edit`;
95+
export const EDIT_DROPBOX_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/dropbox/edit`;
96+
export const EDIT_GITHUB_ENTERPRISE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/github-enterprise-server/edit`;
97+
export const EDIT_GITHUB_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/github/edit`;
98+
export const EDIT_GMAIL_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/gmail/edit`;
99+
export const EDIT_GOOGLE_DRIVE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/google-drive/edit`;
100+
export const EDIT_JIRA_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/jira-cloud/edit`;
101+
export const EDIT_JIRA_SERVER_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/jira-server/edit`;
102+
export const EDIT_ONE_DRIVE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/one-drive/edit`;
103+
export const EDIT_SALESFORCE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/salesforce/edit`;
104+
export const EDIT_SERVICE_NOW_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/service-now/edit`;
105+
export const EDIT_SHARE_POINT_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/share-point/edit`;
106+
export const EDIT_SLACK_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/slack/edit`;
107+
export const EDIT_ZENDESK_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/zendesk/edit`;
108+
export const EDIT_CUSTOM_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/custom/edit`;
109+
12110
export const getSourcePath = (sourceId: string): string => `${ORG_SOURCES_PATH}/${sourceId}`;

x-pack/plugins/index_lifecycle_management/public/application/sections/components/active_badge.js renamed to x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/active_badge.tsx

File renamed without changes.

0 commit comments

Comments
 (0)