Ext.define('PVE.form.RealmComboBox', { extend: 'Ext.form.field.ComboBox', alias: ['widget.pveRealmComboBox'], fieldLabel: gettext('Realm'), name: 'realm', queryMode: 'local', allowBlank: false, editable: false, forceSelection: true, autoSelect: false, triggerAction: 'all', valueField: 'realm', displayField: 'descr', getState: function() { return { value: this.getValue() }; }, applyState : function(state) { if (state && state.value) { this.setValue(state.value); } }, stateEvents: [ 'select' ], stateful: true, // last chosen auth realm is saved between page reloads id: 'pveloginrealm', // We need stable ids when using stateful, not autogenerated stateID: 'pveloginrealm', needOTP: function(realm) { var me = this; // use exact match var rec = me.store.findRecord('realm', realm, 0, false, false, true); return rec && rec.data && rec.data.tfa ? rec.data.tfa : undefined; }, initComponent: function() { var me = this; me.store = Ext.create('Ext.data.Store', { model: 'pve-domains' }); me.callParent(); me.store.load({ callback: function(r, o, success) { if (success) { var def = me.getValue(); if (!def || !me.store.findRecord('realm', def)) { def = 'pam'; Ext.each(r, function(record) { if (record.data && record.data["default"]) { def = record.data.realm; } }); } if (def) { me.setValue(def); } } } }); } });