diff --git a/addons/im_livechat/static/src/js/copy_clipboard.js b/addons/im_livechat/static/src/js/copy_clipboard.js
deleted file mode 100644
index 0d35e6b35f3..00000000000
--- a/addons/im_livechat/static/src/js/copy_clipboard.js
+++ /dev/null
@@ -1,86 +0,0 @@
-odoo.define('im_livechat.copy_clipboard', function (require) {
-"use strict";
-
-var core = require('web.core');
-var field_registry = require('web.field_registry');
-var qweb = core.qweb;
-
-var _t = core._t;
-var FieldText = field_registry.get('text');
-var FieldChar = field_registry.get('char');
-
-var CopyClipboard = {
-
- /**
- * @override
- */
- destroy: function () {
- this._super.apply(this, arguments);
- this.clipboard.destroy();
- },
-
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * Instatiates the Clipboad lib.
- */
- _initClipboard: function () {
- var self = this;
- var $clipboardBtn = this.$('.o_clipboard_button');
- $clipboardBtn.tooltip({title: _t('Copied !'), trigger: 'manual', placement: 'right'});
- this.clipboard = new Clipboard($clipboardBtn.get(0), {
- text: function () {
- return self.value.trim();
- }
- });
- this.clipboard.on('success', function () {
- _.defer(function () {
- $clipboardBtn.tooltip('show');
- _.delay(function () {
- $clipboardBtn.tooltip('hide');
- }, 800);
- });
- });
- },
-};
-
-var TextCopyClipboard = FieldText.extend(CopyClipboard, {
-
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * @override
- */
- _render: function() {
- this._super.apply(this, arguments);
- this.$el.addClass('o_field_copy');
- this.$el.append($(qweb.render('CopyClipboardText')));
- this._initClipboard();
- }
-});
-
-var CharCopyClipboard = FieldChar.extend(CopyClipboard, {
-
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * @override
- */
- _render: function() {
- this._super.apply(this, arguments);
- this.$el.addClass('o_field_copy');
- this.$el.append($(qweb.render('CopyClipboardChar')));
- this._initClipboard();
- }
-});
-
-field_registry
- .add('CopyClipboardText', TextCopyClipboard)
- .add('CopyClipboardChar', CharCopyClipboard);
-});
diff --git a/addons/im_livechat/static/src/scss/copy_clipboard.scss b/addons/im_livechat/static/src/scss/copy_clipboard.scss
deleted file mode 100644
index 13bbef7b256..00000000000
--- a/addons/im_livechat/static/src/scss/copy_clipboard.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-// less properties for copy widget
-.o_field_copy {
- position: relative;
- border-radius: 5px;
- border: 1px solid $btn-primary-border;
- font-size: $font-size-small;
- color: $o-brand-optional;
- font-weight: $badge-font-weight;
- text-align: center;
- .o_clipboard_button {
- &.o_btn_text_copy {
- position: absolute;
- top: 0;
- right: 0;
- }
- &.o_btn_char_copy {
- padding-top: 2px;
- }
- }
-}
diff --git a/addons/im_livechat/static/src/xml/copy_clipboard.xml b/addons/im_livechat/static/src/xml/copy_clipboard.xml
deleted file mode 100644
index 61c17cebb17..00000000000
--- a/addons/im_livechat/static/src/xml/copy_clipboard.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/im_livechat/static/tests/copy_clipboard_tests.js b/addons/im_livechat/static/tests/copy_clipboard_tests.js
deleted file mode 100644
index d0320ce7690..00000000000
--- a/addons/im_livechat/static/tests/copy_clipboard_tests.js
+++ /dev/null
@@ -1,48 +0,0 @@
-odoo.define('im_livechat.copy_clipboard_tests', function (require) {
-"use strict";
-
-var FormView = require('web.FormView');
-var testUtils = require('web.test_utils');
-
-var createView = testUtils.createView;
-
-QUnit.module('copy_clipboard', {
- beforeEach: function () {
- this.data = {
- partner: {
- fields: {
- script_external: {string: "Script External", type: "text"},
- web_page: {string: "Web page link", type: "char"}
- },
- records: [{
- id: 1,
- script_external:'Random Text',
- web_page: 'web page links'
- },],
- },
- };
- }
-});
-
-QUnit.test('im_livechat: Copy to clipboard button', function (assert) {
- assert.expect(2);
-
- var form = createView({
- View: FormView,
- model: 'partner',
- data: this.data,
- arch: '
',
- });
- assert.strictEqual(form.$('.o_clipboard_button.o_btn_text_copy').length, 1,"Should have copy button on text type field");
- assert.strictEqual(form.$('.o_clipboard_button.o_btn_char_copy').length, 1,"Should have copy button on char type field");
- form.destroy();
-});
-
-});
diff --git a/addons/im_livechat/views/im_livechat_channel_templates.xml b/addons/im_livechat/views/im_livechat_channel_templates.xml
index e85293c943a..e48f87c0f86 100644
--- a/addons/im_livechat/views/im_livechat_channel_templates.xml
+++ b/addons/im_livechat/views/im_livechat_channel_templates.xml
@@ -8,14 +8,6 @@
-
-
-
-
-
-
-
-
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 0cf9271de9d..aa66439143d 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -1064,6 +1064,77 @@ var UrlWidget = InputField.extend({
}
});
+var CopyClipboard = {
+
+ /**
+ * @override
+ */
+ destroy: function () {
+ this._super.apply(this, arguments);
+ this.clipboard.destroy();
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Instatiates the Clipboad lib.
+ */
+ _initClipboard: function () {
+ var self = this;
+ var $clipboardBtn = this.$('.o_clipboard_button');
+ $clipboardBtn.tooltip({title: _t('Copied !'), trigger: 'manual', placement: 'right'});
+ this.clipboard = new Clipboard($clipboardBtn.get(0), {
+ text: function () {
+ return self.value.trim();
+ }
+ });
+ this.clipboard.on('success', function () {
+ _.defer(function () {
+ $clipboardBtn.tooltip('show');
+ _.delay(function () {
+ $clipboardBtn.tooltip('hide');
+ }, 800);
+ });
+ });
+ },
+};
+
+var TextCopyClipboard = FieldText.extend(CopyClipboard, {
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @override
+ */
+ _render: function() {
+ this._super.apply(this, arguments);
+ this.$el.addClass('o_field_copy');
+ this.$el.append($(qweb.render('CopyClipboardText')));
+ this._initClipboard();
+ }
+});
+
+var CharCopyClipboard = FieldChar.extend(CopyClipboard, {
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @override
+ */
+ _render: function() {
+ this._super.apply(this, arguments);
+ this.$el.addClass('o_field_copy');
+ this.$el.append($(qweb.render('CopyClipboardChar')));
+ this._initClipboard();
+ }
+});
+
var AbstractFieldBinary = AbstractField.extend({
events: _.extend({}, AbstractField.prototype.events, {
'change .o_input_file': 'on_file_change',
@@ -2673,6 +2744,8 @@ return {
PriorityWidget: PriorityWidget,
StatInfo: StatInfo,
UrlWidget: UrlWidget,
+ TextCopyClipboard: TextCopyClipboard,
+ CharCopyClipboard: CharCopyClipboard,
JournalDashboardGraph: JournalDashboardGraph,
AceEditor: AceEditor,
};
diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js
index 8ae7362b75f..20af2a01064 100644
--- a/addons/web/static/src/js/fields/field_registry.js
+++ b/addons/web/static/src/js/fields/field_registry.js
@@ -34,6 +34,8 @@ registry
.add('email', basic_fields.FieldEmail)
.add('phone', basic_fields.FieldPhone)
.add('url', basic_fields.UrlWidget)
+ .add('CopyClipboardText', basic_fields.TextCopyClipboard)
+ .add('CopyClipboardChar', basic_fields.CharCopyClipboard)
.add('image', basic_fields.FieldBinaryImage)
.add('binary', basic_fields.FieldBinaryFile)
.add('pdf_viewer', basic_fields.FieldPdfViewer)
diff --git a/addons/web/static/src/scss/fields.scss b/addons/web/static/src/scss/fields.scss
index 2a35c33005a..88197612f0b 100644
--- a/addons/web/static/src/scss/fields.scss
+++ b/addons/web/static/src/scss/fields.scss
@@ -406,4 +406,26 @@
}
}
}
+
+ // Copy to clipboard
+ &.o_field_copy {
+ position: relative;
+ border-radius: 5px;
+ border: 1px solid $btn-primary-border;
+ font-size: $font-size-small;
+ color: $o-brand-optional;
+ font-weight: $badge-font-weight;
+ text-align: center;
+ .o_clipboard_button {
+ &.o_btn_text_copy {
+ position: absolute;
+ top: 0;
+ right: 0;
+ }
+ &.o_btn_char_copy {
+ padding-top: 2px;
+ }
+ }
+ }
+
}
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index 45bd3555d69..018dff37915 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -930,6 +930,16 @@
t-att-border="widget.readonly ? 0 : 1"
t-att-name="widget.name"/>
+
+
+
+
+
+
diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js
index e285626f763..d95d34431b3 100644
--- a/addons/web/static/tests/fields/basic_fields_tests.js
+++ b/addons/web/static/tests/fields/basic_fields_tests.js
@@ -1291,6 +1291,44 @@ QUnit.module('basic_fields', {
list.destroy();
});
+ QUnit.module('copy_clipboard', {
+ beforeEach: function () {
+ this.data = {
+ partner: {
+ fields: {
+ script_external: {string: "Script External", type: "text"},
+ web_page: {string: "Web page link", type: "char"}
+ },
+ records: [{
+ id: 1,
+ script_external:'Random Text',
+ web_page: 'web page links'
+ },],
+ },
+ };
+ }
+ });
+
+ QUnit.test('im_livechat: Copy to clipboard button', function (assert) {
+ assert.expect(2);
+
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '',
+ });
+ assert.strictEqual(form.$('.o_clipboard_button.o_btn_text_copy').length, 1,"Should have copy button on text type field");
+ assert.strictEqual(form.$('.o_clipboard_button.o_btn_char_copy').length, 1,"Should have copy button on char type field");
+ form.destroy();
+ });
QUnit.module('FieldText');