aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/ui/textarea.reel/textarea.js
blob: 4fa0d23e617bbef72f03d53c23a6ee1eddad0e00 (plain)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* <copyright>
 This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
 No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
 (c) Copyright 2011 Motorola Mobility, Inc.  All Rights Reserved.
 </copyright> */

/**
    @module "montage/ui/textarea.reel"
    @requires montage/ui/component
    @requires montage/ui/text-input
*/

var Montage = require("montage").Montage,
Component = require("ui/component").Component,
TextInput = require("ui/text-input").TextInput;

/**
 * Wraps the a &lt;textarea> element with binding support for the element's standard attributes. Uses an ArrayController instance to manage the element's contents and selection.
   @class module:"montage/ui/textarea.reel".Textarea
   @extends module:montage/text-input.TextInput
 */

var Textarea = exports.Textarea = Montage.create(TextInput, /** @lends module:"montage/ui/textarea.reel".Textarea# */ {

    select: { value: function() { this._element.select(); } },

/**
    The text display by the Textarea component's element.
    @type {string}
    @default ""
*/
    textContent: {
        get: function() {
            return this.value;
        },
        set: function(v) {
            this.value = v;
        }
    }

});

Textarea.addAttributes( /** @lends module:"montage/ui/textarea.reel".Textarea# */ {
/**
    Specifies whether the element should be focused as soon as the page is loaded.
    @type {boolean}
    @default false
*/
        autofocus: {dataType: 'boolean'},

/**
    The maximum number of characters per line of text to display.
    @type {number}
    @default null
*/
        cols: null,

/**
    The name of the field that contains that value that specifies the element's directionality.
    @type {string}
    @default  null
*/
        dirname: null,

/**
    When true, the textarea element is disabled to user input, and "disabled" is added to the element's CSS class list.
    @type {boolean}
    @default false
*/
        disabled: {dataType: 'boolean'},

/**
    The value of the <code>id</code> attribute of the form with which to associate the component's element.
    @type string}
    @default null
*/
        form: null,

/**
    The maximum allowed value length of the element.
    @type {number}
    @default null
*/
        maxlength: null,

/**
    The name associated with the textarea element.
    @type {string}
    @default null
*/
        name: null,

/**
    Placeholder text to display in the textarea before the user has entered any text.
    @type {string}
    @default null
*/
        placeholder: null,

/**
    Specifies if this control is readonly.
    @type {boolean}
    @default false
*/
        readonly: {dataType: 'boolean'},

/**
    When true, the user will be required to enter a value in the textarea before submitting the form.
    @type {string}
    @default false
*/
        required: {dataType: 'boolean'},

/**
    The number of lines of text the browser should render for the textarea.
    @type {number}
    @default null
*/
        rows: null,

/**
    If the value of this property is "hard", the browser will insert line breaks such that each line of user input has no more characters than the value specified by the <code>cols</code> property. If the value is "soft" then no line breaks will be added.
    @type {string}
    @default
*/
        wrap: null
});