* first cut * Code refactoring, styling * Added Sorting * Revert query_report to use slickgrid * cleanup * Edit cell working * Add regrid, remove datatable * Add clusterize * Update lib, fix get_checked_items * New ReportView * wip * Enable editing, fix styles * update lib * wip * fix refresh rows and editable cells * Refresh list_view every 3s, decouple refreshing logic * Report editing fixes * Cleanup loading fields, add column then refresh list * [wip] New List View * [working] Render results * ListView is now BaseList, add new ListView and GanttView * Create new page for each ListView * GanttView working * CalendarView working * KanbanView working * Cache list_view based on page_name * Gantt view buttons on mobile * Add ReportView * Refresh datatable on render * Setup like * [start][filters] clean up FilterList * [filters] refactor FilterList * [filters] minor fix * [filters] fix remove filter * filter utils * more utils, remove apply * rewrite as class, remove 'me' references * [filter] implement on_change to decouple parent functions * Integrate new filters with new BaseList * Setup freeze area for ListView * Set breadcrumbs on setup_page * Trigger list update from events * Setup footnote area * Fix Kanban Board filters * Add filters to standard filters, then filter_list * Remove old files * Fix ImageView * Some more fixes for BaseList.init * Fix order_by on load * Report View: remember columns * Fix for hidden filters * Fix for delete items * InboxView * Shift select checkboxes * Fix ESLint errors * More refactoring - Move ListMenu to Listview - New FileView - Ability to add custom breadcrumbs * FileManager working * Tags, set filters from route options * Custom Reports Working * List Sidebar reports * Report Name as title * Fix ESLint errors * Fix UI tests * Fix Kanban test * Format ID column * [fix] Kanban cards title * Checkbox fix * Fix Activity Page * Update rows in Report in place * Child Table columns in Report View
607 lines
8.5 KiB
Text
607 lines
8.5 KiB
Text
@import "variables.less";
|
|
|
|
.result, .no-result, .freeze {
|
|
min-height: ~"calc(100vh - 284px)";
|
|
}
|
|
|
|
.freeze-row {
|
|
.level-left, .level-right, .list-row-col {
|
|
height: 100%;
|
|
width: 100%;
|
|
}
|
|
|
|
.list-row-col {
|
|
background-color: @border-color;
|
|
border-radius: 2px;
|
|
animation: 2s breathe infinite;
|
|
}
|
|
}
|
|
|
|
@keyframes breathe {
|
|
0% {
|
|
opacity: 0.2;
|
|
}
|
|
|
|
50% {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
100% {
|
|
opacity: 0.2;
|
|
}
|
|
}
|
|
|
|
.sort-selector {
|
|
.dropdown:hover {
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
|
|
.filter-list{
|
|
position: relative;
|
|
|
|
.sort-selector {
|
|
position: absolute;
|
|
top: 15px;
|
|
right: 15px;
|
|
}
|
|
}
|
|
|
|
.tag-filters-area {
|
|
padding: 15px 15px 0px;
|
|
border-bottom: 1px solid @border-color;
|
|
}
|
|
|
|
.active-tag-filters {
|
|
padding-bottom: 4px;
|
|
padding-right: 120px;
|
|
|
|
@media (max-width: @screen-xs) {
|
|
padding-right: 80px;
|
|
}
|
|
}
|
|
|
|
.active-tag-filters .btn {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.active-tag-filters .btn-group {
|
|
margin-left: 10px;
|
|
white-space: nowrap;
|
|
font-size: 0;
|
|
}
|
|
|
|
.active-tag-filters .btn-group .btn-default {
|
|
background-color: transparent;
|
|
border: 1px solid @border-color;
|
|
color: @text-muted;
|
|
float: none;
|
|
}
|
|
|
|
.filter-box {
|
|
border-bottom: 1px solid @border-color;
|
|
padding: 10px 15px 3px;
|
|
|
|
.remove-filter {
|
|
margin-top: 6px;
|
|
margin-left: 15px;
|
|
}
|
|
|
|
.filter-field {
|
|
padding-right: 15px;
|
|
width: calc(100% - 36px);
|
|
|
|
.frappe-control {
|
|
position: relative;
|
|
}
|
|
}
|
|
}
|
|
|
|
// for sm and above
|
|
@media (min-width: @screen-xs) {
|
|
.filter-box .row > div[class*="col-sm-"] {
|
|
padding-right: 0px;
|
|
}
|
|
|
|
.filter-field {
|
|
width: 65% !important;
|
|
|
|
.frappe-control {
|
|
position: relative;
|
|
}
|
|
}
|
|
}
|
|
|
|
.list-row-container {
|
|
border-bottom: 1px solid @border-color;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.list-row {
|
|
padding: 12px 15px;
|
|
height: 40px;
|
|
cursor: pointer;
|
|
transition: color 0.2s;
|
|
-webkit-transition: color 0.2s;
|
|
|
|
&:hover {
|
|
background-color: @panel-bg;
|
|
}
|
|
&:last-child {
|
|
border-bottom: 0px;
|
|
}
|
|
|
|
.level-left {
|
|
flex: 3;
|
|
}
|
|
.level-right {
|
|
flex: 1;
|
|
}
|
|
}
|
|
|
|
.list-row-head {
|
|
background-color: @panel-bg;
|
|
border-bottom: 1px solid @border-color !important;
|
|
|
|
.list-subject {
|
|
font-weight: normal;
|
|
}
|
|
|
|
.checkbox-actions {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.list-row-col {
|
|
flex: 1;
|
|
margin-right: 15px;
|
|
}
|
|
|
|
.list-subject {
|
|
flex: 2;
|
|
font-weight: bold;
|
|
justify-content: start;
|
|
|
|
.level-item {
|
|
margin-right: 8px;
|
|
}
|
|
|
|
&.seen {
|
|
font-weight: normal;
|
|
}
|
|
}
|
|
|
|
.list-row-activity {
|
|
justify-content: flex-end;
|
|
min-width: 120px;
|
|
|
|
.avatar:not(.avatar-empty) {
|
|
margin: 0;
|
|
}
|
|
|
|
&> span {
|
|
display: inline-block;
|
|
margin-left: 10px;
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
.list-paging-area, .footnote-area {
|
|
padding: 10px 15px;
|
|
border-top: 1px solid @border-color;
|
|
overflow: auto;
|
|
}
|
|
|
|
|
|
.progress {
|
|
height: 10px;
|
|
}
|
|
|
|
.likes-count {
|
|
display: none;
|
|
}
|
|
|
|
.list-liked-by-me {
|
|
margin-bottom: 1px;
|
|
}
|
|
|
|
input.list-check-all, input.list-row-checkbox {
|
|
margin-top: 0px;
|
|
}
|
|
|
|
.filterable {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.listview-main-section {
|
|
.octicon-heart {
|
|
cursor: pointer;
|
|
}
|
|
.page-form {
|
|
padding-left: 17px;
|
|
|
|
@media (max-width: @screen-sm) {
|
|
padding-left: 25px;
|
|
}
|
|
|
|
.octicon-search {
|
|
float: left;
|
|
padding-top: 7px;
|
|
margin-left: -4px;
|
|
margin-right: -4px;
|
|
@media (max-width: @screen-sm) {
|
|
margin-left: -12px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.like-action.octicon-heart {
|
|
color: @heart-color;
|
|
}
|
|
|
|
.list-comment-count {
|
|
display: inline-block;
|
|
width: 37px;
|
|
text-align: left;
|
|
}
|
|
|
|
// tags
|
|
|
|
.result.tags-shown {
|
|
.tag-row {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
.tag-row {
|
|
display: none;
|
|
margin-left: 50px;
|
|
}
|
|
|
|
.taggle_placeholder {
|
|
top: 0;
|
|
left: 5px;
|
|
font-size: 11px;
|
|
color: @text-muted;
|
|
}
|
|
|
|
.taggle_list {
|
|
padding-left: 5px;
|
|
margin-bottom: 3px;
|
|
|
|
.taggle {
|
|
font-size: 11px;
|
|
padding: 2px 4px;
|
|
font-weight: normal;
|
|
background-color: @btn-bg;
|
|
white-space: normal;
|
|
|
|
&:hover {
|
|
padding: 2px 15px 2px 4px;
|
|
background: #cfdce5;
|
|
transition: all .2s;
|
|
}
|
|
}
|
|
li {
|
|
margin-bottom: 0;
|
|
|
|
.awesomplete > ul > li {
|
|
width: 100%;
|
|
}
|
|
|
|
.awesomplete > ul {
|
|
top: 15px;
|
|
z-index: 100;
|
|
}
|
|
}
|
|
|
|
.close {
|
|
right: 5px;
|
|
color: @text-color;
|
|
font-size: 11px;
|
|
}
|
|
}
|
|
|
|
.page-form {
|
|
.awesomplete > ul {
|
|
min-width: 300px;
|
|
}
|
|
}
|
|
|
|
.taggle_input {
|
|
padding: 0;
|
|
margin-top: 3px;
|
|
font-size: 11px;
|
|
max-width: 100px;
|
|
}
|
|
|
|
// Image view
|
|
|
|
.image-view-container {
|
|
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
|
|
.image-view-row {
|
|
display: flex;
|
|
border-bottom: 1px solid #ebeff2;
|
|
}
|
|
|
|
.image-view-item {
|
|
flex: 0 0 100%/4;
|
|
padding: 15px;
|
|
border-bottom: 1px solid @light-border-color;
|
|
border-right: 1px solid @light-border-color;
|
|
max-width: 100%/4;
|
|
}
|
|
|
|
.image-view-item:nth-child(4n) {
|
|
border-right: none;
|
|
}
|
|
.image-view-item:nth-last-child(-n + 4):nth-child(4n + 1),
|
|
.image-view-item:nth-last-child(-n + 4):nth-child(4n + 1) ~ .image-view-item {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.image-view-header {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.image-view-body {
|
|
&:hover .zoom-view {
|
|
opacity: 0.7;
|
|
}
|
|
|
|
a {
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
|
|
.image-field {
|
|
display: flex;
|
|
align-content: center;
|
|
align-items: center;
|
|
justify-content: center;
|
|
position: relative;
|
|
height: 200px;
|
|
padding: 15px;
|
|
|
|
img {
|
|
max-height: 100%;
|
|
}
|
|
|
|
&.no-image {
|
|
background-color: @light-bg;
|
|
}
|
|
}
|
|
|
|
.placeholder-text {
|
|
font-size: 72px;
|
|
color: @text-extra-muted;
|
|
}
|
|
|
|
.zoom-view {
|
|
bottom: 10px !important;
|
|
right: 10px !important;
|
|
width: 36px;
|
|
height: 36px;
|
|
opacity: 0;
|
|
font-size: 16px;
|
|
color: @text-color;
|
|
position: absolute;
|
|
|
|
// show zoom button on mobile devices
|
|
@media (max-width: @screen-xs) {
|
|
opacity: 0.5
|
|
}
|
|
}
|
|
|
|
// 3 columns for small screen
|
|
@media(max-width: @screen-sm) {
|
|
.image-view-container.three-column;
|
|
}
|
|
}
|
|
|
|
.item-selector {
|
|
border: 1px solid @border-color;
|
|
|
|
.image-view-row {
|
|
width: 100%;
|
|
}
|
|
.image-field {
|
|
height: 120px;
|
|
}
|
|
|
|
.placeholder-text {
|
|
font-size: 48px;
|
|
}
|
|
}
|
|
|
|
.image-view-container.three-column {
|
|
.image-view-item {
|
|
flex: 0 0 100%/3;
|
|
max-width: 100%/3;
|
|
}
|
|
|
|
.image-view-item:nth-child(3n) {
|
|
border-right: none;
|
|
}
|
|
.image-view-item:nth-last-child(-n + 3):nth-child(3n + 1),
|
|
.image-view-item:nth-last-child(-n + 3):nth-child(3n + 1) ~ .image-view-item {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.image-view-item:nth-child(4n) {
|
|
border-right: 1px solid @light-border-color;
|
|
}
|
|
.image-view-item:nth-last-child(-n + 4):nth-child(4n + 1),
|
|
.image-view-item:nth-last-child(-n + 4):nth-child(4n + 1) ~ .image-view-item {
|
|
border-bottom: 1px solid @light-border-color;
|
|
}
|
|
}
|
|
|
|
.pswp--svg .pswp__button,
|
|
.pswp--svg .pswp__button--arrow--left:before,
|
|
.pswp--svg .pswp__button--arrow--right:before {
|
|
background-image: url('/assets/frappe/images/default-skin.svg') !important;
|
|
}
|
|
.pswp--svg .pswp__button--arrow--left,
|
|
.pswp--svg .pswp__button--arrow--right {
|
|
background: none !important;
|
|
}
|
|
|
|
.pswp__bg {
|
|
background-color: #fff !important;
|
|
}
|
|
|
|
.pswp__more-items {
|
|
position: absolute;
|
|
bottom: 12px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.pswp__more-item {
|
|
display: inline-block;
|
|
margin: 5px;
|
|
height: 100px;
|
|
cursor: pointer;
|
|
border: 1px solid @border-color;
|
|
|
|
img {
|
|
max-height: 100%;
|
|
}
|
|
}
|
|
|
|
// gantt
|
|
.list-paging-area .gantt-view-mode {
|
|
margin-left: 15px;
|
|
margin-right: 15px;
|
|
}
|
|
|
|
.gantt {
|
|
.details-container {
|
|
.heading {
|
|
margin-bottom: 10px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.avatar-small {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
.standard-image {
|
|
display: block;
|
|
}
|
|
}
|
|
}
|
|
|
|
.inbox-attachment, .inbox-link {
|
|
margin-right: 7px;
|
|
}
|
|
|
|
.select-inbox {
|
|
padding: 30px 30px;
|
|
}
|
|
|
|
.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-table {
|
|
border: 1px solid @border-color;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.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;
|
|
flex: 0 0 12px;
|
|
}
|
|
|
|
.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;
|
|
min-width: 110px;
|
|
|
|
.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;
|
|
}
|