@@ -233,9 +233,7 @@ | |||||
"public/js/frappe/list/list_sidebar.html", | "public/js/frappe/list/list_sidebar.html", | ||||
"public/js/frappe/list/list_sidebar_stat.html", | "public/js/frappe/list/list_sidebar_stat.html", | ||||
"public/js/frappe/list/list_item_main.html", | "public/js/frappe/list/list_item_main.html", | ||||
"public/js/frappe/list/list_item_main_1.html", | |||||
"public/js/frappe/list/list_item_row.html", | "public/js/frappe/list/list_item_row.html", | ||||
"public/js/frappe/list/list_item_row_1.html", | |||||
"public/js/frappe/list/list_item_main_head.html", | "public/js/frappe/list/list_item_main_head.html", | ||||
"public/js/frappe/list/list_item_row_head.html", | "public/js/frappe/list/list_item_row_head.html", | ||||
"public/js/frappe/list/list_item_subject.html", | "public/js/frappe/list/list_item_subject.html", | ||||
@@ -386,7 +386,6 @@ | |||||
} | } | ||||
.list-items { | .list-items { | ||||
width: 100%; | width: 100%; | ||||
font-size: 12px; | |||||
} | } | ||||
.list-item-container { | .list-item-container { | ||||
border-bottom: 1px solid #d1d8dd; | border-bottom: 1px solid #d1d8dd; | ||||
@@ -399,8 +398,17 @@ | |||||
align-items: center; | align-items: center; | ||||
height: 40px; | height: 40px; | ||||
padding-left: 15px; | padding-left: 15px; | ||||
font-size: 12px; | |||||
} | } | ||||
.list-item__head { | |||||
@media (max-width: 767px) { | |||||
.list-item { | |||||
height: 50px; | |||||
padding-left: 10px; | |||||
font-size: 14px; | |||||
font-weight: normal; | |||||
} | |||||
} | |||||
.list-item--head { | |||||
background-color: #F7FAFC; | background-color: #F7FAFC; | ||||
border-bottom: 1px solid #d1d8dd; | border-bottom: 1px solid #d1d8dd; | ||||
} | } | ||||
@@ -414,13 +422,30 @@ | |||||
margin-left: 5px; | margin-left: 5px; | ||||
margin-right: 10px; | margin-right: 10px; | ||||
} | } | ||||
.list-item--content { | |||||
.list-item__content { | |||||
flex: 1; | flex: 1; | ||||
margin-right: 15px; | margin-right: 15px; | ||||
display: flex; | |||||
align-items: center; | |||||
} | } | ||||
.list-item--content__flex-2 { | |||||
.list-item__content--flex-2 { | |||||
flex: 2; | flex: 2; | ||||
} | } | ||||
.list-item--content:last-child { | |||||
.list-item__content--activity { | |||||
justify-content: flex-end; | |||||
margin-right: 5px; | margin-right: 5px; | ||||
} | } | ||||
.list-item__content--activity .list-row-modified, | |||||
.list-item__content--activity .avatar-small { | |||||
margin-right: 10px; | |||||
} | |||||
.list-item__content--indicator span::before { | |||||
height: 12px; | |||||
width: 12px; | |||||
} | |||||
.list-item__content--id { | |||||
justify-content: flex-end; | |||||
} | |||||
.frappe-timestamp { | |||||
white-space: nowrap; | |||||
} |
@@ -1,5 +1,5 @@ | |||||
{% if (_checkbox) { %} | {% if (_checkbox) { %} | ||||
<input class="list-select-all" type="checkbox" | |||||
<input class="list-select-all hidden-xs" type="checkbox" | |||||
title="{%= __("Select All") %}"> | title="{%= __("Select All") %}"> | ||||
{% } %} | {% } %} | ||||
<span class="liked-by-filter-button"> | <span class="liked-by-filter-button"> | ||||
@@ -1,17 +1,15 @@ | |||||
<div class="hidden-xs"> | |||||
<span class="list-row-modified text-muted"> | |||||
{%= comment_when(data.modified, true) %} | |||||
</span> | |||||
{% if (data._assign_list.length) { %} | |||||
<span class="filterable" | |||||
data-filter="_assign,like,%{%= data._assign_list[data._assign_list.length - 1] %}%"> | |||||
{%= frappe.avatar(data._assign_list[data._assign_list.length - 1]) %}</span> | |||||
{% } else { %} | |||||
<span class="avatar avatar-small avatar-empty"></span> | |||||
{% } %} | |||||
<span class="list-comment-count small | |||||
{% if(!data._comment_count) { %} text-extra-muted {% } else { %} text-muted {% } %}"> | |||||
<i class="octicon octicon-comment-discussion"></i> | |||||
{%= (data._comment_count > 99 ? "99+" : data._comment_count) || 0 %} | |||||
</span> | |||||
</div> | |||||
<span class="list-row-modified text-muted"> | |||||
{%= comment_when(data.modified, true) %} | |||||
</span> | |||||
{% if (data._assign_list.length) { %} | |||||
<span class="filterable" | |||||
data-filter="_assign,like,%{%= data._assign_list[data._assign_list.length - 1] %}%"> | |||||
{%= frappe.avatar(data._assign_list[data._assign_list.length - 1]) %}</span> | |||||
{% } else { %} | |||||
<span class="avatar avatar-small avatar-empty"></span> | |||||
{% } %} | |||||
<span class="list-comment-count small | |||||
{% if(!data._comment_count) { %} text-extra-muted {% } else { %} text-muted {% } %}"> | |||||
<i class="octicon octicon-comment-discussion"></i> | |||||
{%= (data._comment_count > 99 ? "99+" : data._comment_count) || 0 %} | |||||
</span> |
@@ -1,49 +1,40 @@ | |||||
<div class="row"> | |||||
{% var total_cols=0; for (var i=0, l=columns.length; i < l; i++ ) { | |||||
var col = columns[i], value=data[col.fieldname]; total_cols += parseInt(col.colspan); %} | |||||
{% if (total_cols <= 12) { %} | |||||
<div class="col-sm-{%= col.colspan %} list-col ellipsis | |||||
{% if(col.type==="Subject") { | |||||
if (right_column) { %} | |||||
col-xs-9 | |||||
{% } else { %} | |||||
col-xs-12 | |||||
{% } %} | |||||
{% } else if(right_column && col.fieldname===right_column) { %} | |||||
col-xs-3 | |||||
{% } else { %} | |||||
hidden-xs | |||||
{% } %} | |||||
{% if(col.df && ["Int", "Float", "Currency", "Percent"].indexOf(col.df.fieldtype)!==-1) { %}text-right{% } %}" | |||||
{% if(col.type!=="Indicator" && col.title) { %}title="{%= col.title + ": " + value %}"{% } %}> | |||||
{% if(col.type!=="Indicator") { %}<span class="list-value">{% } %} | |||||
{% if (col.type==="Subject") { %} | |||||
{%= subject %} | |||||
{% } else if (col.type==="Indicator") { %} | |||||
{%= indicator %} | |||||
{% } else if (col.render) { %} | |||||
{%= col.render(data) %} | |||||
{% } else if (col.fieldtype==="Image") { %} | |||||
{% if(data[col.df.options]) { %} | |||||
<img src="{%= data[col.df.options] %}" style="max-height: 30px; max-width: 100%;"> | |||||
{% } else { %} | |||||
<div class="missing-image small"><span class="octicon octicon-circle-slash"></span></div> | |||||
{% } %} | |||||
{% } else if(col.fieldtype==="Select") { %} | |||||
<span class="filterable indicator {%= frappe.utils.guess_colour(value) %}" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}">{%= __(value) %}</span> | |||||
{% } else if(col.fieldtype==="Link") { %} | |||||
<a class="filterable h6 text-muted grey" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}">{%= value %}</a> | |||||
{% } else { %} | |||||
{% if(formatters && formatters[col.fieldname]) { %} | |||||
{{ formatters[col.fieldname](value, col.df, data) }} | |||||
{% } else { %} | |||||
{{ frappe.format(value, col.df, null, data) }} | |||||
{% } %} | |||||
{% } %} | |||||
{% if(col.type!=="Indicator") { %}</span>{% } %} | |||||
</div> | |||||
<div class="list-item__content ellipsis | |||||
{% if(col.type==="Subject") { %} | |||||
list-item__content--flex-2 | |||||
{% } else { %} | |||||
hidden-xs | |||||
{% } %} | |||||
{% if(col.df && ["Int", "Float", "Currency", "Percent"].indexOf(col.df.fieldtype)!==-1) { %}text-right{% } %}" | |||||
{% if(col.type!=="Indicator" && col.title) { %} | |||||
title="{%= col.title + ": " + value %}" | |||||
{% } %} | |||||
> | |||||
{% if (col.type==="Subject") { %} | |||||
{%= subject %} | |||||
{% } else if (col.type==="Indicator") { %} | |||||
{%= indicator %} | |||||
{% } else if (col.render) { %} | |||||
{%= col.render(data) %} | |||||
{% } else if (col.fieldtype==="Image") { %} | |||||
{% if(data[col.df.options]) { %} | |||||
<img src="{%= data[col.df.options] %}" style="max-height: 30px; max-width: 100%;"> | |||||
{% } else { %} | |||||
<div class="missing-image small"><span class="octicon octicon-circle-slash"></span></div> | |||||
{% } %} | |||||
{% } else if(col.fieldtype==="Select") { %} | |||||
<span class="filterable indicator {%= frappe.utils.guess_colour(value) %} ellipsis" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}">{%= __(value) %}</span> | |||||
{% } else if(col.fieldtype==="Link") { %} | |||||
<a class="filterable text-muted grey ellipsis" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}">{%= value %}</a> | |||||
{% } else { %} | |||||
<a class="filterable text-muted ellipsis" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}"> | |||||
{% if(formatters && formatters[col.fieldname]) { %} | |||||
{{ formatters[col.fieldname](value, col.df, data) }} | |||||
{% } else { %} | |||||
{{ frappe.format(value, col.df, null, data) }} | |||||
{% } %} | {% } %} | ||||
</a> | |||||
{% } %} | {% } %} | ||||
</div> | |||||
</div> |
@@ -1,40 +0,0 @@ | |||||
<div class="list-item--content ellipsis | |||||
{% if(col.type==="Subject") { %} | |||||
list-item--content__flex-2 | |||||
{% } else { %} | |||||
hidden-xs | |||||
{% } %} | |||||
{% if(col.df && ["Int", "Float", "Currency", "Percent"].indexOf(col.df.fieldtype)!==-1) { %}text-right{% } %}" | |||||
{% if(col.type!=="Indicator" && col.title) { %} | |||||
title="{%= col.title + ": " + value %}" | |||||
{% } %} | |||||
> | |||||
{% if (col.type==="Subject") { %} | |||||
{%= subject %} | |||||
{% } else if (col.type==="Indicator") { %} | |||||
{%= indicator %} | |||||
{% } else if (col.render) { %} | |||||
{%= col.render(data) %} | |||||
{% } else if (col.fieldtype==="Image") { %} | |||||
{% if(data[col.df.options]) { %} | |||||
<img src="{%= data[col.df.options] %}" style="max-height: 30px; max-width: 100%;"> | |||||
{% } else { %} | |||||
<div class="missing-image small"><span class="octicon octicon-circle-slash"></span></div> | |||||
{% } %} | |||||
{% } else if(col.fieldtype==="Select") { %} | |||||
<span class="filterable indicator {%= frappe.utils.guess_colour(value) %} ellipsis" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}">{%= __(value) %}</span> | |||||
{% } else if(col.fieldtype==="Link") { %} | |||||
<a class="filterable text-muted grey ellipsis" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}">{%= value %}</a> | |||||
{% } else { %} | |||||
<a class="filterable text-muted ellipsis" | |||||
data-filter="{%= col.fieldname %},=,{%= value %}"> | |||||
{% if(formatters && formatters[col.fieldname]) { %} | |||||
{{ formatters[col.fieldname](value, col.df, data) }} | |||||
{% } else { %} | |||||
{{ frappe.format(value, col.df, null, data) }} | |||||
{% } %} | |||||
</a> | |||||
{% } %} | |||||
</div> |
@@ -1,6 +1,6 @@ | |||||
<div class="list-item--content ellipsis h6 text-muted | |||||
<div class="list-item__content ellipsis text-muted | |||||
{% if(col.type==="Subject") { %} | {% if(col.type==="Subject") { %} | ||||
list-item--content__flex-2 | |||||
list-item__content--flex-2 | |||||
{% } else { %} | {% } else { %} | ||||
hidden-xs | hidden-xs | ||||
{% } %} | {% } %} | ||||
@@ -10,6 +10,6 @@ | |||||
{% if (col.type==="Subject") { %} | {% if (col.type==="Subject") { %} | ||||
{%= frappe.render_template("header_select_all_like_filter", { _checkbox: _checkbox }) %} | {%= frappe.render_template("header_select_all_like_filter", { _checkbox: _checkbox }) %} | ||||
{% } %} | {% } %} | ||||
<span class="list-col-title">{{ __(col.title) || __(col.label) || "" }}</span> | |||||
<span class="list-col-title ellipsis">{{ __(col.title) || __(col.label) || "" }}</span> | |||||
</div> | </div> |
@@ -1,31 +1,24 @@ | |||||
<div class="row doclist-row {% if (data._checkbox) { %} has-checkbox {% } %}"> | |||||
<div class="col-xs-10 | |||||
{% if (meta.title_field && !settings.hide_name_column) { %} | |||||
col-sm-8 | |||||
{% } else { %} | |||||
col-sm-10 | |||||
{% } %} list-row-left"> | |||||
<!-- title + columns --> | |||||
{%= main %} | |||||
</div> | |||||
<div class="list-item"> | |||||
{%= main %} | |||||
<!-- id --> | <!-- id --> | ||||
{% if (meta.title_field && !settings.hide_name_column) { | {% if (meta.title_field && !settings.hide_name_column) { | ||||
var is_different = data.name !== data[meta.title_field]; | |||||
%} | |||||
<div class="list-col col-sm-2 hidden-xs text-right ellipsis list-row-id"> | |||||
{% if (is_different) { %} | |||||
<a class="text-muted list-value" href="#Form/{%= data._doctype_encoded %}/{%= data._name_encoded %}"> | |||||
var is_different = data.name !== data[meta.title_field]; | |||||
%} | |||||
<div class="list-item__content list-item__content--id text-right hidden-xs hidden-sm"> | |||||
{% if (is_different) { %} | |||||
<a class="text-muted" href="#Form/{%= data._doctype_encoded %}/{%= data._name_encoded %}"> | |||||
{%= data.name %}</a> | {%= data.name %}</a> | ||||
{% } %} | |||||
{% } %} | |||||
</div> | </div> | ||||
{% } %} | {% } %} | ||||
<!-- comment --> | <!-- comment --> | ||||
<div class="list-col col-sm-2 col-xs-2 | |||||
text-right list-row-right" style="padding-left:0px"> | |||||
<div class="visible-xs list-row-indicator">{%= indicator_dot %}</div> | |||||
<!-- comments count and assigned to section --> | |||||
{%= frappe.render_template("item_assigned_to_comment_count", { data: data }) %} | |||||
<div class="list-item__content list-item__content--activity hidden-xs"> | |||||
<!-- comments count and assigned to section --> | |||||
{%= frappe.render_template("item_assigned_to_comment_count", { data: data }) %} | |||||
</div> | |||||
<div class="list-item__content list-item__content--indicator visible-xs text-right"> | |||||
{%= indicator_dot %} | |||||
</div> | </div> | ||||
</div> | </div> |
@@ -1,22 +0,0 @@ | |||||
<div class="list-item"> | |||||
{%= main %} | |||||
<!-- id --> | |||||
{% if (meta.title_field && !settings.hide_name_column) { | |||||
var is_different = data.name !== data[meta.title_field]; | |||||
%} | |||||
<div class="list-item--content text-right list-row-id"> | |||||
{% if (is_different) { %} | |||||
<a class="text-muted" href="#Form/{%= data._doctype_encoded %}/{%= data._name_encoded %}"> | |||||
{%= data.name %}</a> | |||||
{% } %} | |||||
</div> | |||||
{% } %} | |||||
<!-- comment --> | |||||
<div class="list-item--content text-right list-row-right" style="padding-left:0px"> | |||||
<div class="visible-xs list-row-indicator">{%= indicator_dot %}</div> | |||||
<!-- comments count and assigned to section --> | |||||
{%= frappe.render_template("item_assigned_to_comment_count", { data: data }) %} | |||||
</div> | |||||
</div> |
@@ -1,11 +1,11 @@ | |||||
<div class="list-item list-item__head" data-list-renderer="{{list.name}}"> | |||||
<div class="list-item list-item--head" data-list-renderer="{{list.name}}"> | |||||
<!-- title + columns --> | <!-- title + columns --> | ||||
{%= main %} | {%= main %} | ||||
<!-- id --> | <!-- id --> | ||||
{% if(!list.settings.hide_name_column) { %} | {% if(!list.settings.hide_name_column) { %} | ||||
<div class="list-item--content"></div> | |||||
<div class="list-item__content hidden-xs hidden-sm"></div> | |||||
{% } %} | {% } %} | ||||
<!-- comment --> | <!-- comment --> | ||||
<div class="list-item--content hidden-xs text-right list-row-right"></div> | |||||
<div class="list-item__content list-item__content--activity hidden-xs text-right list-row-right"></div> | |||||
</div> | </div> |
@@ -1,5 +1,5 @@ | |||||
{% if (_checkbox) { %} | {% if (_checkbox) { %} | ||||
<input class="list-row-checkbox" type="checkbox" data-name="{{name}}"> | |||||
<input class="list-row-checkbox hidden-xs" type="checkbox" data-name="{{name}}"> | |||||
{% } %} | {% } %} | ||||
<span class="liked-by" data-liked-by=\'{{ JSON.stringify(_liked_by) }}\'> | <span class="liked-by" data-liked-by=\'{{ JSON.stringify(_liked_by) }}\'> | ||||
<i class="octicon octicon-heart | <i class="octicon octicon-heart | ||||
@@ -250,9 +250,9 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ | |||||
}, | }, | ||||
init_headers: function () { | 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 > ' | 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 +'"]'); | + this.list_renderer.name +'"]'); | ||||
if(this.list_header.length > 0) { | if(this.list_header.length > 0) { | ||||
@@ -107,7 +107,7 @@ frappe.views.GanttView = frappe.views.ListRenderer.extend({ | |||||
var $dropdown = $(dropdown) | var $dropdown = $(dropdown) | ||||
$dropdown.find(".dropdown-menu") | $dropdown.find(".dropdown-menu") | ||||
.append(dropdown_list); | .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() { | $dropdown.on("click", ".option", function() { | ||||
var mode = $(this).data('value'); | var mode = $(this).data('value'); | ||||
me.gantt.change_view_mode(mode); | me.gantt.change_view_mode(mode); | ||||
@@ -341,7 +341,9 @@ frappe.provide("frappe.views"); | |||||
function setup_restore_columns() { | function setup_restore_columns() { | ||||
var cur_list = store.getState().cur_list; | var cur_list = store.getState().cur_list; | ||||
var columns = store.getState().columns; | 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(); | list_row_right.empty(); | ||||
var archived_columns = columns.filter(function (col) { | var archived_columns = columns.filter(function (col) { | ||||
@@ -364,7 +366,7 @@ frappe.provide("frappe.views"); | |||||
"<ul class='dropdown-menu'>" + options + "</ul>" + | "<ul class='dropdown-menu'>" + options + "</ul>" + | ||||
"</div>") | "</div>") | ||||
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) { | $dropdown.find(".dropdown-menu").on("click", "button.restore-column", function (e) { | ||||
var column_title = $(this).data().column; | var column_title = $(this).data().column; | ||||
@@ -483,7 +483,6 @@ | |||||
.list-items { | .list-items { | ||||
width: 100%; | width: 100%; | ||||
font-size: @text-medium; | |||||
} | } | ||||
.list-item-container { | .list-item-container { | ||||
@@ -501,8 +500,17 @@ | |||||
height: 40px; | height: 40px; | ||||
padding-left: 15px; | padding-left: 15px; | ||||
font-size: @text-medium; | |||||
@media (max-width: @screen-xs) { | |||||
height: 50px; | |||||
padding-left: 10px; | |||||
&__head { | |||||
font-size: @text-regular; | |||||
font-weight: normal; | |||||
} | |||||
&--head { | |||||
background-color: @panel-bg; | background-color: @panel-bg; | ||||
border-bottom: 1px solid @border-color; | border-bottom: 1px solid @border-color; | ||||
} | } | ||||
@@ -519,15 +527,36 @@ | |||||
} | } | ||||
} | } | ||||
.list-item--content { | |||||
.list-item__content { | |||||
flex: 1; | flex: 1; | ||||
margin-right: 15px; | margin-right: 15px; | ||||
&__flex-2 { | |||||
display: flex; | |||||
align-items: center; | |||||
&--flex-2 { | |||||
flex: 2; | flex: 2; | ||||
} | } | ||||
&:last-child { | |||||
&--activity { | |||||
justify-content: flex-end; | |||||
margin-right: 5px; | 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; | |||||
} | } |