Added initial support for auto-width lists option

This commit is contained in:
Nadav Tasher 2024-11-28 01:18:51 +02:00
parent f6341de610
commit 0097674fc0
6 changed files with 54 additions and 2 deletions

View file

@ -23,6 +23,10 @@ template(name="boardHeaderBar")
span span
= currentBoard.stars = currentBoard.stars
a.board-header-btn.js-auto-width-board(class="{{#if isAutoWidth}}is-active{{/if}}"
title="{{#if isAutoWidth}}{{_ 'click-to-disable-auto-width'}}{{else}}{{_ 'click-to-enable-auto-width'}}{{/if}}")
i.fa(class="fa-solid fa-{{#if isAutoWidth}}compress{{else}}expand{{/if}}")
a.board-header-btn( a.board-header-btn(
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}" class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
title="{{_ currentBoard.permission}}") title="{{_ currentBoard.permission}}")
@ -66,6 +70,10 @@ template(name="boardHeaderBar")
span span
= currentBoard.stars = currentBoard.stars
a.board-header-btn.js-auto-width-board(class="{{#if isAutoWidth}}is-active{{/if}}"
title="{{#if isAutoWidth}}{{_ 'click-to-disable-auto-width'}}{{else}}{{_ 'click-to-enable-auto-width'}}{{/if}}")
i.fa(class="fa-solid fa-{{#if isAutoWidth}}compress{{else}}expand{{/if}}")
a.board-header-btn( a.board-header-btn(
class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}" class="{{#if currentUser.isBoardAdmin}}js-change-visibility{{else}}is-disabled{{/if}}"
title="{{_ currentBoard.permission}}") title="{{_ currentBoard.permission}}")

View file

@ -38,6 +38,12 @@ BlazeComponent.extendComponent({
return user && user.hasStarred(boardId); return user && user.hasStarred(boardId);
}, },
isAutoWidth() {
const boardId = Session.get('currentBoard');
const user = ReactiveCache.getCurrentUser();
return user && user.hasAutoWidth(boardId);
},
// Only show the star counter if the number of star is greater than 2 // Only show the star counter if the number of star is greater than 2
showStarCounter() { showStarCounter() {
const currentBoard = Utils.getCurrentBoard(); const currentBoard = Utils.getCurrentBoard();
@ -71,6 +77,9 @@ BlazeComponent.extendComponent({
'click .js-star-board'() { 'click .js-star-board'() {
ReactiveCache.getCurrentUser().toggleBoardStar(Session.get('currentBoard')); ReactiveCache.getCurrentUser().toggleBoardStar(Session.get('currentBoard'));
}, },
'click .js-auto-width-board'() {
ReactiveCache.getCurrentUser().toggleAutoWidth(Session.get('currentBoard'));
},
'click .js-open-board-menu': Popup.open('boardMenu'), 'click .js-open-board-menu': Popup.open('boardMenu'),
'click .js-change-visibility': Popup.open('boardChangeVisibility'), 'click .js-change-visibility': Popup.open('boardChangeVisibility'),
'click .js-watch-board': Popup.open('boardChangeWatch'), 'click .js-watch-board': Popup.open('boardChangeWatch'),

View file

@ -1,7 +1,7 @@
template(name='list') template(name='list')
.list.js-list(id="js-list-{{_id}}" .list.js-list(id="js-list-{{_id}}"
style="{{#unless collapsed}}min-width:{{listWidth}}px;{{/unless}}" style="{{#unless collapsed}}{{#if autoWidth}}min-{{/if}}width:{{listWidth}}px;{{/unless}}"
class="{{#if collapsed}}list-collapsed{{/if}}") class="{{#if collapsed}}list-collapsed{{/if}} {{#if autoWidth}}list-auto-width{{/if}}")
+listHeader +listHeader
+listBody +listBody

View file

@ -200,6 +200,12 @@ BlazeComponent.extendComponent({
const list = Template.currentData(); const list = Template.currentData();
return user.getListWidth(list.boardId, list._id); return user.getListWidth(list.boardId, list._id);
}, },
autoWidth() {
const user = ReactiveCache.getCurrentUser();
const list = Template.currentData();
return user.hasAutoWidth(list.boardId);
},
}).register('list'); }).register('list');
Template.miniList.events({ Template.miniList.events({

View file

@ -716,6 +716,11 @@ Users.helpers({
return _.contains(starredBoards, boardId); return _.contains(starredBoards, boardId);
}, },
hasAutoWidth(boardId) {
const { autoWidths = {} } = this.profile || {};
return autoWidths[boardId] === true;
},
invitedBoards() { invitedBoards() {
const { invitedBoards = [] } = this.profile || {}; const { invitedBoards = [] } = this.profile || {};
return Boards.userBoards( return Boards.userBoards(
@ -974,6 +979,17 @@ Users.mutations({
}, },
}; };
}, },
toggleAutoWidth(boardId) {
const { autoWidths = {} } = this.profile || {};
autoWidths[boardId] = !autoWidths[boardId];
return {
$set: {
'profile.autoWidths': autoWidths,
},
};
},
addInvite(boardId) { addInvite(boardId) {
return { return {

View file

@ -1489,3 +1489,16 @@ Migrations.add('remove-user-profile-hideCheckedItems', () => {
noValidateMulti, noValidateMulti,
); );
}); });
Migrations.add('add-default-auto-width-boards', () => {
Users.find().forEach(user => {
if (!user.hasOwnProperty('profile.autoWidths')) {
// Set default auto widths
Users.direct.update(
{ _id: user._id },
{ $set: { 'profile.autoWidths': {} } },
noValidate,
);
}
});
});