Number of cards per list and sum of custom number field in list head.

Thanks to xet7 !

Fixes #3796
This commit is contained in:
Lauri Ojansivu 2025-12-22 21:06:44 +02:00
parent 4292302c3c
commit e569c2957e
29 changed files with 239 additions and 142 deletions

View file

@ -28,23 +28,14 @@ template(name="swimlaneFixedHeader")
unless currentUser.isWorker
a.js-open-add-swimlane-menu.swimlane-header-plus-icon(title="{{_ 'add-swimlane'}}")
|
a.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
| ☰
//// TODO: Collapse Swimlane: make button working, etc.
//unless collapsed
// a.js-collapse-swimlane(title="{{_ 'collapse'}}")
// i.fa.fa-arrow-down.swimlane-header-collapse-down
// ⬆️.swimlane-header-collapse-up
//if collapsed
// a.js-collapse-swimlane(title="{{_ 'uncollapse'}}")
// ⬆️.swimlane-header-collapse-up
// i.fa.fa-arrow-down.swimlane-header-collapse-down
unless isTouchScreen
a.swimlane-header-handle.handle.js-swimlane-header-handle
| ↕️
if isTouchScreen
a.swimlane-header-miniscreen-handle.handle.js-swimlane-header-handle
| ↕️
a.js-open-swimlane-menu(title="{{_ 'swimlaneActionPopup-title'}}")
| ☰
template(name="editSwimlaneTitleForm")
.list-composer

View file

@ -54,12 +54,14 @@
width: 100%;
min-width: 100%;
position: relative;
overflow: hidden;
overflow: visible;
min-height: 33px;
padding: 0;
margin: 0;
}
.swimlane .swimlane-header-wrap .swimlane-header {
font-size: 14px;
padding: 5px 5px;
padding: 0;
font-weight: bold;
min-height: 33px;
width: 100%;
@ -74,30 +76,39 @@
}
.swimlane .swimlane-header-wrap .swimlane-header-menu {
position: absolute;
padding: 5px 5px;
top: 0;
left: 0;
padding: 0;
margin: 0;
font-size: 22px;
line-height: 1;
z-index: 20;
pointer-events: auto;
}
.swimlane .swimlane-header-wrap .swimlane-header-menu .js-open-swimlane-menu {
top: calc(50% + 6px);
padding: 5px;
display: inline-block;
margin-left: 74px;
}
@media print {
.swimlane .swimlane-header-wrap .swimlane-header-menu {
display: none;
}
}
.swimlane .swimlane-header-wrap .swimlane-header-plus-icon {
margin-left: 5px;
padding-right: 20px;
top: calc(50% + 6px);
padding: 5px;
font-size: 22px;
}
.swimlane .swimlane-header-wrap .swimlane-header-menu-icon {
padding-right: 20px;
top: calc(50% + 6px);
padding: 5px;
font-size: 22px;
}
.swimlane .swimlane-header-wrap .swimlane-header-handle {
position: absolute;
padding: 7px;
top: 50%;
left: 230px;
top: calc(50% + 2px);
padding: 2px;
font-size: clamp(16px, 3vw, 20px);
transform: translateY(-50%);
display: flex;
@ -109,22 +120,16 @@
}
.swimlane .swimlane-header-wrap .swimlane-header-miniscreen-handle {
position: absolute;
padding: 7px;
top: 50%;
padding: 2px;
top: calc(50% + 2px);
transform: translateY(-50%);
right: 10px;
right: 60px;
font-size: 24px;
cursor: move;
z-index: 15;
pointer-events: auto;
}
/* Safety: ensure wrapper is interactive and above list content */
.swimlane .swimlane-header-wrap {
position: relative;
z-index: 9;
pointer-events: auto;
}
#js-swimlane-height-edit .swimlane-height-error {
display: none;
}