diff options
Diffstat (limited to 'client/components/cards/cardDetails.js')
-rw-r--r-- | client/components/cards/cardDetails.js | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index c0ea6a05..caa5993f 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -1,7 +1,3 @@ -// XXX Obviously this shouldn't be a global, but this is currently the only way -// to share a variable between two files. - - BlazeComponent.extendComponent({ template: function() { return 'cardDetails'; @@ -80,6 +76,37 @@ BlazeComponent.extendComponent({ } }).register('cardDetails'); +// We extends the normal InlinedForm component to support UnsavedEdits draft +// feature. +(class extends InlinedForm { + _getUnsavedEditKey() { + return { + fieldName: 'cardDescription', + docId: Session.get('currentCard'), + } + } + + close(isReset = false) { + if (this.isOpen.get() && ! isReset) { + UnsavedEdits.set(this._getUnsavedEditKey(), this.getValue()); + } + super(); + } + + reset() { + UnsavedEdits.reset(this._getUnsavedEditKey()); + this.close(true); + } + + events() { + const parentEvents = InlinedForm.prototype.events()[0]; + return [{ + ...parentEvents, + 'click .js-close-inlined-form': this.reset, + }]; + } +}).register('inlinedCardDescription'); + Template.cardDetailsActionsPopup.events({ 'click .js-members': Popup.open('cardMembers'), 'click .js-labels': Popup.open('cardLabels'), |