From c4360c5cf5c952786860d03f5d426ac555e03955 Mon Sep 17 00:00:00 2001 From: Lisa Knox Date: Mon, 26 Feb 2024 09:48:41 -0500 Subject: [PATCH] 21224: added chevron, moved description section Arvados-DCO-1.1-Signed-off-by: Lisa Knox --- .../expand-chevron-right.tsx | 48 +++++++ .../project-details-card.tsx | 128 ++++++++++-------- 2 files changed, 121 insertions(+), 55 deletions(-) create mode 100644 services/workbench2/src/components/expand-chevron-right/expand-chevron-right.tsx diff --git a/services/workbench2/src/components/expand-chevron-right/expand-chevron-right.tsx b/services/workbench2/src/components/expand-chevron-right/expand-chevron-right.tsx new file mode 100644 index 0000000000..7bb0b14fa2 --- /dev/null +++ b/services/workbench2/src/components/expand-chevron-right/expand-chevron-right.tsx @@ -0,0 +1,48 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import React from 'react'; +import { ChevronRight } from '@material-ui/icons'; +import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles'; +import { ArvadosTheme } from 'common/custom-theme'; + +type CssRules = 'root' | 'default' | 'expanded'; + +const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ + root: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + width: '24px', + height: '24px', + cursor: 'pointer', + }, + default: { + transition: 'all 0.1s ease', + transform: 'rotate(0deg)', + }, + expanded: { + transition: 'all 0.1s ease', + transform: 'rotate(90deg)', + }, +}); + +export interface ExpandChevronRightDataProps { + expanded: boolean; +} + +type ExpandChevronRightProps = ExpandChevronRightDataProps & WithStyles; + +export const ExpandChevronRight = withStyles(styles)( + class extends React.Component { + render() { + const { classes, expanded } = this.props; + return ( +
+ +
+ ); + } + } +); \ No newline at end of file diff --git a/services/workbench2/src/views-components/project-details-card/project-details-card.tsx b/services/workbench2/src/views-components/project-details-card/project-details-card.tsx index a3a1458acc..5447dd58bf 100644 --- a/services/workbench2/src/views-components/project-details-card/project-details-card.tsx +++ b/services/workbench2/src/views-components/project-details-card/project-details-card.tsx @@ -24,6 +24,7 @@ import { ContextMenuKind } from 'views-components/context-menu/context-menu'; import { Dispatch } from 'redux'; import classNames from 'classnames'; import { loadDetailsPanel } from 'store/details-panel/details-panel-action'; +import { ExpandChevronRight } from 'components/expand-chevron-right/expand-chevron-right'; type CssRules = | 'root' @@ -34,6 +35,7 @@ type CssRules = | 'noDescription' | 'userNameContainer' | 'cardContent' + | 'nameSection' | 'namePlate' | 'faveIcon' | 'frozenIcon' @@ -67,12 +69,22 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ padding: '0.2rem 0.4rem 0.1rem 1rem', }, descriptionLabel: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + cursor: 'pointer', }, cardContent: { display: 'flex', flexDirection: 'column', marginTop: '-1.75rem', }, + nameSection: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, namePlate: { display: 'flex', flexDirection: 'row', @@ -287,56 +299,50 @@ const ProjectCard: React.FC = ({ classes, currentResource, fro - - {name} - - - - {!!frozenByFullName && ( - Project was frozen by {frozenByFullName}} +
+
+ - - - )} + {name} + + + + {!!frozenByFullName && ( + Project was frozen by {frozenByFullName}} + > + + + )} +
+
ev.stopPropagation()}> + {typeof currentResource.properties === 'object' && Object.keys(currentResource.properties).length > 0 && ( + + + {Object.keys(currentResource.properties).map((k) => + Array.isArray(currentResource.properties[k]) + ? currentResource.properties[k].map((v: string) => getPropertyChip(k, v, undefined, classes.tag)) + : getPropertyChip(k, currentResource.properties[k], undefined, classes.tag) + )} + + + )} +
} action={
-
ev.stopPropagation()} - > - {description ? ( - - {!showDescription ? 'Show full description' : 'Hide full description'} - - ) : ( - - no description available - - )} -
= ({ classes, currentResource, fro
} /> - {typeof currentResource.properties === 'object' && Object.keys(currentResource.properties).length > 0 && ( - - - {Object.keys(currentResource.properties).map((k) => - Array.isArray(currentResource.properties[k]) - ? currentResource.properties[k].map((v: string) => getPropertyChip(k, v, undefined, classes.tag)) - : getPropertyChip(k, currentResource.properties[k], undefined, classes.tag) - )} +
ev.stopPropagation()}> + {description ? ( +
+ + + {!showDescription ? 'Show full description' : 'Hide full description'} - - )} +
+ ) : ( + + no description available + + )} +