').append($item);
+
+ $list_items.append($item_container);
+ this.render_tags($item_container, value);
});
this.setup_filterable();
@@ -325,14 +338,16 @@ frappe.views.ListRenderer = Class.extend({
// returns html for a data item,
// usually based on a template
get_item_html: function (data) {
- var main = frappe.render_template('list_item_main', {
- data: data,
- columns: this.columns,
- formatters: this.settings.formatters,
- subject: this.get_subject_html(data, true),
- indicator: this.get_indicator_html(data),
- right_column: this.settings.right_column
- });
+ var main = this.columns.map(column =>
+ frappe.render_template('list_item_main', {
+ data: data,
+ col: column,
+ value: data[column.fieldname],
+ formatters: this.settings.formatters,
+ subject: this.get_subject_html(data, true),
+ indicator: this.get_indicator_html(data),
+ })
+ ).join("");
return frappe.render_template('list_item_row', {
data: data,
@@ -340,17 +355,17 @@ frappe.views.ListRenderer = Class.extend({
settings: this.settings,
meta: this.meta,
indicator_dot: this.get_indicator_dot(data),
- right_column: this.settings.right_column
})
},
get_header_html: function () {
- var main = frappe.render_template('list_item_main_head', {
- columns: this.columns,
- right_column: this.settings.right_column,
- _checkbox: ((frappe.model.can_delete(this.doctype) || this.settings.selectable)
- && !this.no_delete)
- });
+ var main = this.columns.map(column =>
+ frappe.render_template('list_item_main_head', {
+ col: column,
+ _checkbox: ((frappe.model.can_delete(this.doctype) || this.settings.selectable)
+ && !this.no_delete)
+ })
+ ).join("");
return frappe.render_template('list_item_row_head', { main: main, list: this });
},
diff --git a/frappe/public/js/frappe/list/list_sidebar.js b/frappe/public/js/frappe/list/list_sidebar.js
index 19426ee173..5422804a94 100644
--- a/frappe/public/js/frappe/list/list_sidebar.js
+++ b/frappe/public/js/frappe/list/list_sidebar.js
@@ -122,8 +122,10 @@ frappe.views.ListSidebar = Class.extend({
var $dropdown = this.page.sidebar.find('.kanban-dropdown');
var divider = false;
- var boards = frappe.get_meta(this.doctype).__kanban_boards;
+ var meta = frappe.get_meta(this.doctype);
+ var boards = meta && meta.__kanban_boards;
if (!boards) return;
+
boards.forEach(function(board) {
var route = ["List", board.reference_doctype, "Kanban", board.name].join('/');
if(!divider) {
diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js
index 219409fbd6..657daa1033 100644
--- a/frappe/public/js/frappe/list/list_view.js
+++ b/frappe/public/js/frappe/list/list_view.js
@@ -250,9 +250,9 @@ frappe.views.ListView = frappe.ui.BaseList.extend({
},
init_headers: function () {
- this.page.main.find('.list-headers > .list-row-head').hide();
+ this.page.main.find('.list-headers > .list-item--head').hide();
this.list_header = this.page.main.find('.list-headers > '
- + '.list-row-head[data-list-renderer="'
+ + '.list-item--head[data-list-renderer="'
+ this.list_renderer.name +'"]');
if(this.list_header.length > 0) {
@@ -760,9 +760,9 @@ frappe.views.ListView = frappe.ui.BaseList.extend({
// multi-select using shift key
var $this = $(this);
if (event.shiftKey && $this.prop('checked')) {
- var $end_row = $this.parents('.list-row');
- var $start_row = $end_row.prevAll('.list-row')
- .find('.list-row-checkbox:checked').last().parents('.list-row');
+ var $end_row = $this.parents('.list-item-container');
+ var $start_row = $end_row.prevAll('.list-item-container')
+ .find('.list-row-checkbox:checked').last().parents('.list-item-container');
if ($start_row) {
$start_row.nextUntil($end_row).find('.list-row-checkbox').prop('checked', true);
}
diff --git a/frappe/public/js/frappe/views/gantt/gantt_view.js b/frappe/public/js/frappe/views/gantt/gantt_view.js
index 7d5d234b16..207d43adaa 100644
--- a/frappe/public/js/frappe/views/gantt/gantt_view.js
+++ b/frappe/public/js/frappe/views/gantt/gantt_view.js
@@ -107,7 +107,7 @@ frappe.views.GanttView = frappe.views.ListRenderer.extend({
var $dropdown = $(dropdown)
$dropdown.find(".dropdown-menu")
.append(dropdown_list);
- me.list_view.$page.find(`.list-row-head[data-list-renderer='Gantt'] .list-row-right`).css("margin-top", 0).html($dropdown)
+ me.list_view.$page.find(`[data-list-renderer='Gantt'] .list-row-right`).css("margin-right", "15px").html($dropdown)
$dropdown.on("click", ".option", function() {
var mode = $(this).data('value');
me.gantt.change_view_mode(mode);
diff --git a/frappe/public/js/frappe/views/image/image_view.js b/frappe/public/js/frappe/views/image/image_view.js
index 869129bbd6..822fb87415 100644
--- a/frappe/public/js/frappe/views/image/image_view.js
+++ b/frappe/public/js/frappe/views/image/image_view.js
@@ -47,9 +47,8 @@ frappe.views.ImageView = frappe.views.ListRenderer.extend({
return null;
},
get_header_html: function () {
- var main = frappe.render_template('image_view_item_main_head', {
- columns: this.columns,
- right_column: this.settings.right_column,
+ var main = frappe.render_template('list_item_main_head', {
+ col: { type: "Subject" },
_checkbox: ((frappe.model.can_delete(this.doctype) || this.settings.selectable)
&& !this.no_delete)
});
diff --git a/frappe/public/js/frappe/views/image/image_view_item_main_head.html b/frappe/public/js/frappe/views/image/image_view_item_main_head.html
deleted file mode 100644
index f0650af4dc..0000000000
--- a/frappe/public/js/frappe/views/image/image_view_item_main_head.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
- {%= frappe.render_template("header_select_all_like_filter", { _checkbox: _checkbox }) %}
-
-
-
\ No newline at end of file
diff --git a/frappe/public/js/frappe/views/kanban/kanban_board.js b/frappe/public/js/frappe/views/kanban/kanban_board.js
index 4ea3c9b07e..e3211a8f6f 100644
--- a/frappe/public/js/frappe/views/kanban/kanban_board.js
+++ b/frappe/public/js/frappe/views/kanban/kanban_board.js
@@ -341,7 +341,9 @@ frappe.provide("frappe.views");
function setup_restore_columns() {
var cur_list = store.getState().cur_list;
var columns = store.getState().columns;
- var list_row_right = cur_list.$page.find(`.list-row-head[data-list-renderer='Kanban'] .list-row-right`);
+ var list_row_right =
+ cur_list.$page.find(`[data-list-renderer='Kanban'] .list-row-right`)
+ .css('margin-right', '15px');
list_row_right.empty();
var archived_columns = columns.filter(function (col) {
@@ -364,7 +366,7 @@ frappe.provide("frappe.views");
"" +
"
")
- list_row_right.css("margin-top", 0).html($dropdown);
+ list_row_right.html($dropdown);
$dropdown.find(".dropdown-menu").on("click", "button.restore-column", function (e) {
var column_title = $(this).data().column;
diff --git a/frappe/public/less/list.less b/frappe/public/less/list.less
index 2131b718c9..0da6782f28 100644
--- a/frappe/public/less/list.less
+++ b/frappe/public/less/list.less
@@ -189,15 +189,6 @@
.filterable {
cursor: pointer;
- display: inline-block;
- text-overflow: ellipsis;
-}
-
-.col-sm-2:not(.list-row-right) .filterable,
-.col-sm-3:not(.list-row-right) .filterable {
- max-width: 145px;
- overflow: hidden;
- width: 100%;
}
@@ -240,7 +231,6 @@
}
.like-action.octicon-heart {
- // color: #ffdb4c;
color: @heart-color;
}
@@ -477,4 +467,92 @@
.inbox-value {
padding-top: 2px;
+}
+
+// list view
+
+.list-items {
+ width: 100%;
+}
+
+.list-item-container {
+ border-bottom: 1px solid @border-color;
+
+ &:last-child {
+ border-bottom: none;
+ }
+}
+
+.list-item {
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+
+ height: 40px;
+ padding-left: 15px;
+
+ font-size: @text-medium;
+
+ &:hover {
+ background-color: @panel-bg;
+ }
+
+ @media (max-width: @screen-xs) {
+ height: 50px;
+ padding-left: 10px;
+
+ font-size: @text-regular;
+ font-weight: normal;
+ }
+
+ &--head {
+ background-color: @panel-bg;
+ border-bottom: 1px solid @border-color;
+ cursor: auto;
+ }
+
+ input[type=checkbox] {
+ margin: 0;
+ margin-right: 5px;
+ }
+
+ .liked-by, .liked-by-filter-button {
+ display: inline-block;
+ width: 20px;
+ margin-right: 10px;
+ }
+}
+
+.list-item__content {
+ flex: 1;
+ margin-right: 15px;
+
+ display: flex;
+ align-items: center;
+
+ &--flex-2 {
+ flex: 2;
+ }
+
+ &--activity {
+ justify-content: flex-end;
+ margin-right: 5px;
+
+ .list-row-modified, .avatar-small {
+ margin-right: 10px;
+ }
+ }
+
+ &--indicator span::before {
+ height: 12px;
+ width: 12px;
+ }
+
+ &--id {
+ justify-content: flex-end;
+ }
+}
+
+.frappe-timestamp {
+ white-space: nowrap;
}
\ No newline at end of file