summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/widgets/iframe_widget.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/src/js/widgets/iframe_widget.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web/static/src/js/widgets/iframe_widget.js')
-rw-r--r--addons/web/static/src/js/widgets/iframe_widget.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/addons/web/static/src/js/widgets/iframe_widget.js b/addons/web/static/src/js/widgets/iframe_widget.js
new file mode 100644
index 00000000..8ecbd5f1
--- /dev/null
+++ b/addons/web/static/src/js/widgets/iframe_widget.js
@@ -0,0 +1,65 @@
+odoo.define('web.IFrameWidget', function (require) {
+"use strict";
+
+var Widget = require('web.Widget');
+
+/**
+ * Generic widget to create an iframe that listens for clicks
+ *
+ * It should be extended by overwriting the methods::
+ *
+ * init: function(parent) {
+ * this._super(parent, <url_of_iframe>);
+ * },
+ * _onIFrameClicked: function(e){
+ * filter the clicks you want to use and apply
+ * an action on it
+ * }
+ */
+var IFrameWidget = Widget.extend({
+ tagName: 'iframe',
+ /**
+ * @constructor
+ * @param {Widget} parent
+ * @param {string} url
+ */
+ init: function (parent, url) {
+ this._super(parent);
+ this.url = url;
+ },
+ /**
+ * @override
+ * @returns {Promise}
+ */
+ start: function () {
+ this.$el.css({height: '100%', width: '100%', border: 0});
+ this.$el.attr({src: this.url});
+ this.$el.on("load", this._bindEvents.bind(this));
+ return this._super();
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Called when the iframe is ready
+ */
+ _bindEvents: function (){
+ this.$el.contents().click(this._onIFrameClicked.bind(this));
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @param {MouseEvent} event
+ */
+ _onIFrameClicked: function (event){
+ }
+});
+
+return IFrameWidget;
+
+});