@qooxdoo/framework 7.5.0 → 7.6.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 (120) hide show
  1. package/Manifest.json +169 -44
  2. package/bin/deploy/qx +7 -5
  3. package/lib/compiler/compile-info.json +70 -62
  4. package/lib/compiler/index.js +3809 -2695
  5. package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
  6. package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
  7. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
  8. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
  9. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
  10. package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
  11. package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
  12. package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
  13. package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
  14. package/lib/resource/qx/tool/schema/Manifest-1-0-0.json +79 -26
  15. package/lib/resource/qx/tool/schema/Manifest-2-0-0.json +17 -26
  16. package/lib/resource/qx/tool/schema/compile-1-0-0.json +40 -53
  17. package/lib/resource/qx/tool/website/src/about.md +1 -1
  18. package/package.json +3 -3
  19. package/source/class/qx/bom/Font.js +36 -0
  20. package/source/class/qx/bom/webfonts/Validator.js +31 -6
  21. package/source/class/qx/bom/webfonts/WebFont.js +60 -64
  22. package/source/class/qx/bom/webfonts/WebFontLoader.js +461 -0
  23. package/source/class/qx/core/Object.js +1 -1
  24. package/source/class/qx/data/Array.js +27 -0
  25. package/source/class/qx/dev/FakeServer.js +1 -1
  26. package/source/class/qx/event/handler/Focus.js +2 -1
  27. package/source/class/qx/event/handler/GestureCore.js +1 -1
  28. package/source/class/qx/test/bom/webfonts/Validator.js +0 -6
  29. package/source/class/qx/test/core/Environment.js +8 -8
  30. package/source/class/qx/test/core/Validation.js +2 -2
  31. package/source/class/qx/test/dev/unit/Requirements.js +6 -6
  32. package/source/class/qx/test/io/transport/Websocket.js +1 -1
  33. package/source/class/qx/test/ui/basic/Image.js +3 -3
  34. package/source/class/qx/test/ui/basic/Label.js +0 -65
  35. package/source/class/qx/test/ui/form/Field.js +56 -52
  36. package/source/class/qx/theme/IndigoDark.js +1 -1
  37. package/source/class/qx/theme/classic/Font.js +7 -23
  38. package/source/class/qx/theme/iconfont/LoadMaterialIcons.js +2 -4
  39. package/source/class/qx/theme/iconfont/LoadMaterialIconsOutlined.js +2 -4
  40. package/source/class/qx/theme/iconfont/LoadMaterialIconsRound.js +2 -4
  41. package/source/class/qx/theme/iconfont/LoadMaterialIconsSharp.js +2 -4
  42. package/source/class/qx/theme/iconfont/LoadMaterialIconsTwoTone.js +2 -4
  43. package/source/class/qx/theme/indigo/DecorationDark.js +30 -0
  44. package/source/class/qx/theme/indigo/Font.js +8 -15
  45. package/source/class/qx/theme/manager/Font.js +151 -38
  46. package/source/class/qx/theme/modern/Font.js +1 -0
  47. package/source/class/qx/theme/simple/Font.js +3 -1
  48. package/source/class/qx/theme/tangible/Appearance.js +1 -0
  49. package/source/class/qx/theme/tangible/Font.js +9 -62
  50. package/source/class/qx/theme/tangible/Image.js +1 -4
  51. package/source/class/qx/tool/cli/Application.js +4 -1
  52. package/source/class/qx/tool/cli/Cli.js +34 -23
  53. package/source/class/qx/tool/cli/Watch.js +8 -6
  54. package/source/class/qx/tool/cli/api/CompilerApi.js +8 -0
  55. package/source/class/qx/tool/cli/commands/Add.js +1 -1
  56. package/source/class/qx/tool/cli/commands/Compile.js +24 -1
  57. package/source/class/qx/tool/cli/commands/Config.js +16 -141
  58. package/source/class/qx/tool/cli/commands/ExportGlyphs.js +134 -0
  59. package/source/class/qx/tool/cli/commands/Lint.js +1 -1
  60. package/source/class/qx/tool/cli/commands/Package.js +3 -0
  61. package/source/class/qx/tool/cli/commands/Pkg.js +1 -1
  62. package/source/class/qx/tool/cli/commands/Run.js +6 -7
  63. package/source/class/qx/tool/cli/commands/Serve.js +29 -36
  64. package/source/class/qx/tool/cli/commands/Test.js +3 -2
  65. package/source/class/qx/tool/cli/commands/add/Script.js +3 -1
  66. package/source/class/qx/tool/cli/commands/config/Delete.js +47 -0
  67. package/source/class/qx/tool/cli/commands/config/Get.js +52 -0
  68. package/source/class/qx/tool/cli/commands/config/List.js +81 -0
  69. package/source/class/qx/tool/cli/commands/config/Set.js +61 -0
  70. package/source/class/qx/tool/cli/commands/package/Install.js +3 -0
  71. package/source/class/qx/tool/cli/commands/package/Update.js +3 -3
  72. package/source/class/qx/tool/compiler/Analyser.js +45 -0
  73. package/source/class/qx/tool/compiler/ClassFile.js +43 -1
  74. package/source/class/qx/tool/compiler/Console.js +6 -1
  75. package/source/class/qx/tool/compiler/app/Application.js +19 -0
  76. package/source/class/qx/tool/compiler/app/Cldr.js +63 -26
  77. package/source/class/qx/tool/compiler/app/Library.js +51 -2
  78. package/source/class/qx/tool/compiler/app/ManifestFont.js +181 -0
  79. package/source/class/qx/tool/compiler/app/WebFont.js +144 -234
  80. package/source/class/qx/tool/compiler/makers/AppMaker.js +13 -0
  81. package/source/class/qx/tool/compiler/resources/ImageLoader.js +22 -12
  82. package/source/class/qx/tool/compiler/resources/Manager.js +2 -2
  83. package/source/class/qx/tool/compiler/resources/MetaLoader.js +7 -2
  84. package/source/class/qx/tool/compiler/resources/ResourceLoader.js +21 -0
  85. package/source/class/qx/tool/compiler/targets/Target.js +186 -67
  86. package/source/class/qx/tool/migration/M7_5_6.js +75 -0
  87. package/source/class/qx/tool/utils/Http.js +69 -0
  88. package/source/class/qx/ui/basic/Image.js +6 -2
  89. package/source/class/qx/ui/basic/Label.js +20 -38
  90. package/source/class/qx/ui/core/Widget.js +13 -42
  91. package/source/class/qx/ui/form/AbstractField.js +8 -2
  92. package/source/class/qx/ui/form/FileSelectorButton.js +5 -0
  93. package/source/class/qx/ui/table/pane/FocusIndicator.js +5 -4
  94. package/source/class/qx/ui/table/pane/Pane.js +14 -0
  95. package/source/class/qx/ui/table/pane/Scroller.js +3 -3
  96. package/source/class/qx/ui/virtual/core/Scroller.js +8 -2
  97. package/source/class/qx/ui/window/Window.js +9 -8
  98. package/source/resource/qx/iconfont/MaterialIcons/materialicons.json +10912 -0
  99. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined.json +10967 -0
  100. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround.json +10992 -0
  101. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp.json +10992 -0
  102. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone.json +9947 -0
  103. package/source/resource/qx/iconfont/MaterialIcons/x.json +10967 -0
  104. package/source/resource/qx/iconfont/export-glyphs.sh +22 -0
  105. package/source/resource/qx/mobile/scss/common/_gradients.scss +1 -1
  106. package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
  107. package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
  108. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
  109. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
  110. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
  111. package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
  112. package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
  113. package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
  114. package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
  115. package/source/resource/qx/tool/schema/Manifest-1-0-0.json +79 -26
  116. package/source/resource/qx/tool/schema/Manifest-2-0-0.json +17 -26
  117. package/source/resource/qx/tool/schema/compile-1-0-0.json +40 -53
  118. package/source/resource/qx/tool/website/src/about.md +1 -1
  119. package/source/class/qx/bom/webfonts/Manager.js +0 -652
  120. package/source/class/qx/test/bom/webfonts/Manager.js +0 -238
@@ -2122,24 +2122,17 @@ qx.Class.define("qx.ui.core.Widget", {
2122
2122
  // property apply
2123
2123
  _applyTextColor(value, old) {
2124
2124
  // empty template
2125
- },
2126
-
2127
- // property apply
2125
+ }, // property apply
2128
2126
  _applyZIndex(value, old) {
2129
2127
  this.getContentElement().setStyle("zIndex", value == null ? 0 : value);
2130
- },
2131
-
2132
- // property apply
2128
+ }, // property apply
2133
2129
  _applyVisibility(value, old) {
2134
2130
  var content = this.getContentElement();
2135
-
2136
2131
  if (value === "visible") {
2137
2132
  content.show();
2138
2133
  } else {
2139
2134
  content.hide();
2140
- }
2141
-
2142
- // only force a layout update if visibility change from/to "exclude"
2135
+ } // only force a layout update if visibility change from/to "exclude"
2143
2136
  var parent = this.$$parent;
2144
2137
  if (
2145
2138
  parent &&
@@ -2187,31 +2180,19 @@ qx.Class.define("qx.ui.core.Widget", {
2187
2180
  // property apply
2188
2181
  _applyFont(value, old) {
2189
2182
  // empty template
2190
- },
2191
-
2192
- /*
2193
- ---------------------------------------------------------------------------
2194
- DYNAMIC THEME SWITCH SUPPORT
2195
- ---------------------------------------------------------------------------
2196
- */
2197
-
2183
+ }, // ---------------------------------------------------------------------------
2184
+ // DYNAMIC THEME SWITCH SUPPORT
2185
+ // ---------------------------------------------------------------------------
2198
2186
  // overridden
2199
2187
  _onChangeTheme() {
2200
2188
  if (this.isDisposed()) {
2201
2189
  return;
2202
2190
  }
2203
-
2204
- super._onChangeTheme();
2205
-
2206
- // update the appearance
2207
- this.updateAppearance();
2208
-
2209
- // DECORATOR //
2191
+ super._onChangeTheme(); // update the appearance
2192
+ this.updateAppearance(); // DECORATOR //
2210
2193
  var value = this.getDecorator();
2211
2194
  this._applyDecorator(null, value);
2212
- this._applyDecorator(value);
2213
-
2214
- // FONT //
2195
+ this._applyDecorator(value); // FONT //
2215
2196
  value = this.getFont();
2216
2197
  if (qx.lang.Type.isString(value)) {
2217
2198
  this._applyFont(value, value);
@@ -2561,30 +2542,24 @@ qx.Class.define("qx.ui.core.Widget", {
2561
2542
  syncWidget(jobs) {
2562
2543
  // empty implementation
2563
2544
  },
2564
-
2565
2545
  /*
2566
2546
  ---------------------------------------------------------------------------
2567
- EVENT SUPPORT
2547
+ EVENT SUPPORT
2568
2548
  ---------------------------------------------------------------------------
2569
- */
2570
-
2571
- /**
2549
+ */ /**
2572
2550
  * Returns the next event target in the parent chain. May
2573
2551
  * also return the widget itself if it is not anonymous.
2574
2552
  *
2575
2553
  * @return {qx.ui.core.Widget} A working event target of this widget.
2576
2554
  * May be <code>null</code> as well.
2577
- */
2578
- getEventTarget() {
2555
+ */ getEventTarget() {
2579
2556
  var target = this;
2580
-
2581
2557
  while (target.getAnonymous()) {
2582
2558
  target = target.getLayoutParent();
2583
2559
  if (!target) {
2584
2560
  return null;
2585
2561
  }
2586
2562
  }
2587
-
2588
2563
  return target;
2589
2564
  },
2590
2565
 
@@ -2751,17 +2726,13 @@ qx.Class.define("qx.ui.core.Widget", {
2751
2726
  // property apply
2752
2727
  _applyNativeContextMenu(value, old, name) {
2753
2728
  // empty body to allow overriding
2754
- },
2755
-
2756
- // property apply
2729
+ }, // property apply
2757
2730
  _applyContextMenu(value, old) {
2758
2731
  if (old) {
2759
2732
  old.removeState("contextmenu");
2760
-
2761
2733
  if (old.getOpener() == this) {
2762
2734
  old.resetOpener();
2763
2735
  }
2764
-
2765
2736
  if (!value) {
2766
2737
  this.removeListener("contextmenu", this._onContextMenuOpen);
2767
2738
  this.removeListener("longtap", this._onContextMenuOpen);
@@ -462,8 +462,14 @@ qx.Class.define("qx.ui.form.AbstractField", {
462
462
  // Apply
463
463
  var styles;
464
464
  if (value) {
465
- this.__font = qx.theme.manager.Font.getInstance().resolve(value);
466
- if (this.__font instanceof qx.bom.webfonts.WebFont) {
465
+ if (qx.lang.Type.isString(value)) {
466
+ value = qx.theme.manager.Font.getInstance().resolve(value);
467
+ }
468
+ this.__font = value;
469
+ if (
470
+ this.__font instanceof qx.bom.webfonts.WebFont &&
471
+ !this.__font.isValid()
472
+ ) {
467
473
  this.__webfontListenerId = this.__font.addListener(
468
474
  "changeStatus",
469
475
  this._onWebFontStatusChange,
@@ -139,6 +139,11 @@ qx.Class.define("qx.ui.form.FileSelectorButton", {
139
139
  this.__inputObject.setAttribute(attr, value);
140
140
  },
141
141
 
142
+ setEnabled(value){
143
+ this.__inputObject.setEnabled(value);
144
+ super.setEnabled(value);
145
+ },
146
+
142
147
  _createContentElement() {
143
148
  let id = "qxFileSelector_" + (++qx.ui.form.FileSelectorButton._fileInputElementIdCounter);
144
149
  let input = (this.__inputObject = new qx.html.Input(
@@ -124,8 +124,9 @@ qx.Class.define("qx.ui.table.pane.FocusIndicator", {
124
124
  wl = deco.getWidthLeft();
125
125
  }
126
126
  }
127
- var userHeight = rowHeight + (wl + wr - 2);
128
- var userTop = (row - firstRow) * rowHeight - (wr - 1);
127
+ var userHeight = rowHeight + (wt + wb - 2);
128
+ var renderedRowHeight = this.__scroller.getTablePane().getRenderedRowHeight();
129
+ var userTop = Math.floor((row - firstRow) * renderedRowHeight) - (wt - 1);
129
130
  if (
130
131
  editing &&
131
132
  this.__scroller.getMinCellEditHeight() &&
@@ -139,9 +140,9 @@ qx.Class.define("qx.ui.table.pane.FocusIndicator", {
139
140
  }
140
141
 
141
142
  this.setUserBounds(
142
- paneModel.getColumnLeft(col) - (wt - 1),
143
+ paneModel.getColumnLeft(col) - (wl - 1),
143
144
  userTop,
144
- columnModel.getColumnWidth(col) + (wt + wb - 3),
145
+ columnModel.getColumnWidth(col) + (wl + wr - 3),
145
146
  userHeight
146
147
  );
147
148
 
@@ -710,6 +710,20 @@ qx.Class.define("qx.ui.table.pane.Pane", {
710
710
  this.__lastColCount = colCount;
711
711
  this.__lastRowCount = rowCount;
712
712
  this.fireEvent("paneUpdated");
713
+ },
714
+
715
+ getRenderedRowHeight() {
716
+ var rowHeight = this.getTable().getRowHeight();
717
+
718
+ var elem = this.getContentElement().getDomElement();
719
+ if (elem && elem.firstChild) {
720
+ // pane has been rendered
721
+ var tableBody = elem.firstChild;
722
+ if (tableBody.childNodes && tableBody.childNodes.length > 0) {
723
+ rowHeight = tableBody.childNodes[0].getBoundingClientRect().height;
724
+ }
725
+ }
726
+ return rowHeight;
713
727
  }
714
728
  },
715
729
 
@@ -833,7 +833,7 @@ qx.Class.define("qx.ui.table.pane.Scroller", {
833
833
  }
834
834
  var scrollbar = this.__verScrollBar;
835
835
  this.__inOnScrollY = true;
836
- // calculate delta so that one row is scrolled at an minimum
836
+ // calculate delta so that one row is scrolled at a minimum
837
837
  var rowHeight = this.getTable().getRowHeight();
838
838
  var delta = e.getData() - e.getOldData();
839
839
  if (Math.abs(delta) > 1 && Math.abs(delta) < rowHeight) {
@@ -2037,12 +2037,12 @@ qx.Class.define("qx.ui.table.pane.Scroller", {
2037
2037
 
2038
2038
  if (pageY >= panePos.top && pageY <= panePos.bottom) {
2039
2039
  // This event is in the pane -> Get the row
2040
- var rowHeight = this.getTable().getRowHeight();
2040
+ var rowHeight = this.__tablePane.getRenderedRowHeight()
2041
2041
 
2042
2042
  var scrollY = this.__verScrollBar.getPosition();
2043
2043
 
2044
2044
  if (this.getTable().getKeepFirstVisibleRowComplete()) {
2045
- scrollY = Math.floor(scrollY / rowHeight) * rowHeight;
2045
+ scrollY = Math.floor(scrollY / this.getTable().getRowHeight()) * rowHeight;
2046
2046
  }
2047
2047
 
2048
2048
  var tableY = scrollY + pageY - panePos.top;
@@ -145,12 +145,18 @@ qx.Class.define("qx.ui.virtual.core.Scroller", {
145
145
 
146
146
  // overridden
147
147
  _onScrollBarX(e) {
148
- this.__pane.setScrollX(e.getData());
148
+ // Use Math.round to convert possible decimal values to
149
+ // integer values if a zoom level not equal to 100 is
150
+ // set in the browser
151
+ this.__pane.setScrollX(Math.round(e.getData()));
149
152
  },
150
153
 
151
154
  // overridden
152
155
  _onScrollBarY(e) {
153
- this.__pane.setScrollY(e.getData());
156
+ // Use Math.round to convert possible decimal values to
157
+ // integer values if a zoom level not equal to 100 is
158
+ // set in the browser
159
+ this.__pane.setScrollY(Math.round(e.getData()));
154
160
  }
155
161
  },
156
162
 
@@ -639,16 +639,17 @@ qx.Class.define("qx.ui.window.Window", {
639
639
  return;
640
640
  }
641
641
 
642
- if (
643
- this.fireNonBubblingEvent("beforeClose", qx.event.type.Event, [
644
- false,
645
- true
646
- ])
647
- ) {
648
- this.hide();
649
- this.fireEvent("close");
642
+ if (! this.fireNonBubblingEvent(
643
+ "beforeClose",
644
+ qx.event.type.Event,
645
+ [ false, true ])) {
646
+ // preventDefault() was called
647
+ return;
650
648
  }
651
649
 
650
+ this.hide();
651
+ this.fireEvent("close");
652
+
652
653
  // If automatically destroying the window upon close was requested, do
653
654
  // so now. (Note that we explicitly re-obtain the autoDestroy property
654
655
  // value, allowing the user's close handler to enable/disable it before