@qooxdoo/framework 7.4.2 → 7.5.1
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/bin/deploy/qx +7 -5
- package/lib/compiler/compile-info.json +81 -81
- package/lib/compiler/index.js +496 -453
- package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
- package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
- package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
- package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
- package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
- package/lib/resource/qx/tool/website/src/about.md +1 -1
- package/package.json +2 -2
- package/source/class/qx/Class.js +3 -3
- package/source/class/qx/bom/Cookie.js +1 -1
- package/source/class/qx/data/Array.js +3 -3
- package/source/class/qx/data/SingleValueBinding.js +1 -1
- package/source/class/qx/dom/Hierarchy.js +2 -2
- package/source/class/qx/event/Manager.js +1 -1
- package/source/class/qx/event/handler/TouchCore.js +1 -1
- package/source/class/qx/html/Jsx.js +1 -1
- package/source/class/qx/lang/Array.js +2 -2
- package/source/class/qx/lang/Function.js +19 -22
- package/source/class/qx/locale/MTranslation.js +4 -4
- package/source/class/qx/locale/Manager.js +7 -7
- package/source/class/qx/module/util/Array.js +2 -2
- package/source/class/qx/test/io/transport/Websocket.js +1 -1
- package/source/class/qx/theme/IndigoDark.js +28 -0
- package/source/class/qx/theme/indigo/AppearanceDark.js +186 -0
- package/source/class/qx/theme/indigo/ColorDark.js +117 -0
- package/source/class/qx/theme/indigo/DecorationDark.js +30 -0
- package/source/class/qx/theme/indigo/ImageDark.js +101 -0
- package/source/class/qx/tool/cli/Application.js +4 -1
- package/source/class/qx/tool/cli/Cli.js +22 -23
- package/source/class/qx/tool/cli/Watch.js +28 -27
- package/source/class/qx/tool/cli/commands/Compile.js +2 -1
- package/source/class/qx/tool/cli/commands/Lint.js +1 -1
- package/source/class/qx/tool/cli/commands/Run.js +6 -7
- package/source/class/qx/tool/cli/commands/Serve.js +29 -36
- package/source/class/qx/tool/cli/commands/Test.js +3 -2
- package/source/class/qx/tool/cli/commands/add/Script.js +3 -1
- package/source/class/qx/tool/cli/commands/package/Install.js +3 -0
- package/source/class/qx/tool/cli/commands/package/Publish.js +16 -4
- package/source/class/qx/tool/compiler/ClassFile.js +2 -1
- package/source/class/qx/tool/compiler/app/Cldr.js +63 -26
- package/source/class/qx/tool/compiler/targets/meta/Browserify.js +19 -9
- package/source/class/qx/ui/basic/Image.js +6 -2
- package/source/class/qx/ui/command/Group.js +2 -2
- package/source/class/qx/ui/command/GroupManager.js +3 -3
- package/source/class/qx/ui/control/ColorSelector.js +1 -1
- package/source/class/qx/ui/core/MMultiSelectionHandling.js +1 -1
- package/source/class/qx/ui/core/SingleSelectionManager.js +1 -1
- package/source/class/qx/ui/core/Widget.js +13 -42
- package/source/class/qx/ui/form/Form.js +1 -1
- package/source/class/qx/ui/list/List.js +1 -1
- package/source/class/qx/ui/mobile/form/Form.js +2 -2
- package/source/class/qx/util/OOUtil.js +1 -1
- package/source/resource/qx/mobile/scss/common/_gradients.scss +1 -1
- package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
- package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
- package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
- package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
- package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
- package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
- package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
- package/source/resource/qx/tool/website/src/about.md +1 -1
package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js
CHANGED
|
@@ -28,15 +28,15 @@ qx.Class.define("${namespace}.Application",
|
|
|
28
28
|
members :
|
|
29
29
|
{
|
|
30
30
|
/**
|
|
31
|
-
* This method contains the initial application code and gets called
|
|
31
|
+
* This method contains the initial application code and gets called
|
|
32
32
|
* during startup of the application
|
|
33
|
-
*
|
|
33
|
+
*
|
|
34
34
|
* @lint ignoreDeprecated(alert)
|
|
35
35
|
*/
|
|
36
|
-
main
|
|
36
|
+
main()
|
|
37
37
|
{
|
|
38
38
|
// Call super class
|
|
39
|
-
|
|
39
|
+
super.main();
|
|
40
40
|
|
|
41
41
|
// Enable logging in debug variant
|
|
42
42
|
if (qx.core.Environment.get("qx.debug"))
|
|
@@ -54,10 +54,10 @@ qx.Class.define("${namespace}.Application",
|
|
|
54
54
|
*/
|
|
55
55
|
|
|
56
56
|
// Create a button
|
|
57
|
-
|
|
57
|
+
const button1 = new qx.ui.form.Button("Click me", "${namespace_as_path}/test.png");
|
|
58
58
|
|
|
59
59
|
// Document is the application root
|
|
60
|
-
|
|
60
|
+
const doc = this.getRoot();
|
|
61
61
|
|
|
62
62
|
// Add button to document at fixed coordinates
|
|
63
63
|
doc.add(button1, {left: 100, top: 50});
|
|
@@ -69,4 +69,4 @@ qx.Class.define("${namespace}.Application",
|
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
});
|
|
72
|
+
});
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* This class demonstrates how to define unit tests for your application.
|
|
13
13
|
*
|
|
14
|
-
* Execute <code>qx test</code> to generate a testrunner application
|
|
14
|
+
* Execute <code>qx test</code> to generate a testrunner application
|
|
15
15
|
* and open it from <tt>test/index.html</tt>
|
|
16
16
|
*
|
|
17
|
-
* The methods that contain the tests are instance methods with a
|
|
18
|
-
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
-
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
-
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
17
|
+
* The methods that contain the tests are instance methods with a
|
|
18
|
+
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
+
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
+
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
21
21
|
* <tt>test</tt> folder.
|
|
22
22
|
*/
|
|
23
23
|
qx.Class.define("${namespace}.test.DemoTest",
|
|
@@ -31,11 +31,11 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
31
31
|
TESTS
|
|
32
32
|
---------------------------------------------------------------------------
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
/**
|
|
36
36
|
* Here are some simple tests
|
|
37
37
|
*/
|
|
38
|
-
testSimple
|
|
38
|
+
testSimple()
|
|
39
39
|
{
|
|
40
40
|
this.assertEquals(4, 3+1, "This should never fail!");
|
|
41
41
|
this.assertFalse(false, "Can false be true?!");
|
|
@@ -44,10 +44,10 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
44
44
|
/**
|
|
45
45
|
* Here are some more advanced tests
|
|
46
46
|
*/
|
|
47
|
-
testAdvanced
|
|
47
|
+
testAdvanced()
|
|
48
48
|
{
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
let a = 3;
|
|
50
|
+
let b = a;
|
|
51
51
|
this.assertIdentical(a, b, "A rose by any other name is still a rose");
|
|
52
52
|
this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
|
|
53
53
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js
CHANGED
|
@@ -25,10 +25,10 @@ qx.Class.define("${namespace}.Application",
|
|
|
25
25
|
* This method contains the initial application code and gets called
|
|
26
26
|
* during startup of the application
|
|
27
27
|
*/
|
|
28
|
-
main
|
|
28
|
+
main()
|
|
29
29
|
{
|
|
30
30
|
// Call super class
|
|
31
|
-
|
|
31
|
+
super.main();
|
|
32
32
|
|
|
33
33
|
// Enable logging in debug variant
|
|
34
34
|
if (qx.core.Environment.get("qx.debug"))
|
|
@@ -47,11 +47,11 @@ qx.Class.define("${namespace}.Application",
|
|
|
47
47
|
-------------------------------------------------------------------------
|
|
48
48
|
*/
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
const login = new ${namespace}.page.Login();
|
|
51
|
+
const overview = new ${namespace}.page.Overview();
|
|
52
52
|
|
|
53
53
|
// Add the pages to the page manager.
|
|
54
|
-
|
|
54
|
+
const manager = new qx.ui.mobile.page.Manager(false);
|
|
55
55
|
manager.addDetail([
|
|
56
56
|
login,
|
|
57
57
|
overview
|
|
@@ -69,7 +69,7 @@ qx.Class.define("${namespace}.Application",
|
|
|
69
69
|
* Default behaviour when a route matches. Displays the corresponding page on screen.
|
|
70
70
|
* @param data {Map} the animation properties
|
|
71
71
|
*/
|
|
72
|
-
_show
|
|
72
|
+
_show(data) {
|
|
73
73
|
this.show(data.customData);
|
|
74
74
|
}
|
|
75
75
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js
CHANGED
|
@@ -15,9 +15,9 @@ qx.Class.define("${namespace}.page.Login",
|
|
|
15
15
|
{
|
|
16
16
|
extend : qx.ui.mobile.page.NavigationPage,
|
|
17
17
|
|
|
18
|
-
construct
|
|
18
|
+
construct()
|
|
19
19
|
{
|
|
20
|
-
|
|
20
|
+
super();
|
|
21
21
|
this.setTitle("Login");
|
|
22
22
|
},
|
|
23
23
|
|
|
@@ -28,22 +28,22 @@ qx.Class.define("${namespace}.page.Login",
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
// overridden
|
|
31
|
-
_initialize
|
|
32
|
-
|
|
31
|
+
_initialize() {
|
|
32
|
+
super._initialize();
|
|
33
33
|
|
|
34
34
|
// Username
|
|
35
|
-
|
|
35
|
+
const user = new qx.ui.mobile.form.TextField();
|
|
36
36
|
user.setRequired(true);
|
|
37
37
|
|
|
38
38
|
// Password
|
|
39
|
-
|
|
39
|
+
const pwd = new qx.ui.mobile.form.PasswordField();
|
|
40
40
|
pwd.setRequired(true);
|
|
41
41
|
|
|
42
42
|
// Login Button
|
|
43
|
-
|
|
43
|
+
const loginButton = new qx.ui.mobile.form.Button("Login");
|
|
44
44
|
loginButton.addListener("tap", this._onButtonTap, this);
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
const loginForm = this.__form = new qx.ui.mobile.form.Form();
|
|
47
47
|
loginForm.add(user, "Username");
|
|
48
48
|
loginForm.add(pwd, "Password");
|
|
49
49
|
|
|
@@ -56,7 +56,7 @@ qx.Class.define("${namespace}.page.Login",
|
|
|
56
56
|
/**
|
|
57
57
|
* Event handler for <code>tap</code> on the login button.
|
|
58
58
|
*/
|
|
59
|
-
_onButtonTap
|
|
59
|
+
_onButtonTap() {
|
|
60
60
|
// use form validation
|
|
61
61
|
if (this.__form.validate()) {
|
|
62
62
|
qx.core.Init.getApplication().getRouting().executeGet("/overview");
|
package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js
CHANGED
|
@@ -15,9 +15,9 @@ qx.Class.define("${namespace}.page.Overview",
|
|
|
15
15
|
{
|
|
16
16
|
extend : qx.ui.mobile.page.NavigationPage,
|
|
17
17
|
|
|
18
|
-
construct
|
|
18
|
+
construct()
|
|
19
19
|
{
|
|
20
|
-
|
|
20
|
+
super();
|
|
21
21
|
this.setTitle("Overview");
|
|
22
22
|
this.setShowBackButton(true);
|
|
23
23
|
this.setBackButtonText("Back");
|
|
@@ -27,16 +27,16 @@ qx.Class.define("${namespace}.page.Overview",
|
|
|
27
27
|
members :
|
|
28
28
|
{
|
|
29
29
|
// overridden
|
|
30
|
-
_initialize
|
|
30
|
+
_initialize()
|
|
31
31
|
{
|
|
32
|
-
|
|
32
|
+
super._initialize(arguments);
|
|
33
33
|
|
|
34
34
|
this.getContent().add(new qx.ui.mobile.basic.Label("Your first app."));
|
|
35
35
|
},
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
// overridden
|
|
39
|
-
_back
|
|
39
|
+
_back(triggeredByKeyEvent)
|
|
40
40
|
{
|
|
41
41
|
qx.core.Init.getApplication().getRouting().back();
|
|
42
42
|
}
|
|
@@ -24,15 +24,15 @@ qx.Class.define("${namespace}.demo.Application",
|
|
|
24
24
|
members :
|
|
25
25
|
{
|
|
26
26
|
/**
|
|
27
|
-
* This method contains the initial application code and gets called
|
|
27
|
+
* This method contains the initial application code and gets called
|
|
28
28
|
* during startup of the application
|
|
29
|
-
*
|
|
29
|
+
*
|
|
30
30
|
* @lint ignoreDeprecated(alert)
|
|
31
31
|
*/
|
|
32
|
-
main
|
|
32
|
+
main()
|
|
33
33
|
{
|
|
34
34
|
// Call super class
|
|
35
|
-
|
|
35
|
+
super.main();
|
|
36
36
|
|
|
37
37
|
// Enable logging in debug variant
|
|
38
38
|
if (qx.core.Environment.get("qx.debug"))
|
|
@@ -50,10 +50,10 @@ qx.Class.define("${namespace}.demo.Application",
|
|
|
50
50
|
*/
|
|
51
51
|
|
|
52
52
|
// Create a button
|
|
53
|
-
|
|
53
|
+
const button1 = new ${namespace}.Button("Very special button", "${namespace_as_path}/test.png");
|
|
54
54
|
|
|
55
55
|
// Document is the application root
|
|
56
|
-
|
|
56
|
+
const doc = this.getRoot();
|
|
57
57
|
|
|
58
58
|
// Add button to document at fixed coordinates
|
|
59
59
|
doc.add(button1, {left: 100, top: 50});
|
|
@@ -64,4 +64,4 @@ qx.Class.define("${namespace}.demo.Application",
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
});
|
|
67
|
+
});
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* This class demonstrates how to define unit tests for your application.
|
|
13
13
|
*
|
|
14
|
-
* Execute <code>qx test</code> to generate a testrunner application
|
|
14
|
+
* Execute <code>qx test</code> to generate a testrunner application
|
|
15
15
|
* and open it from <tt>test/index.html</tt>
|
|
16
16
|
*
|
|
17
|
-
* The methods that contain the tests are instance methods with a
|
|
18
|
-
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
-
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
-
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
17
|
+
* The methods that contain the tests are instance methods with a
|
|
18
|
+
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
+
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
+
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
21
21
|
* <tt>test</tt> folder.
|
|
22
22
|
*/
|
|
23
23
|
qx.Class.define("${namespace}.test.DemoTest",
|
|
@@ -31,11 +31,11 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
31
31
|
TESTS
|
|
32
32
|
---------------------------------------------------------------------------
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
/**
|
|
36
36
|
* Here are some simple tests
|
|
37
37
|
*/
|
|
38
|
-
testSimple
|
|
38
|
+
testSimple()
|
|
39
39
|
{
|
|
40
40
|
this.assertEquals(4, 3+1, "This should never fail!");
|
|
41
41
|
this.assertFalse(false, "Can false be true?!");
|
|
@@ -44,10 +44,10 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
44
44
|
/**
|
|
45
45
|
* Here are some more advanced tests
|
|
46
46
|
*/
|
|
47
|
-
testAdvanced
|
|
47
|
+
testAdvanced()
|
|
48
48
|
{
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
let a = 3;
|
|
50
|
+
let b = a;
|
|
51
51
|
this.assertIdentical(a, b, "A rose by any other name is still a rose");
|
|
52
52
|
this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
|
|
53
53
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js
CHANGED
|
@@ -34,7 +34,7 @@ qx.Class.define("${namespace}.Application",
|
|
|
34
34
|
* This method contains the initial application code and gets called
|
|
35
35
|
* during startup of the application
|
|
36
36
|
*/
|
|
37
|
-
main
|
|
37
|
+
main()
|
|
38
38
|
{
|
|
39
39
|
if (qx.core.Environment.get("runtime.name") == "rhino") {
|
|
40
40
|
qx.log.Logger.register(qx.log.appender.RhinoConsole);
|
|
@@ -59,10 +59,10 @@ qx.Class.define("${namespace}.Application",
|
|
|
59
59
|
*
|
|
60
60
|
* @param args {String[]} Rhino arguments object
|
|
61
61
|
*/
|
|
62
|
-
_argumentsToSettings
|
|
62
|
+
_argumentsToSettings(args)
|
|
63
63
|
{
|
|
64
|
-
|
|
65
|
-
for (
|
|
64
|
+
let opts;
|
|
65
|
+
for (let i=0, l=args.length; i<l; i++) {
|
|
66
66
|
if (args[i].indexOf("settings=") == 0) {
|
|
67
67
|
opts = args[i].substr(9);
|
|
68
68
|
break;
|
|
@@ -75,8 +75,8 @@ qx.Class.define("${namespace}.Application",
|
|
|
75
75
|
if (opts) {
|
|
76
76
|
opts = opts.replace(/\\\{/g, "{").replace(/\\\}/g, "}");
|
|
77
77
|
opts = qx.lang.Json.parse(opts);
|
|
78
|
-
for (
|
|
79
|
-
|
|
78
|
+
for (let prop in opts) {
|
|
79
|
+
let value = opts[prop];
|
|
80
80
|
if (typeof value == "string") {
|
|
81
81
|
value = value.replace(/\$$/g, " ");
|
|
82
82
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js
CHANGED
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* This class demonstrates how to define unit tests for your application.
|
|
13
13
|
*
|
|
14
|
-
* Execute <code>qx test</code> to generate a testrunner application
|
|
14
|
+
* Execute <code>qx test</code> to generate a testrunner application
|
|
15
15
|
* and open it from <tt>test/index.html</tt>
|
|
16
16
|
*
|
|
17
|
-
* The methods that contain the tests are instance methods with a
|
|
18
|
-
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
-
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
-
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
17
|
+
* The methods that contain the tests are instance methods with a
|
|
18
|
+
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
+
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
+
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
21
21
|
* <tt>test</tt> folder.
|
|
22
22
|
*/
|
|
23
23
|
qx.Class.define("${namespace}.test.DemoTest",
|
|
@@ -33,11 +33,11 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
33
33
|
TESTS
|
|
34
34
|
---------------------------------------------------------------------------
|
|
35
35
|
*/
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
/**
|
|
38
38
|
* Here are some simple tests
|
|
39
39
|
*/
|
|
40
|
-
testSimple
|
|
40
|
+
testSimple()
|
|
41
41
|
{
|
|
42
42
|
this.assertEquals(4, 3+1, "This should never fail!");
|
|
43
43
|
this.assertFalse(false, "Can false be true?!");
|
|
@@ -46,20 +46,20 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
46
46
|
/**
|
|
47
47
|
* Here are some more advanced tests
|
|
48
48
|
*/
|
|
49
|
-
testAdvanced
|
|
49
|
+
testAdvanced()
|
|
50
50
|
{
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
let a = 3;
|
|
52
|
+
let b = a;
|
|
53
53
|
this.assertIdentical(a, b, "A rose by any other name is still a rose");
|
|
54
54
|
this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
|
|
55
55
|
},
|
|
56
56
|
|
|
57
|
-
hasNodeJs
|
|
57
|
+
hasNodeJs()
|
|
58
58
|
{
|
|
59
59
|
return qx.core.Environment.get("runtime.name") == "node.js";
|
|
60
60
|
},
|
|
61
61
|
|
|
62
|
-
testNodeJs
|
|
62
|
+
testNodeJs()
|
|
63
63
|
{
|
|
64
64
|
this.require(["nodeJs"]);
|
|
65
65
|
// test node stuff
|
|
@@ -8,7 +8,7 @@ This is the built in web server for Qooxdoo, serving your application.
|
|
|
8
8
|
|
|
9
9
|
You can find Qooxdoo on the web at http://www.qooxdoo.org and on GitHub at http://github.com/qooxdoo/qooxdoo.
|
|
10
10
|
|
|
11
|
-
If you have questions, please ask them at [
|
|
11
|
+
If you have questions, please ask them at [Stack Overflow](https://stackoverflow.com/questions/tagged/qooxdoo) and make sure you use the "qooxdoo" tag when you post.
|
|
12
12
|
|
|
13
13
|
If you want to discuss anything, please contact us using Gitter in the [qooxdoo/qooxdoo](http://gitter.im/qooxdoo/qooxdoo) group, either [via a web browser](http://gitter.im/qooxdoo/qooxdoo) or via the Gitter app.
|
|
14
14
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qooxdoo/framework",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.1",
|
|
4
4
|
"description": "The JS Framework for Coders",
|
|
5
5
|
"author": "The qooxdoo project",
|
|
6
6
|
"keywords": [
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"tmp": "0.2.1",
|
|
119
119
|
"unset-value": "^1.0.0",
|
|
120
120
|
"upath": "^1.2.0",
|
|
121
|
-
"update-notifier": "^
|
|
121
|
+
"update-notifier": "^6.0.2",
|
|
122
122
|
"xml2js": "^0.4.23",
|
|
123
123
|
"yargs": "^15.4.1"
|
|
124
124
|
},
|
package/source/class/qx/Class.js
CHANGED
|
@@ -491,7 +491,7 @@ qx.Bootstrap.define("qx.Class", {
|
|
|
491
491
|
*
|
|
492
492
|
* @param clazz {Class} class to look for the property
|
|
493
493
|
* @param name {String} name of the property
|
|
494
|
-
* @return {Class
|
|
494
|
+
* @return {Class|null} The class which includes the property
|
|
495
495
|
*/
|
|
496
496
|
getByProperty(clazz, name) {
|
|
497
497
|
while (clazz) {
|
|
@@ -554,7 +554,7 @@ qx.Bootstrap.define("qx.Class", {
|
|
|
554
554
|
*
|
|
555
555
|
* @param clazz {Class} class to look for the mixin
|
|
556
556
|
* @param mixin {Mixin} mixin to look for
|
|
557
|
-
* @return {Class
|
|
557
|
+
* @return {Class|null} The class which directly includes the given mixin
|
|
558
558
|
*/
|
|
559
559
|
getByMixin(clazz, mixin) {
|
|
560
560
|
var list, i, l;
|
|
@@ -619,7 +619,7 @@ qx.Bootstrap.define("qx.Class", {
|
|
|
619
619
|
* @signature function(clazz, iface)
|
|
620
620
|
* @param clazz {Class} class to look for the interface
|
|
621
621
|
* @param iface {Interface} interface to look for
|
|
622
|
-
* @return {Class
|
|
622
|
+
* @return {Class|null} the class which directly implements the given interface
|
|
623
623
|
*/
|
|
624
624
|
getByInterface: qx.util.OOUtil.getByInterface,
|
|
625
625
|
|
|
@@ -45,7 +45,7 @@ qx.Bootstrap.define("qx.bom.Cookie", {
|
|
|
45
45
|
* Returns the string value of a cookie.
|
|
46
46
|
*
|
|
47
47
|
* @param key {String} The key for the saved string value.
|
|
48
|
-
* @return {null
|
|
48
|
+
* @return {null|String} Returns the saved string value, if the cookie
|
|
49
49
|
* contains a value for the key, <code>null</code> otherwise.
|
|
50
50
|
*/
|
|
51
51
|
get(key) {
|
|
@@ -922,7 +922,7 @@ qx.Class.define("qx.data.Array", {
|
|
|
922
922
|
* Returns the highest value in the given array.
|
|
923
923
|
* Supports numeric values only.
|
|
924
924
|
*
|
|
925
|
-
* @return {Number
|
|
925
|
+
* @return {Number|null} The highest of all values or undefined if the
|
|
926
926
|
* array is empty.
|
|
927
927
|
*/
|
|
928
928
|
max() {
|
|
@@ -941,7 +941,7 @@ qx.Class.define("qx.data.Array", {
|
|
|
941
941
|
* Returns the lowest value in the array. Supports
|
|
942
942
|
* numeric values only.
|
|
943
943
|
*
|
|
944
|
-
* @return {Number
|
|
944
|
+
* @return {Number|null} The lowest of all values or undefined
|
|
945
945
|
* if the array is empty.
|
|
946
946
|
*/
|
|
947
947
|
min() {
|
|
@@ -1017,7 +1017,7 @@ qx.Class.define("qx.data.Array", {
|
|
|
1017
1017
|
* <li><code>index</code>: the index of the current item</li>
|
|
1018
1018
|
* <li><code>array</code>: The native array instance, NOT the data array instance.</li>
|
|
1019
1019
|
* @param self {var?undefined} The context of the callback.
|
|
1020
|
-
* @return {var
|
|
1020
|
+
* @return {var|undefined} The found item.
|
|
1021
1021
|
*/
|
|
1022
1022
|
find(callback, self) {
|
|
1023
1023
|
return this.__array.find(callback, self);
|
|
@@ -927,7 +927,7 @@ qx.Class.define("qx.data.SingleValueBinding", {
|
|
|
927
927
|
* @param targetProperties {String[]} Array containing the names of the properties
|
|
928
928
|
* @param index {Number?} The array index of the last property to be considered.
|
|
929
929
|
* Default: The last item's index
|
|
930
|
-
* @return {qx.core.Object
|
|
930
|
+
* @return {qx.core.Object|null} The object on which the last property
|
|
931
931
|
* should be set.
|
|
932
932
|
*/
|
|
933
933
|
__getTargetFromChain(targetObject, targetProperties, index) {
|
|
@@ -103,7 +103,7 @@ qx.Bootstrap.define("qx.dom.Hierarchy", {
|
|
|
103
103
|
* "nextSibling" is not good enough as it might return a text or comment element
|
|
104
104
|
*
|
|
105
105
|
* @param element {Element} Starting element node
|
|
106
|
-
* @return {Element
|
|
106
|
+
* @return {Element|null} Next element node
|
|
107
107
|
*/
|
|
108
108
|
getNextElementSibling(element) {
|
|
109
109
|
while (
|
|
@@ -123,7 +123,7 @@ qx.Bootstrap.define("qx.dom.Hierarchy", {
|
|
|
123
123
|
* "previousSibling" is not good enough as it might return a text or comment element
|
|
124
124
|
*
|
|
125
125
|
* @param element {Element} Starting element node
|
|
126
|
-
* @return {Element
|
|
126
|
+
* @return {Element|null} Previous element node
|
|
127
127
|
*/
|
|
128
128
|
getPreviousElementSibling(element) {
|
|
129
129
|
while (
|
|
@@ -260,7 +260,7 @@ qx.Class.define("qx.event.Manager", {
|
|
|
260
260
|
* @param type {String} Event type
|
|
261
261
|
* @param capture {Boolean ? false} Whether the listener is for the
|
|
262
262
|
* capturing phase of the bubbling phase.
|
|
263
|
-
* @return {Array
|
|
263
|
+
* @return {Array|null} Array of registered event handlers. May return
|
|
264
264
|
* null when no listener were found.
|
|
265
265
|
*/
|
|
266
266
|
getListeners(target, type, capture) {
|
|
@@ -423,7 +423,7 @@ qx.Bootstrap.define("qx.event.handler.TouchCore", {
|
|
|
423
423
|
* Checks which elements are placed to position x/y and traverses the array
|
|
424
424
|
* till one element has no "pointer-events:none" inside its style attribute.
|
|
425
425
|
* @param domEvent {Event} DOM event
|
|
426
|
-
* @return {Element
|
|
426
|
+
* @return {Element|null} Event target
|
|
427
427
|
*/
|
|
428
428
|
__evaluateTarget(domEvent) {
|
|
429
429
|
var clientX = null;
|
|
@@ -37,7 +37,7 @@ qx.Class.define("qx.html.Jsx", {
|
|
|
37
37
|
* @param tagname {String} the name of the tag
|
|
38
38
|
* @param attributes {Map?} map of attribute values
|
|
39
39
|
* @param children {qx.html.Node[]} array of children
|
|
40
|
-
* @return {qx.html.Element
|
|
40
|
+
* @return {qx.html.Element|qx.data.Array}
|
|
41
41
|
*/
|
|
42
42
|
createElement(tagname, attributes) {
|
|
43
43
|
var children = qx.lang.Array.fromArguments(arguments, 2);
|
|
@@ -420,7 +420,7 @@ qx.Bootstrap.define("qx.lang.Array", {
|
|
|
420
420
|
* numeric values only.
|
|
421
421
|
*
|
|
422
422
|
* @param arr {Number[]} Array to process
|
|
423
|
-
* @return {Number
|
|
423
|
+
* @return {Number|null} The highest of all values or undefined if array is empty.
|
|
424
424
|
*/
|
|
425
425
|
max(arr) {
|
|
426
426
|
if (qx.core.Environment.get("qx.debug")) {
|
|
@@ -446,7 +446,7 @@ qx.Bootstrap.define("qx.lang.Array", {
|
|
|
446
446
|
* numeric values only.
|
|
447
447
|
*
|
|
448
448
|
* @param arr {Number[]} Array to process
|
|
449
|
-
* @return {Number
|
|
449
|
+
* @return {Number|null} The lowest of all values or undefined if array is empty.
|
|
450
450
|
*/
|
|
451
451
|
min(arr) {
|
|
452
452
|
if (qx.core.Environment.get("qx.debug")) {
|
|
@@ -173,30 +173,27 @@ qx.Bootstrap.define("qx.lang.Function", {
|
|
|
173
173
|
return func;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
if (qx.core.Environment.get("qx.debug")) {
|
|
177
|
-
function testSelf(self) {
|
|
178
|
-
if (
|
|
179
|
-
qx.core.Object &&
|
|
180
|
-
self &&
|
|
181
|
-
qx.Bootstrap.isObject(self) &&
|
|
182
|
-
self.isDisposed &&
|
|
183
|
-
qx.Bootstrap.isFunction(self.isDisposed)
|
|
184
|
-
) {
|
|
185
|
-
if (self.isDisposed()) {
|
|
186
|
-
qx.core.Assert &&
|
|
187
|
-
qx.core.Assert.fail(
|
|
188
|
-
"Trying to call a bound function with a disposed object as context: " +
|
|
189
|
-
self.toString() +
|
|
190
|
-
" :: " +
|
|
191
|
-
qx.lang.Function.getName(func)
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
176
|
return function (event) {
|
|
199
177
|
if (qx.core.Environment.get("qx.debug")) {
|
|
178
|
+
function testSelf(self) {
|
|
179
|
+
if (
|
|
180
|
+
qx.core.Object &&
|
|
181
|
+
self &&
|
|
182
|
+
qx.Bootstrap.isObject(self) &&
|
|
183
|
+
self.isDisposed &&
|
|
184
|
+
qx.Bootstrap.isFunction(self.isDisposed)
|
|
185
|
+
) {
|
|
186
|
+
if (self.isDisposed()) {
|
|
187
|
+
qx.core.Assert &&
|
|
188
|
+
qx.core.Assert.fail(
|
|
189
|
+
"Trying to call a bound function with a disposed object as context: " +
|
|
190
|
+
self.toString() +
|
|
191
|
+
" :: " +
|
|
192
|
+
qx.lang.Function.getName(func)
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
200
197
|
testSelf(options.self || this);
|
|
201
198
|
}
|
|
202
199
|
|
|
@@ -32,7 +32,7 @@ qx.Mixin.define("qx.locale.MTranslation", {
|
|
|
32
32
|
*
|
|
33
33
|
* @param messageId {String} message id (may contain format strings)
|
|
34
34
|
* @param varargs {Object?} variable number of arguments applied to the format string
|
|
35
|
-
* @return {String
|
|
35
|
+
* @return {String|LocalizedString} The translated message or localized string
|
|
36
36
|
*/
|
|
37
37
|
tr(messageId, varargs) {
|
|
38
38
|
var nlsManager = qx.locale.Manager;
|
|
@@ -55,7 +55,7 @@ qx.Mixin.define("qx.locale.MTranslation", {
|
|
|
55
55
|
* @param pluralMessageId {String} message id of the plural form (may contain format strings)
|
|
56
56
|
* @param count {Integer} if greater than 1 the plural form otherwise the singular form is returned.
|
|
57
57
|
* @param varargs {Object?} variable number of arguments applied to the format string
|
|
58
|
-
* @return {String
|
|
58
|
+
* @return {String|LocalizedString} The translated message or localized string
|
|
59
59
|
*/
|
|
60
60
|
trn(singularMessageId, pluralMessageId, count, varargs) {
|
|
61
61
|
var nlsManager = qx.locale.Manager;
|
|
@@ -75,7 +75,7 @@ qx.Mixin.define("qx.locale.MTranslation", {
|
|
|
75
75
|
* @param hint {String} hint for the translator of the message. Will be included in the .po file.
|
|
76
76
|
* @param messageId {String} message id (may contain format strings)
|
|
77
77
|
* @param varargs {Object?} variable number of arguments applied to the format string
|
|
78
|
-
* @return {String
|
|
78
|
+
* @return {String|LocalizedString} The translated message or localized string
|
|
79
79
|
*/
|
|
80
80
|
trc(hint, messageId, varargs) {
|
|
81
81
|
var nlsManager = qx.locale.Manager;
|
|
@@ -99,7 +99,7 @@ qx.Mixin.define("qx.locale.MTranslation", {
|
|
|
99
99
|
* @param pluralMessageId {String} message id of the plural form (may contain format strings)
|
|
100
100
|
* @param count {Integer} if greater than 1 the plural form otherwise the singular form is returned.
|
|
101
101
|
* @param varargs {Object?} variable number of arguments applied to the format string
|
|
102
|
-
* @return {String
|
|
102
|
+
* @return {String|LocalizedString} The translated message or localized string
|
|
103
103
|
*/
|
|
104
104
|
trnc(hint, singularMessageId, pluralMessageId, count, varargs) {
|
|
105
105
|
var nlsManager = qx.locale.Manager;
|