@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.
- package/Manifest.json +1 -1
- package/README.md +3 -3
- package/lib/compiler/compile-info.json +69 -69
- package/lib/compiler/index.js +262 -262
- package/lib/resource/qx/tool/bin/build-website +1 -1
- package/package.json +35 -35
- package/source/class/qx/ui/basic/Image.js +5 -4
- package/source/class/qx/ui/core/scroll/MRoll.js +11 -1
- package/source/class/qx/ui/form/AbstractField.js +3 -3
- package/source/class/qx/ui/form/Button.js +14 -1
- package/source/class/qx/ui/form/SelectBox.js +24 -9
- package/source/class/qx/ui/mobile/dialog/Popup.js +5 -5
- package/source/class/qx/ui/treevirtual/SimpleTreeDataModel.js +13 -5
- package/source/class/qx/ui/window/Manager.js +3 -0
- package/source/resource/qx/tool/bin/build-website +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qooxdoo/framework",
|
|
3
|
-
"version": "7.6.
|
|
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.
|
|
58
|
-
"@babel/eslint-parser": "^7.
|
|
59
|
-
"@babel/generator": "^7.
|
|
60
|
-
"@babel/parser": "^7.
|
|
61
|
-
"@babel/plugin-proposal-
|
|
62
|
-
"@babel/plugin-
|
|
63
|
-
"@babel/plugin-
|
|
64
|
-
"@babel/plugin-transform-
|
|
65
|
-
"@babel/plugin-transform-react-jsx": "^7.
|
|
66
|
-
"@babel/preset-env": "^7.
|
|
67
|
-
"@babel/preset-react": "^7.
|
|
68
|
-
"@babel/preset-typescript": "^7.
|
|
69
|
-
"@babel/traverse": "^7.
|
|
70
|
-
"@babel/types": "^7.
|
|
71
|
-
"@metalsmith/layouts": "^2.
|
|
72
|
-
"@metalsmith/markdown": "^1.
|
|
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.
|
|
77
|
-
"ajv": "^8.
|
|
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.
|
|
81
|
+
"better-ajv-errors": "^1.2.0",
|
|
82
82
|
"browserify": "^17.0.0",
|
|
83
|
-
"chokidar": "^3.5.
|
|
84
|
-
"cldr": "^7.
|
|
85
|
-
"columnify": "^1.
|
|
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.
|
|
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.
|
|
91
|
+
"eslint": "^8.51.0",
|
|
92
92
|
"eslint-formatter-codeframe": "^7.32.1",
|
|
93
|
-
"eslint-plugin-jsdoc": "
|
|
94
|
-
"express": "^4.
|
|
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.
|
|
102
|
+
"json-stable-stringify": "^1.0.2",
|
|
103
103
|
"jstransformer-dot": "^0.1.2",
|
|
104
|
-
"metalsmith": "^2.
|
|
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.
|
|
112
|
-
"semver": "^7.
|
|
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.
|
|
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.
|
|
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.
|
|
128
|
-
"tape": "^5.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
/**
|