![Gitter](https://badges.gitter.im/qooxdoo/qooxdoo.svg)
Qooxdoo JavaScript Framework
qooxdoo is a universal JavaScript framework that enables you to create
applications for a wide range of platforms. With its object-oriented
programming model you build rich, interactive applications (RIAs),
native-like apps for mobile devices, light-weight traditional web
applications or even applications to run outside the browser.
You leverage its integrated tool chain to develop and deploy
applications of any scale, while taking advantage of modern web
technologies like HTML5 and CSS3, its comprehensive feature set and a
state-of-the-art GUI toolkit. qooxdoo is open source under liberal
licenses, led by a dedicated developer team, with a vibrant
community.
For more information please see http://qooxdoo.org .
License
qooxdoo may be used under the terms of the MIT License.
For more information please see http://qooxdoo.org/LICENCSE .
Quick start
It is easy to get started with qooxdoo. For detailed information please
see our Get Started Guide.
Contributing
There are many ways you can contribute to qooxdoo, ranging from providing
feedback, making translations, providing a custom library to full-blown patches
to the code. Please check our web site for details. Mind that for every patch to
the repository we require an open bug in our issue tracker, and that commits to
the repository will fall under qooxdoo's license terms.
Qooxdoo source code is hosted on github/qooxdoo and
we use the standard Issue Tracker and
Pull Requests feature.
Online chat is available via Gitter at https://gitter.im/qooxdoo/qooxdoo (or using
one of the Gitter desktop or mobile clients) - the core team hang out there, as do
other developers who use Qooxdoo.
Learn more
v6.0.0
New Compiler
- New Javascript-based compiler: Previous versions of Qooxdoo used
a Python v2 based tool called the Generator (./generate.py); the
generator is still supported in Qooxdoo v6 but is deprecated and
will be removed completely for Qooxdoo v7. Legacy documentation can
be found here: https://archive.qooxdoo.org/5.0.2/ . To migrate, see
https://qooxdoo.org/documentation/#/development/compiler/migration .
Breaking changes
-
qx.ui.core.scroll.AbstractScrollArea
: The width and height are now fixed.
To reenable dynamic growing, the width or height can be set to null.
-
qx.bom.Cookie
: Previous versions of qooxoo use escape()
and unescape()
functions. Since those functions are deprecated, then now qooxdoo use
encodeURIComponent()
and decodeURIComponent()
functions. This may
break some cookies. There are no issues with special characters like
~!@#$%^&*(){}[]=:/,;?+\'"\\
but some unicode characters like äëíöü
(etc) are encoded different by escape()
and encodeURIComponent()
,
so you must take care of this change if you use unicode characters.
Also, by default cookies are created with SameSite=Strict
, whereas
previously they were created without SameSite
unless you specified
it explicitly; recent browsers block cookies without SameSite
, so
in most cases this will save you from having to make changes to your
code.
-
qx.bom.client.Css
: Removed obsolete IE-Feature check
methods getFilterGradient
and getFilterTextShadow
. If used
in production code, consider them as being a false
value.
-
qx.core.Environment
: Removed obsolete IE-Feature keys
"css.gradient.filter"
and "css.textShadow.filter"
. If used
in production code, consider them as being a false
value.
-
qx.ui.splitpane.Splitter
: New Property knobVisible
toggles
visibility of the splitter's button. Property visible
toggles
visibility of the whole splitte widget (no change from v5.0.x).
-
qx.ui.table.cellrenderer.AbstractImage
: change vertical alignment from top to middle.
-
qx.ui.basic.Image
adds a new scaling feature to preserve the size ratio of the image (ie scaling without stretching); if you enable scaling, the ratio is now preserved by default - if you actually want to stretch an image, you will have to set the image's forceRatio
setting to disabled
-
qxWeb
is now build through the compiler with qx deploy
. The old bootstrap code
q.ready(function() {
});
will not work any longer. The q.ready function is not called. You need to change your bootstrap code to listen to the qx.$$loader
ready event:
qx.$$loader.on("ready", function() {
});