NotAvailable.tsx 842 B

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