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.

46 lines
1.5 KiB

  1. /* Global jscolor */
  2. odoo.define('web.web_widget_color', function(require) {
  3. "use strict";
  4. var basic_fields = require('web.basic_fields');
  5. var field_registry = require('web.field_registry');
  6. var ListRenderer = require('web.ListRenderer');
  7. var FieldColor = basic_fields.FieldChar.extend({
  8. template: 'FieldColor',
  9. widget_class: 'oe_form_field_color',
  10. _renderReadonly: function () {
  11. // Do Nothing
  12. },
  13. _renderEdit: function() {
  14. this.$input = this.$el.find('input');
  15. this.jscolor = new jscolor(this.$input[0], {hash:true, zIndex:2000});
  16. },
  17. });
  18. field_registry.add('color', FieldColor);
  19. // Deny unselect row if jscolor actived
  20. ListRenderer.include({
  21. unselectRow: function () {
  22. var canUnselect = true;
  23. if (this.currentRow !== null) {
  24. var record = this.state.data[this.currentRow];
  25. var recordWidgets = this.allFieldWidgets[record.id];
  26. canUnselect = !_.some(recordWidgets, function (widget) {
  27. var $el = widget.getFocusableElement();
  28. return ($el instanceof jQuery && $el.hasClass('jscolor-active'));
  29. });
  30. }
  31. if (canUnselect) {
  32. return this._super.apply(this, arguments);
  33. } else {
  34. return $.Deferred().resolve();
  35. }
  36. },
  37. });
  38. return FieldColor;
  39. });