tryton-sao 7.2.9 → 7.4.0

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.
Files changed (70) hide show
  1. package/CHANGELOG +11 -43
  2. package/dist/tryton-sao.css +124 -119
  3. package/dist/tryton-sao.js +753 -508
  4. package/index.html +16 -14
  5. package/locale/bg.json +1 -1
  6. package/locale/bg.po +15 -9
  7. package/locale/ca.json +1 -1
  8. package/locale/ca.po +17 -11
  9. package/locale/cs.json +1 -1
  10. package/locale/cs.po +15 -9
  11. package/locale/de.json +1 -1
  12. package/locale/de.po +16 -10
  13. package/locale/es.json +1 -1
  14. package/locale/es.po +16 -10
  15. package/locale/es_419.json +1 -1
  16. package/locale/es_419.po +21 -11
  17. package/locale/et.json +1 -1
  18. package/locale/et.po +16 -10
  19. package/locale/fa.json +1 -1
  20. package/locale/fa.po +16 -10
  21. package/locale/fi.json +1 -1
  22. package/locale/fi.po +15 -9
  23. package/locale/fr.json +1 -1
  24. package/locale/fr.po +21 -15
  25. package/locale/hu.json +1 -1
  26. package/locale/hu.po +18 -11
  27. package/locale/id.json +1 -1
  28. package/locale/id.po +16 -9
  29. package/locale/it.json +1 -1
  30. package/locale/it.po +16 -10
  31. package/locale/lo.json +1 -1
  32. package/locale/lo.po +16 -10
  33. package/locale/lt.json +1 -1
  34. package/locale/lt.po +16 -10
  35. package/locale/messages.pot +15 -9
  36. package/locale/nl.json +1 -1
  37. package/locale/nl.po +21 -15
  38. package/locale/pl.json +1 -1
  39. package/locale/pl.po +22 -12
  40. package/locale/pt.json +1 -1
  41. package/locale/pt.po +16 -10
  42. package/locale/ro.json +1 -1
  43. package/locale/ro.po +26 -17
  44. package/locale/ru.json +1 -1
  45. package/locale/ru.po +15 -9
  46. package/locale/sl.json +1 -1
  47. package/locale/sl.po +28 -17
  48. package/locale/tr.json +1 -1
  49. package/locale/tr.po +15 -9
  50. package/locale/uk.json +1 -1
  51. package/locale/uk.po +21 -11
  52. package/locale/zh_CN.json +1 -1
  53. package/locale/zh_CN.po +21 -11
  54. package/package.json +4 -4
  55. package/src/action.js +1 -1
  56. package/src/common.js +39 -17
  57. package/src/input-icon.less +4 -0
  58. package/src/model.js +67 -94
  59. package/src/rpc.js +27 -0
  60. package/src/sao.js +57 -49
  61. package/src/sao.less +129 -29
  62. package/src/screen.js +56 -55
  63. package/src/session.js +2 -1
  64. package/src/tab.js +19 -8
  65. package/src/view/form.js +192 -66
  66. package/src/view/tree.js +164 -159
  67. package/src/window.js +122 -55
  68. package/src/wizard.js +6 -2
  69. package/tests/sao.js +50 -2
  70. package/src/offcanvas.less +0 -74
package/CHANGELOG CHANGED
@@ -1,48 +1,16 @@
1
1
 
2
- Version 7.2.9 - 2024-10-18
2
+ Version 7.4.0 - 2024-11-04
3
3
  --------------------------
4
4
  * Bug fixes (see mercurial logs for details)
5
-
6
-
7
- Version 7.2.8 - 2024-10-05
8
- --------------------------
9
- * Bug fixes (see mercurial logs for details)
10
-
11
-
12
- Version 7.2.7 - 2024-09-16
13
- --------------------------
14
- * Bug fixes (see mercurial logs for details)
15
-
16
-
17
- Version 7.2.6 - 2024-09-01
18
- --------------------------
19
- * Bug fixes (see mercurial logs for details)
20
-
21
-
22
- Version 7.2.5 - 2024-08-01
23
- --------------------------
24
- * Bug fixes (see mercurial logs for details)
25
-
26
-
27
- Version 7.2.4 - 2024-07-17
28
- --------------------------
29
- * Bug fixes (see mercurial logs for details)
30
-
31
-
32
- Version 7.2.3 - 2024-07-01
33
- --------------------------
34
- * Bug fixes (see mercurial logs for details)
35
-
36
-
37
- Version 7.2.2 - 2024-06-15
38
- --------------------------
39
- * Bug fixes (see mercurial logs for details)
40
-
41
-
42
- Version 7.2.1 - 2024-05-01
43
- --------------------------
44
- * Bug fixes (see mercurial logs for details)
45
-
5
+ * Add restore button on Many2Many
6
+ * Keep CSV export window opened
7
+ * Remove favorite management
8
+ * Retry JSON-RPC requests on Service Unavailable
9
+ * Allow resizing the attachment preview panel
10
+ * Set focus on search entry after search
11
+ * Support language suffix in CSV export
12
+ * Close tab with mouse middle click
13
+ * Support language suffix in CSV import
46
14
 
47
15
  Version 7.2.0 - 2024-04-29
48
16
  --------------------------
@@ -139,7 +107,7 @@ Version 5.8.0 - 2020-11-02
139
107
  * Set treeview footer sticky on bottom
140
108
  * Add get, in_ and contains methods to PYSON
141
109
  * Manage deletable and writable state
142
- * Support e-mail template
110
+ * Support email template
143
111
  * Always encode CSV export in UTF-8
144
112
  * Use tempusdominus and Popper for date time picker
145
113
  * Support PYSON comparison of date and datetime
@@ -8419,6 +8419,9 @@ html[dir="rtl"] {
8419
8419
  }
8420
8420
  /* This file is part of Tryton. The COPYRIGHT file at the top level of
8421
8421
  this repository contains the full copyright notices and license terms. */
8422
+ html {
8423
+ user-select: none;
8424
+ }
8422
8425
  html[theme="default"] {
8423
8426
  /* This file is part of Tryton. The COPYRIGHT file at the top level of
8424
8427
  this repository contains the full copyright notices and license terms. */
@@ -8441,7 +8444,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
8441
8444
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
8442
8445
  THE SOFTWARE.
8443
8446
  */
8444
- user-select: none;
8445
8447
  }
8446
8448
  html[theme="default"] .navbar {
8447
8449
  border: none;
@@ -9154,6 +9156,16 @@ html[theme="default"] .carousel-caption h5,
9154
9156
  html[theme="default"] .carousel-caption h6 {
9155
9157
  color: inherit;
9156
9158
  }
9159
+ .body {
9160
+ bottom: 0;
9161
+ left: 0;
9162
+ position: absolute;
9163
+ right: 0;
9164
+ top: 0;
9165
+ }
9166
+ .body > .navbar {
9167
+ margin-bottom: 0;
9168
+ }
9157
9169
  .stretched-link::after {
9158
9170
  position: absolute;
9159
9171
  top: 0;
@@ -9215,6 +9227,9 @@ html[theme="default"] .carousel-caption h6 {
9215
9227
  .modal-header .modal-title small {
9216
9228
  color: #eeeeee;
9217
9229
  }
9230
+ .alert {
9231
+ user-select: text;
9232
+ }
9218
9233
  #tablist {
9219
9234
  display: flex;
9220
9235
  overflow-x: auto;
@@ -9243,9 +9258,20 @@ html[theme="default"] .carousel-caption h6 {
9243
9258
  float: none;
9244
9259
  }
9245
9260
  }
9261
+ #main {
9262
+ bottom: 0;
9263
+ display: flex;
9264
+ flex-direction: row;
9265
+ gap: 0.5rem;
9266
+ left: 0;
9267
+ position: absolute;
9268
+ right: 0;
9269
+ top: 6rem;
9270
+ }
9246
9271
  #menu,
9247
9272
  #tabs {
9248
- margin-top: 5px;
9273
+ display: flex;
9274
+ overflow: auto;
9249
9275
  }
9250
9276
  #menu .navbar-brand .title,
9251
9277
  #tabs .navbar-brand .title {
@@ -9254,6 +9280,11 @@ html[theme="default"] .carousel-caption h6 {
9254
9280
  text-overflow: ellipsis;
9255
9281
  white-space: nowrap;
9256
9282
  }
9283
+ #tabs {
9284
+ flex: 1;
9285
+ overflow-x: hidden;
9286
+ padding: 0 5px;
9287
+ }
9257
9288
  @media screen and (max-width: 1199px) {
9258
9289
  #menu .navbar-brand .title,
9259
9290
  #tabs .navbar-brand .title {
@@ -9283,12 +9314,13 @@ html[theme="default"] .carousel-caption h6 {
9283
9314
  }
9284
9315
  }
9285
9316
  #menu {
9317
+ overflow-y: auto;
9318
+ padding: 0;
9286
9319
  background-color: #f8f8f8;
9287
9320
  border-color: #ddd;
9288
9321
  border-style: solid;
9289
9322
  border-radius: 0 4px 4px 0;
9290
9323
  border-width: 1px;
9291
- margin-top: 5px;
9292
9324
  }
9293
9325
  #menu .treeview {
9294
9326
  height: auto;
@@ -9296,6 +9328,19 @@ html[theme="default"] .carousel-caption h6 {
9296
9328
  #menu .treeview .cell {
9297
9329
  user-select: none;
9298
9330
  }
9331
+ @media (min-width: 992px) {
9332
+ #menu {
9333
+ resize: horizontal;
9334
+ width: 35rem;
9335
+ min-width: 20ch;
9336
+ max-width: 100vw;
9337
+ }
9338
+ }
9339
+ @media (max-width: 991px) {
9340
+ #menu {
9341
+ width: 100%;
9342
+ }
9343
+ }
9299
9344
  [dir="rtl"] #menu {
9300
9345
  border-right: none;
9301
9346
  }
@@ -9321,18 +9366,17 @@ html[theme="default"] .carousel-caption h6 {
9321
9366
  flex-direction: column;
9322
9367
  flex: 1;
9323
9368
  margin-bottom: 5px;
9369
+ padding-bottom: 0;
9324
9370
  }
9325
9371
  #tabcontent > .tab-pane > .panel > .panel-body {
9326
9372
  display: flex;
9327
9373
  flex: 1;
9328
9374
  flex-direction: row;
9329
- padding-top: 0;
9375
+ padding: 5px 0 0 0;
9330
9376
  min-height: 0;
9331
9377
  }
9332
9378
  #tabcontent > .tab-pane > .panel > .panel-body > div {
9333
9379
  display: inline-flex;
9334
- padding-left: 15px;
9335
- padding-right: 15px;
9336
9380
  }
9337
9381
  #tabcontent > .tab-pane > .panel > .panel-body > div:first-child {
9338
9382
  flex: 2;
@@ -9551,6 +9595,7 @@ html.accesskey select[accesskey] ~ span[data-accesskey] {
9551
9595
  .tab-form .tab-domain,
9552
9596
  .tab-board .tab-domain {
9553
9597
  overflow-x: auto;
9598
+ max-width: calc(100vw - 10px);
9554
9599
  flex: 0 0 content;
9555
9600
  }
9556
9601
  .tab-form .tab-domain > .nav-tabs,
@@ -9675,13 +9720,26 @@ img.icon {
9675
9720
  flex: 1;
9676
9721
  overflow: unset;
9677
9722
  }
9678
- .attachment-preview > div {
9723
+ .attachment-preview > div.preview-resizer {
9724
+ display: flex;
9725
+ flex-direction: column;
9726
+ height: 100%;
9727
+ max-width: 100vw;
9728
+ min-width: 100%;
9729
+ overflow: hidden;
9730
+ resize: inline;
9731
+ transform: scaleX(-1);
9732
+ }
9733
+ .attachment-preview > div.preview-resizer > div.preview-resizer-content {
9734
+ display: flex;
9735
+ flex-direction: column;
9679
9736
  flex: 1;
9737
+ transform: scaleX(-1);
9680
9738
  }
9681
9739
  .wizard-form {
9682
9740
  width: 100%;
9683
9741
  }
9684
- @media screen and (max-width: 991px) {
9742
+ @media screen and (max-width: 767px) {
9685
9743
  .attachment-preview:not(:empty) {
9686
9744
  flex: 2;
9687
9745
  }
@@ -9878,31 +9936,29 @@ img.icon {
9878
9936
  text-overflow: ellipsis;
9879
9937
  }
9880
9938
  .treeview .cell .prefix {
9881
- padding-right: 8px;
9939
+ padding-right: 4px;
9882
9940
  }
9883
9941
  [dir="rtl"] .treeview .cell .prefix {
9884
9942
  padding-right: 0;
9885
- padding-left: 8px;
9943
+ padding-left: 4px;
9886
9944
  }
9887
9945
  .treeview .cell .suffix {
9888
- padding-left: 8px;
9946
+ padding-left: 4px;
9889
9947
  }
9890
9948
  [dir="rtl"] .treeview .cell .suffix {
9891
9949
  padding-left: 0;
9892
- padding-right: 8px;
9950
+ padding-right: 4px;
9893
9951
  }
9894
9952
  .treeview .expander {
9895
9953
  cursor: pointer;
9896
9954
  }
9897
9955
  .treeview .expander > img {
9898
9956
  float: left;
9899
- margin-right: 1em;
9900
9957
  width: 1.42857143em;
9901
9958
  height: 1.42857143em;
9902
9959
  }
9903
9960
  [dir="rtl"] .treeview .expander > img {
9904
9961
  float: right;
9905
- margin-left: 1em;
9906
9962
  }
9907
9963
  .treeview label {
9908
9964
  font-weight: normal;
@@ -9928,13 +9984,23 @@ img.icon {
9928
9984
  display: grid;
9929
9985
  width: 100%;
9930
9986
  height: 100%;
9987
+ column-gap: 5px;
9988
+ row-gap: 5px;
9931
9989
  }
9932
9990
  .form .form-item {
9933
9991
  display: flex;
9934
- padding: 2px;
9935
9992
  }
9936
- .form .form-item.form-empty {
9937
- padding: 0px;
9993
+ .form .form-item > .btn {
9994
+ margin: 5px 0;
9995
+ }
9996
+ .form .form-notebook {
9997
+ border-color: #ddd;
9998
+ border-style: solid;
9999
+ border-width: 1px;
10000
+ }
10001
+ .form .form-notebook .nav-tabs {
10002
+ background: #f8f8f8;
10003
+ margin-bottom: 5px;
9938
10004
  }
9939
10005
  .form .form-label {
9940
10006
  white-space: pre-wrap;
@@ -10052,6 +10118,10 @@ img.icon {
10052
10118
  overflow: hidden;
10053
10119
  text-overflow: ellipsis;
10054
10120
  }
10121
+ .form .form-one2many-content,
10122
+ .form .form-many2many-content {
10123
+ padding: 5px;
10124
+ }
10055
10125
  .form .form-one2many-content .treeview,
10056
10126
  .form .form-many2many-content .treeview,
10057
10127
  .form .form-one2many-content .list-form,
@@ -10084,6 +10154,9 @@ img.icon {
10084
10154
  margin-top: 0;
10085
10155
  margin-bottom: 5px;
10086
10156
  }
10157
+ .form .form-image {
10158
+ margin: 2px;
10159
+ }
10087
10160
  .form .form-image .caption {
10088
10161
  min-width: 120px;
10089
10162
  }
@@ -10091,16 +10164,12 @@ img.icon {
10091
10164
  object-fit: scale-down;
10092
10165
  object-position: center top;
10093
10166
  width: 100%;
10094
- height: 75vh;
10095
- }
10096
- @media screen and (max-width: 991px) {
10097
- .form .form-document object {
10098
- height: 50vh;
10099
- }
10167
+ min-height: 50vh;
10168
+ height: 100%;
10100
10169
  }
10101
10170
  @media screen and (max-width: 767px) {
10102
10171
  .form .form-document object {
10103
- height: 25vh;
10172
+ min-height: 25vh;
10104
10173
  }
10105
10174
  }
10106
10175
  .form label {
@@ -10174,6 +10243,14 @@ img.icon {
10174
10243
  text-align: right;
10175
10244
  text-align: end;
10176
10245
  }
10246
+ .form-multiselection select option:before,
10247
+ .dict-multiselection select option:before {
10248
+ content: "☐ ";
10249
+ }
10250
+ .form-multiselection select option:checked:before,
10251
+ .dict-multiselection select option:checked:before {
10252
+ content: "☑ ";
10253
+ }
10177
10254
  .form-integer input,
10178
10255
  .form-float input,
10179
10256
  .form-timedelta input,
@@ -10298,6 +10375,16 @@ input.column-boolean {
10298
10375
  text-align: right;
10299
10376
  text-align: end;
10300
10377
  }
10378
+ .form-dict-container {
10379
+ display: grid;
10380
+ grid-template-columns: fit-content(50%) 1fr;
10381
+ }
10382
+ .dict-row {
10383
+ display: grid;
10384
+ grid-template-columns: subgrid;
10385
+ grid-column: 1 / span 2;
10386
+ padding: 2px;
10387
+ }
10301
10388
  .calendar {
10302
10389
  width: 100%;
10303
10390
  height: 100%;
@@ -10349,13 +10436,20 @@ input.column-boolean {
10349
10436
  .form .form-vcontainer {
10350
10437
  display: block;
10351
10438
  }
10352
- .xalign-center,
10353
- .xalign-end {
10439
+ .form .form-container .form-item,
10440
+ .form .form-hcontainer .form-item,
10441
+ .form .form-vcontainer .form-item {
10442
+ padding: 2px 0;
10443
+ }
10444
+ .form .xalign-end {
10354
10445
  justify-self: start;
10355
10446
  justify-content: start;
10356
10447
  }
10357
10448
  }
10358
10449
  @media screen and (max-width: 767px) {
10450
+ .responsive.scrollbar {
10451
+ display: none;
10452
+ }
10359
10453
  .responsive.scrollbar > div {
10360
10454
  min-width: unset !important;
10361
10455
  }
@@ -10488,7 +10582,7 @@ input.column-boolean {
10488
10582
  overflow: auto;
10489
10583
  }
10490
10584
  .scrollbar > div {
10491
- height: 1rem;
10585
+ height: 5px;
10492
10586
  }
10493
10587
  .btn-code-scanner {
10494
10588
  bottom: 0;
@@ -10536,6 +10630,9 @@ img.favorite-icon {
10536
10630
  line-height: 34px;
10537
10631
  text-align: center;
10538
10632
  }
10633
+ .input-icon .icon-input > .btn {
10634
+ padding: 0;
10635
+ }
10539
10636
  [dir="ltr"] .input-icon .icon-primary {
10540
10637
  left: 0px;
10541
10638
  }
@@ -10604,95 +10701,3 @@ img.favorite-icon {
10604
10701
  [dir="rtl"] .input-group-sm.input-icon-secondary > .form-control {
10605
10702
  padding-left: 33px;
10606
10703
  }
10607
- /* This file is part of Tryton. The COPYRIGHT file at the top level of
10608
- this repository contains the full copyright notices and license terms. */
10609
- body {
10610
- overflow-x: hidden;
10611
- }
10612
- .row-offcanvas {
10613
- position: relative;
10614
- -webkit-transition: all 0.25s ease-out;
10615
- -o-transition: all 0.25s ease-out;
10616
- transition: all 0.25s ease-out;
10617
- }
10618
- .row-offcanvas-right {
10619
- right: 0;
10620
- }
10621
- .row-offcanvas-left {
10622
- left: 0;
10623
- }
10624
- .row-offcanvas:not(.active) .main-offcanvas {
10625
- width: 100%;
10626
- }
10627
- .sidebar-offcanvas {
10628
- position: absolute !important;
10629
- top: 0;
10630
- }
10631
- @media (min-width: 1200px) {
10632
- .row-offcanvas-right .sidebar-offcanvas {
10633
- right: -25%;
10634
- }
10635
- .row-offcanvas-left .sidebar-offcanvas {
10636
- left: -25%;
10637
- }
10638
- .row-offcanvas-right.active {
10639
- right: 25%;
10640
- }
10641
- .row-offcanvas-left.active {
10642
- left: 25%;
10643
- }
10644
- .sidebar-offcanvas {
10645
- width: 25%;
10646
- }
10647
- }
10648
- @media (max-width: 1199px) {
10649
- .row-offcanvas-right .sidebar-offcanvas {
10650
- right: -33.3333%;
10651
- }
10652
- .row-offcanvas-left .sidebar-offcanvas {
10653
- left: -33.3333%;
10654
- }
10655
- .row-offcanvas-right.active {
10656
- right: 33.3333%;
10657
- }
10658
- .row-offcanvas-left.active {
10659
- left: 33.3333%;
10660
- }
10661
- .sidebar-offcanvas {
10662
- width: 33.3333%;
10663
- }
10664
- }
10665
- @media (max-width: 991px) {
10666
- .row-offcanvas-right .sidebar-offcanvas {
10667
- right: -50%;
10668
- }
10669
- .row-offcanvas-left .sidebar-offcanvas {
10670
- left: -50%;
10671
- }
10672
- .row-offcanvas-right.active {
10673
- right: 50%;
10674
- }
10675
- .row-offcanvas-left.active {
10676
- left: 50%;
10677
- }
10678
- .sidebar-offcanvas {
10679
- width: 50%;
10680
- }
10681
- }
10682
- @media (max-width: 767px) {
10683
- .row-offcanvas-right .sidebar-offcanvas {
10684
- right: -100%;
10685
- }
10686
- .row-offcanvas-left .sidebar-offcanvas {
10687
- left: -100%;
10688
- }
10689
- .row-offcanvas-right.active {
10690
- right: 100%;
10691
- }
10692
- .row-offcanvas-left.active {
10693
- left: 100%;
10694
- }
10695
- .sidebar-offcanvas {
10696
- width: 100%;
10697
- }
10698
- }