All files / modules/85-cv/components/SaveAndDiscardButton SaveAndDiscardButton.tsx

100% Statements 9/9
100% Branches 2/2
100% Functions 1/1
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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              18x 18x 18x 18x 18x     18x                   18x             42x 42x                                            
/*
 * Copyright 2021 Harness Inc. All rights reserved.
 * Use of this source code is governed by the PolyForm Shield 1.0.0 license
 * that can be found in the licenses directory at the root of this repository, also available at
 * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
 */
 
import React from 'react'
import { Button } from '@wings-software/uicore'
import cx from 'classnames'
import { useStrings } from 'framework/strings'
import RbacButton from '@rbac/components/Button/Button'
import type { PermissionsRequest } from '@rbac/hooks/usePermission'
import type { PermissionIdentifier } from '@rbac/interfaces/PermissionIdentifier'
import css from './SaveAndDiscardButton.module.scss'
 
interface SaveAndDiscardButtonInterface {
  isUpdated: boolean
  onSave: (data: any) => void | Promise<void>
  onDiscard: () => void
  className?: string
  RbacPermission?: Omit<PermissionsRequest, 'permissions'> & { permission: PermissionIdentifier }
}
 
export default function SaveAndDiscardButton({
  isUpdated,
  onSave,
  onDiscard,
  className,
  RbacPermission
}: SaveAndDiscardButtonInterface): JSX.Element {
  const { getString } = useStrings()
  return (
    <>
      <div className={cx(css.saveHeader, className)}>
        {isUpdated && <div className={css.tagRender}>{getString('unsavedChanges')}</div>}
        <RbacButton
          intent="primary"
          text={getString('save')}
          onClick={onSave}
          icon="send-data"
          className={css.saveButton}
          permission={RbacPermission}
        />
        <Button
          disabled={!isUpdated}
          onClick={onDiscard}
          className={css.discardBtn}
          text={getString('common.discard')}
        />
      </div>
    </>
  )
}