NotAvailable.tsx 876 B

1234567891011121314151617181920212223242526272829303132333435
  1. import React from 'react';
  2. import { Disable } from 'react-disable';
  3. import type { UncontrolledTooltipProps } from 'reactstrap';
  4. import { UncontrolledTooltip } from 'reactstrap';
  5. type NotAvailableProps = {
  6. children: JSX.Element
  7. isDisabled: boolean
  8. title: string
  9. classNamePrefix?: string
  10. placement?: UncontrolledTooltipProps['placement']
  11. }
  12. export const NotAvailable = ({
  13. children, isDisabled, title, classNamePrefix = 'grw-not-available', placement = 'top',
  14. }: NotAvailableProps): JSX.Element => {
  15. if (!isDisabled) {
  16. return children;
  17. }
  18. const id = `${classNamePrefix}-${Math.random().toString(32).substring(2)}`;
  19. return (
  20. <>
  21. <div id={id}>
  22. <Disable disabled={isDisabled}>
  23. {children}
  24. </Disable>
  25. </div>
  26. <UncontrolledTooltip placement={placement} target={id}>{title}</UncontrolledTooltip>
  27. </>
  28. );
  29. };