/*! * Copyright © 2016-2018 European Support Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing * permissions and limitations under the License. */ import React from 'react'; import PropTypes from 'prop-types'; import i18n from 'nfvo-utils/i18n/i18n.js'; import ClickOutsideWrapper from 'nfvo-components/clickOutsideWrapper/ClickOutsideWrapper.jsx'; import { SVGIcon } from 'onap-ui-react'; import Overlay from 'nfvo-components/overlay/Overlay.jsx'; import Permissions from './Permissions.jsx'; const VCButton = ({ name, tooltipText, disabled, onClick, dataTestId }) => { let onClickAction = disabled ? () => {} : onClick; return ( <div className={`action-button-wrapper ${ disabled ? 'disabled' : 'clickable' }`} onClick={onClickAction}> <div className="action-buttons-svg"> <SVGIcon label={tooltipText} labelPosition="bottom" labelClassName="action-button-label" data-test-id={dataTestId} name={name} disabled={disabled} /> </div> </div> ); }; const Separator = () => <div className="vc-separator" />; const SubmitButton = ({ onClick, disabled }) => ( <div onClick={() => onClick()} data-test-id="vc-submit-btn" className={`vc-submit-button ${disabled ? 'disabled' : ''}`}> <SVGIcon name="check" iconClassName="vc-v-submit" disabled={disabled} /> {i18n('Submit')} </div> ); const ActionButtons = ({ isReadOnlyMode, onSubmit, onRevert, onSave, isFormDataValid, onClickPermissions, onSync, onCommit, isArchived, onOpenCommentCommitModal, showPermissions, onClosePermissions, permissions, onManagePermissions, userInfo, onOpenRevisionsModal, isManual, itemPermissions: { isCertified, isCollaborator, isDirty, isOutOfSync, isUpToDate } }) => ( <div className="action-buttons"> <ClickOutsideWrapper onClose={onClosePermissions}> <VCButton disabled={isManual} dataTestId="vc-permission-btn" onClick={onClickPermissions} name="version-controller-permissions" tooltipText={i18n('Permissons')} /> {showPermissions && ( <Overlay> <Permissions userInfo={userInfo} onManagePermissions={onManagePermissions} permissions={permissions} onClosePermissions={onClosePermissions} /> </Overlay> )} </ClickOutsideWrapper> {isCollaborator && !isArchived && ( <div className="collaborator-action-buttons"> <Separator /> {onSave && ( <div className="vc-save-section"> <VCButton dataTestId="vc-save-btn" onClick={() => onSave()} name="version-controller-save" tooltipText={i18n('Save')} disabled={isReadOnlyMode || !isFormDataValid} /> <Separator /> </div> )} <VCButton dataTestId="vc-sync-btn" onClick={onSync} name="version-controller-sync" tooltipText={i18n('Sync')} disabled={!isCollaborator || isUpToDate || isCertified} /> <VCButton dataTestId="vc-commit-btn" onClick={() => onOpenCommentCommitModal({ onCommit, title: i18n('Commit') }) } name="version-controller-commit" tooltipText={i18n('Share')} disabled={isReadOnlyMode || !isDirty || isOutOfSync} /> {onRevert && ( <VCButton dataTestId="vc-revert-btn" onClick={onOpenRevisionsModal} name="version-controller-revert" tooltipText={i18n('Revert')} disabled={isReadOnlyMode || isOutOfSync} /> )} {onSubmit && ( <div className="vc-submit-section"> <Separator /> <SubmitButton onClick={onSubmit} disabled={ isReadOnlyMode || isOutOfSync || !isUpToDate || isCertified } /> </div> )} </div> )} </div> ); ActionButtons.propTypes = { version: PropTypes.object, onSubmit: PropTypes.func, onRevert: PropTypes.func, onSave: PropTypes.func, isLatestVersion: PropTypes.bool, isCheckedIn: PropTypes.bool, isCheckedOut: PropTypes.bool, isFormDataValid: PropTypes.bool, isReadOnlyMode: PropTypes.bool }; export default ActionButtons;