tryton-sao 8.0.1 → 8.0.3

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 8.0.3 - 2026-05-20
3
+ --------------------------
4
+ * Bug fixes (see mercurial logs for details)
5
+
6
+
7
+ Version 8.0.2 - 2026-05-02
8
+ --------------------------
9
+ * Bug fixes (see mercurial logs for details)
10
+
11
+
2
12
  Version 8.0.1 - 2026-04-22
3
13
  --------------------------
4
14
  * Bug fixes (see mercurial logs for details)
@@ -9724,12 +9724,10 @@ html.accesskey *[accesskey]:after {
9724
9724
  padding: 0 2px;
9725
9725
  position: absolute;
9726
9726
  text-transform: uppercase;
9727
- margin: 0 -1em;
9727
+ left: -1em;
9728
+ right: 0;
9728
9729
  z-index: 5;
9729
9730
  }
9730
- html.accesskey input[accesskey][type="checkbox"]:after {
9731
- background-color: initial;
9732
- }
9733
9731
  html.accesskey *[accesskey] ~ span[data-accesskey] {
9734
9732
  float: right;
9735
9733
  position: relative;
@@ -9740,10 +9738,13 @@ html.accesskey *[accesskey] ~ span[data-accesskey]:after {
9740
9738
  html.accesskey *[accesskey]:after {
9741
9739
  content: attr(accesskey);
9742
9740
  }
9743
- html.accesskey input[accesskey][type="checkbox"] ~ span[data-accesskey],
9744
- html.accesskey input[accesskey][type="checkbox"] ~ span[data-accesskey],
9745
- html.accesskey select[accesskey] ~ span[data-accesskey] {
9746
- bottom: 1em;
9741
+ html.accesskey[dir="rtl"] *[accesskey] ~ span[data-accesskey]:after,
9742
+ html.accesskey[dir="rtl"] *[accesskey]:after {
9743
+ left: 0;
9744
+ right: -1em;
9745
+ }
9746
+ html.accesskey[dir="rtl"] *[accesskey] ~ span[data-accesskey] {
9747
+ float: left;
9747
9748
  }
9748
9749
  .tab-form,
9749
9750
  .tab-board {
@@ -10076,6 +10077,10 @@ img.icon {
10076
10077
  height: 1.42857143em;
10077
10078
  display: block;
10078
10079
  }
10080
+ [dir="rtl"] .treeview > table.tree img.column-affix,
10081
+ [dir="rtl"] .treeview > table.tree a.column-affix > img {
10082
+ transform: scaleX(-1);
10083
+ }
10079
10084
  .treeview > table.tree tr.more-row {
10080
10085
  text-align: center;
10081
10086
  }
@@ -10195,6 +10200,7 @@ img.icon {
10195
10200
  }
10196
10201
  [dir="rtl"] .treeview .expander > img {
10197
10202
  float: right;
10203
+ transform: scaleX(-1);
10198
10204
  }
10199
10205
  .treeview label {
10200
10206
  font-weight: normal;
@@ -3,7 +3,7 @@
3
3
 
4
4
  /* eslint-disable no-redeclare */
5
5
  var Sao = {
6
- __version__: '8.0.0',
6
+ __version__: '8.0.3',
7
7
  };
8
8
  /* eslint-enable no-redeclare */
9
9
 
@@ -2761,7 +2761,7 @@ var Sao = {
2761
2761
  'contentType': 'application/json',
2762
2762
  'data': JSON.stringify(args),
2763
2763
  'dataType': 'json',
2764
- 'url': '/' + this.database + '/',
2764
+ 'url': (this.database || '.') + '/rpc/#' + args.method,
2765
2765
  'type': 'post',
2766
2766
  });
2767
2767
  },
@@ -2859,15 +2859,16 @@ var Sao = {
2859
2859
 
2860
2860
  Sao.Session.server_version = function() {
2861
2861
  var timeoutID = Sao.common.processing.show();
2862
- return jQuery.ajax({
2863
- 'contentType': 'application/json',
2864
- 'data': JSON.stringify({
2862
+ let args = {
2865
2863
  'id': 0,
2866
2864
  'method': 'common.server.version',
2867
2865
  'params': []
2868
- }),
2866
+ };
2867
+ return jQuery.ajax({
2868
+ 'contentType': 'application/json',
2869
+ 'data': JSON.stringify(args),
2869
2870
  'dataType': 'json',
2870
- 'url': 'rpc/',
2871
+ 'url': 'rpc/#' + args.method,
2871
2872
  'type': 'post',
2872
2873
  'complete': [function() {
2873
2874
  Sao.common.processing.hide(timeoutID);
@@ -3272,15 +3273,16 @@ var Sao = {
3272
3273
 
3273
3274
  Sao.DB.list = function() {
3274
3275
  var timeoutID = Sao.common.processing.show();
3275
- return jQuery.ajax({
3276
- 'contentType': 'application/json',
3277
- 'data': JSON.stringify({
3276
+ let args = {
3278
3277
  'id': 0,
3279
3278
  'method': 'common.db.list',
3280
3279
  'params': []
3281
- }),
3280
+ };
3281
+ return jQuery.ajax({
3282
+ 'contentType': 'application/json',
3283
+ 'data': JSON.stringify(args),
3282
3284
  'dataType': 'json',
3283
- 'url': 'rpc/',
3285
+ 'url': 'rpc/#' + args.method,
3284
3286
  'type': 'post',
3285
3287
  'complete': [function() {
3286
3288
  Sao.common.processing.hide(timeoutID);
@@ -3294,15 +3296,16 @@ var Sao = {
3294
3296
 
3295
3297
  Sao.Authentication.services = function() {
3296
3298
  var timeoutID = Sao.common.processing.show();
3297
- return jQuery.ajax({
3298
- 'contentType': 'application/json',
3299
- 'data': JSON.stringify({
3299
+ let args = {
3300
3300
  'id': 0,
3301
3301
  'method': 'common.authentication.services',
3302
3302
  'params': []
3303
- }),
3303
+ }
3304
+ return jQuery.ajax({
3305
+ 'contentType': 'application/json',
3306
+ 'data': JSON.stringify(args),
3304
3307
  'dataType': 'json',
3305
- 'url': 'rpc/',
3308
+ 'url': 'rpc/#' + args.method,
3306
3309
  'type': 'post',
3307
3310
  'complete': [function() {
3308
3311
  Sao.common.processing.hide(timeoutID);
@@ -17452,11 +17455,13 @@ function eval_pyson(value){
17452
17455
  this.el = jQuery('<div/>', {
17453
17456
  'class': this.class_
17454
17457
  });
17458
+ this.group = jQuery('<div/>', {
17459
+ 'class': 'input-group input-group-sm'
17460
+ }).css('width', '100%').appendTo(this.el);
17455
17461
  this.select = this.labelled = jQuery('<select/>', {
17456
17462
  'class': 'form-control input-sm mousetrap',
17457
17463
  'name': attributes.name,
17458
- });
17459
- this.el.append(this.select);
17464
+ }).appendTo(this.group);
17460
17465
  this.select.change(this.focus_out.bind(this));
17461
17466
  Sao.common.selection_mixin.init.call(this);
17462
17467
  this.init_selection();
@@ -17557,11 +17562,14 @@ function eval_pyson(value){
17557
17562
  this.el = jQuery('<div/>', {
17558
17563
  'class': this.class_
17559
17564
  });
17565
+ this.group = jQuery('<div/>', {
17566
+ 'class': 'input-group input-group-sm'
17567
+ }).css('width', '100%').appendTo(this.el);
17560
17568
  this.input = this.labelled = jQuery('<input/>', {
17561
17569
  'type': 'checkbox',
17562
17570
  'class': 'form-control input-sm mousetrap',
17563
17571
  'name': attributes.name,
17564
- }).appendTo(this.el);
17572
+ }).appendTo(this.group);
17565
17573
  this.input.change(this.focus_out.bind(this));
17566
17574
  this.input.click(function() {
17567
17575
  // Dont trigger click if field is readonly as readonly has no
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "tryton-sao",
3
3
  "title": "sao",
4
4
  "description": "Tryton webclient",
5
- "version": "8.0.1",
5
+ "version": "8.0.3",
6
6
  "homepage": "https://www.tryton.org/",
7
7
  "author": {
8
8
  "name": "Tryton"
package/src/sao.js CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  /* eslint-disable no-redeclare */
5
5
  var Sao = {
6
- __version__: '8.0.0',
6
+ __version__: '8.0.3',
7
7
  };
8
8
  /* eslint-enable no-redeclare */
9
9
 
package/src/sao.less CHANGED
@@ -631,14 +631,11 @@ html.accesskey {
631
631
  padding: 0 2px;
632
632
  position: absolute;
633
633
  text-transform: uppercase;
634
- margin: 0 -1em;
634
+ left: -1em;
635
+ right: 0;
635
636
  z-index: 5;
636
637
  }
637
638
 
638
- input[accesskey][type="checkbox"]:after {
639
- background-color: initial;
640
- }
641
-
642
639
  *[accesskey] ~ span[data-accesskey] {
643
640
  float: right;
644
641
  position: relative;
@@ -652,11 +649,15 @@ html.accesskey {
652
649
  content: attr(accesskey);
653
650
  }
654
651
 
655
- input[accesskey][type="checkbox"],
656
- input[accesskey][type="checkbox"],
657
- select[accesskey] {
658
- & ~ span[data-accesskey] {
659
- bottom: 1em;
652
+ &[dir="rtl"] {
653
+ *[accesskey] ~ span[data-accesskey]:after,
654
+ *[accesskey]:after {
655
+ left: 0;
656
+ right: -1em;
657
+ }
658
+
659
+ *[accesskey] ~ span[data-accesskey] {
660
+ float: left;
660
661
  }
661
662
  }
662
663
  }
@@ -1024,6 +1025,10 @@ img.icon {
1024
1025
  width: unit(@line-height-base, em);
1025
1026
  height: unit(@line-height-base, em);
1026
1027
  display: block;
1028
+
1029
+ [dir="rtl"] & {
1030
+ transform: scaleX(-1);
1031
+ }
1027
1032
  }
1028
1033
 
1029
1034
  tr.more-row {
@@ -1117,6 +1122,7 @@ img.icon {
1117
1122
  float: left;
1118
1123
  [dir="rtl"] & {
1119
1124
  float: right;
1125
+ transform: scaleX(-1);
1120
1126
  }
1121
1127
  width: unit(@line-height-base, em);
1122
1128
  height: unit(@line-height-base, em);
package/src/session.js CHANGED
@@ -83,7 +83,7 @@
83
83
  'contentType': 'application/json',
84
84
  'data': JSON.stringify(args),
85
85
  'dataType': 'json',
86
- 'url': '/' + this.database + '/',
86
+ 'url': (this.database || '.') + '/rpc/#' + args.method,
87
87
  'type': 'post',
88
88
  });
89
89
  },
@@ -181,15 +181,16 @@
181
181
 
182
182
  Sao.Session.server_version = function() {
183
183
  var timeoutID = Sao.common.processing.show();
184
- return jQuery.ajax({
185
- 'contentType': 'application/json',
186
- 'data': JSON.stringify({
184
+ let args = {
187
185
  'id': 0,
188
186
  'method': 'common.server.version',
189
187
  'params': []
190
- }),
188
+ };
189
+ return jQuery.ajax({
190
+ 'contentType': 'application/json',
191
+ 'data': JSON.stringify(args),
191
192
  'dataType': 'json',
192
- 'url': 'rpc/',
193
+ 'url': 'rpc/#' + args.method,
193
194
  'type': 'post',
194
195
  'complete': [function() {
195
196
  Sao.common.processing.hide(timeoutID);
@@ -594,15 +595,16 @@
594
595
 
595
596
  Sao.DB.list = function() {
596
597
  var timeoutID = Sao.common.processing.show();
597
- return jQuery.ajax({
598
- 'contentType': 'application/json',
599
- 'data': JSON.stringify({
598
+ let args = {
600
599
  'id': 0,
601
600
  'method': 'common.db.list',
602
601
  'params': []
603
- }),
602
+ };
603
+ return jQuery.ajax({
604
+ 'contentType': 'application/json',
605
+ 'data': JSON.stringify(args),
604
606
  'dataType': 'json',
605
- 'url': 'rpc/',
607
+ 'url': 'rpc/#' + args.method,
606
608
  'type': 'post',
607
609
  'complete': [function() {
608
610
  Sao.common.processing.hide(timeoutID);
@@ -616,15 +618,16 @@
616
618
 
617
619
  Sao.Authentication.services = function() {
618
620
  var timeoutID = Sao.common.processing.show();
619
- return jQuery.ajax({
620
- 'contentType': 'application/json',
621
- 'data': JSON.stringify({
621
+ let args = {
622
622
  'id': 0,
623
623
  'method': 'common.authentication.services',
624
624
  'params': []
625
- }),
625
+ }
626
+ return jQuery.ajax({
627
+ 'contentType': 'application/json',
628
+ 'data': JSON.stringify(args),
626
629
  'dataType': 'json',
627
- 'url': 'rpc/',
630
+ 'url': 'rpc/#' + args.method,
628
631
  'type': 'post',
629
632
  'complete': [function() {
630
633
  Sao.common.processing.hide(timeoutID);
package/src/view/form.js CHANGED
@@ -2256,11 +2256,13 @@ function eval_pyson(value){
2256
2256
  this.el = jQuery('<div/>', {
2257
2257
  'class': this.class_
2258
2258
  });
2259
+ this.group = jQuery('<div/>', {
2260
+ 'class': 'input-group input-group-sm'
2261
+ }).css('width', '100%').appendTo(this.el);
2259
2262
  this.select = this.labelled = jQuery('<select/>', {
2260
2263
  'class': 'form-control input-sm mousetrap',
2261
2264
  'name': attributes.name,
2262
- });
2263
- this.el.append(this.select);
2265
+ }).appendTo(this.group);
2264
2266
  this.select.change(this.focus_out.bind(this));
2265
2267
  Sao.common.selection_mixin.init.call(this);
2266
2268
  this.init_selection();
@@ -2361,11 +2363,14 @@ function eval_pyson(value){
2361
2363
  this.el = jQuery('<div/>', {
2362
2364
  'class': this.class_
2363
2365
  });
2366
+ this.group = jQuery('<div/>', {
2367
+ 'class': 'input-group input-group-sm'
2368
+ }).css('width', '100%').appendTo(this.el);
2364
2369
  this.input = this.labelled = jQuery('<input/>', {
2365
2370
  'type': 'checkbox',
2366
2371
  'class': 'form-control input-sm mousetrap',
2367
2372
  'name': attributes.name,
2368
- }).appendTo(this.el);
2373
+ }).appendTo(this.group);
2369
2374
  this.input.change(this.focus_out.bind(this));
2370
2375
  this.input.click(function() {
2371
2376
  // Dont trigger click if field is readonly as readonly has no