summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2020-04-29 07:21:34 +0000
committerAaron Bohy <aab@odoo.com>2020-05-05 08:48:34 +0000
commit1d6e4948d2e8534379b6815e931a6eaa58955e18 (patch)
tree587a061ffa02f6797383b26b020139d61bb3fde5 /addons/web/static/src/js/fields
parent56787d587858760355e6703f1afce54a66f7800f (diff)
[IMP] web: add BadgeField component
This new field component displays the field's value inside a bootstrap pill badge. Supported field types are 'char', 'selection' and 'many2one'. The background color of the badge can be customized by using the decoration-xxx mechanism, e.g. <field name="state" decoration-danger="state == 'cancel'" widget="badge"/> Part of task 2195254
Diffstat (limited to 'addons/web/static/src/js/fields')
-rw-r--r--addons/web/static/src/js/fields/basic_fields_owl.js23
-rw-r--r--addons/web/static/src/js/fields/field_registry_owl.js1
2 files changed, 24 insertions, 0 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields_owl.js b/addons/web/static/src/js/fields/basic_fields_owl.js
index a00b14fb9ee..8a5915410ee 100644
--- a/addons/web/static/src/js/fields/basic_fields_owl.js
+++ b/addons/web/static/src/js/fields/basic_fields_owl.js
@@ -7,6 +7,27 @@ odoo.define('web.basic_fields_owl', function (require) {
const _lt = core._lt;
+
+ /**
+ * FieldBadge displays the field's value inside a bootstrap pill badge.
+ * The supported field's types are 'char', 'selection' and 'many2one'.
+ *
+ * By default, the background color of the badge is a light gray, but it can
+ * be customized by setting a 'decoration-xxx' attribute on the field.
+ * For instance,
+ * <field name="some_field" widget="badge" decoration-danger="state == 'cancel'"/>
+ * renders a badge with a red background on records matching the condition.
+ */
+ class FieldBadge extends AbstractField {
+ _getClassFromDecoration(decoration) {
+ return `bg-${decoration.split('-')[1]}-light`;
+ }
+ }
+ FieldBadge.description = _lt("Badge");
+ FieldBadge.supportedFieldTypes = ['selection', 'many2one', 'char'];
+ FieldBadge.template = 'web.FieldBadge';
+
+
class FieldBoolean extends AbstractField {
patched() {
super.patched();
@@ -105,7 +126,9 @@ odoo.define('web.basic_fields_owl', function (require) {
FieldBoolean.supportedFieldTypes = ['boolean'];
FieldBoolean.template = 'web.FieldBoolean';
+
return {
+ FieldBadge,
FieldBoolean,
};
});
diff --git a/addons/web/static/src/js/fields/field_registry_owl.js b/addons/web/static/src/js/fields/field_registry_owl.js
index f5f7d900ef8..907ea38a9d7 100644
--- a/addons/web/static/src/js/fields/field_registry_owl.js
+++ b/addons/web/static/src/js/fields/field_registry_owl.js
@@ -27,5 +27,6 @@ odoo.define('web._field_registry_owl', function (require) {
// Basic fields
registry
+ .add('badge', basicFields.FieldBadge)
.add('boolean', basicFields.FieldBoolean);
});