Allow vertical scrollbars to be disabled (user preferences, visible by default)

This commit is contained in:
Nadav Tasher 2024-12-30 23:22:54 +02:00
parent f1810e47e0
commit 3e01231874
11 changed files with 61 additions and 4 deletions

View file

@ -21,7 +21,8 @@ template(name="boardBody")
class="{{#if hasSwimlanes}}dragscroll{{/if}}" class="{{#if hasSwimlanes}}dragscroll{{/if}}"
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}" class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}" class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
class="{{#if draggingActive.get}}is-dragging-active{{/if}}") class="{{#if draggingActive.get}}is-dragging-active{{/if}}"
class="{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
if showOverlay.get if showOverlay.get
.board-overlay .board-overlay
if currentBoard.isTemplatesBoard if currentBoard.isTemplatesBoard

View file

@ -270,6 +270,11 @@ BlazeComponent.extendComponent({
} }
}, },
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
openNewListForm() { openNewListForm() {
if (this.isViewSwimlanes()) { if (this.isViewSwimlanes()) {
// The form had been removed in 416b17062e57f215206e93a85b02ef9eb1ab4902 // The form had been removed in 416b17062e57f215206e93a85b02ef9eb1ab4902

View file

@ -5,7 +5,7 @@ template(name="cardDetails")
+attachmentViewer +attachmentViewer
section.card-details.js-card-details.nodragscroll(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}'): .card-details-canvas section.card-details.js-card-details.nodragscroll(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}' class='{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}'): .card-details-canvas
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}') .card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title") +inlinedForm(classNames="js-card-details-title")
+editCardTitleForm +editCardTitleForm

View file

@ -114,6 +114,11 @@ BlazeComponent.extendComponent({
); );
}, },
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
/** returns if the list id is the current list id /** returns if the list id is the current list id
* @param listId list id to check * @param listId list id to check
* @return is the list id the current list id ? * @return is the list id the current list id ?

View file

@ -1,6 +1,6 @@
template(name="listBody") template(name="listBody")
unless collapsed unless collapsed
.list-body .list-body(class="{{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}") .minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
if cards.length if cards.length
+inlinedForm(autoclose=false position="top") +inlinedForm(autoclose=false position="top")

View file

@ -231,6 +231,11 @@ BlazeComponent.extendComponent({
); );
}, },
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
cardDetailsPopup(event) { cardDetailsPopup(event) {
if (!Popup.isOpen()) { if (!Popup.isOpen()) {
Popup.open("cardDetails")(event); Popup.open("cardDetails")(event);

View file

@ -446,6 +446,9 @@ a:not(.disabled).is-active i.fa {
padding: 0; padding: 0;
padding-top: 15px; padding-top: 15px;
} }
.no-scrollbars {
scrollbar-width: none;
}
@media screen and (max-width: 800px) { @media screen and (max-width: 800px) {
#content { #content {
margin: 1px 0px 0px 0px; margin: 1px 0px 0px 0px;

View file

@ -1,5 +1,5 @@
template(name="sidebar") template(name="sidebar")
.board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}}") .board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}} {{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
//a.sidebar-tongue.js-toggle-sidebar( //a.sidebar-tongue.js-toggle-sidebar(
// class="{{#if isTongueHidden}}is-hidden{{/if}}", // class="{{#if isTongueHidden}}is-hidden{{/if}}",
// title="{{showTongueTitle}}") // title="{{showTongueTitle}}")
@ -33,6 +33,11 @@ template(name='homeSidebar')
span {{_ 'hide-minicard-label-text'}} span {{_ 'hide-minicard-label-text'}}
b   b  
.materialCheckBox(class="{{#if hiddenMinicardLabelText}}is-checked{{/if}}") .materialCheckBox(class="{{#if hiddenMinicardLabelText}}is-checked{{/if}}")
ul
a.flex.js-vertical-scrollbars-toggle(title="{{_ 'enable-vertical-scrollbars'}}")
span {{_ 'enable-vertical-scrollbars'}}
b  
.materialCheckBox(class="{{#if isVerticalScrollbars}}is-checked{{/if}}")
hr hr
unless currentUser.isNoComments unless currentUser.isNoComments
h3.activity-title h3.activity-title

View file

@ -110,6 +110,11 @@ BlazeComponent.extendComponent({
return user && user.isKeyboardShortcuts(); return user && user.isKeyboardShortcuts();
}, },
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
events() { events() {
return [ return [
{ {
@ -134,6 +139,9 @@ BlazeComponent.extendComponent({
'click .js-keyboard-shortcuts-toggle'() { 'click .js-keyboard-shortcuts-toggle'() {
ReactiveCache.getCurrentUser().toggleKeyboardShortcuts(); ReactiveCache.getCurrentUser().toggleKeyboardShortcuts();
}, },
'click .js-vertical-scrollbars-toggle'() {
ReactiveCache.getCurrentUser().toggleVerticalScrollbars();
},
'click .js-close-sidebar'() { 'click .js-close-sidebar'() {
Sidebar.toggle() Sidebar.toggle()
}, },
@ -155,6 +163,10 @@ BlazeComponent.extendComponent({
return false; return false;
} }
}, },
isVerticalScrollbars() {
const user = ReactiveCache.getCurrentUser();
return user && user.isVerticalScrollbars();
},
showActivities() { showActivities() {
let ret = Utils.getCurrentBoard().showActivities ?? false; let ret = Utils.getCurrentBoard().showActivities ?? false;
return ret; return ret;

View file

@ -383,6 +383,7 @@
"email-sent": "Email sent", "email-sent": "Email sent",
"email-verifyEmail-subject": "Verify your email address on __siteName__", "email-verifyEmail-subject": "Verify your email address on __siteName__",
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.", "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
"enable-vertical-scrollbars": "Enable vertical scrollbars",
"enable-wip-limit": "Enable WIP Limit", "enable-wip-limit": "Enable WIP Limit",
"error-board-doesNotExist": "This board does not exist", "error-board-doesNotExist": "This board does not exist",
"error-board-notAdmin": "You need to be admin of this board to do that", "error-board-notAdmin": "You need to be admin of this board to do that",

View file

@ -451,6 +451,13 @@ Users.attachSchema(
type: Boolean, type: Boolean,
defaultValue: false, defaultValue: false,
}, },
'profile.verticalScrollbars': {
/**
* User-specified state of vertical scrollbars visibility.
*/
type: Boolean,
defaultValue: true,
},
services: { services: {
/** /**
* services field of the user * services field of the user
@ -966,6 +973,11 @@ Users.helpers({
return keyboardShortcuts; return keyboardShortcuts;
}, },
isVerticalScrollbars() {
const { verticalScrollbars = true } = this.profile || {};
return verticalScrollbars;
},
remove() { remove() {
User.remove({ User.remove({
_id: this._id, _id: this._id,
@ -1038,6 +1050,14 @@ Users.mutations({
}, },
}; };
}, },
toggleVerticalScrollbars() {
const { verticalScrollbars = true } = this.profile || {};
return {
$set: {
'profile.verticalScrollbars': !verticalScrollbars,
},
};
},
addInvite(boardId) { addInvite(boardId) {
return { return {