Vvveb.ComponentsGroup['Base'] =
["html/heading", "html/image", "html/hr", "html/form", "html/textinput", "html/textareainput", "html/selectinput", "html/fileinput", "html/checkbox", "html/radiobutton", "html/link", "html/video", "html/button"];
Vvveb.Components.extend("_base", "html/heading", {
image: "icons/heading.svg",
name: "Heading",
nodes: ["h1", "h2","h3", "h4","h5","h6"],
html: "
Heading
",
properties: [
{
name: "Size",
key: "size",
inputtype: SelectInput,
onChange: function(node, value) {
return changeNodeName(node, "h" + value);
},
init: function(node) {
var regex;
regex = /H(\d)/.exec(node.nodeName);
if (regex && regex[1]) {
return regex[1]
}
return 1
},
data:{
options: [{
value: "1",
text: "Heading 1"
}, {
value: "2",
text: "Heading 2"
}, {
value: "3",
text: "Heading 3"
}, {
value: "4",
text: "Heading 4"
}, {
value: "5",
text: "Heading 5"
}, {
value: "6",
text: "Heading 6"
}]
},
}]
});
Vvveb.Components.extend("_base", "html/link", {
nodes: ["a"],
name: "Link",
html: 'Link',
image: "icons/link.svg",
properties: [{
name: "Url",
key: "href",
htmlAttr: "href",
inputtype: LinkInput
}, {
name: "Target",
key: "target",
htmlAttr: "target",
inputtype: TextInput
}]
});
Vvveb.Components.extend("_base", "html/image", {
nodes: ["img"],
name: "Image",
html: '
',
/*
afterDrop: function (node)
{
node.attr("src", '');
return node;
},*/
image: "icons/image.svg",
resizable:true,//show select box resize handlers
properties: [{
name: "Image",
key: "src",
htmlAttr: "src",
inputtype: ImageInput
}, {
name: "Width",
key: "width",
htmlAttr: "width",
inputtype: TextInput
}, {
name: "Height",
key: "height",
htmlAttr: "height",
inputtype: TextInput
}, {
name: "Alt",
key: "alt",
htmlAttr: "alt",
inputtype: TextInput
}]
});
Vvveb.Components.add("html/hr", {
image: "icons/hr.svg",
nodes: ["hr"],
name: "Horizontal Rule",
html: "
"
});
Vvveb.Components.extend("_base", "html/label", {
name: "Label",
nodes: ["label"],
html: '',
properties: [{
name: "For id",
htmlAttr: "for",
key: "for",
inputtype: TextInput
}]
});
Vvveb.Components.extend("_base", "html/textinput", {
name: "Input",
nodes: ["input"],
//attributes: {"type":"text"},
image: "icons/text_input.svg",
html: '',
properties: [{
name: "Value",
key: "value",
htmlAttr: "value",
inputtype: TextInput
}, {
name: "Type",
key: "type",
htmlAttr: "type",
inputtype: SelectInput,
data: {
options: [{
value: "text",
text: "text"
}, {
value: "button",
text: "button"
}, {
value: "checkbox",
text: "checkbox"
}, {
value: "color",
text: "color"
}, {
value: "date",
text: "date"
}, {
value: "datetime-local",
text: "datetime-local"
}, {
value: "email",
text: "email"
}, {
value: "file",
text: "file"
}, {
value: "hidden",
text: "hidden"
}, {
value: "image",
text: "image"
}, {
value: "month",
text: "month"
}, {
value: "number",
text: "number"
}, {
value: "password",
text: "password"
}, {
value: "radio",
text: "radio"
}, {
value: "range",
text: "range"
}, {
value: "reset",
text: "reset"
}, {
value: "search",
text: "search"
}, {
value: "submit",
text: "submit"
}, {
value: "tel",
text: "tel"
}, {
value: "text",
text: "text"
}, {
value: "time",
text: "time"
}, {
value: "url",
text: "url"
}, {
value: "week",
text: "week"
}]
}
}, {
name: "Placeholder",
key: "placeholder",
htmlAttr: "placeholder",
inputtype: TextInput
}, {
name: "Disabled",
key: "disabled",
htmlAttr: "disabled",
col:6,
inputtype: CheckboxInput,
},{
name: "Required",
key: "required",
htmlAttr: "required",
col:6,
inputtype: CheckboxInput,
}]
});
Vvveb.Components.extend("_base", "html/selectinput", {
nodes: ["select"],
name: "Select Input",
image: "icons/select_input.svg",
html: `
`,
beforeInit: function (node)
{
properties = [];
var i = 0;
$(node).find('option').each(function() {
data = {"value": this.value, "text": this.text};
i++;
properties.push({
name: "Option " + i,
key: "option" + i,
//index: i - 1,
optionNode: this,
inputtype: TextValueInput,
data: data,
onChange: function(node, value, input) {
option = $(this.optionNode);
//if remove button is clicked remove option and render row properties
if (input.nodeName == 'BUTTON')
{
option.remove();
Vvveb.Components.render("html/selectinput");
return node;
}
if (input.name == "value") option.attr("value", value);
else if (input.name == "text") option.text(value);
return node;
},
});
});
//remove all option properties
this.properties = this.properties.filter(function(item) {
return item.key.indexOf("option") === -1;
});
//add remaining properties to generated column properties
properties.push(this.properties[0]);
this.properties = properties;
return node;
},
properties: [{
name: "Option",
key: "option1",
inputtype: TextValueInput
}, {
name: "Option",
key: "option2",
inputtype: TextValueInput
}, {
name: "",
key: "addChild",
inputtype: ButtonInput,
data: {text:"Add option", icon:"la-plus"},
onChange: function(node)
{
$(node).append('');
//render component properties again to include the new column inputs
Vvveb.Components.render("html/selectinput");
return node;
}
}]
});
Vvveb.Components.extend("_base", "html/textareainput", {
name: "Text Area",
image: "icons/text_area.svg",
html: ''
});
Vvveb.Components.extend("_base", "html/radiobutton", {
name: "Radio Button",
attributes: {"type":"radio"},
image: "icons/radio.svg",
html: '',
properties: [{
name: "Name",
key: "name",
htmlAttr: "name",
inputtype: TextInput
}]
});
Vvveb.Components.extend("_base", "html/checkbox", {
name: "Checkbox",
attributes: {"type":"checkbox"},
image: "icons/checkbox.svg",
html: '',
properties: [{
name: "Name",
key: "name",
htmlAttr: "name",
inputtype: TextInput
}]
});
Vvveb.Components.extend("_base", "html/fileinput", {
name: "Input group",
attributes: {"type":"file"},
image: "icons/text_input.svg",
html: '\
\
'
});
Vvveb.Components.extend("_base", "html/video", {
nodes: ["video"],
name: "Video",
html: '