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
140 lines (113 loc) • 3.06 kB
JavaScript
(function($) {
var Alpaca = $.alpaca;
Alpaca.Fields.TagField = Alpaca.Fields.LowerCaseField.extend(
/**
* @lends Alpaca.Fields.TagField.prototype
*/
{
/**
* @see Alpaca.Fields.TextField#getFieldType
*/
getFieldType: function() {
return "tag";
},
/**
* @see Alpaca.Fields.TextField#setup
*/
setup: function()
{
this.base();
if (!this.options.separator)
{
this.options.separator = ",";
}
},
/**
* @see Alpaca.Fields.TextField#getValue
*/
getControlValue: function()
{
var val = this.base();
if (val === "") {
return [];
}
return val.split(this.options.separator);
},
/**
* @see Alpaca.Fields.TextField#setValue
*/
setValue: function(val)
{
if (val === "")
{
return;
}
if (!val)
{
return this.base("");
}
this.base(val.join(this.options.separator));
},
/**
* @see Alpaca.Field#onBlur
*/
onBlur: function(e)
{
this.base(e);
var vals = this.getValue();
var trimmed = [];
$.each(vals, function(i, v) {
if (v.trim() !== "")
{
trimmed.push(v.trim());
}
});
this.setValue(trimmed);
}
/* builder_helpers */
,
/**
* @see Alpaca.Fields.TextField#getTitle
*/
getTitle: function() {
return "Tag Field";
},
/**
* @see Alpaca.Fields.TextField#getDescription
*/
getDescription: function() {
return "Text field for entering list of tags separated by delimiter.";
},
/**
* @private
* @see Alpaca.Fields.TextField#getSchemaOfOptions
*/
getSchemaOfOptions: function() {
return Alpaca.merge(this.base(), {
"properties": {
"separator": {
"title": "Separator",
"description": "Separator used to split tags.",
"type": "string",
"default":","
}
}
});
},
/**
* @private
* @see Alpaca.Fields.TextField#getOptionsForOptions
*/
getOptionsForOptions: function() {
return Alpaca.merge(this.base(), {
"fields": {
"separator": {
"type": "text"
}
}
});
}
/* end_builder_helpers */
});
Alpaca.registerFieldClass("tag", Alpaca.Fields.TagField);
})(jQuery);