UNPKG

extjs-gpl

Version:

GPL licensed version of Sencha Ext JS

86 lines (67 loc) 2.64 kB
/** * @class Admin.view.forms.WizardFormController */ Ext.define('Admin.view.forms.WizardFormController', { extend: 'Ext.app.ViewController', alias: 'controller.wizardform', init: function(view) { var tb = this.lookupReference('navigation-toolbar'), buttons = tb.items.items, ui = view.colorScheme; //Apply styling buttons if (ui) { buttons[1].setUI(ui); buttons[2].setUI(ui); } }, onNextClick: function(button) { //This is where you can handle any logic prior to moving to the next card var panel = button.up('panel'); panel.getViewModel().set('atBeginning', false); this.navigate(button, panel, 'next'); }, onPreviousClick: function(button) { var panel = button.up('panel'); panel.getViewModel().set('atEnd', false); this.navigate(button, panel, 'prev'); }, navigate: function(button, panel, direction) { var layout = panel.getLayout(), progress = this.lookupReference('progress'), model = panel.getViewModel(), progressItems = progress.items.items, item, i, activeItem, activeIndex; layout[direction](); activeItem = layout.getActiveItem(); activeIndex = panel.items.indexOf(activeItem); for (i = 0; i < progressItems.length; i++) { item = progressItems[i]; if (activeIndex === item.step) { item.setPressed(true); } else { item.setPressed(false); } // IE8 has an odd bug with handling font icons in pseudo elements; // it will render the icon once and not update it when something // like text color is changed via style addition or removal. // We have to force icon repaint by adding a style with forced empty // pseudo element content, (x-sync-repaint) and removing it back to work // around this issue. // See this: https://github.com/FortAwesome/Font-Awesome/issues/954 // and this: https://github.com/twbs/bootstrap/issues/13863 if (Ext.isIE8) { item.btnIconEl.syncRepaint(); } } activeItem.focus(); // beginning disables previous if (activeIndex === 0) { model.set('atBeginning', true); } // wizard is 4 steps. Disable next at end. if (activeIndex === 3) { model.set('atEnd', true); } } });