');
var navEle = {};
var lastViewBtnsEle = {};
var leftButtonsEle, rightButtonsEle;
//navEle[BACK_BUTTON] = self.createBackButtonElement(headerBarEle);
navEle[BACK_BUTTON] = createNavElement(BACK_BUTTON);
navEle[BACK_BUTTON] && headerBarEle.append(navEle[BACK_BUTTON]);
// append title in the header, this is the rock to where buttons append
headerBarEle.append(titleEle);
forEach(BUTTON_TYPES, function(buttonType) {
// create default button elements
navEle[buttonType] = createNavElement(buttonType);
// append and position buttons
positionButtons(navEle[buttonType], buttonType);
});
// compile header and append to the DOM
containerEle.append(headerBarEle);
$element.append($compile(containerEle)($scope.$new()));
var headerBarCtrl = headerBarEle.data('$ionHeaderBarController');
var headerBarInstance = {
isActive: isActive,
showBack: function(shouldShow) {
headerBarCtrl.showBack(shouldShow);
},
title: function(newTitleText) {
headerBarCtrl.title(newTitleText);
},
setButtons: function(viewBtnsEle, side) {
// first make sure any exiting view buttons have been removed
headerBarInstance.removeButtons(side);
if (viewBtnsEle) {
// there's a view button for this side
positionButtons(viewBtnsEle, side);
// make sure the default button on this side is hidden
if (navEle[side]) {
navEle[side].addClass(CSS_HIDE);
}
lastViewBtnsEle[side] = viewBtnsEle;
} else if (navEle[side]) {
// there's a default button for this side and no view button
navEle[side].removeClass(CSS_HIDE);
}
},
removeButtons: function(side) {
if (lastViewBtnsEle[side]) {
lastViewBtnsEle[side].scope().$destroy();
lastViewBtnsEle[side].remove();
lastViewBtnsEle[side] = null;
}
},
containerEle: function() {
return containerEle;
},
headerBarEle: function() {
return headerBarEle;
},
afterLeave: function() {
forEach(BUTTON_TYPES, function(buttonType) {
headerBarInstance.removeButtons(buttonType);
});
headerBarCtrl.resetBackButton();
},
controller: function() {
return headerBarCtrl;
},
destroy: function() {
forEach(BUTTON_TYPES, function(buttonType) {
headerBarInstance.removeButtons(buttonType);
});
containerEle.scope().$destroy();
for (var n in navEle) {
if (navEle[n]) {
navEle[n].removeData();
navEle[n] = null;
}
}
leftButtonsEle && leftButtonsEle.removeData();
rightButtonsEle && rightButtonsEle.removeData();
titleEle.removeData();
headerBarEle.removeData();
containerEle.remove();
containerEle = headerBarEle = titleEle = leftButtonsEle = rightButtonsEle = null;
}
};
function positionButtons(btnsEle, buttonType) {
if (!btnsEle) return;
var appendToRight = (buttonType == 'rightButtons') ||
(buttonType == SECONDARY_BUTTONS && navBarConfig.positionSecondaryButtons() != 'left') ||
(buttonType == PRIMARY_BUTTONS && navBarConfig.positionPrimaryButtons() == 'right');
if (appendToRight) {
// right side
if (!rightButtonsEle) {
rightButtonsEle = jqLite('