2 "name" : "Roo.form.DayPicker",
9 "desc" : "A Day picker show [M] [T] [W] ....",
10 "isSingleton" : false,
13 "memberOf" : "DayPicker",
22 "desc" : "Configuration options",
31 "desc" : "The type attribute for input fields -- e.g. radio, text, password (defaults to \"text\").",
32 "memberOf" : "Roo.form.Field",
38 "desc" : "list of events and functions to call for this object, \nFor example :\n<pre><code>\n listeners : { \n 'click' : function(e) {\n ..... \n } ,\n .... \n } \n </code></pre>",
39 "memberOf" : "Roo.util.Observable",
45 "desc" : "<b>Experimental</b> The effect used when displaying a validation message under the field (defaults to 'normal').",
46 "memberOf" : "Roo.form.Field",
50 "name" : "fieldLabel",
52 "desc" : "Label to use when rendering a form.",
53 "memberOf" : "Roo.form.Field",
57 "name" : "validationDelay",
59 "desc" : "The length of time in milliseconds after user input begins until validation is initiated (defaults to 250)",
60 "memberOf" : "Roo.form.Field",
66 "desc" : "The location where error text should display. Should be one of the following values (defaults to 'qtip'):\n<pre>\nValue Description\n----------- ----------------------------------------------------------------------\nqtip Display a quick tip when the user hovers over the field\ntitle Display a default browser title attribute popup\nunder Add a block div beneath the field containing the error text\nside Add an error icon to the right of the field with a popup on hover\n[element id] Add the error text directly to the innerHTML of the specified element\n</pre>",
67 "memberOf" : "Roo.form.Field",
73 "desc" : "y)\nHow this component should hidden. Supported values are\n\"visibility\" (css visibility), \"offsets\" (negative offset position) and\n\"display\" (css display) - defaults to \"display\".",
74 "memberOf" : "Roo.Component",
83 "desc" : "True to disable the field (defaults to false).",
84 "memberOf" : "Roo.form.Field",
90 "desc" : "A value to initialize this field with.",
91 "memberOf" : "Roo.form.Field",
95 "name" : "allowDomMove",
97 "desc" : "Whether the component can move the Dom node when rendering (defaults to true).",
98 "memberOf" : "Roo.Component",
104 "desc" : "The tabIndex for this field. Note this only applies to fields that are rendered, not those which are built via applyTo (defaults to undefined).",
105 "memberOf" : "Roo.form.Field",
111 "desc" : "True to mark the field as readOnly in HTML (defaults to false) -- Note: this only sets the element's readOnly DOM attribute.",
112 "memberOf" : "Roo.form.Field",
116 "name" : "invalidClass",
118 "desc" : "The CSS class to use when marking a field invalid (defaults to \"x-form-invalid\")",
119 "memberOf" : "Roo.form.Field",
125 "desc" : "A CSS class to apply to the field's underlying element.",
126 "memberOf" : "Roo.form.Field",
130 "name" : "autoCreate",
131 "type" : "String/Object",
132 "desc" : "A DomHelper element spec, or true for a default element spec (defaults to\n{tag: \"input\", type: \"checkbox\", autocomplete: \"off\"})",
133 "memberOf" : "Roo.form.DayPicker",
137 "name" : "invalidText",
139 "desc" : "The error text to use when marking a field invalid and no message is provided (defaults to \"The value in this field is invalid\")",
140 "memberOf" : "Roo.form.Field",
144 "name" : "actionMode",
146 "desc" : "which property holds the element that used for hide() / show() / disable() / enable()\ndefault is 'el' for forms you probably want to set this to fieldEl",
147 "memberOf" : "Roo.Component",
153 "desc" : "width (optional) size of component",
154 "memberOf" : "Roo.BoxComponent",
158 "name" : "validateOnBlur",
160 "desc" : "Whether the field should validate when it loses focus (defaults to true).",
161 "memberOf" : "Roo.form.Field",
165 "name" : "validationEvent",
166 "type" : "String/Boolean",
167 "desc" : "The event that should initiate field validation. Set to false to disable\n automatic validation (defaults to \"keyup\").",
168 "memberOf" : "Roo.form.Field",
172 "name" : "fieldClass",
174 "desc" : "The default CSS class for the checkbox (defaults to \"x-form-field\")",
175 "memberOf" : "Roo.form.DayPicker",
179 "name" : "focusClass",
181 "desc" : "The CSS class to use when the checkbox receives focus (defaults to undefined)",
182 "memberOf" : "Roo.form.DayPicker",
188 "desc" : "The field's HTML name attribute.",
189 "memberOf" : "Roo.form.Field",
195 "desc" : "Mouse over tip",
196 "memberOf" : "Roo.form.Field",
202 "desc" : "height (optional) size of component",
203 "memberOf" : "Roo.BoxComponent",
207 "name" : "disableClass",
209 "desc" : "CSS class added to the component when it is disabled (defaults to \"x-item-disabled\").",
210 "memberOf" : "Roo.Component",
217 "desc" : "Returns the checked state of the checkbox.",
219 "isConstructor" : false,
221 "memberOf" : "Roo.form.DayPicker",
231 "desc" : "True if checked, else false"
237 "desc" : "Sets the checked state of the checkbox.\nOn is always based on a string comparison between inputValue and the param.",
239 "isConstructor" : false,
241 "memberOf" : "Roo.form.DayPicker",
249 "type" : "Boolean/String",
250 "desc" : "- the value to set",
254 "name" : "suppressEvent",
255 "type" : "Boolean/String",
256 "desc" : "- whether to suppress the checkchange event.",
264 "desc" : "Validates the field value",
266 "isConstructor" : false,
268 "memberOf" : "Roo.form.Field",
278 "desc" : "True if the value is valid, else false"
284 "desc" : "Returns the name attribute of the field if available",
286 "isConstructor" : false,
288 "memberOf" : "Roo.form.Field",
298 "desc" : "name The field name"
303 "name" : "markInvalid",
304 "desc" : "Mark this field as invalid",
306 "isConstructor" : false,
308 "memberOf" : "Roo.form.Field",
317 "desc" : "The validation message",
324 "name" : "getRawValue",
325 "desc" : "Returns the raw data value which may or may not be a valid, defined value. To return a normalized value see {@link #getValue}.",
327 "isConstructor" : false,
329 "memberOf" : "Roo.form.Field",
339 "desc" : "value The field value"
345 "desc" : "Apply the behaviors of this component to an existing element. <b>This is used instead of render().</b>",
347 "isConstructor" : false,
349 "memberOf" : "Roo.form.Field",
357 "type" : "String/HTMLElement/Element",
358 "desc" : "The id of the node, a DOM node or an existing Element",
365 "type" : "Roo.form.Field",
371 "name" : "resetHasChanged",
372 "desc" : "stores the current value in loadedValue",
374 "isConstructor" : false,
376 "memberOf" : "Roo.form.Field",
386 "desc" : "Returns true if this field has been changed since it was originally loaded and is not disabled.\nDEPRICATED - it never worked well - use hasChanged/resetHasChanged.",
388 "isConstructor" : false,
390 "memberOf" : "Roo.form.Field",
399 "name" : "setRawValue",
400 "desc" : "Sets the underlying DOM field's value directly, bypassing validation. To set the value with validation see {@link #setValue}.",
402 "isConstructor" : false,
404 "memberOf" : "Roo.form.Field",
413 "desc" : "The value to set",
420 "name" : "clearInvalid",
421 "desc" : "Clear any invalid styles/messages for this field",
423 "isConstructor" : false,
425 "memberOf" : "Roo.form.Field",
435 "desc" : "Returns whether or not the field value is currently valid",
437 "isConstructor" : false,
439 "memberOf" : "Roo.form.Field",
446 "name" : "preventMark",
448 "desc" : "True to disable marking the field invalid",
456 "desc" : "True if the value is valid, else false"
462 "desc" : "Resets the current field value to the originally loaded value and clears any validation messages",
464 "isConstructor" : false,
466 "memberOf" : "Roo.form.Field",
475 "name" : "hasChanged",
476 "desc" : "checks the current value against the 'loaded' value.\nNote - will return false if 'resetHasChanged' has not been called first.",
478 "isConstructor" : false,
480 "memberOf" : "Roo.form.Field",
489 "name" : "updateBox",
490 "desc" : "Sets the current box measurements of the component's underlying element.",
492 "isConstructor" : false,
494 "memberOf" : "Roo.BoxComponent",
503 "desc" : "An object in the format {x, y, width, height}",
510 "name" : "setPagePosition",
511 "desc" : "Sets the page XY position of the component. To set the left and top instead, use {@link #setPosition}.\nThis method fires the move event.",
513 "isConstructor" : false,
515 "memberOf" : "Roo.BoxComponent",
524 "desc" : "The new x position",
530 "desc" : "The new y position",
538 "desc" : "Force the component's size to recalculate based on the underlying element's current height and width.",
540 "isConstructor" : false,
542 "memberOf" : "Roo.BoxComponent",
552 "desc" : "Sets the width and height of the component. This method fires the resize event. This method can accept\neither width and height as separate numeric arguments, or you can pass a size object like {width:10, height:20}.",
554 "isConstructor" : false,
556 "memberOf" : "Roo.BoxComponent",
564 "type" : "Number/Object",
565 "desc" : "The new width to set, or a size object in the format {width, height}",
571 "desc" : "The new height to set (not required if a size object is passed as the first arg)",
578 "type" : "Roo.BoxComponent",
584 "name" : "getPosition",
585 "desc" : "Gets the current XY position of the component's underlying element.",
587 "isConstructor" : false,
589 "memberOf" : "Roo.BoxComponent",
598 "desc" : "(optional) If true the element's left and top are returned instead of page XY (defaults to false)",
606 "desc" : "The XY position of the element (e.g., [100, 200])"
612 "desc" : "Called after the component is resized, this method is empty by default but can be implemented by any\nsubclass that needs to perform custom logic after a resize occurs.",
614 "isConstructor" : false,
616 "memberOf" : "Roo.BoxComponent",
625 "desc" : "The box-adjusted width that was set",
629 "name" : "adjHeight",
631 "desc" : "The box-adjusted height that was set",
637 "desc" : "The width that was originally specified",
641 "name" : "rawHeight",
643 "desc" : "The height that was originally specified",
651 "desc" : "Gets the current box measurements of the component's underlying element.",
653 "isConstructor" : false,
655 "memberOf" : "Roo.BoxComponent",
664 "desc" : "(optional) If true the element's left and top are returned instead of page XY (defaults to false)",
672 "desc" : "Gets the current size of the component's underlying element.",
674 "isConstructor" : false,
676 "memberOf" : "Roo.BoxComponent",
686 "desc" : "An object containing the element's size {width: (element width), height: (element height)}"
691 "name" : "onPosition",
692 "desc" : "Called after the component is moved, this method is empty by default but can be implemented by any\nsubclass that needs to perform custom logic after a move occurs.",
694 "isConstructor" : false,
696 "memberOf" : "Roo.BoxComponent",
705 "desc" : "The new x position",
711 "desc" : "The new y position",
718 "name" : "setPosition",
719 "desc" : "Sets the left and top of the component. To set the page XY position instead, use {@link #setPagePosition}.\nThis method fires the move event.",
721 "isConstructor" : false,
723 "memberOf" : "Roo.BoxComponent",
732 "desc" : "The new left",
738 "desc" : "The new top",
746 "desc" : "Returns the id of this component.",
748 "isConstructor" : false,
750 "memberOf" : "Roo.Component",
766 "desc" : "If this is a lazy rendering component, render it to its container element.",
768 "isConstructor" : false,
770 "memberOf" : "Roo.Component",
777 "name" : "container",
778 "type" : "String/HTMLElement/Element",
779 "desc" : "(optional) The element this component should be rendered into. If it is being applied to existing markup, this should be left off.",
787 "desc" : "Destroys this component by purging any event listeners, removing the component's element from the DOM,\nremoving the component from its {@link Roo.Container} (if applicable) and unregistering it from {@link Roo.ComponentMgr}.",
789 "isConstructor" : false,
791 "memberOf" : "Roo.Component",
800 "name" : "isVisible",
801 "desc" : "Returns true if this component is visible.",
803 "isConstructor" : false,
805 "memberOf" : "Roo.Component",
814 "name" : "setDisabled",
815 "desc" : "Convenience function for setting disabled/enabled by boolean.",
817 "isConstructor" : false,
819 "memberOf" : "Roo.Component",
836 "desc" : "Hide this component.",
838 "isConstructor" : false,
840 "memberOf" : "Roo.Component",
849 "type" : "Roo.Component",
856 "desc" : "Try to focus this component.",
858 "isConstructor" : false,
860 "memberOf" : "Roo.Component",
867 "name" : "selectText",
869 "desc" : "True to also select the text in this component (if applicable)",
876 "type" : "Roo.Component",
883 "desc" : "Show this component.",
885 "isConstructor" : false,
887 "memberOf" : "Roo.Component",
896 "type" : "Roo.Component",
903 "desc" : "Enable this component.",
905 "isConstructor" : false,
907 "memberOf" : "Roo.Component",
916 "type" : "Roo.Component",
922 "name" : "setVisible",
923 "desc" : "Convenience function to hide or show this component by boolean.",
925 "isConstructor" : false,
927 "memberOf" : "Roo.Component",
936 "desc" : "True to show, false to hide",
943 "type" : "Roo.Component",
950 "desc" : "Disable this component.",
952 "isConstructor" : false,
954 "memberOf" : "Roo.Component",
963 "type" : "Roo.Component",
970 "desc" : "Returns the underlying {@link Roo.Element}.",
972 "isConstructor" : false,
974 "memberOf" : "Roo.Component",
983 "type" : "Roo.Element",
984 "desc" : "The element"
989 "name" : "purgeListeners",
990 "desc" : "Removes all listeners for this object",
992 "isConstructor" : false,
994 "memberOf" : "Roo.util.Observable",
1004 "desc" : "Appends an event handler to this element (shorthand for addListener)",
1006 "isConstructor" : false,
1007 "isPrivate" : false,
1008 "memberOf" : "Roo.util.Observable",
1015 "name" : "eventName",
1017 "desc" : "The type of event to listen for",
1018 "isOptional" : false
1022 "type" : "Function",
1023 "desc" : "The method the event invokes",
1024 "isOptional" : false
1029 "desc" : "(optional) The scope in which to execute the handler\nfunction. The handler function's \"this\" context.",
1030 "isOptional" : false
1035 "desc" : "(optional)",
1036 "isOptional" : false
1043 "desc" : "Removes a listener (shorthand for removeListener)",
1045 "isConstructor" : false,
1046 "isPrivate" : false,
1047 "memberOf" : "Roo.util.Observable",
1054 "name" : "eventName",
1056 "desc" : "The type of event to listen for",
1057 "isOptional" : false
1061 "type" : "Function",
1062 "desc" : "The handler to remove",
1063 "isOptional" : false
1068 "desc" : "(optional) The scope (this object) for the handler",
1069 "isOptional" : false
1075 "name" : "addEvents",
1076 "desc" : "Used to define events on this Observable",
1078 "isConstructor" : false,
1079 "isPrivate" : false,
1080 "memberOf" : "Roo.util.Observable",
1089 "desc" : "The object with the events defined",
1090 "isOptional" : false
1096 "name" : "releaseCapture",
1097 "desc" : "Removes <b>all</b> added captures from the Observable.",
1099 "isConstructor" : false,
1100 "isPrivate" : false,
1101 "memberOf" : "Roo.util.Observable",
1109 "type" : "Observable",
1110 "desc" : "The Observable to release",
1111 "isOptional" : false
1117 "name" : "removeListener",
1118 "desc" : "Removes a listener",
1120 "isConstructor" : false,
1121 "isPrivate" : false,
1122 "memberOf" : "Roo.util.Observable",
1129 "name" : "eventName",
1131 "desc" : "The type of event to listen for",
1132 "isOptional" : false
1136 "type" : "Function",
1137 "desc" : "The handler to remove",
1138 "isOptional" : false
1143 "desc" : "(optional) The scope (this object) for the handler",
1144 "isOptional" : false
1150 "name" : "fireEvent",
1151 "desc" : "Fires the specified event with the passed parameters (minus the event name).",
1153 "isConstructor" : false,
1154 "isPrivate" : false,
1155 "memberOf" : "Roo.util.Observable",
1162 "name" : "eventName",
1165 "isOptional" : false
1169 "type" : "Object...",
1170 "desc" : "Variable number of parameters are passed to handlers",
1171 "isOptional" : false
1178 "desc" : "returns false if any of the handlers return false otherwise it returns true"
1183 "name" : "hasListener",
1184 "desc" : "Checks to see if this object has any listeners for a specified event",
1186 "isConstructor" : false,
1187 "isPrivate" : false,
1188 "memberOf" : "Roo.util.Observable",
1195 "name" : "eventName",
1197 "desc" : "The name of the event to check for",
1198 "isOptional" : false
1205 "desc" : "True if the event is being listened for, else false"
1211 "desc" : "Starts capture on the specified Observable. All events will be passed\nto the supplied function with the event name + standard signature of the event\n<b>before</b> the event is fired. If the supplied function returns false,\nthe event will not fire.",
1213 "isConstructor" : false,
1214 "isPrivate" : false,
1215 "memberOf" : "Roo.util.Observable",
1223 "type" : "Observable",
1224 "desc" : "The Observable to capture",
1225 "isOptional" : false
1229 "type" : "Function",
1230 "desc" : "The function to call",
1231 "isOptional" : false
1236 "desc" : "(optional) The scope (this object) for the fn",
1237 "isOptional" : false
1243 "name" : "addListener",
1244 "desc" : "Appends an event handler to this component",
1246 "isConstructor" : false,
1247 "isPrivate" : false,
1248 "memberOf" : "Roo.util.Observable",
1255 "name" : "eventName",
1257 "desc" : "The type of event to listen for",
1258 "isOptional" : false
1262 "type" : "Function",
1263 "desc" : "The method the event invokes",
1264 "isOptional" : false
1269 "desc" : "(optional) The scope in which to execute the handler\nfunction. The handler function's \"this\" context.",
1270 "isOptional" : false
1275 "desc" : "(optional) An object containing handler configuration\nproperties. This may contain any of the following properties:<ul>\n<li>scope {Object} The scope in which to execute the handler function. The handler function's \"this\" context.</li>\n<li>delay {Number} The number of milliseconds to delay the invocation of the handler after te event fires.</li>\n<li>single {Boolean} True to add a handler to handle just the next firing of the event, and then remove itself.</li>\n<li>buffer {Number} Causes the handler to be scheduled to run in an {@link Roo.util.DelayedTask} delayed\nby the specified number of milliseconds. If the event fires again within that time, the original\nhandler is <em>not</em> invoked, but the new handler is scheduled in its place.</li>\n</ul><br>\n<p>\n<b>Combining Options</b><br>\nUsing the options argument, it is possible to combine different types of listeners:<br>\n<br>\nA normalized, delayed, one-time listener that auto stops the event and passes a custom argument (forumId)\n\t\t<pre><code>\n\t\tel.on('click', this.onClick, this, {\n \t\t\tsingle: true,\n \t\tdelay: 100,\n \t\tforumId: 4\n\t\t});\n\t\t</code></pre>\n<p>\n<b>Attaching multiple handlers in 1 call</b><br>\nThe method also allows for a single argument to be passed which is a config object containing properties\nwhich specify multiple handlers.\n<pre><code>\n\t\tel.on({\n\t\t\t'click': {\n \t\tfn: this.onClick,\n \t\tscope: this,\n \t\tdelay: 100\n \t\t}, \n \t\t'mouseover': {\n \t\tfn: this.onMouseOver,\n \t\tscope: this\n \t\t},\n \t\t'mouseout': {\n \t\tfn: this.onMouseOut,\n \t\tscope: this\n \t\t}\n\t\t});\n\t\t</code></pre>\n<p>\nOr a shorthand syntax which passes the same scope object to all handlers:\n \t<pre><code>\n\t\tel.on({\n\t\t\t'click': this.onClick,\n \t\t'mouseover': this.onMouseOver,\n \t\t'mouseout': this.onMouseOut,\n \t\tscope: this\n\t\t});\n\t\t</code></pre>",
1276 "isOptional" : false
1285 "desc" : "Fires when this field loses input focus.",
1286 "memberOf" : "Roo.form.Field",
1294 "type" : "Roo.form.Field",
1296 "isOptional" : false
1303 "desc" : "Fires after the field has been validated with no errors.",
1304 "memberOf" : "Roo.form.Field",
1312 "type" : "Roo.form.Field",
1314 "isOptional" : false
1320 "name" : "specialkey",
1321 "desc" : "Fires when any key related to navigation (arrows, tab, enter, esc, etc.) is pressed. You can check\n{@link Roo.EventObject#getKey} to determine which key was pressed.",
1322 "memberOf" : "Roo.form.Field",
1330 "type" : "Roo.form.Field",
1332 "isOptional" : false
1336 "type" : "Roo.EventObject",
1337 "desc" : "The event object",
1338 "isOptional" : false
1345 "desc" : "Fires when this field receives input focus.",
1346 "memberOf" : "Roo.form.Field",
1354 "type" : "Roo.form.Field",
1356 "isOptional" : false
1363 "desc" : "Fires after the key up",
1364 "memberOf" : "Roo.form.Field",
1372 "type" : "Roo.form.Field",
1374 "isOptional" : false
1378 "type" : "Roo.EventObject",
1379 "desc" : "The event Object",
1380 "isOptional" : false
1387 "desc" : "Fires after the field has been marked as invalid.",
1388 "memberOf" : "Roo.form.Field",
1396 "type" : "Roo.form.Field",
1398 "isOptional" : false
1403 "desc" : "The validation message",
1404 "isOptional" : false
1411 "desc" : "Fires just before the field blurs if the field value has changed.",
1412 "memberOf" : "Roo.form.Field",
1420 "type" : "Roo.form.Field",
1422 "isOptional" : false
1425 "name" : "newValue",
1427 "desc" : "The new value",
1428 "isOptional" : false
1431 "name" : "oldValue",
1433 "desc" : "The original value",
1434 "isOptional" : false
1441 "desc" : "Fires after the component is moved.",
1442 "memberOf" : "Roo.BoxComponent",
1450 "type" : "Roo.Component",
1452 "isOptional" : false
1457 "desc" : "The new x position",
1458 "isOptional" : false
1463 "desc" : "The new y position",
1464 "isOptional" : false
1471 "desc" : "Fires after the component is resized.",
1472 "memberOf" : "Roo.BoxComponent",
1480 "type" : "Roo.Component",
1482 "isOptional" : false
1485 "name" : "adjWidth",
1487 "desc" : "The box-adjusted width that was set",
1488 "isOptional" : false
1491 "name" : "adjHeight",
1493 "desc" : "The box-adjusted height that was set",
1494 "isOptional" : false
1497 "name" : "rawWidth",
1499 "desc" : "The width that was originally specified",
1500 "isOptional" : false
1503 "name" : "rawHeight",
1505 "desc" : "The height that was originally specified",
1506 "isOptional" : false
1512 "name" : "beforerender",
1513 "desc" : "Fires before the component is rendered. Return false to stop the render.",
1514 "memberOf" : "Roo.Component",
1522 "type" : "Roo.Component",
1524 "isOptional" : false
1531 "desc" : "Fires after the component is disabled.",
1532 "memberOf" : "Roo.Component",
1540 "type" : "Roo.Component",
1542 "isOptional" : false
1549 "desc" : "Fires after the component is rendered.",
1550 "memberOf" : "Roo.Component",
1558 "type" : "Roo.Component",
1560 "isOptional" : false
1567 "desc" : "Fires after the component is destroyed.",
1568 "memberOf" : "Roo.Component",
1576 "type" : "Roo.Component",
1578 "isOptional" : false
1585 "desc" : "Fires after the component is hidden.",
1586 "memberOf" : "Roo.Component",
1594 "type" : "Roo.Component",
1596 "isOptional" : false
1602 "name" : "beforehide",
1603 "desc" : "Fires before the component is hidden. Return false to stop the hide.",
1604 "memberOf" : "Roo.Component",
1612 "type" : "Roo.Component",
1614 "isOptional" : false
1621 "desc" : "Fires after the component is shown.",
1622 "memberOf" : "Roo.Component",
1630 "type" : "Roo.Component",
1632 "isOptional" : false
1638 "name" : "beforeshow",
1639 "desc" : "Fires before the component is shown. Return false to stop the show.",
1640 "memberOf" : "Roo.Component",
1648 "type" : "Roo.Component",
1650 "isOptional" : false
1657 "desc" : "Fires after the component is enabled.",
1658 "memberOf" : "Roo.Component",
1666 "type" : "Roo.Component",
1668 "isOptional" : false
1674 "name" : "beforedestroy",
1675 "desc" : "Fires before the component is destroyed. Return false to stop the destroy.",
1676 "memberOf" : "Roo.Component",
1684 "type" : "Roo.Component",
1686 "isOptional" : false