summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/src/nfvo-components/table/SelectActionTableRow.jsx
blob: 1c2c1529f2d7f4864a77590689fbb11fdeac9f4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import React from 'react';
import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
import OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger.js';
import Tooltip from 'react-bootstrap/lib/Tooltip.js';

function tooltip(msg) {
    return (
        <Tooltip
            className="select-action-table-error-tooltip"
            id="error-tooltip">
            {msg}
        </Tooltip>
    );
}

const IconWithOverlay = ({ overlayMsg }) => (
    <OverlayTrigger placement="bottom" overlay={tooltip(overlayMsg)}>
        <SVGIcon name="errorCircle" color="negative" />
    </OverlayTrigger>
);

function renderErrorOrCheck({ hasError, overlayMsg }) {
    if (hasError === undefined) {
        return <SVGIcon name="angleRight" className="dummy-icon" />;
    }

    if (hasError) {
        return overlayMsg ? (
            <IconWithOverlay overlayMsg={overlayMsg} />
        ) : (
            <SVGIcon color="negative" name="errorCircle" />
        );
    }

    return <SVGIcon name="checkCircle" color="positive" />;
}

const SelectActionTableRow = ({
    children,
    actionIcon,
    onAction,
    showAction,
    hasError,
    hasErrorIndication,
    overlayMsg
}) => (
    <div className="select-action-table-row-wrapper">
        <div
            className={`select-action-table-row ${
                hasError ? 'has-error' : ''
            }`}>
            {children}
        </div>
        {onAction && (
            <SVGIcon
                color="secondary"
                name={actionIcon}
                data-test-id={`select-action-table-${actionIcon}`}
                onClick={onAction}
                iconClassName={showAction ? '' : 'hideDelete'}
            />
        )}
        {hasErrorIndication && renderErrorOrCheck({ hasError, overlayMsg })}
    </div>
);

export default SelectActionTableRow;