tryton-sao 6.0.61 → 6.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG CHANGED
@@ -1,4 +1,14 @@
1
1
 
2
+ Version 6.0.63 - 2025-07-15
3
+ ---------------------------
4
+ * Bug fixes (see mercurial logs for details)
5
+
6
+
7
+ Version 6.0.62 - 2025-07-01
8
+ ---------------------------
9
+ * Bug fixes (see mercurial logs for details)
10
+
11
+
2
12
  Version 6.0.61 - 2025-06-04
3
13
  ---------------------------
4
14
  * Bug fixes (see mercurial logs for details)
@@ -8774,6 +8774,11 @@ html[theme="default"] .radio input[type="radio"]:focus,
8774
8774
  html[theme="default"] .radio-inline input[type="radio"]:focus {
8775
8775
  outline: none;
8776
8776
  }
8777
+ html[theme="default"] input[type="radio"]:focus:after,
8778
+ html[theme="default"] .radio input[type="radio"]:focus:after,
8779
+ html[theme="default"] .radio-inline input[type="radio"]:focus:after {
8780
+ border-color: #71bdc1 !important;
8781
+ }
8777
8782
  html[theme="default"] input[type="radio"]:before,
8778
8783
  html[theme="default"] .radio input[type="radio"]:before,
8779
8784
  html[theme="default"] .radio-inline input[type="radio"]:before,
@@ -8863,10 +8868,10 @@ html[theme="default"] .checkbox input[type="checkbox"]:focus,
8863
8868
  html[theme="default"] .checkbox-inline input[type="checkbox"]:focus {
8864
8869
  outline: none;
8865
8870
  }
8866
- html[theme="default"] input[type="checkbox"]:focus:before,
8867
- html[theme="default"] .checkbox input[type="checkbox"]:focus:before,
8868
- html[theme="default"] .checkbox-inline input[type="checkbox"]:focus:before {
8869
- border-color: #267f82;
8871
+ html[theme="default"] input[type="checkbox"]:focus:after,
8872
+ html[theme="default"] .checkbox input[type="checkbox"]:focus:after,
8873
+ html[theme="default"] .checkbox-inline input[type="checkbox"]:focus:after {
8874
+ border-color: #71bdc1 !important;
8870
8875
  }
8871
8876
  html[theme="default"] input[type="checkbox"]:before,
8872
8877
  html[theme="default"] .checkbox input[type="checkbox"]:before,
@@ -9185,7 +9190,8 @@ html[theme="default"] .carousel-caption h6 {
9185
9190
  float: none;
9186
9191
  }
9187
9192
  }
9188
- .btn-primary .icon {
9193
+ .btn-primary .icon,
9194
+ .bg-primary .icon {
9189
9195
  filter: brightness(0) invert(1);
9190
9196
  }
9191
9197
  .panel-heading a {
@@ -1066,20 +1066,26 @@ var Sao = {};
1066
1066
  shortcut: 'alt+shift+tab',
1067
1067
  label: Sao.i18n.gettext('Previous tab'),
1068
1068
  callback: function() {
1069
- Sao.Tab.previous_tab();
1069
+ if (!jQuery('body').children('.modal').length) {
1070
+ Sao.Tab.previous_tab();
1071
+ }
1070
1072
  },
1071
1073
  }, {
1072
1074
  shortcut: 'alt+tab',
1073
1075
  label: Sao.i18n.gettext('Next tab'),
1074
1076
  callback: function() {
1075
- Sao.Tab.next_tab();
1077
+ if (!jQuery('body').children('.modal').length) {
1078
+ Sao.Tab.next_tab();
1079
+ }
1076
1080
  },
1077
1081
  }, {
1078
1082
  shortcut: 'ctrl+k',
1079
1083
  label: Sao.i18n.gettext('Global search'),
1080
1084
  callback: function() {
1081
- jQuery('#main_navbar:hidden').collapse('show');
1082
- jQuery('#global-search-entry').focus();
1085
+ if (!jQuery('body').children('.modal').length) {
1086
+ jQuery('#main_navbar:hidden').collapse('show');
1087
+ jQuery('#global-search-entry').focus();
1088
+ }
1083
1089
  },
1084
1090
  }, {
1085
1091
  shortcut: 'f1',
@@ -4932,8 +4938,13 @@ var Sao = {};
4932
4938
  }
4933
4939
  let { format } = new Intl.NumberFormat(
4934
4940
  Sao.i18n.BC47(Sao.i18n.getlang()));
4941
+ // use 10000 because some language (ex: es) add thousand
4942
+ // separator only after 9999
4943
+ let [, thousandSeparator] = /^10(.)?000/.exec(format(10000));
4935
4944
  let [, decimalSign] = /^0(.)1$/.exec(format(0.1));
4936
- return Number(string.replace(decimalSign, '.'));
4945
+ return Number(string
4946
+ .replace(new RegExp(thousandSeparator, 'g'), '')
4947
+ .replace(decimalSign, '.'));
4937
4948
  }
4938
4949
  var convert_selection = function() {
4939
4950
  if (typeof value == 'string') {
@@ -21053,12 +21064,13 @@ function eval_pyson(value){
21053
21064
  current_record = this.tree.screen.current_record;
21054
21065
  this.tree.select_records(current_record, this.record);
21055
21066
  } else {
21067
+ let selected = this.is_selected();
21056
21068
  if (!(event_.ctrlKey || event_.metaKey) ||
21057
21069
  this.tree.selection_mode ==
21058
21070
  Sao.common.SELECTION_SINGLE) {
21059
21071
  this.tree.select_records(null, null);
21060
21072
  }
21061
- this.set_selection(!this.is_selected());
21073
+ this.set_selection(!selected);
21062
21074
  }
21063
21075
  this.selection_changed();
21064
21076
  if (current_record) {
@@ -21089,6 +21101,9 @@ function eval_pyson(value){
21089
21101
  },
21090
21102
  selection_changed: function() {
21091
21103
  var is_selected = this.is_selected();
21104
+ if (this.tree.selection_mode == Sao.common.SELECTION_SINGLE) {
21105
+ this.tree.select_records(null, null);
21106
+ }
21092
21107
  this.set_selection(is_selected);
21093
21108
  if (is_selected) {
21094
21109
  this.tree.select_changed(this.record);
@@ -21238,10 +21253,13 @@ function eval_pyson(value){
21238
21253
  }
21239
21254
  listener.on('click.sao.editabletree', handler);
21240
21255
 
21241
- Sao.View.Tree.RowEditable._super.select_row.call(this, event_);
21242
-
21243
- if (!event_.shiftKey && !(event_.ctrlKey || event_.metaKey)) {
21256
+ // do not call super when editing row because the selection must
21257
+ // not be changed
21258
+ if (!event_.shiftKey && !(event_.ctrlKey || event_.metaKey) &&
21259
+ (this.record === current_record)) {
21244
21260
  this.tree.edit_row(this);
21261
+ } else {
21262
+ Sao.View.Tree.RowEditable._super.select_row.call(this, event_);
21245
21263
  }
21246
21264
  },
21247
21265
  unset_editable: function() {
@@ -22077,6 +22095,7 @@ function eval_pyson(value){
22077
22095
  if (states.invisible || states.readonly) {
22078
22096
  return;
22079
22097
  }
22098
+ event.stopImmediatePropagation();
22080
22099
  button.el.prop('disabled', true); // state will be reset at display
22081
22100
  var row = this.view.rows.find(function(row) {
22082
22101
  return row.record == record;
@@ -8774,6 +8774,11 @@ html[theme="default"] .radio input[type="radio"]:focus,
8774
8774
  html[theme="default"] .radio-inline input[type="radio"]:focus {
8775
8775
  outline: none;
8776
8776
  }
8777
+ html[theme="default"] input[type="radio"]:focus:after,
8778
+ html[theme="default"] .radio input[type="radio"]:focus:after,
8779
+ html[theme="default"] .radio-inline input[type="radio"]:focus:after {
8780
+ border-color: #71bdc1 !important;
8781
+ }
8777
8782
  html[theme="default"] input[type="radio"]:before,
8778
8783
  html[theme="default"] .radio input[type="radio"]:before,
8779
8784
  html[theme="default"] .radio-inline input[type="radio"]:before,
@@ -8863,10 +8868,10 @@ html[theme="default"] .checkbox input[type="checkbox"]:focus,
8863
8868
  html[theme="default"] .checkbox-inline input[type="checkbox"]:focus {
8864
8869
  outline: none;
8865
8870
  }
8866
- html[theme="default"] input[type="checkbox"]:focus:before,
8867
- html[theme="default"] .checkbox input[type="checkbox"]:focus:before,
8868
- html[theme="default"] .checkbox-inline input[type="checkbox"]:focus:before {
8869
- border-color: #267f82;
8871
+ html[theme="default"] input[type="checkbox"]:focus:after,
8872
+ html[theme="default"] .checkbox input[type="checkbox"]:focus:after,
8873
+ html[theme="default"] .checkbox-inline input[type="checkbox"]:focus:after {
8874
+ border-color: #71bdc1 !important;
8870
8875
  }
8871
8876
  html[theme="default"] input[type="checkbox"]:before,
8872
8877
  html[theme="default"] .checkbox input[type="checkbox"]:before,
@@ -9185,7 +9190,8 @@ html[theme="default"] .carousel-caption h6 {
9185
9190
  float: none;
9186
9191
  }
9187
9192
  }
9188
- .btn-primary .icon {
9193
+ .btn-primary .icon,
9194
+ .bg-primary .icon {
9189
9195
  filter: brightness(0) invert(1);
9190
9196
  }
9191
9197
  .panel-heading a {