NotAvailable.tsx 898 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import React, { type JSX } 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,
  14. isDisabled,
  15. title,
  16. classNamePrefix = 'grw-not-available',
  17. placement = 'top',
  18. }: NotAvailableProps): JSX.Element => {
  19. if (!isDisabled) {
  20. return children;
  21. }
  22. const id = `${classNamePrefix}-${Math.random().toString(32).substring(2)}`;
  23. return (
  24. <>
  25. <div id={id}>
  26. <Disable disabled={isDisabled}>{children}</Disable>
  27. </div>
  28. <UncontrolledTooltip placement={placement} target={id}>
  29. {title}
  30. </UncontrolledTooltip>
  31. </>
  32. );
  33. };