transparentLoadingMask.tsx 775 B

123456789101112131415161718192021222324252627
  1. import styled from '@emotion/styled';
  2. import type {LoadingMaskProps} from 'sentry/components/loadingMask';
  3. import LoadingMask from 'sentry/components/loadingMask';
  4. interface TransparentLoadingMaskProps extends LoadingMaskProps {
  5. visible: boolean;
  6. children?: React.ReactNode;
  7. className?: string;
  8. }
  9. const TransparentLoadingMask = styled(
  10. ({className, visible, children, ...props}: TransparentLoadingMaskProps) => {
  11. const other = visible ? {...props, 'data-test-id': 'loading-placeholder'} : props;
  12. return (
  13. <LoadingMask className={className} {...other}>
  14. {children}
  15. </LoadingMask>
  16. );
  17. }
  18. )<TransparentLoadingMaskProps>`
  19. ${p => !p.visible && 'display: none;'};
  20. opacity: 0.4;
  21. z-index: 1;
  22. `;
  23. export default TransparentLoadingMask;