From 7042542e6ae6470a77e60333d636ab00d77a6243 Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Wed, 2 Sep 2020 16:49:04 -0700 Subject: [PATCH] add ArrayDetail --- .../src/components/DetailList/ArrayDetail.jsx | 35 +++++++++++++++++++ .../src/components/DetailList/DetailList.jsx | 2 +- .../src/components/DetailList/index.js | 1 + .../NotificationTemplateDetail.jsx | 21 +++++------ 4 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 awx/ui_next/src/components/DetailList/ArrayDetail.jsx diff --git a/awx/ui_next/src/components/DetailList/ArrayDetail.jsx b/awx/ui_next/src/components/DetailList/ArrayDetail.jsx new file mode 100644 index 0000000000..a946a5976f --- /dev/null +++ b/awx/ui_next/src/components/DetailList/ArrayDetail.jsx @@ -0,0 +1,35 @@ +import 'styled-components/macro'; +import React from 'react'; +import styled from 'styled-components'; +import { TextListItemVariants } from '@patternfly/react-core'; +import { DetailName, DetailValue } from './Detail'; + +const Value = styled(DetailValue)` + margin-top: var(--pf-global--spacer--xs); + padding: var(--pf-global--spacer--xs); + border: 1px solid var(--pf-global--BorderColor--100); + max-height: 5.5em; + overflow: auto; +`; + +function ArrayDetail({ label, value, dataCy }) { + const labelCy = dataCy ? `${dataCy}-label` : null; + const valueCy = dataCy ? `${dataCy}-value` : null; + + const vals = Array.isArray(value) ? value : [value]; + + return ( +
+ + {label} + + + {vals.map(v => ( +
{v}
+ ))} +
+
+ ); +} + +export default ArrayDetail; diff --git a/awx/ui_next/src/components/DetailList/DetailList.jsx b/awx/ui_next/src/components/DetailList/DetailList.jsx index 59185b0931..85bde3494a 100644 --- a/awx/ui_next/src/components/DetailList/DetailList.jsx +++ b/awx/ui_next/src/components/DetailList/DetailList.jsx @@ -11,7 +11,7 @@ const DetailList = ({ children, stacked, ...props }) => ( export default styled(DetailList)` display: grid; grid-gap: 20px; - align-items: center; + align-items: start; ${props => props.stacked ? ` diff --git a/awx/ui_next/src/components/DetailList/index.js b/awx/ui_next/src/components/DetailList/index.js index 8bebb27ce4..332cfa2f6b 100644 --- a/awx/ui_next/src/components/DetailList/index.js +++ b/awx/ui_next/src/components/DetailList/index.js @@ -3,6 +3,7 @@ export { default as Detail, DetailName, DetailValue } from './Detail'; export { default as DeletedDetail } from './DeletedDetail'; export { default as UserDateDetail } from './UserDateDetail'; export { default as DetailBadge } from './DetailBadge'; +export { default as ArrayDetail } from './ArrayDetail'; /* NOTE: ObjectDetail cannot be imported here, as it causes circular dependencies in testing environment. Import it directly from diff --git a/awx/ui_next/src/screens/NotificationTemplate/NotificationTemplateDetail/NotificationTemplateDetail.jsx b/awx/ui_next/src/screens/NotificationTemplate/NotificationTemplateDetail/NotificationTemplateDetail.jsx index a70f691e02..6b19621c54 100644 --- a/awx/ui_next/src/screens/NotificationTemplate/NotificationTemplateDetail/NotificationTemplateDetail.jsx +++ b/awx/ui_next/src/screens/NotificationTemplate/NotificationTemplateDetail/NotificationTemplateDetail.jsx @@ -7,6 +7,7 @@ import AlertModal from '../../../components/AlertModal'; import { CardBody, CardActionsRow } from '../../../components/Card'; import { Detail, + ArrayDetail, DetailList, DeletedDetail, } from '../../../components/DetailList'; @@ -81,9 +82,9 @@ function NotificationTemplateDetail({ i18n, template }) { value={configuration.host} dataCy="nt-detail-host" /> - - - - -