Files
zulip/static/js/settings_panel_menu.js
Steve Howell a5f0163a67 Keep track of which settings sections are open.
If you toggle between Settings and Organization now, it
will remember where you were the last time (not counting
reload).  Likewise if you go in and out of settings.

The old code always put you in the first section, which I
think was an accident of implementation.  Of course, we'll
continue to default to the first row if you haven't gone
anywhere else.
2018-06-06 09:42:33 -07:00

94 lines
2.3 KiB
JavaScript

var settings_panel_menu = (function () {
var exports = {};
exports.make_menu = function (opts) {
var main_elem = opts.main_elem;
var hash_prefix = opts.hash_prefix;
var load_section = opts.load_section;
var curr_li = main_elem.children('li').eq(0);
var self = {};
self.show = function () {
main_elem.show();
self.activate_section({
li_elem: curr_li,
});
};
self.hide = function () {
main_elem.hide();
};
self.current_tab = function () {
return curr_li.data('section');
};
self.activate_section = function (opts) {
var li_elem = opts.li_elem;
var section = li_elem.data('section');
curr_li = li_elem;
main_elem.children("li").removeClass("active no-border");
li_elem.addClass("active");
li_elem.prev().addClass("no-border");
window.location.hash = hash_prefix + section;
$(".settings-section, .settings-wrapper").removeClass("show");
ui.update_scrollbar($("#settings_content"));
load_section(section);
var sel = "[data-name='" + section + "']";
$(".settings-section" + sel + ", .settings-wrapper" + sel).addClass("show");
};
main_elem.on("click", "li[data-section]", function (e) {
self.activate_section({
li_elem: $(this),
});
e.stopPropagation();
});
return self;
};
exports.initialize = function () {
exports.normal_settings = exports.make_menu({
main_elem: $('.normal-settings-list'),
hash_prefix: "settings/",
load_section: function (section) {
settings_sections.load_settings_section(section);
},
});
exports.org_settings = exports.make_menu({
main_elem: $('.org-settings-list'),
hash_prefix: "organization/",
load_section: function (section) {
admin_sections.load_admin_section(section);
},
});
};
exports.show_normal_settings = function () {
exports.org_settings.hide();
exports.normal_settings.show();
};
exports.show_org_settings = function () {
exports.normal_settings.hide();
exports.org_settings.show();
};
return exports;
}());
if (typeof module !== 'undefined') {
module.exports = settings_panel_menu;
}