Skip to content

Commit

Permalink
Added PasswordInput widget similar to TextInput (#655)
Browse files Browse the repository at this point in the history
  • Loading branch information
julwin authored and philippjfr committed Sep 24, 2019
1 parent 2d5415e commit 16ccc5f
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 1 deletion.
102 changes: 102 additions & 0 deletions examples/reference/widgets/PasswordInput.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import panel as pn\n",
"pn.extension()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from panel.widgets.input import PasswordInput"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The ``PasswordInput`` allows entering any string using a obfuscated text input box.\n",
"\n",
"For more information about listening to widget events and laying out widgets refer to the [widgets user guide](../../user_guide/Widgets.ipynb). Alternatively you can learn how to build GUIs by declaring parameters independently of any specific widgets in the [param user guide](../../user_guide/Param.ipynb). To express interactivity entirely using Javascript without the need for a Python server take a look at the [links user guide](../../user_guide/Param.ipynb).\n",
"\n",
"#### Parameters:\n",
"\n",
"For layout and styling related parameters see the [customization user guide](../../user_guide/Customization.ipynb).\n",
"\n",
"##### Core\n",
"\n",
"* **``value``** (str): Any string\n",
"\n",
"##### Display\n",
"\n",
"* **``disabled``** (boolean): Whether the widget is editable\n",
"* **``name``** (str): The title of the widget\n",
"* **``placeholder``** (str): A placeholder string displayed when no value is entered\n",
"\n",
"___"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"password_input = pn.widgets.input.PasswordInput(name='Password Input', placeholder='Enter a string here...')\n",
"password_input"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"``PasswordInput.value`` returns a string type that can be read out and set like other widgets:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"password_input.value"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 [anaconda50_py36]",
"language": "python",
"name": "anaconda-project-anaconda50_py36-python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
10 changes: 9 additions & 1 deletion panel/widgets/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
from bokeh.models.widgets import (
CheckboxGroup as _BkCheckboxGroup, ColorPicker as _BkColorPicker,
DatePicker as _BkDatePicker, Div as _BkDiv, TextInput as _BkTextInput,
Spinner as _BkSpinner, FileInput as _BkFileInput)
PasswordInput as _BkPasswordInput, Spinner as _BkSpinner,
FileInput as _BkFileInput)

from ..util import as_unicode
from .base import Widget
Expand All @@ -29,6 +30,13 @@ class TextInput(Widget):

_widget_type = _BkTextInput

class PasswordInput(Widget):

value = param.String(default='', allow_None=True)

placeholder = param.String(default='')

_widget_type = _BkPasswordInput

class FileInput(Widget):

Expand Down

0 comments on commit 16ccc5f

Please sign in to comment.