refactor to use Truncate component

This commit is contained in:
Severiano Badajoz
2020-05-27 13:50:05 -07:00
parent f0faf367a3
commit 241f219ae6
@@ -2,14 +2,14 @@ import React from "react";
import _ from "lodash"; import _ from "lodash";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { FaChevronRight, FaChevronDown } from "react-icons/fa"; import { FaChevronRight, FaChevronDown } from "react-icons/fa";
import { AnchorButton, Button, Tooltip, Position } from "@blueprintjs/core"; import { AnchorButton, Button, Tooltip } from "@blueprintjs/core";
import CategoryFlipperLayout from "./categoryFlipperLayout"; import CategoryFlipperLayout from "./categoryFlipperLayout";
import AnnoMenu from "./annoMenuCategory"; import AnnoMenu from "./annoMenuCategory";
import AnnoDialogEditCategoryName from "./annoDialogEditCategoryName"; import AnnoDialogEditCategoryName from "./annoDialogEditCategoryName";
import AnnoDialogAddLabel from "./annoDialogAddLabel"; import AnnoDialogAddLabel from "./annoDialogAddLabel";
import Truncate from "../../util/truncate";
import * as globals from "../../../globals"; import * as globals from "../../../globals";
import maybeTruncateString from "../../../util/maybeTruncateString";
@connect((state, ownProps) => { @connect((state, ownProps) => {
const { metadataField } = ownProps; const { metadataField } = ownProps;
@@ -114,10 +114,6 @@ class Category extends React.Component {
We are still loading this category, so render a "busy" signal. We are still loading this category, so render a "busy" signal.
*/ */
const { metadataField } = this.props; const { metadataField } = this.props;
const truncatedString = maybeTruncateString(
metadataField,
globals.categoryDisplayStringMaxLength
);
const checkboxID = `category-select-${metadataField}`; const checkboxID = `category-select-${metadataField}`;
@@ -145,26 +141,16 @@ class Category extends React.Component {
<input disabled id={checkboxID} checked type="checkbox" /> <input disabled id={checkboxID} checked type="checkbox" />
<span className="bp3-control-indicator" /> <span className="bp3-control-indicator" />
</label> </label>
<Tooltip <Truncate fontSize={12} size={220}>
content={metadataField}
disabled={truncatedString === null}
hoverOpenDelay={globals.tooltipHoverOpenDelayQuick}
position={Position.LEFT}
usePortal
modifiers={{
preventOverflow: { enabled: false },
hide: { enabled: false },
}}
>
<span <span
style={{ style={{
cursor: "pointer", cursor: "pointer",
display: "inline-block", display: "inline-block",
}} }}
> >
{truncatedString || metadataField} {metadataField}
</span> </span>
</Tooltip> </Truncate>
</div> </div>
<div> <div>
<Button minimal loading intent="primary" /> <Button minimal loading intent="primary" />
@@ -199,21 +185,20 @@ class Category extends React.Component {
false false
); );
const truncatedString = maybeTruncateString(
metadataField,
globals.categoryDisplayStringMaxLength
);
if ( if (
!isUserAnno && !isUserAnno &&
schema?.annotations?.obsByName[metadataField]?.categories?.length === 1 schema?.annotations?.obsByName[metadataField]?.categories?.length === 1
) { ) {
return ( return (
<div style={{ marginBottom: 10, marginTop: 4 }}> <div style={{ marginBottom: 10, marginTop: 4 }}>
<span style={{ fontWeight: 700 }}> <Truncate size={150} fontSize={12}>
{truncatedString || metadataField} <span style={{ fontWeight: 700 }}>{metadataField}</span>
</span> </Truncate>
: {schema.annotations.obsByName[metadataField].categories[0]} <Truncate size={150} fontSize={12}>
<span>
{`: ${schema.annotations.obsByName[metadataField].categories[0]}`}
</span>
</Truncate>
</div> </div>
); );
} }
@@ -246,46 +231,36 @@ class Category extends React.Component {
/> />
<span className="bp3-control-indicator" /> <span className="bp3-control-indicator" />
</label> </label>
<Tooltip <span
content={metadataField} role="menuitem"
disabled={truncatedString === null} tabIndex="0"
hoverOpenDelay={globals.tooltipHoverOpenDelayQuick} data-testid={`${metadataField}:category-expand`}
position={Position.LEFT} onKeyPress={(e) => {
usePortal if (e.key === "Enter") {
modifiers={{ this.handleCategoryClick();
preventOverflow: { enabled: false }, }
hide: { enabled: false },
}} }}
style={{
cursor: "pointer",
display: "inline-block",
}}
onClick={this.handleCategoryClick}
> >
<span <Truncate fontSize={12} size={220}>
role="menuitem" <span>{metadataField}</span>
tabIndex="0" </Truncate>
data-testid={`${metadataField}:category-expand`} {isExpanded ? (
onKeyPress={(e) => { <FaChevronDown
if (e.key === "Enter") { data-testclass="category-expand-is-expanded"
this.handleCategoryClick(); style={{ fontSize: 10, marginLeft: 5 }}
} />
}} ) : (
style={{ <FaChevronRight
cursor: "pointer", data-testclass="category-expand-is-not-expanded"
display: "inline-block", style={{ fontSize: 10, marginLeft: 5 }}
}} />
onClick={this.handleCategoryClick} )}
> </span>
{truncatedString || metadataField}
{isExpanded ? (
<FaChevronDown
data-testclass="category-expand-is-expanded"
style={{ fontSize: 10, marginLeft: 5 }}
/>
) : (
<FaChevronRight
data-testclass="category-expand-is-not-expanded"
style={{ fontSize: 10, marginLeft: 5 }}
/>
)}
</span>
</Tooltip>
</div> </div>
{<AnnoDialogEditCategoryName metadataField={metadataField} />} {<AnnoDialogEditCategoryName metadataField={metadataField} />}
{<AnnoDialogAddLabel metadataField={metadataField} />} {<AnnoDialogAddLabel metadataField={metadataField} />}