refactor: remove list sidebar code

This commit is contained in:
Ejaaz Khan 2025-12-15 13:03:25 +05:30
parent 77a33bb196
commit d8969fc454
6 changed files with 5 additions and 204 deletions

View file

@ -28,7 +28,6 @@ frappe.views.BaseList = class BaseList {
this.setup_fields,
// make view
this.setup_page,
this.setup_side_bar,
this.setup_main_section,
this.setup_view,
this.setup_view_menu,
@ -222,7 +221,6 @@ frappe.views.BaseList = class BaseList {
parent: this.views_menu,
page: this.page,
list_view: this,
sidebar: this.list_sidebar,
icon_map: icon_map,
label_map: label_map,
});
@ -277,20 +275,6 @@ frappe.views.BaseList = class BaseList {
frappe.breadcrumbs.add(this.meta.module, this.doctype);
}
setup_side_bar() {
if (this.page.disable_sidebar_toggle) {
return;
}
this.list_sidebar = new frappe.views.ListSidebar({
doctype: this.doctype,
stats: this.stats,
parent: this.$page.find(".layout-side-section"),
page: this.page,
list_view: this,
});
}
show_or_hide_sidebar() {
let show_sidebar = JSON.parse(localStorage.show_sidebar || "true");
$(document.body).toggleClass("no-list-sidebar", !show_sidebar);

View file

@ -1,29 +0,0 @@
<div class="sidebar-section user-actions hide">
</div>
<div class="sidebar-section views-section hide">
<div class="sidebar-label">
</div>
<div class="current-view">
<div class="list-link">
<a class="btn btn-default btn-sm list-sidebar-button"
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
href="#"
>
<span class="selected-view ellipsis">
</span>
<span>
<svg class="icon icon-xs">
<use href="#icon-select"></use>
</svg>
</span>
</a>
<ul class="dropdown-menu views-dropdown" role="menu">
</ul>
</div>
<div class="sidebar-action">
<a class="view-action"></a>
</div>
</div>
</div>

View file

@ -1,153 +0,0 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// MIT License. See license.txt
import ListFilter from "./list_filter";
frappe.provide("frappe.views");
// opts:
// stats = list of fields
// doctype
// parent
frappe.views.ListSidebar = class ListSidebar {
constructor(opts) {
$.extend(this, opts);
this.make();
}
make() {
var sidebar_content = frappe.render_template("list_sidebar", { doctype: this.doctype });
this.sidebar = $('<div class="list-sidebar overlay-sidebar hidden-xs hidden-sm"></div>')
.html(sidebar_content)
.appendTo(this.page.sidebar.empty());
this.setup_list_filter();
this.setup_list_group_by();
this.setup_collapsible();
// do not remove
// used to trigger custom scripts
$(document).trigger("list_sidebar_setup");
if (
this.list_view.list_view_settings &&
this.list_view.list_view_settings.disable_sidebar_stats
) {
this.sidebar.find(".list-tags").remove();
} else {
this.sidebar.find(".list-stats").on("show.bs.dropdown", (e) => {
this.reload_stats();
});
}
}
setup_views() {
var show_list_link = false;
if (frappe.views.calendar[this.doctype]) {
this.sidebar.find('.list-link[data-view="Calendar"]').removeClass("hide");
this.sidebar.find('.list-link[data-view="Gantt"]').removeClass("hide");
show_list_link = true;
}
//show link for kanban view
this.sidebar.find('.list-link[data-view="Kanban"]').removeClass("hide");
if (this.doctype === "Communication" && frappe.boot.email_accounts.length) {
this.sidebar.find('.list-link[data-view="Inbox"]').removeClass("hide");
show_list_link = true;
}
if (frappe.treeview_settings[this.doctype] || frappe.get_meta(this.doctype).is_tree) {
this.sidebar.find(".tree-link").removeClass("hide");
}
this.current_view = "List";
var route = frappe.get_route();
if (route.length > 2 && frappe.views.view_modes.includes(route[2])) {
this.current_view = route[2];
if (this.current_view === "Kanban") {
this.kanban_board = route[3];
} else if (this.current_view === "Inbox") {
this.email_account = route[3];
}
}
// disable link for current view
this.sidebar
.find('.list-link[data-view="' + this.current_view + '"] a')
.attr("disabled", "disabled")
.addClass("disabled");
//enable link for Kanban view
this.sidebar
.find('.list-link[data-view="Kanban"] a, .list-link[data-view="Inbox"] a')
.attr("disabled", null)
.removeClass("disabled");
// show image link if image_view
if (this.list_view.meta.image_field) {
this.sidebar.find('.list-link[data-view="Image"]').removeClass("hide");
show_list_link = true;
}
if (
this.list_view.settings.get_coords_method ||
(this.list_view.meta.fields.find((i) => i.fieldname === "latitude") &&
this.list_view.meta.fields.find((i) => i.fieldname === "longitude")) ||
this.list_view.meta.fields.find(
(i) => i.fieldname === "location" && i.fieldtype == "Geolocation"
)
) {
this.sidebar.find('.list-link[data-view="Map"]').removeClass("hide");
show_list_link = true;
}
if (show_list_link) {
this.sidebar.find('.list-link[data-view="List"]').removeClass("hide");
}
}
setup_list_filter() {
this.list_filter = new ListFilter({
wrapper: this.page.sidebar.find(".list-filters"),
doctype: this.doctype,
list_view: this.list_view,
section_title: this.page.sidebar.find(".save-filter-section .sidebar-label"),
});
}
setup_collapsible() {
// tags and save filter sections should be collapsible
let sections = [
["tags-section", "list-tags"],
["save-filter-section", "list-filters"],
["filter-section", "list-group-by"],
];
for (let s of sections) {
this.page.sidebar.find(`.${s[0]} .sidebar-label`).on("click", () => {
let list_tags = this.page.sidebar.find("." + s[1]);
let icon = "#es-line-down";
list_tags.toggleClass("hide");
if (list_tags.hasClass("hide")) {
icon = "#es-line-right-chevron";
}
this.page.sidebar.find(`.${s[0]} .es-line use`).attr("href", icon);
});
}
}
setup_kanban_boards() {
const $dropdown = this.page.sidebar.find(".kanban-dropdown");
frappe.views.KanbanView.setup_dropdown_in_sidebar(this.doctype, $dropdown);
}
setup_list_group_by() {
this.list_group_by = new frappe.views.ListGroupBy({
doctype: this.doctype,
sidebar: this,
list_view: this.list_view,
page: this.page,
});
}
};

View file

@ -2,6 +2,7 @@ frappe.provide("frappe.views");
frappe.views.ListGroupBy = class ListGroupBy {
constructor(opts) {
// TODO: move assigned to and owner logic in this file, currently this file is not use
$.extend(this, opts);
this.make_wrapper();

View file

@ -67,7 +67,7 @@ frappe.views.ListViewSelect = class ListViewSelect {
action: () => frappe.set_route("report"),
};
}
this.setup_dropdown_in_sidebar("Report", reports, default_action);
this.setup_dropdown_in_navbar("Report", reports, default_action);
},
},
Dashboard: {
@ -79,7 +79,7 @@ frappe.views.ListViewSelect = class ListViewSelect {
action: () => this.set_route("calendar", "default"),
current_view_handler: () => {
this.get_calendars().then((calendars) => {
this.setup_dropdown_in_sidebar("Calendar", calendars);
this.setup_dropdown_in_navbar("Calendar", calendars);
});
},
},
@ -99,7 +99,7 @@ frappe.views.ListViewSelect = class ListViewSelect {
action: () => frappe.new_doc("Email Account"),
};
}
this.setup_dropdown_in_sidebar("Inbox", accounts, default_action);
this.setup_dropdown_in_navbar("Inbox", accounts, default_action);
},
},
Image: {
@ -144,7 +144,7 @@ frappe.views.ListViewSelect = class ListViewSelect {
});
}
setup_dropdown_in_sidebar(view, items, default_action) {
setup_dropdown_in_navbar(view, items, default_action) {
let placeholder = __("Select {0}", [__(view)]);
if (items && items.length) {

View file

@ -16,8 +16,6 @@ import "./frappe/list/list_view.js";
import "./frappe/list/list_factory.js";
import "./frappe/list/list_view_select.js";
import "./frappe/list/list_sidebar.js";
import "./frappe/list/list_sidebar.html";
import "./frappe/list/list_sidebar_stat.html";
import "./frappe/list/list_sidebar_group_by.js";
import "./frappe/list/list_view_permission_restrictions.html";