Blame components/ListView/ComponentInputs.js

Packit Service 0246ed
import React from "react";
Packit Service 0246ed
import { defineMessages, injectIntl, intlShape } from "react-intl";
Packit Service 0246ed
import PropTypes from "prop-types";
Packit Service 0246ed
import shortid from "shortid";
Packit Service 0246ed
import {
Packit Service 0246ed
  DataList,
Packit Service 0246ed
  DataListItem,
Packit Service 0246ed
  DataListItemRow,
Packit Service 0246ed
  DataListCell,
Packit Service 0246ed
  DataListItemCells,
Packit Service 0246ed
  Tooltip,
Packit Service 0246ed
  TooltipPosition,
Packit Service 0246ed
} from "@patternfly/react-core";
Packit Service 0246ed
import ComponentTypeIcons from "./ComponentTypeIcons";
Packit Service 0246ed
Packit Service 0246ed
const messages = defineMessages({
Packit Service 0246ed
  hideDetails: {
Packit Service 0246ed
    defaultMessage: "Hide Details",
Packit Service 0246ed
  },
Packit Service 0246ed
  showDetails: {
Packit Service 0246ed
    defaultMessage: "Show Details and More Options",
Packit Service 0246ed
  },
Packit Service 0246ed
  addComponent: {
Packit Service 0246ed
    defaultMessage: "Add latest version",
Packit Service 0246ed
  },
Packit Service 0246ed
  removeComponent: {
Packit Service 0246ed
    defaultMessage: "Remove Component from Blueprint",
Packit Service 0246ed
  },
Packit Service 0246ed
});
Packit Service 0246ed
Packit Service 0246ed
// eslint-disable-next-line react/prefer-stateless-function
Packit Service 0246ed
class ComponentInputs extends React.Component {
Packit Service 0246ed
  render() {
Packit Service 0246ed
    const { components, label } = this.props;
Packit Service 0246ed
    const { formatMessage } = this.props.intl;
Packit Service 0246ed
Packit Service 0246ed
    return (
Packit Service 0246ed
      <DataList aria-label={label} data-list="inputs" className="cc-m-compact">
Packit Service 0246ed
        {components.map((component) => (
Packit Service 0246ed
          
Packit Service 0246ed
            key={shortid.generate()}
Packit Service 0246ed
            aria-labelledby={`${component.name}-input`}
Packit Service 0246ed
            className={component.active ? "active" : ""}
Packit Service 0246ed
            data-input={component.name}
Packit Service 0246ed
          >
Packit Service 0246ed
            <DataListItemRow>
Packit Service 0246ed
              
Packit Service 0246ed
                
Packit Service 0246ed
                  componentType={component.ui_type}
Packit Service 0246ed
                  componentInBlueprint={component.inBlueprint}
Packit Service 0246ed
                  isSelected={component.userSelected}
Packit Service 0246ed
                />
Packit Service 0246ed
              
Packit Service 0246ed
              
Packit Service 0246ed
                dataListCells={[
Packit Service 0246ed
                  <DataListCell key="primary">
Packit Service 0246ed
                    
Packit Service 0246ed
                      
Packit Service 0246ed
                        position={TooltipPosition.top}
Packit Service 0246ed
                        content={
Packit Service 0246ed
                          component.active ? formatMessage(messages.hideDetails) : formatMessage(messages.showDetails)
Packit Service 0246ed
                        }
Packit Service 0246ed
                      >
Packit Service 0246ed
                         this.props.handleComponentDetails(e, component)}>
Packit Service 0246ed
                          
Packit Service 0246ed
                            {component.name}
Packit Service 0246ed
                          
Packit Service 0246ed
                        
Packit Service 0246ed
                      </Tooltip>
Packit Service 0246ed
                    
Packit Service 0246ed
                    
{component.summary}
Packit Service 0246ed
                  </DataListCell>,
Packit Service 0246ed
                ]}
Packit Service 0246ed
              />
Packit Service 0246ed
              
Packit Service 0246ed
                {(component.inBlueprint === true && component.userSelected === true && (
Packit Service 0246ed
                  <Tooltip position={TooltipPosition.top} content={formatMessage(messages.removeComponent)}>
Packit Service 0246ed
                    
Packit Service 0246ed
                      href="#"
Packit Service 0246ed
                      className="btn btn-link"
Packit Service 0246ed
                      onClick={(e) => this.props.handleRemoveComponent(e, component.name)}
Packit Service 0246ed
                    >
Packit Service 0246ed
                      
Packit Service 0246ed
                    
Packit Service 0246ed
                  </Tooltip>
Packit Service 0246ed
                )) || (
Packit Service 0246ed
                  
Packit Service 0246ed
                    position={TooltipPosition.top}
Packit Service 0246ed
                    content={
Packit Service 0246ed
                      
Packit Service 0246ed
                        {formatMessage(messages.addComponent)}
Packit Service 0246ed
                        
({component.version})
Packit Service 0246ed
                      
Packit Service 0246ed
                    }
Packit Service 0246ed
                  >
Packit Service 0246ed
                    
Packit Service 0246ed
                      href="#"
Packit Service 0246ed
                      className="btn btn-link"
Packit Service 0246ed
                      onClick={(e) => this.props.handleAddComponent(e, component, "*")}
Packit Service 0246ed
                    >
Packit Service 0246ed
                      
Packit Service 0246ed
                    
Packit Service 0246ed
                  </Tooltip>
Packit Service 0246ed
                )}
Packit Service 0246ed
              
Packit Service 0246ed
            </DataListItemRow>
Packit Service 0246ed
          </DataListItem>
Packit Service 0246ed
        ))}
Packit Service 0246ed
      </DataList>
Packit Service 0246ed
    );
Packit Service 0246ed
  }
Packit Service 0246ed
}
Packit Service 0246ed
Packit Service 0246ed
ComponentInputs.propTypes = {
Packit Service 0246ed
  components: PropTypes.arrayOf(PropTypes.object),
Packit Service 0246ed
  label: PropTypes.string,
Packit Service 0246ed
  handleComponentDetails: PropTypes.func,
Packit Service 0246ed
  handleAddComponent: PropTypes.func,
Packit Service 0246ed
  handleRemoveComponent: PropTypes.func,
Packit Service 0246ed
  intl: intlShape.isRequired,
Packit Service 0246ed
};
Packit Service 0246ed
Packit Service 0246ed
ComponentInputs.defaultProps = {
Packit Service 0246ed
  components: [],
Packit Service 0246ed
  label: "",
Packit Service 0246ed
  handleComponentDetails() {},
Packit Service 0246ed
  handleAddComponent() {},
Packit Service 0246ed
  handleRemoveComponent() {},
Packit Service 0246ed
};
Packit Service 0246ed
Packit Service 0246ed
export default injectIntl(ComponentInputs);