@qooxdoo/framework 7.4.1 → 7.5.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 (36) hide show
  1. package/Manifest.json +1 -1
  2. package/lib/compiler/compile-info.json +58 -58
  3. package/lib/compiler/index.js +289 -265
  4. package/package.json +1 -1
  5. package/source/class/qx/Class.js +3 -3
  6. package/source/class/qx/bom/Cookie.js +1 -1
  7. package/source/class/qx/data/Array.js +3 -3
  8. package/source/class/qx/data/SingleValueBinding.js +1 -1
  9. package/source/class/qx/dom/Hierarchy.js +2 -2
  10. package/source/class/qx/event/Manager.js +1 -1
  11. package/source/class/qx/event/handler/TouchCore.js +1 -1
  12. package/source/class/qx/html/Jsx.js +1 -1
  13. package/source/class/qx/lang/Array.js +2 -2
  14. package/source/class/qx/lang/Function.js +19 -22
  15. package/source/class/qx/locale/MTranslation.js +4 -4
  16. package/source/class/qx/locale/Manager.js +7 -7
  17. package/source/class/qx/module/util/Array.js +2 -2
  18. package/source/class/qx/theme/IndigoDark.js +28 -0
  19. package/source/class/qx/theme/indigo/AppearanceDark.js +186 -0
  20. package/source/class/qx/theme/indigo/ColorDark.js +117 -0
  21. package/source/class/qx/theme/indigo/ImageDark.js +101 -0
  22. package/source/class/qx/tool/cli/Watch.js +24 -22
  23. package/source/class/qx/tool/cli/commands/package/Publish.js +16 -4
  24. package/source/class/qx/tool/compiler/targets/meta/Browserify.js +19 -9
  25. package/source/class/qx/ui/command/Group.js +2 -2
  26. package/source/class/qx/ui/command/GroupManager.js +3 -3
  27. package/source/class/qx/ui/control/ColorSelector.js +1 -1
  28. package/source/class/qx/ui/core/MMultiSelectionHandling.js +1 -1
  29. package/source/class/qx/ui/core/SingleSelectionManager.js +1 -1
  30. package/source/class/qx/ui/core/scroll/MRoll.js +5 -0
  31. package/source/class/qx/ui/form/Form.js +1 -1
  32. package/source/class/qx/ui/list/List.js +1 -1
  33. package/source/class/qx/ui/mobile/form/Form.js +2 -2
  34. package/source/class/qx/ui/treevirtual/MNode.js +1 -1
  35. package/source/class/qx/util/OOUtil.js +1 -1
  36. package/source/resource/qx/scss/_gradients.scss +1 -1
@@ -0,0 +1,101 @@
1
+ /* ************************************************************************
2
+
3
+ qooxdoo - the new era of web development
4
+
5
+ http://qooxdoo.org
6
+
7
+ License:
8
+ MIT: https://opensource.org/licenses/MIT
9
+ See the LICENSE file in the project's top-level directory for details.
10
+
11
+ Authors:
12
+ * Scott Knick (sknick)
13
+
14
+ ************************************************************************ */
15
+ /* ************************************************************************
16
+
17
+
18
+ ************************************************************************* */
19
+ /**
20
+ * Mapping class for all images used in the Indigo dark theme.
21
+ *
22
+ * @asset(qx/decoration/Simple/*)
23
+ * @asset(qx/static/blank.png)
24
+ */
25
+ qx.Class.define("qx.theme.indigo.ImageDark", {
26
+ extend: qx.core.Object,
27
+
28
+ statics: {
29
+ /**
30
+ * Holds a map containing all the URL to the images.
31
+ * @internal
32
+ */
33
+ URLS: {
34
+ blank: "qx/static/blank.png",
35
+
36
+ // checkbox
37
+ "checkbox-checked": "decoration/checkbox/checked.png",
38
+ "checkbox-undetermined": "decoration/checkbox/undetermined.png",
39
+
40
+ // window
41
+ "window-minimize": "decoration/window/minimize-white.gif",
42
+ "window-maximize": "decoration/window/maximize-white.gif",
43
+ "window-restore": "decoration/window/restore-white.gif",
44
+ "window-close": "decoration/window/close-white.gif",
45
+
46
+ // cursor
47
+ "cursor-copy": "decoration/cursors/copy.gif",
48
+ "cursor-move": "decoration/cursors/move.gif",
49
+ "cursor-alias": "decoration/cursors/alias.gif",
50
+ "cursor-nodrop": "decoration/cursors/nodrop.gif",
51
+
52
+ // arrows
53
+ "arrow-right": "decoration/arrows/right.gif",
54
+ "arrow-left": "decoration/arrows/left.gif",
55
+ "arrow-up": "decoration/arrows/up.gif",
56
+ "arrow-down": "decoration/arrows/down.gif",
57
+ "arrow-forward": "decoration/arrows/forward.gif",
58
+ "arrow-rewind": "decoration/arrows/rewind.gif",
59
+ "arrow-down-small": "decoration/arrows/down-small.gif",
60
+ "arrow-up-small": "decoration/arrows/up-small.gif",
61
+ "arrow-up-invert": "decoration/arrows/up-invert.gif",
62
+ "arrow-down-invert": "decoration/arrows/down-invert.gif",
63
+ "arrow-right-invert": "decoration/arrows/right-invert.gif",
64
+
65
+ // split pane
66
+ "knob-horizontal": "decoration/splitpane/knob-horizontal.png",
67
+ "knob-vertical": "decoration/splitpane/knob-vertical.png",
68
+
69
+ // tree
70
+ "tree-minus": "decoration/tree/minus.gif",
71
+ "tree-plus": "decoration/tree/plus.gif",
72
+
73
+ // table
74
+ "select-column-order": "decoration/table/select-column-order.png",
75
+ "table-ascending": "decoration/table/ascending.png",
76
+ "table-descending": "decoration/table/descending.png",
77
+
78
+ // tree virtual
79
+ "treevirtual-line": "decoration/treevirtual/line.gif",
80
+ "treevirtual-minus-only": "decoration/treevirtual/only_minus.gif",
81
+ "treevirtual-plus-only": "decoration/treevirtual/only_plus.gif",
82
+ "treevirtual-minus-start": "decoration/treevirtual/start_minus.gif",
83
+ "treevirtual-plus-start": "decoration/treevirtual/start_plus.gif",
84
+ "treevirtual-minus-end": "decoration/treevirtual/end_minus.gif",
85
+ "treevirtual-plus-end": "decoration/treevirtual/end_plus.gif",
86
+ "treevirtual-minus-cross": "decoration/treevirtual/cross_minus.gif",
87
+ "treevirtual-plus-cross": "decoration/treevirtual/cross_plus.gif",
88
+ "treevirtual-end": "decoration/treevirtual/end.gif",
89
+ "treevirtual-cross": "decoration/treevirtual/cross.gif",
90
+
91
+ // menu
92
+ "menu-checkbox": "decoration/menu/checkbox.gif",
93
+ "menu-checkbox-invert": "decoration/menu/checkbox-invert.gif",
94
+ "menu-radiobutton-invert": "decoration/menu/radiobutton-invert.gif",
95
+ "menu-radiobutton": "decoration/menu/radiobutton.gif",
96
+
97
+ // tabview
98
+ "tabview-close": "decoration/tabview/close.gif"
99
+ }
100
+ }
101
+ });
@@ -13,6 +13,7 @@
13
13
 
14
14
  Authors:
15
15
  * John Spackman (john.spackman@zenesis.com, @johnspackman)
16
+ * Henner Kollmann (Henner.Kollmann@gmx.de, @hkollmann)
16
17
 
17
18
  ************************************************************************ */
18
19
 
@@ -221,30 +222,31 @@ qx.Class.define("qx.tool.cli.Watch", {
221
222
  `DEBUG: confirmed=${JSON.stringify(confirmed, 2)}`
222
223
  );
223
224
  }
225
+ this.__make().then(() => {
226
+ var watcher = (this._watcher = chokidar.watch(confirmed, {
227
+ //ignored: /(^|[\/\\])\../
228
+ }));
229
+ watcher.on("change", filename =>
230
+ this.__onFileChange("change", filename)
231
+ );
224
232
 
225
- var watcher = (this._watcher = chokidar.watch(confirmed, {
226
- //ignored: /(^|[\/\\])\../
227
- }));
228
- watcher.on("change", filename =>
229
- this.__onFileChange("change", filename)
230
- );
231
-
232
- watcher.on("add", filename => this.__onFileChange("add", filename));
233
- watcher.on("unlink", filename =>
234
- this.__onFileChange("unlink", filename)
235
- );
236
-
237
- watcher.on("ready", () => {
238
- this.__watcherReady = true;
239
- this.__make();
240
- });
241
- watcher.on("error", err => {
242
- qx.tool.compiler.Console.print(
243
- err.code == "ENOSPC"
244
- ? "qx.tool.cli.watch.enospcError"
245
- : "qx.tool.cli.watch.watchError",
246
- err
233
+ watcher.on("add", filename => this.__onFileChange("add", filename));
234
+ watcher.on("unlink", filename =>
235
+ this.__onFileChange("unlink", filename)
247
236
  );
237
+
238
+ watcher.on("ready", () => {
239
+ qx.tool.compiler.Console.log(`Start watching ...`);
240
+ this.__watcherReady = true;
241
+ });
242
+ watcher.on("error", err => {
243
+ qx.tool.compiler.Console.print(
244
+ err.code == "ENOSPC"
245
+ ? "qx.tool.cli.watch.enospcError"
246
+ : "qx.tool.cli.watch.watchError",
247
+ err
248
+ );
249
+ });
248
250
  });
249
251
  });
250
252
  },
@@ -79,6 +79,11 @@ qx.Class.define("qx.tool.cli.commands.package.Publish", {
79
79
  },
80
80
 
81
81
  dryrun: {
82
+ type: "boolean",
83
+ describe: "Deprecated. Use --dry-run"
84
+ },
85
+
86
+ "dry-run": {
82
87
  type: "boolean",
83
88
  alias: "d",
84
89
  describe: "Show result only, do not publish to GitHub"
@@ -146,6 +151,13 @@ qx.Class.define("qx.tool.cli.commands.package.Publish", {
146
151
  // init
147
152
  const argv = this.argv;
148
153
 
154
+ if (argv.dryrun) {
155
+ qx.tool.compiler.Console.info(
156
+ 'The "--dryrun" option is deprecated. Please use "--dry-run" instead.'
157
+ );
158
+ argv.dryRun = true
159
+ }
160
+
149
161
  // qooxdoo version
150
162
  let qxVersion = await this.getQxVersion();
151
163
  if (fs.existsSync("Manifest.json")) {
@@ -377,7 +389,7 @@ qx.Class.define("qx.tool.cli.commands.package.Publish", {
377
389
  manifestModel
378
390
  .setValue("requires.@qooxdoo/framework", semver_range)
379
391
  .setValue("info.version", new_version);
380
- if (argv.dryrun) {
392
+ if (argv.dryRun) {
381
393
  if (!argv.quiet) {
382
394
  qx.tool.compiler.Console.info(
383
395
  `Dry run: Not committing ${manifestModel.getRelativeDataPath()} with the following content:`
@@ -397,7 +409,7 @@ qx.Class.define("qx.tool.cli.commands.package.Publish", {
397
409
  if (await fs.existsAsync(package_json_path)) {
398
410
  let data = await qx.tool.utils.Json.loadJsonAsync(package_json_path);
399
411
  data.version = new_version;
400
- if (this.argv.dryrun) {
412
+ if (this.argv.dryRun) {
401
413
  qx.tool.compiler.Console.info(
402
414
  "Dry run: Not changing package.json version..."
403
415
  );
@@ -414,7 +426,7 @@ qx.Class.define("qx.tool.cli.commands.package.Publish", {
414
426
  argv: this.argv
415
427
  });
416
428
 
417
- if (argv.dryrun) {
429
+ if (argv.dryRun) {
418
430
  qx.tool.compiler.Console.info(
419
431
  `Dry run: not creating tag and release '${tag}' of ${repo_name}...`
420
432
  );
@@ -540,7 +552,7 @@ qx.Class.define("qx.tool.cli.commands.package.Publish", {
540
552
 
541
553
  // write index file
542
554
  const registryModel = qx.tool.config.Registry.getInstance();
543
- if (argv.dryrun) {
555
+ if (argv.dryRun) {
544
556
  qx.tool.compiler.Console.info(
545
557
  `Dry run: not creating index file ${registryModel.getRelativeDataPath()} with the following content:`
546
558
  );
@@ -147,7 +147,7 @@ qx.Class.define("qx.tool.compiler.targets.meta.Browserify", {
147
147
  });
148
148
  },
149
149
 
150
- async __browserify(commonjsModules, references, localModules, ws) {
150
+ __browserify(commonjsModules, references, localModules, ws) {
151
151
  const babelify = require("babelify");
152
152
  const preset = require("@babel/preset-env");
153
153
  const browserify = require("browserify");
@@ -157,7 +157,7 @@ qx.Class.define("qx.tool.compiler.targets.meta.Browserify", {
157
157
  // Make them equivalent.
158
158
  builtins.process = builtins._process;
159
159
 
160
- return new Promise(async resolve => {
160
+ return new Promise((resolve, reject) => {
161
161
  let b = browserify([], {
162
162
  builtins: builtins,
163
163
  ignoreMissing: true,
@@ -200,19 +200,29 @@ qx.Class.define("qx.tool.compiler.targets.meta.Browserify", {
200
200
  global: true
201
201
  });
202
202
 
203
- b.bundle((e, output) => {
203
+ b.bundle(function (e, output) {
204
204
  if (e) {
205
- // We've already handled the case of missing module. This is something else.
205
+ // THIS IS A HACK!
206
+ // In case of error dependency walker never returns from
207
+ // ```if (self.inputPending > 0) return setTimeout(resolve);```
208
+ // because inputPending is not decremented anymore.
209
+ // so set it to 0 here.
210
+ let d = b.pipeline.get("deps");
211
+ d.get(0).inputPending = 0;
206
212
  qx.tool.compiler.Console.error(
207
- `Unable to browserify - this is probably because a module is being require()'d which is not compatible with Browserify: ${e.message}`
213
+ `Unable to browserify - this is probably because a module is being require()'d which is not compatible with Browserify:\n${e.message}`
208
214
  );
209
215
 
210
- // Do not throw an error here, otherwise a problem in the users code will kill the watch with pages of error
211
- resolve(null);
216
+ setTimeout(() => {
217
+ this.emit("end");
218
+ });
212
219
  return;
213
220
  }
214
-
215
- ws.write(output);
221
+ // in case of end event output can not be writen.
222
+ // so catch the error and ignore it
223
+ try {
224
+ ws.write(output);
225
+ } catch (err) {}
216
226
  resolve(null);
217
227
  });
218
228
  });
@@ -90,7 +90,7 @@ qx.Class.define("qx.ui.command.Group", {
90
90
  *
91
91
  * @param key {String} Key which addresses the command
92
92
  *
93
- * @return {qx.ui.command.Command | null} Corresponding command instance or null
93
+ * @return {qx.ui.command.Command|null} Corresponding command instance or null
94
94
  */
95
95
  get(key) {
96
96
  if (qx.core.Environment.get("qx.debug")) {
@@ -134,7 +134,7 @@ qx.Class.define("qx.ui.command.Group", {
134
134
  *
135
135
  * @param key {String} Key which addresses the command
136
136
  *
137
- * @return {qx.ui.command.Command | null} Corresponding command instance or null
137
+ * @return {qx.ui.command.Command|null} Corresponding command instance or null
138
138
  */
139
139
  remove(key) {
140
140
  if (qx.core.Environment.get("qx.debug")) {
@@ -81,7 +81,7 @@ qx.Class.define("qx.ui.command.GroupManager", {
81
81
  *
82
82
  * @param group {qx.ui.command.Group} Command group
83
83
  *
84
- * @return {qx.ui.command.Group | null} Command group or null if group was not added before
84
+ * @return {qx.ui.command.Group|null} Command group or null if group was not added before
85
85
  */
86
86
  remove(group) {
87
87
  if (qx.core.Environment.get("qx.debug")) {
@@ -155,7 +155,7 @@ qx.Class.define("qx.ui.command.GroupManager", {
155
155
  /**
156
156
  * Returns active command group.
157
157
  *
158
- * @return {qx.ui.command.Group | null} Active command group
158
+ * @return {qx.ui.command.Group|null} Active command group
159
159
  */
160
160
  getActive() {
161
161
  return this.__activeGroup;
@@ -184,7 +184,7 @@ qx.Class.define("qx.ui.command.GroupManager", {
184
184
  *
185
185
  * @param group {qx.ui.command.Group} Command group
186
186
  *
187
- * @return {qx.ui.command.Group | null} Command group or null
187
+ * @return {qx.ui.command.Group|null} Command group or null
188
188
  */
189
189
  _getGroup(group) {
190
190
  var index = this.__groups.indexOf(group);
@@ -557,7 +557,7 @@ qx.Class.define("qx.ui.control.ColorSelector", {
557
557
  /**
558
558
  * Returns the currently selected color.
559
559
  *
560
- * @return {String | null} The HEX value of the color of if not color
560
+ * @return {String|null} The HEX value of the color of if not color
561
561
  * is set, null.
562
562
  */
563
563
  getValue() {
@@ -327,7 +327,7 @@ qx.Mixin.define("qx.ui.core.MMultiSelectionHandling", {
327
327
  /**
328
328
  * Returns the last selection context.
329
329
  *
330
- * @return {String | null} One of <code>tap</code>, <code>quick</code>,
330
+ * @return {String|null} One of <code>tap</code>, <code>quick</code>,
331
331
  * <code>drag</code> or <code>key</code> or <code>null</code>.
332
332
  */
333
333
  getSelectionContext() {
@@ -105,7 +105,7 @@ qx.Class.define("qx.ui.core.SingleSelectionManager", {
105
105
  /**
106
106
  * Returns the current selected element.
107
107
  *
108
- * @return {qx.ui.core.Widget | null} The current selected widget or
108
+ * @return {qx.ui.core.Widget|null} The current selected widget or
109
109
  * <code>null</code> if the selection is empty.
110
110
  */
111
111
  getSelected() {
@@ -58,6 +58,11 @@ qx.Mixin.define("qx.ui.core.scroll.MRoll", {
58
58
  * @param e {qx.event.type.Roll} Roll event
59
59
  */
60
60
  _onRoll(e) {
61
+ // only wheel and touch
62
+ if (e.getPointerType() == "mouse") {
63
+ return;
64
+ }
65
+
61
66
  if (this._cancelRoll && e.getMomentum()) {
62
67
  e.stopMomentum();
63
68
  this._cancelRoll = null;
@@ -346,7 +346,7 @@ qx.Class.define("qx.ui.form.Form", {
346
346
  * Validates the form using the
347
347
  * {@link qx.ui.form.validation.Manager#validate} method.
348
348
  *
349
- * @return {Boolean | null} The validation result.
349
+ * @return {Boolean|null} The validation result.
350
350
  */
351
351
  validate() {
352
352
  return this._validationManager.validate();
@@ -449,7 +449,7 @@ qx.Class.define("qx.ui.list.List", {
449
449
  /**
450
450
  * Returns the selectable model items.
451
451
  *
452
- * @return {qx.data.Array | null} The selectable items.
452
+ * @return {qx.data.Array|null} The selectable items.
453
453
  */
454
454
  _getSelectables() {
455
455
  return this.getModel();
@@ -72,7 +72,7 @@ qx.Class.define("qx.ui.mobile.form.Form", {
72
72
  * {@link qx.ui.form.validation.Manager#validate} method.
73
73
  * @lint ignoreDeprecated(alert)
74
74
  *
75
- * @return {Boolean | null} The validation result.
75
+ * @return {Boolean|null} The validation result.
76
76
  */
77
77
  validate() {
78
78
  var validateResult = super.validate();
@@ -135,7 +135,7 @@ qx.Class.define("qx.ui.mobile.form.Form", {
135
135
  * Gets the item with the given group and rowIndex.
136
136
  * @param groupIndex {Integer} the index of the group to which the row belongs to
137
137
  * @param rowIndex {Integer} the index of the row inside the target group
138
- * @return {qx.ui.form.IForm | null} The validation result.
138
+ * @return {qx.ui.form.IForm|null} The validation result.
139
139
  */
140
140
  _getItemByIndex(groupIndex, rowIndex) {
141
141
  var groups = this.getGroups();
@@ -226,7 +226,7 @@ qx.Mixin.define("qx.ui.treevirtual.MNode", {
226
226
  }
227
227
  if (cascade) {
228
228
  node.children.forEach(child =>
229
- this.nodeSetOpened(child, opened, cascade, true)
229
+ this._nodeSetOpenedInternal(child, opened, cascade, true)
230
230
  );
231
231
  }
232
232
  if (!cascade || !isRecursed) {
@@ -103,7 +103,7 @@ qx.Bootstrap.define("qx.util.OOUtil", {
103
103
  *
104
104
  * @param clazz {Class} class to look for the interface
105
105
  * @param iface {Interface} interface to look for
106
- * @return {Class | null} the class which directly implements the given interface
106
+ * @return {Class|null} the class which directly implements the given interface
107
107
  */
108
108
  getByInterface(clazz, iface) {
109
109
  var list, i, l;
@@ -117,7 +117,7 @@
117
117
 
118
118
  $stops: $stops + $separator + "color-stop(#{$pos}, #{$color})";
119
119
 
120
- $i: $i +1;
120
+ $i: $i + 1;
121
121
  }
122
122
  }
123
123