diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index 06e29e448..99288bfe6 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -549,7 +549,7 @@ template(name="cardDetails") .card-checklist-attachmentGallery.card-checklists if currentBoard.allowsChecklists hr - +checklists(cardId = _id) + +checklists(cardId = _id card = this) if currentBoard.allowsSubtasks hr +subtasks(cardId = _id) diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 7e0e9eea6..ce1e9066a 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -376,6 +376,9 @@ BlazeComponent.extendComponent({ 'click #toggleShowActivitiesCard'() { this.data().toggleShowActivities(); }, + 'click #toggleHideCheckedChecklistItems'() { + this.data().toggleHideCheckedChecklistItems(); + }, 'click #toggleCustomFieldsGridButton'() { Meteor.call('toggleCustomFieldsGrid'); }, diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade index 36fdf5b33..3d5dc2f81 100644 --- a/client/components/cards/checklists.jade +++ b/client/components/cards/checklists.jade @@ -12,15 +12,15 @@ template(name="checklists") if currentUser.isBoardMember .material-toggle-switch(title="{{_ 'hide-checked-items'}}") //span.toggle-switch-title - if hideCheckedItems - input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked") + if card.hideCheckedChecklistItems + input.toggle-switch(type="checkbox" id="toggleHideCheckedChecklistItems" checked="checked") else - input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton") - label.toggle-label(for="toggleHideCheckedItemsButton") + input.toggle-switch(type="checkbox" id="toggleHideCheckedChecklistItems") + label.toggle-label(for="toggleHideCheckedChecklistItems") .card-checklist-items each checklist in checklists - +checklistDetail(checklist = checklist) + +checklistDetail(checklist = checklist card = card) if canModifyCard +inlinedForm(autoclose=false classNames="js-add-checklist" cardId = cardId) @@ -55,7 +55,7 @@ template(name="checklistDetail") .checklist-progress-text {{finishedPercent}}% .checklist-progress-bar .checklist-progress(style="width:{{finishedPercent}}%") - +checklistItems(checklist = checklist) + +checklistItems(checklist = checklist card = card) template(name="checklistDeletePopup") p {{_ 'confirm-checklist-delete-popup'}} @@ -104,7 +104,7 @@ template(name="checklistItems") +inlinedForm(classNames="js-edit-checklist-item" item = item checklist = checklist) +editChecklistItemForm(type = 'item' item = item checklist = checklist) else - +checklistItemDetail(item = item checklist = checklist) + +checklistItemDetail(item = item checklist = checklist card = card) if canModifyCard +inlinedForm(autoclose=false classNames="js-add-checklist-item" checklist = checklist) +addChecklistItemForm(checklist=checklist showNewlineBecomesNewChecklistItem=true) @@ -113,7 +113,7 @@ template(name="checklistItems") i.fa.fa-plus template(name='checklistItemDetail') - .js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if hideCheckedItems}} invisible{{/if}}{{/if}}" + .js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if card.hideCheckedChecklistItems}} invisible{{/if}}{{/if}}" role="checkbox" aria-checked="{{#if item.isFinished }}true{{else}}false{{/if}}" tabindex="0") if canModifyCard .check-box-container diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 8fb146960..f6f543571 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -201,15 +201,8 @@ BlazeComponent.extendComponent({ }, events() { - const events = { - 'click #toggleHideCheckedItemsButton'() { - Meteor.call('toggleHideCheckedItems'); - }, - }; - return [ { - ...events, 'click .js-open-checklist-details-menu': Popup.open('checklistActions'), 'submit .js-add-checklist': this.addChecklist, 'submit .js-edit-checklist-title': this.editChecklist, @@ -274,10 +267,10 @@ Template.checklists.helpers({ const ret = card.checklists(); return ret; }, - hideCheckedItems() { - const currentUser = ReactiveCache.getCurrentUser(); - if (currentUser) return currentUser.hasHideCheckedItems(); - return false; + hideCheckedChecklistItems() { + const card = ReactiveCache.getCard(this.cardId); + const ret = card.hideCheckedChecklistItems ?? false; + return ret; }, }); @@ -338,11 +331,6 @@ BlazeComponent.extendComponent({ }).register('editChecklistItemForm'); Template.checklistItemDetail.helpers({ - hideCheckedItems() { - const user = ReactiveCache.getCurrentUser(); - if (user) return user.hasHideCheckedItems(); - return false; - }, }); BlazeComponent.extendComponent({ diff --git a/models/cards.js b/models/cards.js index dd57c5145..3d6a90d73 100644 --- a/models/cards.js +++ b/models/cards.js @@ -477,6 +477,13 @@ Cards.attachSchema( type: Boolean, defaultValue: false, }, + hideCheckedChecklistItems: { + /** + * hide the checked checklist-items? + */ + type: Boolean, + optional: true, + }, }), ); @@ -2179,6 +2186,14 @@ Cards.mutations({ }; }, + toggleHideCheckedChecklistItems() { + return { + $set: { + hideCheckedChecklistItems: !this.hideCheckedChecklistItems, + } + }; + }, + setCustomField(customFieldId, value) { // todo const index = this.customFieldIndex(customFieldId); diff --git a/models/users.js b/models/users.js index 4baa6cdbb..7bee1c0f3 100644 --- a/models/users.js +++ b/models/users.js @@ -172,13 +172,6 @@ Users.attachSchema( type: Boolean, optional: true, }, - 'profile.hideCheckedItems': { - /** - * does the user want to hide checked checklist items? - */ - type: Boolean, - optional: true, - }, 'profile.cardMaximized': { /** * has user clicked maximize card? @@ -853,11 +846,6 @@ Users.helpers({ return profile.showDesktopDragHandles || false; }, - hasHideCheckedItems() { - const profile = this.profile || {}; - return profile.hideCheckedItems || false; - }, - hasCustomFieldsGrid() { const profile = this.profile || {}; return profile.customFieldsGrid || false; @@ -1048,15 +1036,6 @@ Users.mutations({ }; }, - toggleHideCheckedItems() { - const value = this.hasHideCheckedItems(); - return { - $set: { - 'profile.hideCheckedItems': !value, - }, - }; - }, - toggleFieldsGrid(value = false) { return { $set: { diff --git a/server/migrations.js b/server/migrations.js index 58e370e6d..2930d6fa7 100644 --- a/server/migrations.js +++ b/server/migrations.js @@ -1473,3 +1473,19 @@ Migrations.add('remove-user-profile-hiddenSystemMessages', () => { noValidateMulti, ); }); + +Migrations.add('remove-user-profile-hideCheckedItems', () => { + Users.update( + { + "profile.hideCheckedItems": { + $exists: true, + }, + }, + { + $unset: { + "profile.hideCheckedItems": 1, + }, + }, + noValidateMulti, + ); +});