@qooxdoo/framework 7.6.2 → 7.6.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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- require("../../../../../index");
2
+ require("../../../../../lib/compiler/index.js");
3
3
 
4
4
  const website = new qx.tool.utils.Website();
5
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qooxdoo/framework",
3
- "version": "7.6.2",
3
+ "version": "7.6.3",
4
4
  "description": "The JS Framework for Coders",
5
5
  "author": "The qooxdoo project",
6
6
  "keywords": [
@@ -54,44 +54,44 @@
54
54
  "bin/deploy"
55
55
  ],
56
56
  "dependencies": {
57
- "@babel/core": "^7.17.10",
58
- "@babel/eslint-parser": "^7.16.3",
59
- "@babel/generator": "^7.12.11",
60
- "@babel/parser": "^7.12.11",
61
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
62
- "@babel/plugin-proposal-optional-chaining": "^7.12.7",
63
- "@babel/plugin-syntax-jsx": "^7.16.7",
64
- "@babel/plugin-transform-block-scoping": "^7.12.12",
65
- "@babel/plugin-transform-react-jsx": "^7.12.12",
66
- "@babel/preset-env": "^7.17.10",
67
- "@babel/preset-react": "^7.12.10",
68
- "@babel/preset-typescript": "^7.12.7",
69
- "@babel/traverse": "^7.12.12",
70
- "@babel/types": "^7.12.12",
71
- "@metalsmith/layouts": "^2.5.1",
72
- "@metalsmith/markdown": "^1.5.0",
57
+ "@babel/core": "^7.23.2",
58
+ "@babel/eslint-parser": "^7.22.15",
59
+ "@babel/generator": "^7.23.0",
60
+ "@babel/parser": "^7.23.0",
61
+ "@babel/plugin-proposal-optional-chaining-assign": "^7.23.0",
62
+ "@babel/plugin-syntax-jsx": "^7.22.5",
63
+ "@babel/plugin-transform-block-scoping": "^7.23.0",
64
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
65
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
66
+ "@babel/preset-env": "^7.23.2",
67
+ "@babel/preset-react": "^7.22.15",
68
+ "@babel/preset-typescript": "^7.23.2",
69
+ "@babel/traverse": "^7.23.2",
70
+ "@babel/types": "^7.23.0",
71
+ "@metalsmith/layouts": "^2.7.0",
72
+ "@metalsmith/markdown": "^1.10.0",
73
73
  "@octokit/rest": "^18.0.15",
74
74
  "@qooxdoo/eslint-config-jsdoc-disable": "^1.0.3",
75
75
  "@qooxdoo/eslint-config-qx": "^2.0.1",
76
- "@qooxdoo/eslint-plugin-qx": "^1.2.21",
77
- "ajv": "^8.8.1",
76
+ "@qooxdoo/eslint-plugin-qx": "^1.2.22",
77
+ "ajv": "^8.12.0",
78
78
  "app-module-path": "^2.2.0",
79
79
  "async": "^2.6.3",
80
80
  "babelify": "^10.0.0",
81
- "better-ajv-errors": "^1.1.1",
81
+ "better-ajv-errors": "^1.2.0",
82
82
  "browserify": "^17.0.0",
83
- "chokidar": "^3.5.1",
84
- "cldr": "^7.1.1",
85
- "columnify": "^1.5.4",
83
+ "chokidar": "^3.5.3",
84
+ "cldr": "^7.4.1",
85
+ "columnify": "^1.6.0",
86
86
  "console-control-strings": "^1.1.0",
87
- "core-js-bundle": "^3.26.0",
87
+ "core-js-bundle": "^3.33.1",
88
88
  "dot": "^1.1.3",
89
89
  "download": "^6.0.0",
90
90
  "es6-promise-pool": "^2.5.0",
91
- "eslint": "^8.0.0",
91
+ "eslint": "^8.51.0",
92
92
  "eslint-formatter-codeframe": "^7.32.1",
93
- "eslint-plugin-jsdoc": "37.0.3",
94
- "express": "^4.17.1",
93
+ "eslint-plugin-jsdoc": "46.8.2",
94
+ "express": "^4.18.2",
95
95
  "fontkit": "^2.0.2",
96
96
  "gauge": "^2.7.4",
97
97
  "get-value": "^3.0.1",
@@ -99,33 +99,33 @@
99
99
  "glob": "^7.1.6",
100
100
  "image-size": "^0.8.3",
101
101
  "inquirer": "^7.3.3",
102
- "json-stable-stringify": "^1.0.1",
102
+ "json-stable-stringify": "^1.0.2",
103
103
  "jstransformer-dot": "^0.1.2",
104
- "metalsmith": "^2.4.3",
104
+ "metalsmith": "^2.6.1",
105
105
  "node-fetch": "^2.6.7",
106
106
  "object-hash": "^2.1.1",
107
107
  "prettier": "^2.5.1",
108
108
  "ps-tree": "^1.2.0",
109
109
  "replace-in-file": "^5.0.0",
110
110
  "rimraf": "^3.0.2",
111
- "sass": "1.64.2",
112
- "semver": "^7.3.4",
111
+ "sass": "1.69.4",
112
+ "semver": "^7.5.4",
113
113
  "set-value": "^4.1.0",
114
114
  "showdown": "^1.9.1",
115
115
  "source-map-js": "^1.0.2",
116
116
  "tap-colorize": "^1.2.0",
117
- "terser": "^5.14.1",
117
+ "terser": "^5.22.0",
118
118
  "tmp": "0.2.1",
119
119
  "unset-value": "^1.0.0",
120
120
  "upath": "^1.2.0",
121
121
  "update-notifier": "^6.0.2",
122
- "xml2js": "^0.5.0",
122
+ "xml2js": "^0.6.2",
123
123
  "yargs": "^15.4.1"
124
124
  },
125
125
  "devDependencies": {
126
126
  "dirsum": "^0.1.1",
127
- "source-map-support": "^0.5.19",
128
- "tape": "^5.1.1"
127
+ "source-map-support": "^0.5.21",
128
+ "tape": "^5.7.1"
129
129
  },
130
130
  "engine": "node >= 12"
131
131
  }
@@ -260,13 +260,14 @@ qx.Class.define("qx.ui.basic.Image", {
260
260
  var element = this.getContentElement();
261
261
  if (this.__wrapper) {
262
262
  element.getChild(0).setStyles({
263
- top: this.getPaddingTop() || 0,
264
- left: this.getPaddingLeft() || 0
263
+ top: (this.getPaddingTop() || 0) + "px",
264
+ left: (this.getPaddingLeft() || 0) + "px"
265
265
  });
266
266
  } else if (this.__getMode() === "font") {
267
+ let bounds = this.getBounds() || {};
267
268
  element.setStyles({
268
- top: this.getPaddingTop() || 0,
269
- left: this.getPaddingLeft() || 0
269
+ top: (bounds.top || 0) + (this.getPaddingTop() || 0) + "px",
270
+ left: (bounds.left || 0) + (this.getPaddingLeft() || 0) + "px"
270
271
  });
271
272
  } else {
272
273
  element.setPadding(
@@ -24,6 +24,16 @@
24
24
  * attach the listener yourself.
25
25
  */
26
26
  qx.Mixin.define("qx.ui.core.scroll.MRoll", {
27
+ /**
28
+ * Allow scrolling by dragging the area. CAUTION: Enabling this property disallows the capability of drag&drop.
29
+ */
30
+ properties: {
31
+ scrollByDrag: {
32
+ init: false,
33
+ check: "Boolean"
34
+ }
35
+ },
36
+
27
37
  members: {
28
38
  _cancelRoll: null,
29
39
 
@@ -59,7 +69,7 @@ qx.Mixin.define("qx.ui.core.scroll.MRoll", {
59
69
  */
60
70
  _onRoll(e) {
61
71
  // only wheel and touch
62
- if (e.getPointerType() == "mouse") {
72
+ if (e.getPointerType() == "mouse" && !this.getScrollByDrag()) {
63
73
  return;
64
74
  }
65
75
 
@@ -125,9 +125,9 @@ qx.Class.define("qx.ui.form.AbstractField", {
125
125
  if (value != null) {
126
126
  this.setValue(value);
127
127
  }
128
-
129
- this.getContentElement().addListener("change", this._onChangeContent, this);
130
-
128
+ let el = this.getContentElement();
129
+ el.addListener("change", this._onChangeContent, this);
130
+
131
131
  // use qooxdoo placeholder if no native placeholder is supported
132
132
  if (this.__useQxPlaceholder) {
133
133
  // assign the placeholder text after the appearance has been applied
@@ -80,11 +80,24 @@ qx.Class.define("qx.ui.form.Button", {
80
80
  this.addListener("pointerout", this._onPointerOut);
81
81
  this.addListener("pointerdown", this._onPointerDown);
82
82
  this.addListener("pointerup", this._onPointerUp);
83
+
84
+ // it seems that touching a button (at least on ios and android)
85
+ // does not immediately focus it before triggering the tap event
86
+ // this causes problem with change events for any input field that
87
+ // previously held focus, as their change event will arrive AFTER
88
+ // the execute event on the button ...
89
+ // we have to call focus on the dom element itself, to make
90
+ // sure we are in time. Otherwhise the virtual dom in qooxdoo will
91
+ // delay the effect and the fix will only work when tapping 'slowly' ...
92
+ this.addListenerOnce('appear',() => {
93
+ let el = this.getContentElement().getDomElement();
94
+ this.addListener('touchstart', () => { el.focus(); });
95
+ });
96
+
83
97
  this.addListener("tap", this._onTap);
84
98
 
85
99
  this.addListener("keydown", this._onKeyDown);
86
100
  this.addListener("keyup", this._onKeyUp);
87
-
88
101
  // Stop events
89
102
  this.addListener("dblclick", function (e) {
90
103
  e.stopPropagation();
@@ -81,7 +81,7 @@ qx.Class.define("qx.ui.form.SelectBox", {
81
81
  */
82
82
 
83
83
  properties: {
84
- // overridden
84
+ /**@override*/
85
85
  appearance: {
86
86
  refine: true,
87
87
  init: "selectbox"
@@ -114,7 +114,7 @@ qx.Class.define("qx.ui.form.SelectBox", {
114
114
  this.getChildControl("atom").setRich(value);
115
115
  },
116
116
 
117
- // overridden
117
+ /**@override*/
118
118
  _defaultFormat(item) {
119
119
  if (item) {
120
120
  if (typeof item.isRich == "function" && item.isRich()) {
@@ -125,7 +125,7 @@ qx.Class.define("qx.ui.form.SelectBox", {
125
125
  return null;
126
126
  },
127
127
 
128
- // overridden
128
+ /**@override*/
129
129
  _createChildControlImpl(id, hash) {
130
130
  var control;
131
131
 
@@ -147,14 +147,29 @@ qx.Class.define("qx.ui.form.SelectBox", {
147
147
  control = new qx.ui.basic.Image();
148
148
  control.setAnonymous(true);
149
149
 
150
- this._add(control);
150
+ this.getQxObject("arrowButton")._add(control);
151
+ this._add(this.getQxObject("arrowButton"));
151
152
  break;
152
153
  }
153
154
 
154
155
  return control || super._createChildControlImpl(id);
155
156
  },
156
157
 
157
- // overridden
158
+ /**@overload */
159
+ _createQxObjectImpl(id) {
160
+ switch (id) {
161
+ case "arrowButton":
162
+ var layout = new qx.ui.layout.HBox().set({ alignY: "middle" });
163
+ return new qx.ui.container.Composite(layout).set({
164
+ allowGrowY: true,
165
+ appearance: "selectbox-arrow-button"
166
+ });
167
+ }
168
+
169
+ return super._createQxObjectImpl(id);
170
+ },
171
+
172
+ /**@override*/
158
173
  /**
159
174
  * @lint ignoreReferenceField(_forwardStates)
160
175
  */
@@ -306,7 +321,7 @@ qx.Class.define("qx.ui.form.SelectBox", {
306
321
  this.toggle();
307
322
  },
308
323
 
309
- // overridden
324
+ /**@override*/
310
325
  _onKeyPress(e) {
311
326
  var iden = e.getKeyIdentifier();
312
327
  if ((iden == "Down" || iden == "Up") && e.isAltPressed()) {
@@ -341,7 +356,7 @@ qx.Class.define("qx.ui.form.SelectBox", {
341
356
  this.getChildControl("list").dispatchEvent(clone);
342
357
  },
343
358
 
344
- // overridden
359
+ /**@override*/
345
360
  _onListPointerDown(e) {
346
361
  // Apply pre-selected item (translate quick selection to real selection)
347
362
  if (this.__preSelectedItem) {
@@ -350,7 +365,7 @@ qx.Class.define("qx.ui.form.SelectBox", {
350
365
  }
351
366
  },
352
367
 
353
- // overridden
368
+ /**@override*/
354
369
  _onListChangeSelection(e) {
355
370
  var current = e.getData();
356
371
  var old = e.getOldData();
@@ -399,7 +414,7 @@ qx.Class.define("qx.ui.form.SelectBox", {
399
414
  }
400
415
  },
401
416
 
402
- // overridden
417
+ /**@override*/
403
418
  _onPopupChangeVisibility(e) {
404
419
  super._onPopupChangeVisibility(e);
405
420
 
@@ -133,6 +133,7 @@ qx.Class.define("qx.ui.mobile.dialog.Popup", {
133
133
 
134
134
  members: {
135
135
  __isShown: false,
136
+ __isPlaced: false,
136
137
  __childrenContainer: null,
137
138
  __percentageTop: null,
138
139
  __anchor: null,
@@ -223,8 +224,8 @@ qx.Class.define("qx.ui.mobile.dialog.Popup", {
223
224
 
224
225
  this.placeTo(computedPopupPosition.left, computedPopupPosition.top);
225
226
  }
226
- } else if (this.__childrenContainer) {
227
- // No Anchor
227
+ } else if (this.__childrenContainer && !this.__isPlaced) {
228
+ // No Anchor and not placed to point manually
228
229
  this._positionToCenter();
229
230
  }
230
231
  },
@@ -239,9 +240,6 @@ qx.Class.define("qx.ui.mobile.dialog.Popup", {
239
240
 
240
241
  this.__registerEventListener();
241
242
 
242
- // Move outside of viewport
243
- this.placeTo(-1000, -1000);
244
-
245
243
  // Needs to be added to screen, before rendering position, for calculating
246
244
  // objects height.
247
245
  super.show();
@@ -323,6 +321,7 @@ qx.Class.define("qx.ui.mobile.dialog.Popup", {
323
321
  * @param top {Integer} - the value the will be set to container's top style property
324
322
  */
325
323
  placeTo(left, top) {
324
+ this.__isPlaced = true;
326
325
  this._setStyle("left", left + "px");
327
326
  this._setStyle("top", top + "px");
328
327
  },
@@ -581,6 +580,7 @@ qx.Class.define("qx.ui.mobile.dialog.Popup", {
581
580
  this._disposeObjects("__childrenContainer");
582
581
 
583
582
  this.__isShown =
583
+ this.__isPlaced =
584
584
  this.__percentageTop =
585
585
  this._anchor =
586
586
  this.__widget =
@@ -809,10 +809,13 @@ qx.Class.define("qx.ui.treevirtual.SimpleTreeDataModel", {
809
809
  * has completed building or modifying a tree by issuing a series of
810
810
  * calls to {@link #addBranch} and/or {@link #addLeaf}.
811
811
  *
812
+ * @param bRerender {Boolean?true}
813
+ * Rerender the tree data after setting the data. If set false it becomes the caller's responsibility to
814
+ * call setData() subsequently to cause a redraw.
812
815
  *
813
816
  * @throws {Error} If the parameter has the wrong type.
814
817
  */
815
- setData(nodeArr) {
818
+ setData(nodeArr, bRerender = true) {
816
819
  this._checkEditing();
817
820
  if (nodeArr instanceof Array) {
818
821
  // Save the user-supplied data.
@@ -825,8 +828,10 @@ qx.Class.define("qx.ui.treevirtual.SimpleTreeDataModel", {
825
828
  );
826
829
  }
827
830
 
828
- // Re-render the row array
829
- this.__render();
831
+ // Re-render the row array, if so requested
832
+ if (bRerender) {
833
+ this.__render();
834
+ }
830
835
 
831
836
  // Set selections in the selection model now
832
837
  var selectionModel = this.getTree().getSelectionModel();
@@ -859,11 +864,14 @@ qx.Class.define("qx.ui.treevirtual.SimpleTreeDataModel", {
859
864
  /**
860
865
  * Clears the tree of all nodes
861
866
  *
867
+ * @param bRerender {Boolean?true}
868
+ * Rerender the tree data after clearing. If set false it becomes the caller's responsibility to
869
+ * call setData() subsequently to cause a redraw.
862
870
  */
863
- clearData() {
871
+ clearData(bRerender = true) {
864
872
  this._checkEditing();
865
873
  this._clearSelections();
866
- this.setData([qx.ui.treevirtual.MTreePrimitive._getEmptyTree()]);
874
+ this.setData([qx.ui.treevirtual.MTreePrimitive._getEmptyTree()], bRerender);
867
875
  },
868
876
 
869
877
  /**
@@ -81,6 +81,9 @@ qx.Class.define("qx.ui.window.Manager", {
81
81
  * {@link qx.ui.core.queue.Widget widget queue}.
82
82
  */
83
83
  syncWidget() {
84
+ if (this.isDisposed()){
85
+ return;
86
+ }
84
87
  this.__desktop.forceUnblock();
85
88
 
86
89
  var windows = this.__desktop.getWindows();
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- require("../../../../../index");
2
+ require("../../../../../lib/compiler/index.js");
3
3
 
4
4
  const website = new qx.tool.utils.Website();
5
5