You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.9 KiB
47 lines
1.9 KiB
/** @odoo-module **/
|
|
import options from "@web_editor/js/editor/snippets.options";
|
|
/**
|
|
* JavaScript file defining a registry of options for the image hotspot feature in the web editor snippets.
|
|
* The registry includes methods for toggling the image hotspot feature, setting the vertical and horizontal position
|
|
of the hotspot, and setting the product template for the hotspot link.
|
|
*/
|
|
options.registry.ImageHotspot = options.Class.extend({
|
|
init: function () {
|
|
this._super(...arguments);
|
|
this.imageHotspot()
|
|
},
|
|
imageHotspot: function (previewMode, widgetValue) {
|
|
if (widgetValue == 'on' && previewMode === false) {
|
|
this.$target[0].parentElement.style.position = "relative";
|
|
const target = this.$target[0].parentElement;
|
|
var document = this.ownerDocument;
|
|
const newA = document.createElement('a');
|
|
newA.className = 'popup-product';
|
|
this.$target[0].after(newA);
|
|
}
|
|
if (widgetValue == 'off' && previewMode === false) {
|
|
const target = this.$target[0]
|
|
if (target.nextElementSibling) {
|
|
if (target.nextElementSibling.className == 'popup-product') {
|
|
target.nextElementSibling.remove();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
async setVertical(previewMode, widgetValue) {
|
|
let target = this.$target[0].nextElementSibling;
|
|
let value = parseFloat(widgetValue);
|
|
target.style.top = `${value}%`;
|
|
},
|
|
async setHorizontal(previewMode, widgetValue) {
|
|
let target = this.$target[0].nextElementSibling;
|
|
let value = parseFloat(widgetValue);
|
|
target.style.left = `${value}%`;
|
|
},
|
|
async setProductTemplate(previewMode, widgetValue) {
|
|
let target = this.$target[0].nextElementSibling;
|
|
let value = `/shop/${widgetValue}`
|
|
target.setAttribute("href", value);
|
|
}
|
|
|
|
});
|