diff --git a/awx/ui_next/src/routeConfig.js b/awx/ui_next/src/routeConfig.js
index 37f1732cb0..4b43dc4993 100644
--- a/awx/ui_next/src/routeConfig.js
+++ b/awx/ui_next/src/routeConfig.js
@@ -138,7 +138,7 @@ function getRouteConfig(i18n) {
screen: InstanceGroups,
},
{
- title: i18n._(t`Integrations`),
+ title: i18n._(t`Applications`),
path: '/applications',
screen: Applications,
},
diff --git a/awx/ui_next/src/screens/Application/Application/Application.jsx b/awx/ui_next/src/screens/Application/Application/Application.jsx
new file mode 100644
index 0000000000..5a002f2990
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/Application/Application.jsx
@@ -0,0 +1,26 @@
+import React from 'react';
+import { Route, Switch, Redirect } from 'react-router-dom';
+import ApplicationEdit from '../ApplicationEdit';
+import ApplicationDetails from '../ApplicationDetails';
+
+function Application() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+export default Application;
diff --git a/awx/ui_next/src/screens/Application/Application/index.js b/awx/ui_next/src/screens/Application/Application/index.js
new file mode 100644
index 0000000000..f76f133dd5
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/Application/index.js
@@ -0,0 +1 @@
+export { default } from './Application';
diff --git a/awx/ui_next/src/screens/Application/ApplicationAdd/ApplicationAdd.jsx b/awx/ui_next/src/screens/Application/ApplicationAdd/ApplicationAdd.jsx
new file mode 100644
index 0000000000..a25c690a7b
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationAdd/ApplicationAdd.jsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Card, PageSection } from '@patternfly/react-core';
+
+function ApplicatonAdd() {
+ return (
+ <>
+
+
+ Applications Add
+
+
+ >
+ );
+}
+export default ApplicatonAdd;
diff --git a/awx/ui_next/src/screens/Application/ApplicationAdd/index.js b/awx/ui_next/src/screens/Application/ApplicationAdd/index.js
new file mode 100644
index 0000000000..54101fc16b
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationAdd/index.js
@@ -0,0 +1 @@
+export { default } from './ApplicationAdd';
diff --git a/awx/ui_next/src/screens/Application/ApplicationDetails/ApplicationDetails.jsx b/awx/ui_next/src/screens/Application/ApplicationDetails/ApplicationDetails.jsx
new file mode 100644
index 0000000000..c8051841bb
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationDetails/ApplicationDetails.jsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import { Card, PageSection } from '@patternfly/react-core';
+
+function ApplicationDetails() {
+ return (
+
+ Application Details
+
+ );
+}
+export default ApplicationDetails;
diff --git a/awx/ui_next/src/screens/Application/ApplicationDetails/index.js b/awx/ui_next/src/screens/Application/ApplicationDetails/index.js
new file mode 100644
index 0000000000..fc3261983b
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationDetails/index.js
@@ -0,0 +1 @@
+export { default } from './ApplicationDetails';
diff --git a/awx/ui_next/src/screens/Application/ApplicationEdit/ApplicationEdit.jsx b/awx/ui_next/src/screens/Application/ApplicationEdit/ApplicationEdit.jsx
new file mode 100644
index 0000000000..e72f93b681
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationEdit/ApplicationEdit.jsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import { Card, PageSection } from '@patternfly/react-core';
+
+function ApplicationEdit() {
+ return (
+
+ Application Edit
+
+ );
+}
+export default ApplicationEdit;
diff --git a/awx/ui_next/src/screens/Application/ApplicationEdit/index.js b/awx/ui_next/src/screens/Application/ApplicationEdit/index.js
new file mode 100644
index 0000000000..2ab4beb8d4
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationEdit/index.js
@@ -0,0 +1 @@
+export { default } from './ApplicationEdit';
diff --git a/awx/ui_next/src/screens/Application/Applications.jsx b/awx/ui_next/src/screens/Application/Applications.jsx
index 47a5e3250a..19a23be08e 100644
--- a/awx/ui_next/src/screens/Application/Applications.jsx
+++ b/awx/ui_next/src/screens/Application/Applications.jsx
@@ -1,26 +1,49 @@
-import React, { Component, Fragment } from 'react';
+import React, { useState, useCallback } from 'react';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
-import {
- PageSection,
- PageSectionVariants,
- Title,
-} from '@patternfly/react-core';
+import { Route, Switch } from 'react-router-dom';
-class Applications extends Component {
- render() {
- const { i18n } = this.props;
- const { light } = PageSectionVariants;
+import ApplicationsList from './ApplicationsList';
+import ApplicationAdd from './ApplicationAdd';
+import Application from './Application';
+import Breadcrumbs from '../../components/Breadcrumbs';
- return (
-
-
- {i18n._(t`Applications`)}
-
-
-
- );
- }
+function Applications({ i18n }) {
+ const [breadcrumbConfig, setBreadcrumbConfig] = useState({
+ '/applications': i18n._(t`Applications`),
+ '/applications/add': i18n._(t`Create New Application`),
+ });
+
+ const buildBreadcrumbConfig = useCallback(
+ application => {
+ if (!application) {
+ return;
+ }
+
+ setBreadcrumbConfig({
+ '/applications': i18n._(t`Applications`),
+ '/applications/add': i18n._(t`Create New Application`),
+ [`/application/${application.id}`]: `${application.name}`,
+ });
+ },
+ [i18n]
+ );
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
}
export default withI18n()(Applications);
diff --git a/awx/ui_next/src/screens/Application/Applications.test.jsx b/awx/ui_next/src/screens/Application/Applications.test.jsx
index cb747a920b..f309a2b60a 100644
--- a/awx/ui_next/src/screens/Application/Applications.test.jsx
+++ b/awx/ui_next/src/screens/Application/Applications.test.jsx
@@ -7,12 +7,10 @@ import Applications from './Applications';
describe('', () => {
let pageWrapper;
let pageSections;
- let title;
beforeEach(() => {
pageWrapper = mountWithContexts();
pageSections = pageWrapper.find('PageSection');
- title = pageWrapper.find('Title');
});
afterEach(() => {
@@ -21,9 +19,7 @@ describe('', () => {
test('initially renders without crashing', () => {
expect(pageWrapper.length).toBe(1);
- expect(pageSections.length).toBe(2);
- expect(title.length).toBe(1);
- expect(title.props().size).toBe('2xl');
+ expect(pageSections.length).toBe(1);
expect(pageSections.first().props().variant).toBe('light');
});
});
diff --git a/awx/ui_next/src/screens/Application/ApplicationsList/ApplicationsList.jsx b/awx/ui_next/src/screens/Application/ApplicationsList/ApplicationsList.jsx
new file mode 100644
index 0000000000..6fcf16bb73
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationsList/ApplicationsList.jsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import { Card, PageSection } from '@patternfly/react-core';
+
+function ApplicationsList() {
+ return (
+ <>
+
+
+ Applications List
+
+
+ >
+ );
+}
+export default ApplicationsList;
diff --git a/awx/ui_next/src/screens/Application/ApplicationsList/index.js b/awx/ui_next/src/screens/Application/ApplicationsList/index.js
new file mode 100644
index 0000000000..34f1107076
--- /dev/null
+++ b/awx/ui_next/src/screens/Application/ApplicationsList/index.js
@@ -0,0 +1 @@
+export { default } from './ApplicationsList';