Success! Looks like we've fixed this one. According to our records the fix was applied for EXTJS-8643 in 4.2.0.663.
  1. #1
    Touch Premium Member
    Join Date
    Apr 2011
    Posts
    61
    Vote Rating
    0
    gbjk is on a distinguished road

      0  

    Default Form fields in docked items don't fire form's dirty event

    Form fields in docked items don't fire form's dirty event


    ExtJS 4.1.3

    We've got a form Panel onDirtyChange, which fires an event that allows buttons to be changed as relevant.
    We noticed that it wasn't firing when you change a field in a toolbar docked in the form (example below).

    This is because the Ext.form.Basic relies upon the add event being fired, which isn't fired for docked items. I hunted back to where initDockingItems is called, and as a quick and dirty solution, just jammed in the onDockedAdd function I saw it would call.

    This fixed my problem, but nearly definitely isn't the right solution:
    Code:
    Ext.define('carsplus.override.form.Panel', {
        override:   'Ext.form.Panel',
        constructor: function(){
            var me = this;
            this.onDockedAdd = function(item){
                this.form.onItemAddOrRemove(this, item);
            }
            me.callParent(arguments);
        }
    });

    Example form:
    Code:
    Ext.define('carsplus.view.user', {
        extend : 'Ext.panel.Panel',
        alias  : 'widget.user',
    
        frame         : false,
        autoScroll    : true,
        layout        : {
            type : 'fit'
        },
        closable      : true,
        collapseFirst : false,
        header        : false,
        iconCls       : 'people',
        title         : '!Staff',
    
        initComponent : function () {
            var me = this;
    
            Ext.applyIf(me, {
                items : [
                    {
                        xtype            : 'form',
                        itemId           : 'user',
                        autoScroll       : true,
                        layout           : {
                            type : 'column'
                        },
                        bodyPadding      : 10,
                        header           : false,
                        title            : 'My Form',
                        trackResetOnLoad : true,
                        listeners        : {
                            dirtychange : function() {
                                console.log('dirtychange');
                            }
                        },
                        dockedItems      : [
                            {
                                xtype : 'toolbar',
                                dock  : 'top',
                                items : [
                                    {
                                        xtype        : 'combobox',
                                        itemId       : 'username',
                                        name         : 'username',
                                        fieldLabel   : '!Username',
                                        labelWidth   : 60,
                                        displayField : 'username',
                                        queryMode    : 'local',
                                        store        : {
                                            fields : ['username'],
                                            data   : [
                                                { username : 'foo' },
                                                { username : 'bar' }
                                            ]
                                        }
                                    },
                                    {
                                        xtype      : 'textfield',
                                        fieldLabel : 'Foo'
                                    }
                                ]
                            }
                        ],
                        items            : [
                            {
                                xtype       : 'fieldcontainer',
                                columnWidth : 0.5,
                                margin      : '0 20 0 0',
                                maxWidth    : 350,
                                autoScroll  : true,
                                layout      : {
                                    align   : 'stretch',
                                    padding : '0 40 0 0',
                                    type    : 'vbox'
                                },
                                fieldLabel  : '',
                                items       : [
                                    {
                                        xtype      : 'textfield',
                                        name       : 'empl_first_name',
                                        fieldLabel : '!First Name'
                                    },
                                    {
                                        xtype      : 'textfield',
                                        name       : 'empl_last_name',
                                        fieldLabel : '!Last Name'
                                    }
                                ]
                            }
                        ]
                    }
                ]
            });
    
            me.callParent(arguments);
        }
    });
    Thanks

    Gareth

  2. #2
    Sencha - Senior Forum Manager mitchellsimoens's Avatar
    Join Date
    Mar 2007
    Location
    Gainesville, FL
    Posts
    36,620
    Vote Rating
    817
    mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute mitchellsimoens has a reputation beyond repute

      0  

    Default


    Thanks for the report! I have opened a bug in our bug tracker.

  3. #3
    Touch Premium Member
    Join Date
    Apr 2011
    Posts
    61
    Vote Rating
    0
    gbjk is on a distinguished road

      0  

    Default


    Hi,

    Stupid question, but how do I know when this has been released.
    I've checked back, and the forum *always* says "recently", even for bugs reported 3 years ago and fixed.
    I can't find a change log file for ExtJS, so I can't work out if this was fixed in 4.2.0 or 4.2.1, or hasn't yet been released.

    Thanks

    Gareth

Thread Participants: 1