|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ImageInput = { ...ImageInput, ...{ |
|
|
|
|
|
tag: "img", |
|
|
|
|
|
events: [ |
|
|
["change", "onImageChange", "input[type=text]"], |
|
|
["click", "onClick", "button"], |
|
|
["click", "onClick", "img"], |
|
|
], |
|
|
|
|
|
setValue: function(value) { |
|
|
if (value && value.indexOf("data:image") == -1 && value != "none") { |
|
|
this.element[0].querySelector('input[type="text"]').value = value; |
|
|
|
|
|
let src = (value.indexOf("//") > -1 || value.indexOf("media/") > -1 || value.indexOf("image-cache/") > -1 ? '' : Vvveb.themeBaseUrl) + value |
|
|
this.element[0].querySelector(this.tag).src = src; |
|
|
|
|
|
} else { |
|
|
this.element[0].querySelector(this.tag).src = Vvveb.baseUrl + 'icons/image.svg'; |
|
|
|
|
|
} |
|
|
}, |
|
|
|
|
|
onImageChange: function(event, node, input) { |
|
|
|
|
|
let self = this; |
|
|
let src = self.value; |
|
|
let tag = input.tag; |
|
|
|
|
|
let img = node.querySelector(tag); |
|
|
if (img.src) { |
|
|
src = img.getAttribute("src"); |
|
|
} |
|
|
|
|
|
if (src) { |
|
|
input.value = src; |
|
|
input.onChange.call(self, event, node, input); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
let onLoad = function () { |
|
|
if (Vvveb.Builder.selectedEl) { |
|
|
Vvveb.Builder.selectedEl.click(); |
|
|
} |
|
|
}; |
|
|
|
|
|
Vvveb.Builder.selectedEl.addEventListener("load", onLoad); |
|
|
}, |
|
|
|
|
|
|
|
|
onClick: function(e, element) { |
|
|
if (!Vvveb.MediaModal) { |
|
|
Vvveb.MediaModal = new MediaModal(true); |
|
|
Vvveb.MediaModal.mediaPath = window.mediaPath; |
|
|
} |
|
|
|
|
|
Vvveb.MediaModal.open(this.closest("[data-target-input]")); |
|
|
}, |
|
|
|
|
|
init: function(data) { |
|
|
return this.render("imageinput-gallery", data); |
|
|
}, |
|
|
} |
|
|
} |
|
|
|
|
|
VideoInput = { ...ImageInput, ...{ |
|
|
tag:"video", |
|
|
|
|
|
events: [ |
|
|
["change", "onChange", "input[type=text]"], |
|
|
["click", "onClick", "button"], |
|
|
["click", "onClick", "video"], |
|
|
], |
|
|
|
|
|
|
|
|
init: function(data) { |
|
|
return this.render("videoinput-gallery", data); |
|
|
}, |
|
|
} |
|
|
} |
|
|
|