##// END OF EJS Templates
Merge pull request #5652 from jhamrick/placeholder...
Jonathan Frederic -
r16352:04f4cf16 merge
parent child Browse files
Show More
@@ -0,0 +1,3 b''
1 * `TextWidget` and `TextareaWidget` objects now include a
2 `placeholder` attribute, for displaying placeholder text before the
3 user has typed anything.
@@ -71,6 +71,11 b' define(["widgets/js/widget"], function(WidgetManager){'
71 this.update(); // Set defaults.
71 this.update(); // Set defaults.
72
72
73 this.model.on('msg:custom', $.proxy(this._handle_textarea_msg, this));
73 this.model.on('msg:custom', $.proxy(this._handle_textarea_msg, this));
74 this.model.on('change:placeholder', function(model, value, options) {
75 this.update_placeholder(value);
76 }, this);
77
78 this.update_placeholder();
74 },
79 },
75
80
76 _handle_textarea_msg: function (content){
81 _handle_textarea_msg: function (content){
@@ -80,6 +85,13 b' define(["widgets/js/widget"], function(WidgetManager){'
80 }
85 }
81 },
86 },
82
87
88 update_placeholder: function(value) {
89 if (!value) {
90 value = this.model.get('placeholder');
91 }
92 this.$textbox.attr('placeholder', value);
93 },
94
83 scroll_to_bottom: function (){
95 scroll_to_bottom: function (){
84 // Scroll the text-area view to the bottom.
96 // Scroll the text-area view to the bottom.
85 this.$textbox.scrollTop(this.$textbox[0].scrollHeight);
97 this.$textbox.scrollTop(this.$textbox[0].scrollHeight);
@@ -141,6 +153,18 b' define(["widgets/js/widget"], function(WidgetManager){'
141 .appendTo(this.$el);
153 .appendTo(this.$el);
142 this.$el_to_style = this.$textbox; // Set default element to style
154 this.$el_to_style = this.$textbox; // Set default element to style
143 this.update(); // Set defaults.
155 this.update(); // Set defaults.
156 this.model.on('change:placeholder', function(model, value, options) {
157 this.update_placeholder(value);
158 }, this);
159
160 this.update_placeholder();
161 },
162
163 update_placeholder: function(value) {
164 if (!value) {
165 value = this.model.get('placeholder');
166 }
167 this.$textbox.attr('placeholder', value);
144 },
168 },
145
169
146 update: function(options){
170 update: function(options){
@@ -7,8 +7,8 b' casper.notebook_test(function () {'
7 this.execute_cell_then(index);
7 this.execute_cell_then(index);
8
8
9 var string_index = this.append_cell(
9 var string_index = this.append_cell(
10 'string_widget = [widgets.TextWidget(value = "xyz"),\n' +
10 'string_widget = [widgets.TextWidget(value = "xyz", placeholder = "abc"),\n' +
11 ' widgets.TextareaWidget(value = "xyz"),\n' +
11 ' widgets.TextareaWidget(value = "xyz", placeholder = "def"),\n' +
12 ' widgets.HTMLWidget(value = "xyz"),\n' +
12 ' widgets.HTMLWidget(value = "xyz"),\n' +
13 ' widgets.LatexWidget(value = "$\\\\LaTeX{}$")]\n' +
13 ' widgets.LatexWidget(value = "$\\\\LaTeX{}$")]\n' +
14 '[display(widget) for widget in string_widget]\n'+
14 '[display(widget) for widget in string_widget]\n'+
@@ -41,5 +41,13 b' casper.notebook_test(function () {'
41 this.test.assert(this.cell_element_exists(string_index,
41 this.test.assert(this.cell_element_exists(string_index,
42 '.widget-area .widget-subarea div span.MathJax_Preview'),
42 '.widget-area .widget-subarea div span.MathJax_Preview'),
43 'MathJax parsed the LaTeX successfully.');
43 'MathJax parsed the LaTeX successfully.');
44
45 this.test.assert(this.cell_element_function(index,
46 '.widget-area .widget-subarea .widget-hbox textarea', 'attr', ['placeholder'])=='def',
47 'Python set textarea placeholder.');
48
49 this.test.assert(this.cell_element_function(index,
50 '.widget-area .widget-subarea .widget-hbox-single input[type=text]', 'attr', ['placeholder'])=='abc',
51 'Python set textbox placehoder.');
44 });
52 });
45 }); No newline at end of file
53 });
@@ -23,6 +23,7 b' class _StringWidget(DOMWidget):'
23 value = Unicode(help="String value", sync=True)
23 value = Unicode(help="String value", sync=True)
24 disabled = Bool(False, help="Enable or disable user changes", sync=True)
24 disabled = Bool(False, help="Enable or disable user changes", sync=True)
25 description = Unicode(help="Description of the value this widget represents", sync=True)
25 description = Unicode(help="Description of the value this widget represents", sync=True)
26 placeholder = Unicode("", help="Placeholder text to display when nothing has been typed", sync=True)
26
27
27
28
28 class HTMLWidget(_StringWidget):
29 class HTMLWidget(_StringWidget):
@@ -7,7 +7,7 b''
7 ]
7 ]
8 ],
8 ],
9 "name": "",
9 "name": "",
10 "signature": "sha256:9a70b52f0b16861d1cd6a8342b233247958977a52bde8d3efd69d21131ce1926"
10 "signature": "sha256:5ac3a85c8bb2f9bb3cd63b524bbb626ab1531176b43a109d13f5d7794f805eee"
11 },
11 },
12 "nbformat": 3,
12 "nbformat": 3,
13 "nbformat_minor": 0,
13 "nbformat_minor": 0,
@@ -31,7 +31,7 b''
31 "language": "python",
31 "language": "python",
32 "metadata": {},
32 "metadata": {},
33 "outputs": [],
33 "outputs": [],
34 "prompt_number": 1
34 "prompt_number": 2
35 },
35 },
36 {
36 {
37 "cell_type": "heading",
37 "cell_type": "heading",
@@ -298,6 +298,39 b''
298 }
298 }
299 ],
299 ],
300 "prompt_number": 10
300 "prompt_number": 10
301 },
302 {
303 "cell_type": "markdown",
304 "metadata": {},
305 "source": [
306 "Some widgets have special attributes. For example, text boxes and text areas can specify the `placeholder` attribute, which will set \"placeholder\" text to be displayed before the user has typed anything:"
307 ]
308 },
309 {
310 "cell_type": "code",
311 "collapsed": false,
312 "input": [
313 "mytextwidget = widgets.TextWidget()\n",
314 "mytextwidget.placeholder = \"type something here\"\n",
315 "display(mytextwidget)"
316 ],
317 "language": "python",
318 "metadata": {},
319 "outputs": [],
320 "prompt_number": 4
321 },
322 {
323 "cell_type": "code",
324 "collapsed": false,
325 "input": [
326 "mytextareawidget = widgets.TextareaWidget()\n",
327 "mytextareawidget.placeholder = \"your text here\"\n",
328 "display(mytextareawidget)"
329 ],
330 "language": "python",
331 "metadata": {},
332 "outputs": [],
333 "prompt_number": 5
301 }
334 }
302 ],
335 ],
303 "metadata": {}
336 "metadata": {}
General Comments 0
You need to be logged in to leave comments. Login now