@qooxdoo/framework 7.9.2 → 7.9.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/lib/compiler/compile-info.json +48 -48
- package/lib/compiler/index.js +247 -214
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -1
- package/package.json +2 -2
- package/source/class/qx/locale/Manager.js +13 -0
- package/source/class/qx/test/compiler/ClassFile.js +13 -0
- package/source/class/qx/test/ui/basic/Label.js +106 -0
- package/source/class/qx/test/ui/core/Blocker.js +121 -0
- package/source/class/qx/test/ui/tree/virtual/Tree.js +36 -0
- package/source/class/qx/test/util/DateFormat.js +1 -1
- package/source/class/qx/theme/classic/Appearance.js +21 -0
- package/source/class/qx/theme/indigo/ColorDark.js +2 -0
- package/source/class/qx/theme/modern/Appearance.js +21 -0
- package/source/class/qx/theme/simple/Appearance.js +27 -5
- package/source/class/qx/theme/tangible/Appearance.js +2 -0
- package/source/class/qx/tool/compiler/ClassFile.js +18 -6
- package/source/class/qx/tool/compiler/resources/Asset.js +1 -1
- package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +6 -2
- package/source/class/qx/ui/core/Blocker.js +16 -3
- package/source/class/qx/ui/form/validation/Manager.js +1 -1
- package/source/class/qx/ui/mobile/dialog/Popup.js +13 -1
- package/source/class/qx/ui/table/Table.js +5 -4
- package/source/class/qx/ui/tree/VirtualTree.js +4 -1
- package/source/class/qx/util/format/DateFormat.js +3 -2
- package/source/resource/qx/decoration/Modern/table/boolean-false.png +0 -0
- package/source/resource/qx/decoration/Modern/table/boolean-true.png +0 -0
|
@@ -85,12 +85,16 @@ qx.Class.define("qx.tool.compiler.targets.meta.PackageJavascript", {
|
|
|
85
85
|
|
|
86
86
|
if (pkg.isEmbedAllJavascript()) {
|
|
87
87
|
this.__sourceMapOffsets = [];
|
|
88
|
+
let packageWs = new qx.tool.utils.Utils.LineCountingTransform();
|
|
88
89
|
let strip = new qx.tool.utils.Utils.StripSourceMapTransform();
|
|
89
|
-
strip.pipe(
|
|
90
|
+
strip.pipe(packageWs);
|
|
91
|
+
packageWs.pipe(ws, {
|
|
92
|
+
end: false
|
|
93
|
+
});
|
|
90
94
|
await new Promise(async resolve => {
|
|
91
95
|
for (let i = 0; i < pkg.getJavascriptMetas().length; i++) {
|
|
92
96
|
let js = pkg.getJavascriptMetas()[i];
|
|
93
|
-
this.__sourceMapOffsets.push(
|
|
97
|
+
this.__sourceMapOffsets.push(packageWs.getLineNumber());
|
|
94
98
|
await js.unwrap().writeSourceCodeToStream(strip);
|
|
95
99
|
strip.write("\n");
|
|
96
100
|
}
|
|
@@ -132,6 +132,7 @@ qx.Class.define("qx.ui.core.Blocker", {
|
|
|
132
132
|
members: {
|
|
133
133
|
__blocker: null,
|
|
134
134
|
__blockerCount: 0,
|
|
135
|
+
__blockingContent: false,
|
|
135
136
|
|
|
136
137
|
__activeElements: null,
|
|
137
138
|
__focusElements: null,
|
|
@@ -186,11 +187,17 @@ qx.Class.define("qx.ui.core.Blocker", {
|
|
|
186
187
|
* @param bounds {Map} Map with the new width, height, left and top values
|
|
187
188
|
*/
|
|
188
189
|
_updateBlockerBounds(bounds) {
|
|
190
|
+
// When blocking content, the blocker is a child of the widget itself,
|
|
191
|
+
// so it should be positioned at 0,0 relative to the widget.
|
|
192
|
+
// Otherwise, it's positioned relative to the layout parent.
|
|
193
|
+
var left = this.__blockingContent ? 0 : bounds.left;
|
|
194
|
+
var top = this.__blockingContent ? 0 : bounds.top;
|
|
195
|
+
|
|
189
196
|
this.getBlockerElement().setStyles({
|
|
190
197
|
width: bounds.width + "px",
|
|
191
198
|
height: bounds.height + "px",
|
|
192
|
-
left:
|
|
193
|
-
top:
|
|
199
|
+
left: left + "px",
|
|
200
|
+
top: top + "px"
|
|
194
201
|
});
|
|
195
202
|
},
|
|
196
203
|
|
|
@@ -338,7 +345,7 @@ qx.Class.define("qx.ui.core.Blocker", {
|
|
|
338
345
|
if (!this.__appearListener) {
|
|
339
346
|
this.__appearListener = this._widget.addListenerOnce(
|
|
340
347
|
"appear",
|
|
341
|
-
this._block.bind(this, zIndex)
|
|
348
|
+
this._block.bind(this, zIndex, blockContent)
|
|
342
349
|
);
|
|
343
350
|
}
|
|
344
351
|
return;
|
|
@@ -358,6 +365,9 @@ qx.Class.define("qx.ui.core.Blocker", {
|
|
|
358
365
|
|
|
359
366
|
this.__blockerCount++;
|
|
360
367
|
if (this.__blockerCount < 2) {
|
|
368
|
+
// Track if we're blocking content (blocker is child of widget)
|
|
369
|
+
this.__blockingContent = blockContent === true;
|
|
370
|
+
|
|
361
371
|
this._backupActiveWidget();
|
|
362
372
|
|
|
363
373
|
var bounds = this._widget.getBounds();
|
|
@@ -442,6 +452,9 @@ qx.Class.define("qx.ui.core.Blocker", {
|
|
|
442
452
|
blocker.removeListener("keyup", this.__stopTabEvent, this);
|
|
443
453
|
blocker.exclude();
|
|
444
454
|
|
|
455
|
+
// Reset blocking content state
|
|
456
|
+
this.__blockingContent = false;
|
|
457
|
+
|
|
445
458
|
this.fireEvent("unblocked", qx.event.type.Event);
|
|
446
459
|
},
|
|
447
460
|
|
|
@@ -140,11 +140,16 @@ qx.Class.define("qx.ui.mobile.dialog.Popup", {
|
|
|
140
140
|
__widget: null,
|
|
141
141
|
__titleWidget: null,
|
|
142
142
|
__lastPopupDimension: null,
|
|
143
|
+
/**
|
|
144
|
+
* Flag which ignores event domupdated caused by this widget and stopps infinite recursive `_updatePosition` calls
|
|
145
|
+
*/
|
|
146
|
+
__updatePositionStarted: false,
|
|
143
147
|
|
|
144
148
|
/**
|
|
145
149
|
* Event handler. Called whenever the position of the popup should be updated.
|
|
146
150
|
*/
|
|
147
151
|
_updatePosition() {
|
|
152
|
+
this.__updatePositionStarted = true;
|
|
148
153
|
// Traverse single anchor classes for removal, for preventing 'domupdated' event if no CSS classes changed.
|
|
149
154
|
var anchorClasses = ["top", "bottom", "left", "right", "anchor"];
|
|
150
155
|
for (var i = 0; i < anchorClasses.length; i++) {
|
|
@@ -446,7 +451,14 @@ qx.Class.define("qx.ui.mobile.dialog.Popup", {
|
|
|
446
451
|
flex: 1
|
|
447
452
|
});
|
|
448
453
|
|
|
449
|
-
widget.addListener("domupdated",
|
|
454
|
+
widget.addListener("domupdated", () => {
|
|
455
|
+
if (!this.__updatePositionStarted){
|
|
456
|
+
this._updatePosition();
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
this.__updatePositionStarted = false;
|
|
460
|
+
}
|
|
461
|
+
}, this);
|
|
450
462
|
|
|
451
463
|
this.__widget = widget;
|
|
452
464
|
},
|
|
@@ -1570,10 +1570,11 @@ qx.Class.define("qx.ui.table.Table", {
|
|
|
1570
1570
|
* visible.
|
|
1571
1571
|
*/
|
|
1572
1572
|
setFocusedCell(col, row, scrollVisible) {
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1573
|
+
let cellChanged = col != this.__focusedCol || row != this.__focusedRow;
|
|
1574
|
+
if (this.isEditing() && cellChanged) {
|
|
1575
|
+
this.stopEditing();
|
|
1576
|
+
}
|
|
1577
|
+
if (!this.isEditing() && cellChanged) {
|
|
1577
1578
|
if (col === null) {
|
|
1578
1579
|
col = 0;
|
|
1579
1580
|
}
|
|
@@ -761,7 +761,10 @@ qx.Class.define("qx.ui.tree.VirtualTree", {
|
|
|
761
761
|
}
|
|
762
762
|
}
|
|
763
763
|
|
|
764
|
-
|
|
764
|
+
// Issue #9390: When hideRoot is true, the root is not in the lookup table,
|
|
765
|
+
// but we still need to update when its children change
|
|
766
|
+
var isRootAndHidden = this.isHideRoot() && item === this.getModel();
|
|
767
|
+
if (this.__lookupTable.indexOf(item) != -1 || isRootAndHidden) {
|
|
765
768
|
this.__applyModelChanges();
|
|
766
769
|
}
|
|
767
770
|
}
|
|
@@ -476,8 +476,9 @@ qx.Class.define("qx.util.format.DateFormat", {
|
|
|
476
476
|
|
|
477
477
|
var timezoneOffset = date.getTimezoneOffset();
|
|
478
478
|
var timezoneSign = timezoneOffset > 0 ? 1 : -1;
|
|
479
|
-
var
|
|
480
|
-
var
|
|
479
|
+
var absTimezoneOffset = Math.abs(timezoneOffset);
|
|
480
|
+
var timezoneHours = Math.floor(absTimezoneOffset / 60);
|
|
481
|
+
var timezoneMinutes = Math.trunc(absTimezoneOffset) % 60;
|
|
481
482
|
|
|
482
483
|
// Create the output
|
|
483
484
|
this.__initFormatTree();
|
|
Binary file
|
|
Binary file
|