UNPKG

alpaca

Version:

Alpaca provides the easiest and fastest way to generate interactive forms for the web and mobile devices. It runs simply as HTML5 or more elaborately using Bootstrap, jQuery Mobile or jQuery UI. Alpaca uses Handlebars to process JSON schema and provide

153 lines (130 loc) 4.1 kB
(function($) { var Alpaca = $.alpaca; Alpaca.Fields.TextAreaField = Alpaca.Fields.TextField.extend( /** * @lends Alpaca.Fields.TextAreaField.prototype */ { /** * @see Alpaca.Fields.TextField#getFieldType */ getFieldType: function() { return "textarea"; }, /** * @see Alpaca.Fields.TextField#setup */ setup: function() { this.base(); if (!this.options.rows) { this.options.rows = 5; } if (!this.options.cols) { this.options.cols = 40; } }, /** * @see Alpaca.ControlField#handleValidate */ handleValidate: function() { var baseStatus = this.base(); var valInfo = this.validation; var status = this._validateWordCount(); valInfo["wordLimitExceeded"] = { "message": status ? "" : Alpaca.substituteTokens(this.getMessage("wordLimitExceeded"), [this.options.wordlimit]), "status": status }; return baseStatus && valInfo["wordLimitExceeded"]["status"]; }, /** * Validate for word limit. * * @returns {Boolean} True if the number of words is equal to or less than the word limit. */ _validateWordCount: function() { if (this.options.wordlimit && this.options.wordlimit > -1) { var val = this.data; if (val) { var wordcount = val.split(" ").length; if (wordcount > this.options.wordlimit) { return false; } } } return true; } /* builder_helpers */ , /** * @see Alpaca.Fields.TextField#getTitle */ getTitle: function() { return "Multi-Line Text"; }, /** * @see Alpaca.Fields.TextField#getDescription */ getDescription: function() { return "Textarea field for multiple line text."; }, /** * @private * @see Alpaca.Fields.TextField#getSchemaOfOptions */ getSchemaOfOptions: function() { return Alpaca.merge(this.base(), { "properties": { "rows": { "title": "Rows", "description": "Number of rows", "type": "number", "default": 5 }, "cols": { "title": "Columns", "description": "Number of columns", "type": "number", "default": 40 }, "wordlimit": { "title": "Word Limit", "description": "Limits the number of words allowed in the text area.", "type": "number", "default": -1 } } }); }, /** * @private * @see Alpaca.Fields.TextField#getOptionsForOptions */ getOptionsForOptions: function() { return Alpaca.merge(this.base(), { "fields": { "rows": { "type": "integer" }, "cols": { "type": "integer" }, "wordlimit": { "type": "integer" } } }); } /* end_builder_helpers */ }); Alpaca.registerMessages({ "wordLimitExceeded": "The maximum word limit of {0} has been exceeded." }); Alpaca.registerFieldClass("textarea", Alpaca.Fields.TextAreaField); })(jQuery);