12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- let commentFormIsOpen = new ReactiveVar(false);
- BlazeComponent.extendComponent({
- template() {
- return 'commentForm';
- },
- onDestroyed() {
- commentFormIsOpen.set(false);
- },
- commentFormIsOpen() {
- return commentFormIsOpen.get();
- },
- getInput() {
- return this.$('.js-new-comment-input');
- },
- events() {
- return [{
- 'click .js-new-comment:not(.focus)': function() {
- commentFormIsOpen.set(true);
- },
- 'submit .js-new-comment-form': function(evt) {
- let input = this.getInput();
- if ($.trim(input.val())) {
- CardComments.insert({
- boardId: this.boardId,
- cardId: this._id,
- text: input.val()
- });
- resetCommentInput(input);
- Tracker.flush();
- autosize.update(input);
- }
- evt.preventDefault();
- },
- // Pressing Ctrl+Enter should submit the form
- 'keydown form textarea': function(evt) {
- if (evt.keyCode === 13 && (evt.metaKey || evt.ctrlKey)) {
- this.find('button[type=submit]').click();
- }
- }
- }];
- }
- }).register('commentForm');
- // XXX This should be a static method of the `commentForm` component
- function resetCommentInput(input) {
- input.val('');
- input.blur();
- commentFormIsOpen.set(false);
- }
- // XXX This should handled a `onUpdated` callback of the `commentForm` component
- // but since this callback doesn't exists, and `onRendered` is not called if the
- // data is not destroyed and recreated, we simulate the desired callback using
- // Tracker.autorun to register the component dependencies, and re-run when these
- // dependencies are invalidated. A better component API would remove this hack.
- Tracker.autorun(() => {
- Session.get('currentCard');
- Tracker.afterFlush(() => {
- autosize.update($('.js-new-comment-input'));
- });
- })
- EscapeActions.register('inlinedForm',
- function() {
- const draftKey = {
- fieldName: 'cardComment',
- docId: Session.get('currentCard')
- };
- let commentInput = $('.js-new-comment-input');
- if ($.trim(commentInput.val())) {
- UnsavedEdits.set(draftKey, commentInput.val());
- } else {
- UnsavedEdits.reset(draftKey);
- }
- resetCommentInput(commentInput);
- },
- function() { return commentFormIsOpen.get(); }, {
- noClickEscapeOn: '.js-new-comment'
- }
- );
|