@banta/sdk 4.5.4 → 4.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/banta-sdk.umd.js +100 -7
- package/bundles/banta-sdk.umd.js.map +1 -1
- package/bundles/banta-sdk.umd.min.js +1 -1
- package/bundles/banta-sdk.umd.min.js.map +1 -1
- package/esm2015/lib/comments/banta-comments/banta-comments.component.js +50 -5
- package/esm2015/lib/comments/comment/comment.component.js +10 -3
- package/esm2015/lib/comments/comment-view/comment-view.component.js +31 -5
- package/fesm2015/banta-sdk.js +84 -8
- package/fesm2015/banta-sdk.js.map +1 -1
- package/lib/comments/banta-comments/banta-comments.component.d.ts +32 -1
- package/lib/comments/comment/comment.component.d.ts +4 -0
- package/lib/comments/comment-view/comment-view.component.d.ts +12 -1
- package/package.json +1 -1
package/bundles/banta-sdk.umd.js
CHANGED
|
@@ -8399,7 +8399,8 @@
|
|
|
8399
8399
|
};
|
|
8400
8400
|
|
|
8401
8401
|
var CommentComponent = /** @class */ (function () {
|
|
8402
|
-
function CommentComponent() {
|
|
8402
|
+
function CommentComponent(elementRef) {
|
|
8403
|
+
this.elementRef = elementRef;
|
|
8403
8404
|
this._reported = new rxjs.Subject();
|
|
8404
8405
|
this._selected = new rxjs.Subject();
|
|
8405
8406
|
this._liked = new rxjs.Subject();
|
|
@@ -8419,6 +8420,13 @@
|
|
|
8419
8420
|
this._editEnded = new rxjs.Subject();
|
|
8420
8421
|
this._edited = new rxjs.Subject();
|
|
8421
8422
|
}
|
|
8423
|
+
Object.defineProperty(CommentComponent.prototype, "element", {
|
|
8424
|
+
get: function () {
|
|
8425
|
+
return this.elementRef.nativeElement;
|
|
8426
|
+
},
|
|
8427
|
+
enumerable: false,
|
|
8428
|
+
configurable: true
|
|
8429
|
+
});
|
|
8422
8430
|
CommentComponent.prototype.ngOnInit = function () {
|
|
8423
8431
|
var _this = this;
|
|
8424
8432
|
var maxTime = 100;
|
|
@@ -8580,6 +8588,9 @@
|
|
|
8580
8588
|
styles: ["@-webkit-keyframes comment-appear{0%{transform:translate(6em)}to{transform:translate(0)}}@keyframes comment-appear{0%{transform:translate(6em)}to{transform:translate(0)}}:host{display:flex;flex-direction:column;position:relative;padding:.5em;visibility:hidden}:host.new{visibility:visible;-webkit-animation-name:comment-appear;animation-name:comment-appear;-webkit-animation-duration:.25s;animation-duration:.25s;-webkit-animation-fill-mode:both;animation-fill-mode:both}:host.highlighted{background:#00223a;outline:2px solid #003277}:host.visible{visibility:visible}:host:hover{background:#eee}:host .message-content .content{margin-left:60px;margin-right:.5em}:host .message-content .attachments-row{margin-top:15px;display:flex;gap:10px}:host .message-content .attachments-row img{border-radius:10px;width:300px;max-width:100%;max-height:20em;-o-object-fit:cover;object-fit:cover}:host.abbreviated .message-content .content{text-overflow:ellipsis;overflow-y:hidden}:host .actions{display:flex;padding-right:10px;margin-left:60px;align-items:center}:host .actions button,banta-timestamp{color:#666;flex-shrink:0}banta-timestamp{font-size:10pt;margin-left:1em;text-align:right}.user{position:relative;margin:1em 0 0;display:flex;align-items:center;flex-wrap:wrap}.user .user-1,.user .user-2{display:flex;flex-wrap:nowrap;align-items:center;min-width:0}.user .user-2{margin:1em 0}.user .user-identity{display:flex;flex-direction:column;min-width:0}.user .display-name,.user .username{z-index:1;position:relative;padding:0 0 0 1em;font-size:10pt;color:#000;margin:0 auto 0 0;display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:1;flex-grow:0;min-width:0}.user .display-name.username.username.username,.user .username.username.username.username{color:#666}.avatar{height:48px;width:48px;background-position:50%;background-size:cover;background-color:#333;border-radius:100%;flex-shrink:0;flex-grow:0}.counted-action{display:flex;align-items:center}.counted-action.active .count-indicator,.counted-action.active button{color:#00a5ff}.counted-action button .count-indicator{margin-left:.5em}.count-indicator{font-size:9pt;padding:0 0 0 3px;color:#666}:host-context(.mat-dark-theme) .count-indicator{border-color:#333}:host-context(.mat-dark-theme):hover{background:#060606}.user-tag,:host-context(.mat-dark-theme) .user .display-name,:host-context(.mat-dark-theme) .user .username{color:#fff}.user-tag{text-transform:uppercase;font-size:12px;border:1px solid #b27373;background:#7a412b;padding:3px 5px;margin:0 .5em 0 1em;border-radius:3px}.spacer{flex-shrink:1;flex-grow:1}ul.message-facts{margin:0;padding:0;color:#666}ul.message-facts li{list-style-type:none;border-left:1px solid #666;font-size:10pt;padding-left:.5em;margin-left:.5em;margin-top:.5em}ul.message-facts li:first-child{border-left:1px solid transparent;margin-left:0;padding-left:0}@media (max-width:400px){.avatar{height:32px;width:32px}:host .actions{margin-left:0;margin-top:.5em}:host .message-content .content{margin-left:44px;margin-right:.5em}}:host-context(.banta-mobile) .avatar{height:32px;width:32px}:host-context(.banta-mobile) :host .actions{margin-left:0;margin-top:.5em}:host-context(.banta-mobile) :host .message-content .content{margin-left:44px;margin-right:.5em}.card-attachment a{display:flex;align-items:flex-start;gap:1em;width:100%;border:1px solid #666;border-radius:4px;padding:1em;box-sizing:border-box;background-color:#191919}.card-attachment a img{width:300px;aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover;border-radius:10px}.card-attachment a h1{margin:0;font-size:30px}"]
|
|
8581
8589
|
},] }
|
|
8582
8590
|
];
|
|
8591
|
+
CommentComponent.ctorParameters = function () { return [
|
|
8592
|
+
{ type: core.ElementRef }
|
|
8593
|
+
]; };
|
|
8583
8594
|
CommentComponent.propDecorators = {
|
|
8584
8595
|
maxLength: [{ type: core.Input }],
|
|
8585
8596
|
isNew: [{ type: core.HostBinding, args: ['class.new',] }],
|
|
@@ -8637,6 +8648,25 @@
|
|
|
8637
8648
|
this.olderMessages = [];
|
|
8638
8649
|
this.sortOrderChanged = new rxjs.Subject();
|
|
8639
8650
|
}
|
|
8651
|
+
Object.defineProperty(CommentViewComponent.prototype, "comments", {
|
|
8652
|
+
get: function () {
|
|
8653
|
+
return Array.from(this.commentsQuery);
|
|
8654
|
+
},
|
|
8655
|
+
enumerable: false,
|
|
8656
|
+
configurable: true
|
|
8657
|
+
});
|
|
8658
|
+
/**
|
|
8659
|
+
* Get the CommentComponent instantiated for the given ChatMessage,
|
|
8660
|
+
* if it exists in the current view. Note that messages which are not
|
|
8661
|
+
* currently shown to the user will not return a CommentComponent.
|
|
8662
|
+
* @param message
|
|
8663
|
+
* @returns
|
|
8664
|
+
*/
|
|
8665
|
+
CommentViewComponent.prototype.getCommentComponentForMessage = function (message) {
|
|
8666
|
+
if (!message)
|
|
8667
|
+
throw new Error("You must pass a valid ChatMessage");
|
|
8668
|
+
return this.comments.find(function (x) { var _a; return ((_a = x.message) === null || _a === void 0 ? void 0 : _a.id) === message.id; });
|
|
8669
|
+
};
|
|
8640
8670
|
Object.defineProperty(CommentViewComponent.prototype, "selected", {
|
|
8641
8671
|
get: function () {
|
|
8642
8672
|
return this._selected;
|
|
@@ -8904,9 +8934,18 @@
|
|
|
8904
8934
|
};
|
|
8905
8935
|
CommentViewComponent.prototype.sortMessages = function () {
|
|
8906
8936
|
var _this = this;
|
|
8907
|
-
|
|
8908
|
-
|
|
8909
|
-
|
|
8937
|
+
if (!this.source)
|
|
8938
|
+
return;
|
|
8939
|
+
var sorter;
|
|
8940
|
+
if (this.source.sortOrder === common$1.CommentsOrder.LIKES)
|
|
8941
|
+
sorter = function (a, b) { return b.likes - a.likes; };
|
|
8942
|
+
else if (this.source.sortOrder === common$1.CommentsOrder.NEWEST)
|
|
8943
|
+
sorter = function (a, b) { return (b.sentAt - a.sentAt) * (_this.newestLast ? -1 : 1); };
|
|
8944
|
+
else if (this.source.sortOrder === common$1.CommentsOrder.OLDEST)
|
|
8945
|
+
sorter = function (a, b) { return (a.sentAt - b.sentAt) * (_this.newestLast ? -1 : 1); };
|
|
8946
|
+
this.messages.sort(sorter);
|
|
8947
|
+
this.olderMessages.sort(sorter);
|
|
8948
|
+
this.newMessages.sort(sorter);
|
|
8910
8949
|
};
|
|
8911
8950
|
CommentViewComponent.prototype.messageReceived = function (message) {
|
|
8912
8951
|
var _this = this;
|
|
@@ -8957,6 +8996,7 @@
|
|
|
8957
8996
|
showEmptyState: [{ type: core.Input }],
|
|
8958
8997
|
allowReplies: [{ type: core.Input }],
|
|
8959
8998
|
customMenuItems: [{ type: core.Input }],
|
|
8999
|
+
commentsQuery: [{ type: core.ViewChildren, args: [CommentComponent,] }],
|
|
8960
9000
|
fixedHeight: [{ type: core.Input }, { type: core.HostBinding, args: ['class.fixed-height',] }],
|
|
8961
9001
|
selectedMessage: [{ type: core.Input }],
|
|
8962
9002
|
selected: [{ type: core.Output }],
|
|
@@ -9104,6 +9144,13 @@
|
|
|
9104
9144
|
});
|
|
9105
9145
|
}); };
|
|
9106
9146
|
}
|
|
9147
|
+
Object.defineProperty(BantaCommentsComponent.prototype, "element", {
|
|
9148
|
+
get: function () {
|
|
9149
|
+
return this.elementRef.nativeElement;
|
|
9150
|
+
},
|
|
9151
|
+
enumerable: false,
|
|
9152
|
+
configurable: true
|
|
9153
|
+
});
|
|
9107
9154
|
BantaCommentsComponent.prototype.handleBackendExceptionAsAlert = function (e, prefix) {
|
|
9108
9155
|
if (prefix === void 0) { prefix = ''; }
|
|
9109
9156
|
try {
|
|
@@ -9153,6 +9200,10 @@
|
|
|
9153
9200
|
});
|
|
9154
9201
|
BantaCommentsComponent.prototype.ngAfterViewInit = function () {
|
|
9155
9202
|
var _this = this;
|
|
9203
|
+
this.threadViewQuery.changes.subscribe(function (changes) {
|
|
9204
|
+
console.log("i see changes...");
|
|
9205
|
+
console.dir(changes);
|
|
9206
|
+
});
|
|
9156
9207
|
if (typeof window !== 'undefined') {
|
|
9157
9208
|
var callback = function () {
|
|
9158
9209
|
var size = _this.elementRef.nativeElement.getBoundingClientRect();
|
|
@@ -9161,8 +9212,17 @@
|
|
|
9161
9212
|
_this.height = size.height;
|
|
9162
9213
|
});
|
|
9163
9214
|
};
|
|
9164
|
-
|
|
9165
|
-
|
|
9215
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
9216
|
+
this.resizeObserver = new ResizeObserver(callback);
|
|
9217
|
+
this.resizeObserver.observe(this.elementRef.nativeElement);
|
|
9218
|
+
}
|
|
9219
|
+
else {
|
|
9220
|
+
// One check is better than nothing!
|
|
9221
|
+
setTimeout(function () {
|
|
9222
|
+
_this.width = _this.elementRef.nativeElement.clientWidth;
|
|
9223
|
+
_this.height = _this.elementRef.nativeElement.clientHeight;
|
|
9224
|
+
}, 1000);
|
|
9225
|
+
}
|
|
9166
9226
|
callback();
|
|
9167
9227
|
}
|
|
9168
9228
|
};
|
|
@@ -9175,6 +9235,8 @@
|
|
|
9175
9235
|
return __awaiter(this, void 0, void 0, function () {
|
|
9176
9236
|
var _this = this;
|
|
9177
9237
|
return __generator(this, function (_d) {
|
|
9238
|
+
if (typeof window === 'undefined')
|
|
9239
|
+
return [2 /*return*/];
|
|
9178
9240
|
setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
9179
9241
|
var _d;
|
|
9180
9242
|
return __generator(this, function (_e) {
|
|
@@ -9245,6 +9307,35 @@
|
|
|
9245
9307
|
});
|
|
9246
9308
|
});
|
|
9247
9309
|
};
|
|
9310
|
+
/**
|
|
9311
|
+
* Attempts to find the CommentComponent that corresponds to the given ChatMessage.
|
|
9312
|
+
* The ChatMessage could be a top-level message in this conversation, or a reply,
|
|
9313
|
+
* but note that a CommentComponent will only exist for a reply if the user has
|
|
9314
|
+
* the relevant reply thread open.
|
|
9315
|
+
* @param message The message to look for
|
|
9316
|
+
*/
|
|
9317
|
+
BantaCommentsComponent.prototype.getCommentComponentForMessage = function (message) {
|
|
9318
|
+
var _a;
|
|
9319
|
+
if (message.parentMessageId)
|
|
9320
|
+
return (_a = this.threadView) === null || _a === void 0 ? void 0 : _a.getCommentComponentForMessage(message);
|
|
9321
|
+
else
|
|
9322
|
+
return this.commentView.getCommentComponentForMessage(message);
|
|
9323
|
+
};
|
|
9324
|
+
Object.defineProperty(BantaCommentsComponent.prototype, "threadView", {
|
|
9325
|
+
/**
|
|
9326
|
+
* Access the CommentViewComponent corresponding to the currently open reply thread.
|
|
9327
|
+
* This is not the top level comments, but instead the reply thread that the user has
|
|
9328
|
+
* opened (only one set of replies can be open at a time).
|
|
9329
|
+
*
|
|
9330
|
+
* For details about what CommentViewComponent affords you, see the commentView property.
|
|
9331
|
+
*/
|
|
9332
|
+
get: function () {
|
|
9333
|
+
var _this = this;
|
|
9334
|
+
return Array.from(this.threadViewQuery).filter(function (x) { return x !== _this.commentView; })[0];
|
|
9335
|
+
},
|
|
9336
|
+
enumerable: false,
|
|
9337
|
+
configurable: true
|
|
9338
|
+
});
|
|
9248
9339
|
BantaCommentsComponent.prototype.updateLoading = function () {
|
|
9249
9340
|
var _this = this;
|
|
9250
9341
|
var _a, _b;
|
|
@@ -9757,7 +9848,7 @@
|
|
|
9757
9848
|
BantaCommentsComponent.decorators = [
|
|
9758
9849
|
{ type: core.Component, args: [{
|
|
9759
9850
|
selector: 'banta-comments',
|
|
9760
|
-
template: "<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>Loading...</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [maxLength]=\"maxCommentLength\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"selectMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n [customMenuItems]=\"customMenuItems\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <banta-comment-sort\r\n [(sort)]=\"sortOrder\"></banta-comment-sort>\r\n\r\n <banta-comment-view\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [customMenuItems]=\"customMenuItems\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (selected)=\"selectMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n</ng-container>\r\n",
|
|
9851
|
+
template: "<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>Loading...</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [maxLength]=\"maxCommentLength\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"selectMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n class=\"replies\"\r\n #threadView\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n [customMenuItems]=\"customMenuItems\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <banta-comment-sort\r\n [(sort)]=\"sortOrder\"></banta-comment-sort>\r\n\r\n <banta-comment-view\r\n #commentView\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [customMenuItems]=\"customMenuItems\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (selected)=\"selectMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n</ng-container>\r\n",
|
|
9761
9852
|
styles: [":host{display:flex;flex-direction:column}@-webkit-keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}.focused{-webkit-animation-name:select-comment;animation-name:select-comment;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.focused .replies{margin-top:1em;margin-left:2em;border-left:2px solid #333;padding-left:2em}banta-comment-view{opacity:1;transition:opacity .4s ease-in-out}banta-comment-view.faded{opacity:.25}.loading{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:0 auto;min-height:16em}.main.hidden{display:none}.loading-screen{text-align:center;opacity:0;transition:opacity .25s ease-in-out}.loading-screen.visible{opacity:1}.loading-screen h1{font-weight:100}.loading-screen mat-spinner{margin:5em auto}.loading-screen .loading-message{opacity:0;transition:opacity .25s ease-in-out;width:500px;max-width:100%;margin:0 auto}.loading-screen .loading-message.visible{opacity:1}banta-comment-sort{margin:0 0 0 auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:block}.inline-replies{margin-left:4em}@media (max-width:500px){.focused .replies{margin-left:0}.inline-replies{margin-left:1em}.focused .replies{padding-left:.5em}banta-comment-sort{margin:0;width:100%}}:host-context(.banta-mobile) .focused .replies{margin-left:0}:host-context(.banta-mobile) .inline-replies{margin-left:1em}:host-context(.banta-mobile) .focused .replies{padding-left:.5em}:host-context(.banta-mobile) banta-comment-sort{margin:0;width:100%}"]
|
|
9762
9853
|
},] }
|
|
9763
9854
|
];
|
|
@@ -9775,6 +9866,8 @@
|
|
|
9775
9866
|
maxCommentLength: [{ type: core.Input }],
|
|
9776
9867
|
loadingMessages: [{ type: core.Input }],
|
|
9777
9868
|
useInlineReplies: [{ type: core.Input }],
|
|
9869
|
+
commentView: [{ type: core.ViewChild, args: ['commentView',] }],
|
|
9870
|
+
threadViewQuery: [{ type: core.ViewChildren, args: [CommentViewComponent,] }],
|
|
9778
9871
|
signInLabel: [{ type: core.Input }],
|
|
9779
9872
|
sendLabel: [{ type: core.Input }],
|
|
9780
9873
|
replyLabel: [{ type: core.Input }],
|