What Is ExtJS ExtJS 4+ Extensions Examples Tutorials

19Aug/160

Layout Run Error: Case of Toolbar

Last year I wrote about the rather grim approach to troubleshooting ExtJS 4 (or 6 Classic) "Layout Run Error" issues:

Debugging ExtJS "Layout Run Error"

Now I came across a scenario now with a rather simple and unexpected fix. Consider this scenario where a panel specifies defaults for the "collapsible" behaviors of its child panels, but also has a toolbar as a child:

{
    title: 'Floating Footer',
    autoScroll: true,
    defaults: {
        xtype: 'panel',
        collapsible: true,
        collapsed: true,
        titleCollapse: true,
        margin: '0 30 0 30'
    },
    items: [{
        title: 'Panel 1',
        margin: '30 30 0 30',
        html: 'Panel content!'
    },{
        title: 'Panel 2',
        html: new Array(1000).join('Lorem ipsum '),
        collapsed: false
    },{
        title: 'Panel 3',
        html: 'Panel content!'
    },{
        xtype: 'toolbar',
        margin: '30 30 30 30',
        items: [{text: 'Back'}, '->', {text: 'Next'}]
    }]
}

A seemingly harmless configuration, this would throw "Layout Run Error" all day long with ExtJS 4.2. Why? Because apparently the "collapsible" configurations in the defaults somehow affect the toolbar (who while not a panel, but is a container). Easy fix - negate those configurations on the toolbar:

{
    xtype: 'toolbar',
    margin: '30 30 30 30',
    collapsible: false,
    collapsed: false,
    titleCollapse: false,
    items: [{text: 'Back'}, '->', {text: 'Next'}]
}
VN:F [1.9.22_1171]
Rating: 10.0/10 (2 votes cast)
30Apr/150

ExtJS 6 vs. Responsive

A few weeks ago I was at SenchaCon 2015 and majority of the sessions I attended revolved around ExtJS6 and Sencha's responsive strategy. In summary: an effort has been made to converge ExtJS5 and Sencha Touch 2, but ultimately you will still be building a separate ExtJS and a separate Touch app. You do not end up with truly "one framework", which is what I hoped for. Read on for details...

VN:F [1.9.22_1171]
Rating: 7.7/10 (11 votes cast)
6Nov/140

Old Versions of Sencha CMD

Sencha CMD is a must-have if you're doing any professional ExtJS or Sencha Touch app development. You can always get the latest version from Sencha's product page, but what if you wanted to get an older version? Sure, upgrading to the latest version is an option, but we all know how smooth those upgrades can go (or not, especially if you messed with the build scripts).

TLDR
Older versions with release notes are available via this URL pattern:

http://cdn.sencha.com/cmd/x.x.x.xxx/release-notes.html

For instance:

http://cdn.sencha.com/cmd/3.1.2.342/release-notes.html
http://cdn.sencha.com/cmd/5.0.3.324/release-notes.html

So, the caveat is that you have to know the exact version which you're after!

VN:F [1.9.22_1171]
Rating: 9.0/10 (6 votes cast)
23Aug/140

ExtJS 4 and 5 vs. IE 6 thru 11

Get a neck stretch and a clear picture of legacy through modern IE support in ExtJS 4 and 5:

ExtJS 4 & 5 vs. IE 6 thru 11

Note that the Neptune theme, which shipped in an ExtJS 4 dot release, does not support IE6. It makes use of transparent PNGs, which aren't supported in IE6.

One of the greatest advantages of the ExtJS framework is how far back it supports IEs. The interesting thing here is the "adaptive markup" that it generates, say for a framed panel with gradient headers:

  • Pre-IE9: a "heavy" table frame with every edge and corner having a sliced image of the frame
  • IE9 (introduced round corners): still a bit of framing for the header gradient image if used with rounded corners
  • IE10 & 11: minimal markup utilizing CSS3 effects
VN:F [1.9.22_1171]
Rating: 10.0/10 (4 votes cast)
31Jul/140

shrinkWrap in ExtJS 4 and 5 Containers

ExtJS Containers and Panels are typically sized by their parent container's layout. Traveling up the layout chain typically leads to a Viewport, which occupies the available screen space; i.e. (view in Sencha Fiddle):

sample viewport

Now what about those times when you want to use these beautiful panels as the actual content, rather than as holders of other content? In other words, how can we make the Panels size based on their content (rather than as dictated by their parent's layout)? The end result might look something like this:

sample panel shrinkWrap

Read on to find out how its done and what caveats exist...

VN:F [1.9.22_1171]
Rating: 9.3/10 (6 votes cast)
Page 1 of 41234