summaryrefslogtreecommitdiff
path: root/docs/src/components/Examples/Codebar.tsx
blob: a1f1117b07f025cf4df467ffac4c8b56970299c6 (plain) (blame)
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
import type { FunctionalComponent } from 'preact';
import { h, Fragment } from 'preact';
import { useState, useRef, useEffect } from 'preact/hooks';

export type CodeBar = {
  content: string;
  command: string;
};

const CodeBar: FunctionalComponent = ({ content, command }) => {
  const [clicked, setClicked] = useState(false);
  const [titleTxt, setTitleTxt] = useState('Copy Command to Clipboard');
  useEffect(() => {
    const timeout = setTimeout(() => {
      setClicked(false);
      setTitleTxt('Copy Command to Clipboard');
    }, 1500);
    return () => clearTimeout(timeout);
  }, [clicked]);
  /**
   *
   */
  function onClick(e) {
    setClicked(true);
    setTitleTxt('Copied to Clipboard!');
    const titleAttr = e.target;
    const clipboard = navigator.clipboard;
    return clipboard.writeText(`${command}`);
  }

  return (
    <div style="cursor:pointer;" onClick={onClick} title={titleTxt}>
      <code>{content}</code>
    </div>
  );
};

export default CodeBar;