diff --git a/awx/ui_next/src/components/CodeMirrorInput/VariablesInput.jsx b/awx/ui_next/src/components/CodeMirrorInput/VariablesInput.jsx
index d9aae454c1..faddd2bc13 100644
--- a/awx/ui_next/src/components/CodeMirrorInput/VariablesInput.jsx
+++ b/awx/ui_next/src/components/CodeMirrorInput/VariablesInput.jsx
@@ -4,7 +4,7 @@ import { Button, Split, SplitItem } from '@patternfly/react-core';
import styled from 'styled-components';
import { yamlToJson, jsonToYaml, isJson } from '@util/yaml';
import CodeMirrorInput from './CodeMirrorInput';
-import { ButtonGroup } from '.';
+import ButtonGroup from './ButtonGroup';
import { JSON_MODE, YAML_MODE } from './constants';
function formatJson(jsonString) {
diff --git a/awx/ui_next/src/components/CodeMirrorInput/YamlJsonToggle.jsx b/awx/ui_next/src/components/CodeMirrorInput/YamlJsonToggle.jsx
index 34d4d4a2ba..2cf1050085 100644
--- a/awx/ui_next/src/components/CodeMirrorInput/YamlJsonToggle.jsx
+++ b/awx/ui_next/src/components/CodeMirrorInput/YamlJsonToggle.jsx
@@ -2,7 +2,7 @@ import React from 'react';
import { oneOf, func } from 'prop-types';
import styled from 'styled-components';
import { Button } from '@patternfly/react-core';
-import { ButtonGroup } from '.';
+import ButtonGroup from './ButtonGroup';
const SmallButton = styled(Button)`
padding: 3px 8px;
diff --git a/awx/ui_next/src/components/CodeMirrorInput/index.js b/awx/ui_next/src/components/CodeMirrorInput/index.js
index 26ad542421..9cad016228 100644
--- a/awx/ui_next/src/components/CodeMirrorInput/index.js
+++ b/awx/ui_next/src/components/CodeMirrorInput/index.js
@@ -4,4 +4,3 @@ export default CodeMirrorInput;
export { default as VariablesDetail } from './VariablesDetail';
export { default as VariablesInput } from './VariablesInput';
export { default as VariablesField } from './VariablesField';
-export { default as ButtonGroup } from './ButtonGroup';
diff --git a/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx b/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx
index 4547c9df66..0bad51f112 100644
--- a/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx
+++ b/awx/ui_next/src/components/PaginatedDataList/ToolbarDeleteButton.jsx
@@ -184,9 +184,7 @@ class ToolbarDeleteButton extends React.Component {
,
]}
>
-
- {i18n._(t`This action will delete the following:`)}
-
+ {i18n._(t`This action will delete the following:`)}
{itemsToDelete.map(item => (
{item.name || item.username}
diff --git a/awx/ui_next/src/components/Sparkline/Sparkline.jsx b/awx/ui_next/src/components/Sparkline/Sparkline.jsx
index d0aabceb95..06ec23ae3a 100644
--- a/awx/ui_next/src/components/Sparkline/Sparkline.jsx
+++ b/awx/ui_next/src/components/Sparkline/Sparkline.jsx
@@ -2,7 +2,7 @@ import React, { Fragment } from 'react';
import { arrayOf, object } from 'prop-types';
import { withI18n } from '@lingui/react';
import { Link as _Link } from 'react-router-dom';
-import { StatusIcon } from '@components/Sparkline';
+import StatusIcon from '@components/StatusIcon';
import { Tooltip } from '@patternfly/react-core';
import styled from 'styled-components';
import { t } from '@lingui/macro';
diff --git a/awx/ui_next/src/components/Sparkline/index.js b/awx/ui_next/src/components/Sparkline/index.js
index f7b30c0d98..7477abfdcc 100644
--- a/awx/ui_next/src/components/Sparkline/index.js
+++ b/awx/ui_next/src/components/Sparkline/index.js
@@ -1,2 +1 @@
-export { default as Sparkline } from './Sparkline';
-export { default as StatusIcon } from './StatusIcon';
+export { default } from './Sparkline';
diff --git a/awx/ui_next/src/components/Sparkline/StatusIcon.jsx b/awx/ui_next/src/components/StatusIcon/StatusIcon.jsx
similarity index 96%
rename from awx/ui_next/src/components/Sparkline/StatusIcon.jsx
rename to awx/ui_next/src/components/StatusIcon/StatusIcon.jsx
index d89d5592d4..e04a169121 100644
--- a/awx/ui_next/src/components/Sparkline/StatusIcon.jsx
+++ b/awx/ui_next/src/components/StatusIcon/StatusIcon.jsx
@@ -12,8 +12,12 @@ const Pulse = keyframes`
`;
const Wrapper = styled.div`
- width: 14px;
+ align-items: center;
+ display: flex;
+ flex-flow: column nowrap;
height: 14px;
+ margin: 5px 0;
+ width: 14px;
`;
const WhiteTop = styled.div`
diff --git a/awx/ui_next/src/components/Sparkline/StatusIcon.test.jsx b/awx/ui_next/src/components/StatusIcon/StatusIcon.test.jsx
similarity index 100%
rename from awx/ui_next/src/components/Sparkline/StatusIcon.test.jsx
rename to awx/ui_next/src/components/StatusIcon/StatusIcon.test.jsx
diff --git a/awx/ui_next/src/components/StatusIcon/index.js b/awx/ui_next/src/components/StatusIcon/index.js
new file mode 100644
index 0000000000..d026e41e3e
--- /dev/null
+++ b/awx/ui_next/src/components/StatusIcon/index.js
@@ -0,0 +1 @@
+export { default } from './StatusIcon';
diff --git a/awx/ui_next/src/components/Workflow/WorkflowActionTooltipItem.test.jsx b/awx/ui_next/src/components/Workflow/WorkflowActionTooltipItem.test.jsx
index ed6067a3c0..4f06a7f02f 100644
--- a/awx/ui_next/src/components/Workflow/WorkflowActionTooltipItem.test.jsx
+++ b/awx/ui_next/src/components/Workflow/WorkflowActionTooltipItem.test.jsx
@@ -4,7 +4,7 @@ import WorkflowActionTooltipItem from './WorkflowActionTooltipItem';
describe('WorkflowActionTooltipItem', () => {
test('successfully mounts', () => {
- const wrapper = mount();
+ const wrapper = mount();
expect(wrapper).toHaveLength(1);
});
});
diff --git a/awx/ui_next/src/screens/Host/HostDetail/HostDetail.jsx b/awx/ui_next/src/screens/Host/HostDetail/HostDetail.jsx
index 4682abaf26..c6c1814667 100644
--- a/awx/ui_next/src/screens/Host/HostDetail/HostDetail.jsx
+++ b/awx/ui_next/src/screens/Host/HostDetail/HostDetail.jsx
@@ -9,7 +9,7 @@ import AlertModal from '@components/AlertModal';
import ErrorDetail from '@components/ErrorDetail';
import { DetailList, Detail, UserDateDetail } from '@components/DetailList';
import { VariablesDetail } from '@components/CodeMirrorInput';
-import { Sparkline } from '@components/Sparkline';
+import Sparkline from '@components/Sparkline';
import DeleteButton from '@components/DeleteButton';
import { HostsAPI } from '@api';
@@ -107,7 +107,6 @@ function HostDetail({ host, i18n, onUpdateHost }) {
}
label={i18n._(t`Activity`)}
/>
diff --git a/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx b/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx
index 72f4047229..2dda211169 100644
--- a/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx
+++ b/awx/ui_next/src/screens/Host/HostList/HostListItem.jsx
@@ -16,7 +16,7 @@ import {
import { Link } from 'react-router-dom';
import { PencilAltIcon } from '@patternfly/react-icons';
-import { Sparkline } from '@components/Sparkline';
+import Sparkline from '@components/Sparkline';
import { Host } from '@types';
import styled from 'styled-components';
diff --git a/awx/ui_next/src/screens/Inventory/InventoryHosts/InventoryHostItem.jsx b/awx/ui_next/src/screens/Inventory/InventoryHosts/InventoryHostItem.jsx
index 12e1281cb4..cf7678f0e3 100644
--- a/awx/ui_next/src/screens/Inventory/InventoryHosts/InventoryHostItem.jsx
+++ b/awx/ui_next/src/screens/Inventory/InventoryHosts/InventoryHostItem.jsx
@@ -15,7 +15,7 @@ import {
} from '@patternfly/react-core';
import { Link } from 'react-router-dom';
import { PencilAltIcon } from '@patternfly/react-icons';
-import { Sparkline } from '@components/Sparkline';
+import Sparkline from '@components/Sparkline';
import { Host } from '@types';
import styled from 'styled-components';
diff --git a/awx/ui_next/src/screens/Inventory/shared/InventoryGroupsDeleteModal.jsx b/awx/ui_next/src/screens/Inventory/shared/InventoryGroupsDeleteModal.jsx
index f17320bb1c..5ce7f635c4 100644
--- a/awx/ui_next/src/screens/Inventory/shared/InventoryGroupsDeleteModal.jsx
+++ b/awx/ui_next/src/screens/Inventory/shared/InventoryGroupsDeleteModal.jsx
@@ -60,7 +60,7 @@ const InventoryGroupsDeleteModal = ({
return {group.name};
})}
-
+
+ {job.status && }
+ ,
- {job.status && }
+
{project.summary_fields.last_job && (
-
)}
+ ,
+
{project.name}
diff --git a/awx/ui_next/src/screens/Template/TemplateList/TemplateListItem.jsx b/awx/ui_next/src/screens/Template/TemplateList/TemplateListItem.jsx
index 05cc5c6439..b13eb92298 100644
--- a/awx/ui_next/src/screens/Template/TemplateList/TemplateListItem.jsx
+++ b/awx/ui_next/src/screens/Template/TemplateList/TemplateListItem.jsx
@@ -19,7 +19,7 @@ import {
} from '@patternfly/react-icons';
import LaunchButton from '@components/LaunchButton';
-import { Sparkline } from '@components/Sparkline';
+import Sparkline from '@components/Sparkline';
import { toTitleCase } from '@util/strings';
import styled from 'styled-components';
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx
index e68dbb3e17..f97ed439fe 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.jsx
@@ -2,6 +2,7 @@ import React, { useState } from 'react';
import { Link, useHistory } from 'react-router-dom';
import { withI18n } from '@lingui/react';
import { t } from '@lingui/macro';
+import { WorkflowJobTemplatesAPI } from '@api';
import {
Chip,
ChipGroup,
@@ -13,17 +14,16 @@ import {
Label,
} from '@patternfly/react-core';
-import { CardBody, CardActionsRow } from '@components/Card';
-import ContentLoading from '@components/ContentLoading';
-import { WorkflowJobTemplatesAPI } from '@api';
import AlertModal from '@components/AlertModal';
-import ErrorDetail from '@components/ErrorDetail';
-import { DetailList, Detail, UserDateDetail } from '@components/DetailList';
+import { CardBody, CardActionsRow } from '@components/Card';
import { VariablesDetail } from '@components/CodeMirrorInput';
-import LaunchButton from '@components/LaunchButton';
+import ContentLoading from '@components/ContentLoading';
import DeleteButton from '@components/DeleteButton';
+import { DetailList, Detail, UserDateDetail } from '@components/DetailList';
+import ErrorDetail from '@components/ErrorDetail';
+import LaunchButton from '@components/LaunchButton';
+import Sparkline from '@components/Sparkline';
import { toTitleCase } from '@util/strings';
-import { Sparkline } from '@components/Sparkline';
function WorkflowJobTemplateDetail({ template, i18n, webHookKey }) {
const {
@@ -104,7 +104,6 @@ function WorkflowJobTemplateDetail({ template, i18n, webHookKey }) {
{summary_fields.recent_jobs?.length > 0 && (
}
label={i18n._(t`Activity`)}
/>
@@ -223,7 +222,7 @@ function WorkflowJobTemplateDetail({ template, i18n, webHookKey }) {
{deletionError && (
setDeletionError(null)}
>
diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.jsx
index bd5d38f3cb..706207d046 100644
--- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.jsx
+++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/NodeTypeStep.jsx
@@ -12,13 +12,6 @@ import JobTemplatesList from './JobTemplatesList';
import ProjectsList from './ProjectsList';
import WorkflowJobTemplatesList from './WorkflowJobTemplatesList';
-const Divider = styled.div`
- height: 1px;
- background-color: var(--pf-global--Color--light-300);
- border: 0;
- flex-shrink: 0;
-`;
-
const TimeoutInput = styled(TextInput)`
width: 200px;
:not(:first-of-type) {
@@ -91,7 +84,6 @@ function NodeTypeStep({
/>
-
{nodeType === 'job_template' && (
}
)}
-
+
{formik => (
-