Skip to content

Commit

Permalink
Merge pull request #3889 from jtomasek/detail-property-list
Browse files Browse the repository at this point in the history
Add List component for detail properties
  • Loading branch information
openshift-merge-robot committed Jan 21, 2020
2 parents c2a9f92 + f36bf27 commit 6d41a71
Show file tree
Hide file tree
Showing 10 changed files with 159 additions and 130 deletions.
24 changes: 11 additions & 13 deletions frontend/packages/console-app/src/components/nodes/NodeIPList.tsx
@@ -1,29 +1,27 @@
import * as _ from 'lodash';
import * as React from 'react';
import { NodeAddress } from '@console/shared';
import { NodeAddress, DetailPropertyList, DetailPropertyListItem } from '@console/shared';

type NodeIPListProps = {
ips: NodeAddress[];
expand?: boolean;
};

const NodeIPList: React.FC<NodeIPListProps> = ({ ips, expand = false }) => (
<>
<DetailPropertyList>
{_.sortBy(ips, ['type']).map(
({ type, address }) =>
address && (
<div key={`{${type}/${address}`} className="co-node-ip">
{(expand || type === 'InternalIP') && (
<>
<span className="co-ip-type">{type.replace(/([a-z])([A-Z])/g, '$1 $2')}: </span>
<span className="co-ip-addr">{address}</span>
<br />
</>
)}
</div>
address &&
(expand || type === 'InternalIP') && (
<DetailPropertyListItem
key={`{${type}/${address}`}
title={type.replace(/([a-z])([A-Z])/g, '$1 $2')}
>
{address}
</DetailPropertyListItem>
),
)}
</>
</DetailPropertyList>
);

export default NodeIPList;
1 change: 1 addition & 0 deletions frontend/packages/console-shared/src/components/index.ts
Expand Up @@ -3,6 +3,7 @@ export * from './contextMenu';
export * from './dropdown';
export * from './form-utils';
export * from './formik-fields';
export * from './lists';
export * from './status';
export * from './pod';
export * from './popper';
Expand Down
@@ -0,0 +1,11 @@
ul.pf-c-list:not(.pf-m-inline).co-detail-property-list {
list-style: none;
padding-left: 0;
li + li {
margin-top: 0;
}
}

.co-detail-property-list__item-title {
color: var(--pf-global--Color--200);
}
@@ -0,0 +1,12 @@
import * as React from 'react';
import { List, ListProps } from '@patternfly/react-core';

import './DetailPropertyList.scss';

const DetailPropertyList: React.FC<ListProps> = ({ children, ...props }) => (
<List className="co-detail-property-list" {...props}>
{children}
</List>
);

export default DetailPropertyList;
@@ -0,0 +1,17 @@
import * as React from 'react';
import { ListItem } from '@patternfly/react-core';

import './DetailPropertyList.scss';

type DetailPropertyListItemProps = {
title?: string;
};

const DetailPropertyListItem: React.FC<DetailPropertyListItemProps> = ({ title, children }) => (
<ListItem>
{title && <span className="co-detail-property-list__item-title">{title}: </span>}
{children}
</ListItem>
);

export default DetailPropertyListItem;
@@ -0,0 +1,2 @@
export { default as DetailPropertyList } from './DetailPropertyList';
export { default as DetailPropertyListItem } from './DetailPropertyListItem';

This file was deleted.

Expand Up @@ -20,6 +20,8 @@ import {
getNamespace,
getMachineRole,
StatusIconAndText,
DetailPropertyList,
DetailPropertyListItem,
} from '@console/shared';
import { getHostStatus } from '../../status/host-status';
import {
Expand All @@ -44,8 +46,6 @@ import MachineLink from './MachineLink';
import BareMetalHostPowerStatusIcon from './BareMetalHostPowerStatusIcon';
import BareMetalHostStatus from './BareMetalHostStatus';

import './BareMetalHostDetails.scss';

type BareMetalHostDetailsProps = {
obj: BareMetalHostKind;
machines: MachineKind[];
Expand Down Expand Up @@ -96,11 +96,15 @@ const BareMetalHostDetails: React.FC<BareMetalHostDetailsProps> = ({
)}
<dt>Host Addresses</dt>
<dd>
<ul className="metal3-bare-metal-host-details__simple-list">
<li>Management: {getHostBMCAddress(host)}</li>
<li>NICs: {ips}</li>
<li>Boot Interface MAC: {getHostBootMACAddress(host)}</li>
</ul>
<DetailPropertyList>
<DetailPropertyListItem title="Management">
{getHostBMCAddress(host)}
</DetailPropertyListItem>
<DetailPropertyListItem title="NICs">{ips}</DetailPropertyListItem>
<DetailPropertyListItem title="Boot Interface MAC">
{getHostBootMACAddress(host)}
</DetailPropertyListItem>
</DetailPropertyList>
</dd>
{machineName && (
<>
Expand Down Expand Up @@ -163,11 +167,11 @@ const BareMetalHostDetails: React.FC<BareMetalHostDetailsProps> = ({
<>
<dt>Bios</dt>
<dd>
<ul className="metal3-bare-metal-host-details__simple-list">
<li>Version: {bios.version}</li>
<li>Vendor: {bios.vendor}</li>
<li>Date: {bios.date}</li>
</ul>
<DetailPropertyList>
<DetailPropertyListItem title="Version">{bios.version}</DetailPropertyListItem>
<DetailPropertyListItem title="Vendor">{bios.vendor}</DetailPropertyListItem>
<DetailPropertyListItem title="Date">{bios.date}</DetailPropertyListItem>
</DetailPropertyList>
</dd>
</>
)}
Expand All @@ -181,13 +185,15 @@ const BareMetalHostDetails: React.FC<BareMetalHostDetailsProps> = ({
<>
<dt>Hardware</dt>
<dd>
<ul className="metal3-bare-metal-host-details__simple-list">
<li>
{CPUCount}x {CPUModel} CPU
</li>
<li>{RAMGB} RAM</li>
<li>{totalStorageCapacity} Disk</li>
</ul>
<DetailPropertyList>
<DetailPropertyListItem title="CPU">
{CPUCount}x {CPUModel}
</DetailPropertyListItem>
<DetailPropertyListItem title="RAM">{RAMGB}</DetailPropertyListItem>
<DetailPropertyListItem title="Storage">
{totalStorageCapacity}
</DetailPropertyListItem>
</DetailPropertyList>
</dd>
</>
)}
Expand Down
12 changes: 0 additions & 12 deletions frontend/public/components/_node-ip-list.scss

This file was deleted.

162 changes: 80 additions & 82 deletions frontend/public/style.scss
@@ -1,103 +1,101 @@
// Config
@import "style/vars";
@import 'style/vars';

// External dependency variables or mixins that are required/extended by our custom styles (tilde tells Webpack not to use relative path)
// IMPORTANT: Please put non-variable/mixin external dependency imports in vendor.scss!
// Patternfly variables must be imported before Bootstrap
@import '~patternfly/dist/sass/patternfly/variables';
@import '~@patternfly/react-catalog-view-extension/dist/sass/variables';
@import "~bootstrap-sass/assets/stylesheets/bootstrap/variables";
@import "~bootstrap-sass/assets/stylesheets/bootstrap/mixins";
@import "~@fortawesome/fontawesome-free/scss/variables";
@import '~bootstrap-sass/assets/stylesheets/bootstrap/variables';
@import '~bootstrap-sass/assets/stylesheets/bootstrap/mixins';
@import '~@fortawesome/fontawesome-free/scss/variables';

@import "style/base";
@import 'style/base';

// Mixins
@import "style/mixin/break-word";
@import "style/mixin/font-awesome";
@import "style/mixin/prefix";
@import "style/mixin/scroll-shadows";
@import "style/mixin/truncate";
@import "style/mixin/line-clamp";
@import 'style/mixin/break-word';
@import 'style/mixin/font-awesome';
@import 'style/mixin/prefix';
@import 'style/mixin/scroll-shadows';
@import 'style/mixin/truncate';
@import 'style/mixin/line-clamp';

// Overrides
@import "style/overrides";
@import 'style/overrides';

/* CUSTOM STYLES */

// Base
@import "style/common";
@import "style/icons";
@import "style/layout";
@import "style/text";
@import "style/forms";
@import 'style/common';
@import 'style/icons';
@import 'style/layout';
@import 'style/text';
@import 'style/forms';

// React Components
@import "components/utils/alerts";
@import "components/utils/copy-to-clipboard";
@import "components/utils/disabled";
@import "components/utils/file-input";
@import "components/utils/kebab";
@import "components/utils/label";
@import "components/utils/number-spinner";
@import "components/utils/status-box";
@import "components/utils/selector";
@import "components/utils/skeleton-screen";
@import "components/utils/log-window";
@import "components/utils/resource-log";
@import "components/utils/list-input";
@import "components/utils/hint-block";
@import "components/utils/field-level-help";
@import "components/image-stream";
@import "components/about-modal";
@import "components/build-pipeline";
@import "components/configure-ports";
@import "components/detail-table";
@import "components/dropdown";
@import "components/global-notification";
@import "components/list";
@import "components/monitoring";
@import "components/monitoring/monitoring";
@import "components/nav-title";
@import "components/node-ip-list";
@import "components/RBAC/rbac";
@import "components/secrets/create-secret";
@import "components/resource";
@import "components/resource-dropdown";
@import "components/row-filter";
@import "components/route";
@import "components/service";
@import "components/sysevent-icon";
@import "components/sysevent-stream";
@import "components/icon-and-text";
@import "components/toggle-play";
@import "components/horizontal-nav";
@import "components/edit-yaml";
@import "components/sidebars/resource-sidebar";
@import "components/graphs/graphs";
@import "components/masthead";
@import "components/modals/modals";
@import "components/environment";
@import "components/utils/name-value-editor";
@import "components/utils/value-from-pair";
@import "components/terminal";
@import "components/catalog/catalog";
@import "components/cluster-service-instance";
@import "components/overview/build-overview";
@import "components/overview/overview";
@import "components/overview/list-view/list-view";
@import "components/overview/project-overview";
@import "components/deploy-image";
@import "components/instantiate-template";
@import "components/routes/create-route";
@import "components/storage-class-form";
@import "components/quota";
@import "components/cluster-settings/cluster-settings";
@import 'components/utils/alerts';
@import 'components/utils/copy-to-clipboard';
@import 'components/utils/disabled';
@import 'components/utils/file-input';
@import 'components/utils/kebab';
@import 'components/utils/label';
@import 'components/utils/number-spinner';
@import 'components/utils/status-box';
@import 'components/utils/selector';
@import 'components/utils/skeleton-screen';
@import 'components/utils/log-window';
@import 'components/utils/resource-log';
@import 'components/utils/list-input';
@import 'components/utils/hint-block';
@import 'components/utils/field-level-help';
@import 'components/image-stream';
@import 'components/about-modal';
@import 'components/build-pipeline';
@import 'components/configure-ports';
@import 'components/detail-table';
@import 'components/dropdown';
@import 'components/global-notification';
@import 'components/list';
@import 'components/monitoring';
@import 'components/monitoring/monitoring';
@import 'components/nav-title';
@import 'components/RBAC/rbac';
@import 'components/secrets/create-secret';
@import 'components/resource';
@import 'components/resource-dropdown';
@import 'components/row-filter';
@import 'components/route';
@import 'components/service';
@import 'components/sysevent-icon';
@import 'components/sysevent-stream';
@import 'components/icon-and-text';
@import 'components/toggle-play';
@import 'components/horizontal-nav';
@import 'components/edit-yaml';
@import 'components/sidebars/resource-sidebar';
@import 'components/graphs/graphs';
@import 'components/masthead';
@import 'components/modals/modals';
@import 'components/environment';
@import 'components/utils/name-value-editor';
@import 'components/utils/value-from-pair';
@import 'components/terminal';
@import 'components/catalog/catalog';
@import 'components/cluster-service-instance';
@import 'components/overview/build-overview';
@import 'components/overview/overview';
@import 'components/overview/list-view/list-view';
@import 'components/overview/project-overview';
@import 'components/deploy-image';
@import 'components/instantiate-template';
@import 'components/routes/create-route';
@import 'components/storage-class-form';
@import 'components/quota';
@import 'components/cluster-settings/cluster-settings';

@import "components/dashboard/dashboards-page/overview-dashboard/activity-card";
@import 'components/dashboard/dashboards-page/overview-dashboard/activity-card';
@import 'components/dashboard/dashboards-page/overview-dashboard/status-card';

@import "components/dashboard/dashboards-page/overview-dashboard/status-card";
@import 'components/dashboard/project-dashboard/activity-card';

@import "components/dashboard/project-dashboard/activity-card";

@import "components/nav/nav-header";
@import 'components/nav/nav-header';

0 comments on commit 6d41a71

Please sign in to comment.