From 526e417e8fa426cce45e8641e53f806f1480dbbb Mon Sep 17 00:00:00 2001 From: Dong-hyeon Shin <52447545+qu3vipon@users.noreply.github.com> Date: Mon, 30 Jan 2023 04:19:20 +0900 Subject: [PATCH] Add copy to clipboard component (#380) --- pynecone/.templates/web/package.json | 1 + pynecone/components/forms/__init__.py | 1 + pynecone/components/forms/copytoclipboard.py | 26 ++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 pynecone/components/forms/copytoclipboard.py diff --git a/pynecone/.templates/web/package.json b/pynecone/.templates/web/package.json index fb0178ec7..1b0e7c01d 100644 --- a/pynecone/.templates/web/package.json +++ b/pynecone/.templates/web/package.json @@ -20,6 +20,7 @@ "plotly.js": "2.6.4", "prettier": "^2.8.1", "react": "^17.0.2", + "react-copy-to-clipboard": "^5.1.0", "react-dom": "^17.0.2", "react-markdown": "^8.0.3", "react-plotly.js": "^2.6.0", diff --git a/pynecone/components/forms/__init__.py b/pynecone/components/forms/__init__.py index 469b37b25..4000b0644 100644 --- a/pynecone/components/forms/__init__.py +++ b/pynecone/components/forms/__init__.py @@ -2,6 +2,7 @@ from .button import Button, ButtonGroup from .checkbox import Checkbox, CheckboxGroup +from .copytoclipboard import CopyToClipboard from .editable import Editable, EditableInput, EditablePreview, EditableTextarea from .formcontrol import FormControl, FormErrorMessage, FormHelperText, FormLabel from .iconbutton import IconButton diff --git a/pynecone/components/forms/copytoclipboard.py b/pynecone/components/forms/copytoclipboard.py new file mode 100644 index 000000000..cd253ed69 --- /dev/null +++ b/pynecone/components/forms/copytoclipboard.py @@ -0,0 +1,26 @@ +"""A copy to clipboard component.""" + +from typing import Set + +from pynecone.components import Component +from pynecone.var import Var + + +class CopyToClipboard(Component): + """Component to copy text to clipboard.""" + + library = "react-copy-to-clipboard" + + tag = "CopyToClipboard" + + # The text to copy when clicked. + text: Var[str] + + @classmethod + def get_controlled_triggers(cls) -> Set[str]: + """Get the event triggers that pass the component's value to the handler. + + Returns: + The controlled event triggers. + """ + return {"on_copy"}