@propbinder/mobile-design 0.1.19 → 0.1.21
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.
|
@@ -6712,6 +6712,9 @@ class DsMobilePostDetailModalComponent {
|
|
|
6712
6712
|
bottomSheet;
|
|
6713
6713
|
// Post data passed from service
|
|
6714
6714
|
postData;
|
|
6715
|
+
// Current user info for comment composer
|
|
6716
|
+
currentUserName = '';
|
|
6717
|
+
currentUserInitialsInput = '';
|
|
6715
6718
|
// Callback for submitting a new comment
|
|
6716
6719
|
onSubmitComment;
|
|
6717
6720
|
/**
|
|
@@ -6733,11 +6736,11 @@ class DsMobilePostDetailModalComponent {
|
|
|
6733
6736
|
authorRole: '',
|
|
6734
6737
|
timestamp: '',
|
|
6735
6738
|
content: '',
|
|
6736
|
-
comments: []
|
|
6739
|
+
comments: [],
|
|
6737
6740
|
}, ...(ngDevMode ? [{ debugName: "post" }] : []));
|
|
6738
6741
|
// Comment composer state
|
|
6739
6742
|
commentText = signal('', ...(ngDevMode ? [{ debugName: "commentText" }] : []));
|
|
6740
|
-
currentUserInitials = signal('
|
|
6743
|
+
currentUserInitials = signal('', ...(ngDevMode ? [{ debugName: "currentUserInitials" }] : []));
|
|
6741
6744
|
replyingTo = signal(null, ...(ngDevMode ? [{ debugName: "replyingTo" }] : []));
|
|
6742
6745
|
editingComment = signal(null, ...(ngDevMode ? [{ debugName: "editingComment" }] : []));
|
|
6743
6746
|
// Mention menu state
|
|
@@ -6750,18 +6753,22 @@ class DsMobilePostDetailModalComponent {
|
|
|
6750
6753
|
// Add post author
|
|
6751
6754
|
users.push({
|
|
6752
6755
|
name: post.authorName,
|
|
6753
|
-
initials: post.avatarInitials ||
|
|
6754
|
-
|
|
6756
|
+
initials: post.avatarInitials ||
|
|
6757
|
+
post.authorName
|
|
6758
|
+
.split(' ')
|
|
6759
|
+
.map((n) => n[0])
|
|
6760
|
+
.join(''),
|
|
6761
|
+
role: post.authorRole,
|
|
6755
6762
|
});
|
|
6756
6763
|
// Add unique commenters
|
|
6757
6764
|
const commenterNames = new Set();
|
|
6758
|
-
post.comments?.forEach(comment => {
|
|
6765
|
+
post.comments?.forEach((comment) => {
|
|
6759
6766
|
if (!commenterNames.has(comment.authorName)) {
|
|
6760
6767
|
commenterNames.add(comment.authorName);
|
|
6761
6768
|
users.push({
|
|
6762
6769
|
name: comment.authorName,
|
|
6763
6770
|
initials: comment.avatarInitials,
|
|
6764
|
-
role: comment.authorRole
|
|
6771
|
+
role: comment.authorRole,
|
|
6765
6772
|
});
|
|
6766
6773
|
}
|
|
6767
6774
|
});
|
|
@@ -6772,7 +6779,7 @@ class DsMobilePostDetailModalComponent {
|
|
|
6772
6779
|
const query = this.mentionQuery().toLowerCase();
|
|
6773
6780
|
if (!query)
|
|
6774
6781
|
return this.availableUsers();
|
|
6775
|
-
return this.availableUsers().filter(user => user.name.toLowerCase().includes(query));
|
|
6782
|
+
return this.availableUsers().filter((user) => user.name.toLowerCase().includes(query));
|
|
6776
6783
|
}, ...(ngDevMode ? [{ debugName: "filteredUsers" }] : []));
|
|
6777
6784
|
constructor(modalController, lightbox, bottomSheet) {
|
|
6778
6785
|
this.modalController = modalController;
|
|
@@ -6784,6 +6791,21 @@ class DsMobilePostDetailModalComponent {
|
|
|
6784
6791
|
if (this.postData) {
|
|
6785
6792
|
this.post.set(this.postData);
|
|
6786
6793
|
}
|
|
6794
|
+
// Set current user initials
|
|
6795
|
+
if (this.currentUserInitialsInput) {
|
|
6796
|
+
this.currentUserInitials.set(this.currentUserInitialsInput);
|
|
6797
|
+
}
|
|
6798
|
+
else if (this.currentUserName) {
|
|
6799
|
+
// fallback: derive from name
|
|
6800
|
+
const initials = this.currentUserName
|
|
6801
|
+
.trim()
|
|
6802
|
+
.split(/\s+/)
|
|
6803
|
+
.map((p) => p[0])
|
|
6804
|
+
.join('')
|
|
6805
|
+
.substring(0, 2)
|
|
6806
|
+
.toUpperCase();
|
|
6807
|
+
this.currentUserInitials.set(initials);
|
|
6808
|
+
}
|
|
6787
6809
|
// Set up keyboard listeners to update CSS variable for composer positioning
|
|
6788
6810
|
this.setupKeyboardListeners();
|
|
6789
6811
|
}
|
|
@@ -6809,22 +6831,22 @@ class DsMobilePostDetailModalComponent {
|
|
|
6809
6831
|
setupKeyboardListeners() {
|
|
6810
6832
|
Keyboard.addListener('keyboardWillShow', (info) => {
|
|
6811
6833
|
document.documentElement.style.setProperty('--keyboard-height', `${info.keyboardHeight}px`);
|
|
6812
|
-
}).catch(e => console.log('Keyboard listeners not available:', e));
|
|
6834
|
+
}).catch((e) => console.log('Keyboard listeners not available:', e));
|
|
6813
6835
|
Keyboard.addListener('keyboardWillHide', () => {
|
|
6814
6836
|
document.documentElement.style.setProperty('--keyboard-height', '0px');
|
|
6815
|
-
}).catch(e => console.log('Keyboard listeners not available:', e));
|
|
6837
|
+
}).catch((e) => console.log('Keyboard listeners not available:', e));
|
|
6816
6838
|
}
|
|
6817
6839
|
/**
|
|
6818
6840
|
* Clean up keyboard event listeners
|
|
6819
6841
|
*/
|
|
6820
6842
|
cleanupKeyboardListeners() {
|
|
6821
|
-
Keyboard.removeAllListeners().catch(e => console.log('Keyboard cleanup not available:', e));
|
|
6843
|
+
Keyboard.removeAllListeners().catch((e) => console.log('Keyboard cleanup not available:', e));
|
|
6822
6844
|
}
|
|
6823
6845
|
/**
|
|
6824
6846
|
* Show the keyboard when user interacts with input
|
|
6825
6847
|
*/
|
|
6826
6848
|
showKeyboard() {
|
|
6827
|
-
Keyboard.show().catch(e => console.log('Keyboard.show() not available'));
|
|
6849
|
+
Keyboard.show().catch((e) => console.log('Keyboard.show() not available'));
|
|
6828
6850
|
}
|
|
6829
6851
|
/**
|
|
6830
6852
|
* Focus the comment input when comment icon is tapped
|
|
@@ -6956,43 +6978,42 @@ class DsMobilePostDetailModalComponent {
|
|
|
6956
6978
|
console.log('[PostDetailModal] Updating comment:', text);
|
|
6957
6979
|
const editing = this.editingComment();
|
|
6958
6980
|
// Update the existing comment
|
|
6959
|
-
const updatedComments = currentPost.comments?.map(comment => {
|
|
6960
|
-
if (comment.authorName === editing.authorName &&
|
|
6961
|
-
comment.content === editing.originalContent &&
|
|
6962
|
-
comment.timestamp === editing.timestamp) {
|
|
6981
|
+
const updatedComments = currentPost.comments?.map((comment) => {
|
|
6982
|
+
if (comment.authorName === editing.authorName && comment.content === editing.originalContent && comment.timestamp === editing.timestamp) {
|
|
6963
6983
|
return {
|
|
6964
6984
|
...comment,
|
|
6965
6985
|
content: text,
|
|
6966
|
-
timestamp: 'Just now (edited)'
|
|
6986
|
+
timestamp: 'Just now (edited)',
|
|
6967
6987
|
};
|
|
6968
6988
|
}
|
|
6969
6989
|
return comment;
|
|
6970
6990
|
});
|
|
6971
6991
|
this.post.set({
|
|
6972
6992
|
...currentPost,
|
|
6973
|
-
comments: updatedComments
|
|
6993
|
+
comments: updatedComments,
|
|
6974
6994
|
});
|
|
6975
6995
|
// Clear edit state
|
|
6976
6996
|
this.editingComment.set(null);
|
|
6977
6997
|
}
|
|
6978
6998
|
else {
|
|
6979
6999
|
console.log('[PostDetailModal] Submitting comment:', finalText);
|
|
7000
|
+
console.log('[PostDetailModal] onSubmitComment =', this.onSubmitComment);
|
|
6980
7001
|
const newComment = {
|
|
6981
|
-
authorName:
|
|
6982
|
-
authorRole: '
|
|
7002
|
+
authorName: this.currentUserName || 'Dig',
|
|
7003
|
+
authorRole: 'Dig',
|
|
6983
7004
|
timestamp: 'Just now',
|
|
6984
7005
|
avatarInitials: this.currentUserInitials(),
|
|
6985
7006
|
content: finalText,
|
|
6986
7007
|
isLiked: false,
|
|
6987
7008
|
likeCount: 0,
|
|
6988
|
-
isOwnComment: true
|
|
7009
|
+
isOwnComment: true,
|
|
6989
7010
|
};
|
|
6990
7011
|
// Add comment to the list
|
|
6991
7012
|
const updatedComments = [...(currentPost.comments || []), newComment];
|
|
6992
7013
|
this.post.set({
|
|
6993
7014
|
...currentPost,
|
|
6994
7015
|
comments: updatedComments,
|
|
6995
|
-
commentCount: updatedComments.length
|
|
7016
|
+
commentCount: updatedComments.length,
|
|
6996
7017
|
});
|
|
6997
7018
|
// Clear reply state
|
|
6998
7019
|
this.replyingTo.set(null);
|
|
@@ -7027,7 +7048,7 @@ class DsMobilePostDetailModalComponent {
|
|
|
7027
7048
|
avatarInitials: postData.avatarInitials || '',
|
|
7028
7049
|
avatarType: postData.avatarType || 'initials',
|
|
7029
7050
|
avatarSrc: postData.avatarSrc || '',
|
|
7030
|
-
timestamp: postData.timestamp
|
|
7051
|
+
timestamp: postData.timestamp,
|
|
7031
7052
|
};
|
|
7032
7053
|
this.lightbox.open({
|
|
7033
7054
|
images: [
|
|
@@ -7039,13 +7060,13 @@ class DsMobilePostDetailModalComponent {
|
|
|
7039
7060
|
description: postData.content,
|
|
7040
7061
|
isLiked: postData.isLiked || false,
|
|
7041
7062
|
likeCount: postData.likeCount || 0,
|
|
7042
|
-
commentCount: postData.commentCount || 0
|
|
7043
|
-
}
|
|
7063
|
+
commentCount: postData.commentCount || 0,
|
|
7064
|
+
},
|
|
7044
7065
|
],
|
|
7045
7066
|
author: authorMeta,
|
|
7046
7067
|
enableZoom: true,
|
|
7047
7068
|
showControls: false,
|
|
7048
|
-
showInfo: true
|
|
7069
|
+
showInfo: true,
|
|
7049
7070
|
});
|
|
7050
7071
|
}
|
|
7051
7072
|
/**
|
|
@@ -7055,13 +7076,13 @@ class DsMobilePostDetailModalComponent {
|
|
|
7055
7076
|
const sheet = await this.bottomSheet.create({
|
|
7056
7077
|
component: DsMobileActionsBottomSheetComponent,
|
|
7057
7078
|
componentProps: {
|
|
7058
|
-
isOwnContent: isOwnComment
|
|
7079
|
+
isOwnContent: isOwnComment,
|
|
7059
7080
|
},
|
|
7060
7081
|
breakpoints: [0, 1],
|
|
7061
7082
|
initialBreakpoint: 1,
|
|
7062
7083
|
handle: true,
|
|
7063
7084
|
backdropDismiss: true,
|
|
7064
|
-
cssClass: 'auto-height'
|
|
7085
|
+
cssClass: 'auto-height',
|
|
7065
7086
|
});
|
|
7066
7087
|
const result = await sheet.onWillDismiss();
|
|
7067
7088
|
if (result.role === 'select' && result.data) {
|
|
@@ -7071,13 +7092,13 @@ class DsMobilePostDetailModalComponent {
|
|
|
7071
7092
|
case 'like':
|
|
7072
7093
|
console.log('Like comment by', authorName);
|
|
7073
7094
|
// Find and toggle like on the comment
|
|
7074
|
-
const updatedComments = currentPost.comments?.map(comment => {
|
|
7095
|
+
const updatedComments = currentPost.comments?.map((comment) => {
|
|
7075
7096
|
if (comment.authorName === authorName && comment.content === content) {
|
|
7076
7097
|
const isLiked = !comment.isLiked;
|
|
7077
7098
|
return {
|
|
7078
7099
|
...comment,
|
|
7079
7100
|
isLiked,
|
|
7080
|
-
likeCount: isLiked ? (comment.likeCount || 0) + 1 : Math.max(0, (comment.likeCount || 0) - 1)
|
|
7101
|
+
likeCount: isLiked ? (comment.likeCount || 0) + 1 : Math.max(0, (comment.likeCount || 0) - 1),
|
|
7081
7102
|
};
|
|
7082
7103
|
}
|
|
7083
7104
|
return comment;
|
|
@@ -7091,7 +7112,7 @@ class DsMobilePostDetailModalComponent {
|
|
|
7091
7112
|
case 'edit':
|
|
7092
7113
|
console.log('Edit comment by', authorName);
|
|
7093
7114
|
// Find the full comment data to get timestamp
|
|
7094
|
-
const commentToEdit = currentPost.comments?.find(comment => comment.authorName === authorName && comment.content === content);
|
|
7115
|
+
const commentToEdit = currentPost.comments?.find((comment) => comment.authorName === authorName && comment.content === content);
|
|
7095
7116
|
if (commentToEdit) {
|
|
7096
7117
|
this.handleEditComment(authorName, content, commentToEdit.timestamp);
|
|
7097
7118
|
}
|
|
@@ -7100,11 +7121,11 @@ class DsMobilePostDetailModalComponent {
|
|
|
7100
7121
|
console.log('Delete comment by', authorName);
|
|
7101
7122
|
// Show confirmation before deleting
|
|
7102
7123
|
if (confirm('Are you sure you want to delete this comment?')) {
|
|
7103
|
-
const updatedCommentsAfterDelete = currentPost.comments?.filter(comment => !(comment.authorName === authorName && comment.content === content));
|
|
7124
|
+
const updatedCommentsAfterDelete = currentPost.comments?.filter((comment) => !(comment.authorName === authorName && comment.content === content));
|
|
7104
7125
|
this.post.set({
|
|
7105
7126
|
...currentPost,
|
|
7106
7127
|
comments: updatedCommentsAfterDelete,
|
|
7107
|
-
commentCount: updatedCommentsAfterDelete?.length || 0
|
|
7128
|
+
commentCount: updatedCommentsAfterDelete?.length || 0,
|
|
7108
7129
|
});
|
|
7109
7130
|
}
|
|
7110
7131
|
break;
|
|
@@ -7112,7 +7133,7 @@ class DsMobilePostDetailModalComponent {
|
|
|
7112
7133
|
}
|
|
7113
7134
|
}
|
|
7114
7135
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DsMobilePostDetailModalComponent, deps: [{ token: i1.ModalController }, { token: DsMobileLightboxService }, { token: DsMobileBottomSheetService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7115
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: DsMobilePostDetailModalComponent, isStandalone: true, selector: "ds-mobile-post-detail-modal", inputs: { postData: "postData", onSubmitComment: "onSubmitComment", loading: "loading", error: "error" }, viewQueries: [{ propertyName: "commentInput", first: true, predicate: ["commentInput"], descendants: true }], ngImport: i0, template: `
|
|
7136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: DsMobilePostDetailModalComponent, isStandalone: true, selector: "ds-mobile-post-detail-modal", inputs: { postData: "postData", currentUserName: "currentUserName", currentUserInitialsInput: "currentUserInitialsInput", onSubmitComment: "onSubmitComment", loading: "loading", error: "error" }, viewQueries: [{ propertyName: "commentInput", first: true, predicate: ["commentInput"], descendants: true }], ngImport: i0, template: `
|
|
7116
7137
|
<ion-content [fullscreen]="true" [scrollY]="true" class="post-modal-content">
|
|
7117
7138
|
<div class="post-modal-wrapper">
|
|
7118
7139
|
<!-- Header with post author info -->
|
|
@@ -7120,12 +7141,7 @@ class DsMobilePostDetailModalComponent {
|
|
|
7120
7141
|
<div class="header-content">
|
|
7121
7142
|
<!-- Post author info -->
|
|
7122
7143
|
<div class="post-author-info">
|
|
7123
|
-
<ds-avatar
|
|
7124
|
-
[initials]="post().avatarInitials || ''"
|
|
7125
|
-
[type]="post().avatarType || 'initials'"
|
|
7126
|
-
[src]="post().avatarSrc || ''"
|
|
7127
|
-
size="md"
|
|
7128
|
-
/>
|
|
7144
|
+
<ds-avatar [initials]="post().avatarInitials || ''" [type]="post().avatarType || 'initials'" [src]="post().avatarSrc || ''" size="md" />
|
|
7129
7145
|
<div class="author-details">
|
|
7130
7146
|
<div class="author-name">{{ post().authorName }}</div>
|
|
7131
7147
|
<div class="author-meta">
|
|
@@ -7135,34 +7151,27 @@ class DsMobilePostDetailModalComponent {
|
|
|
7135
7151
|
</div>
|
|
7136
7152
|
</div>
|
|
7137
7153
|
</div>
|
|
7138
|
-
|
|
7154
|
+
|
|
7139
7155
|
<!-- Close button -->
|
|
7140
|
-
<ds-icon-button
|
|
7141
|
-
icon="remixCloseLine"
|
|
7142
|
-
variant="secondary"
|
|
7143
|
-
size="lg"
|
|
7144
|
-
(click)="close()"
|
|
7145
|
-
class="close-button"
|
|
7146
|
-
aria-label="Luk opslag">
|
|
7147
|
-
</ds-icon-button>
|
|
7156
|
+
<ds-icon-button icon="remixCloseLine" variant="secondary" size="lg" (click)="close()" class="close-button" aria-label="Luk opslag"> </ds-icon-button>
|
|
7148
7157
|
</div>
|
|
7149
7158
|
</div>
|
|
7150
7159
|
|
|
7151
7160
|
<!-- Post content -->
|
|
7152
7161
|
<div class="post-detail-container">
|
|
7153
7162
|
@if (loading) {
|
|
7154
|
-
|
|
7155
|
-
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
7163
|
+
<!-- Loading State -->
|
|
7164
|
+
<div class="post-loading-state">
|
|
7165
|
+
<div class="loading-spinner"></div>
|
|
7166
|
+
<p class="loading-text">Loading post...</p>
|
|
7167
|
+
</div>
|
|
7159
7168
|
} @else if (error) {
|
|
7160
|
-
|
|
7161
|
-
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7169
|
+
<!-- Error State -->
|
|
7170
|
+
<div class="post-error-state">
|
|
7171
|
+
<ds-icon name="remixErrorWarningLine" size="48px" [style.color]="'var(--color-destructive-base)'" />
|
|
7172
|
+
<h3 class="error-state-title">Error loading post</h3>
|
|
7173
|
+
<p class="error-state-description">{{ error }}</p>
|
|
7174
|
+
</div>
|
|
7166
7175
|
} @else {
|
|
7167
7176
|
<!-- Post Section -->
|
|
7168
7177
|
<div class="post-section">
|
|
@@ -7171,154 +7180,125 @@ class DsMobilePostDetailModalComponent {
|
|
|
7171
7180
|
<div [innerHTML]="post().content"></div>
|
|
7172
7181
|
</post-text>
|
|
7173
7182
|
@if (post().imageSrc) {
|
|
7174
|
-
|
|
7175
|
-
|
|
7176
|
-
|
|
7177
|
-
[alt]="post().imageAlt || 'Post image'"
|
|
7178
|
-
class="clickable-image"
|
|
7179
|
-
(click)="openImageLightbox()"
|
|
7180
|
-
/>
|
|
7181
|
-
</post-media>
|
|
7183
|
+
<post-media>
|
|
7184
|
+
<img [src]="post().imageSrc" [alt]="post().imageAlt || 'Post image'" class="clickable-image" (click)="openImageLightbox()" />
|
|
7185
|
+
</post-media>
|
|
7182
7186
|
}
|
|
7183
7187
|
</div>
|
|
7184
|
-
|
|
7188
|
+
|
|
7185
7189
|
<!-- Post actions -->
|
|
7186
7190
|
<div class="post-actions">
|
|
7187
|
-
<action-like
|
|
7188
|
-
|
|
7189
|
-
[count]="post().likeCount || 0" />
|
|
7190
|
-
<action-comment
|
|
7191
|
-
[count]="post().commentCount || 0"
|
|
7192
|
-
(commentClick)="focusCommentInput()" />
|
|
7191
|
+
<action-like [active]="post().isLiked || false" [count]="post().likeCount || 0" />
|
|
7192
|
+
<action-comment [count]="post().commentCount || 0" (commentClick)="focusCommentInput()" />
|
|
7193
7193
|
</div>
|
|
7194
7194
|
</div>
|
|
7195
|
-
|
|
7196
|
-
|
|
7197
|
-
|
|
7198
|
-
|
|
7195
|
+
|
|
7196
|
+
<!-- Comments Section -->
|
|
7197
|
+
<div class="comments-section">
|
|
7198
|
+
@if (post().comments && post().comments!.length > 0) {
|
|
7199
7199
|
<h2 class="comments-header">{{ post().comments!.length }} {{ post().comments!.length === 1 ? 'reply' : 'replies' }}</h2>
|
|
7200
|
-
|
|
7200
|
+
|
|
7201
7201
|
<div class="comments-list">
|
|
7202
7202
|
@for (comment of post().comments!; track comment.authorName + comment.timestamp) {
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7208
|
-
|
|
7209
|
-
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
|
|
7203
|
+
<ds-mobile-comment
|
|
7204
|
+
[authorName]="comment.authorName"
|
|
7205
|
+
[authorRole]="comment.authorRole"
|
|
7206
|
+
[timestamp]="comment.timestamp"
|
|
7207
|
+
[avatarInitials]="comment.avatarInitials"
|
|
7208
|
+
[content]="comment.content"
|
|
7209
|
+
[isLiked]="comment.isLiked || false"
|
|
7210
|
+
[likeCount]="comment.likeCount || 0"
|
|
7211
|
+
[clickable]="true"
|
|
7212
|
+
[isOwnComment]="comment.isOwnComment || false"
|
|
7213
|
+
(replyClick)="handleReply(comment.authorName, comment.content)"
|
|
7214
|
+
(editClick)="handleEditComment(comment.authorName, comment.content, comment.timestamp)"
|
|
7215
|
+
(longPress)="handleCommentLongPress(comment.authorName, comment.content, comment.isOwnComment || false)" />
|
|
7216
7216
|
}
|
|
7217
7217
|
</div>
|
|
7218
|
-
|
|
7218
|
+
} @else {
|
|
7219
7219
|
<!-- Empty State -->
|
|
7220
7220
|
<div class="comments-empty-state">
|
|
7221
|
-
<img
|
|
7222
|
-
src="/Assets/Empty%20state-chat.png"
|
|
7223
|
-
alt="Ingen kommentarer endnu"
|
|
7224
|
-
class="empty-state-image"
|
|
7225
|
-
/>
|
|
7221
|
+
<img src="/Assets/Empty%20state-chat.png" alt="Ingen kommentarer endnu" class="empty-state-image" />
|
|
7226
7222
|
<h3 class="empty-state-title">Ingen svar endnu</h3>
|
|
7227
7223
|
<p class="empty-state-description">Vær den første til at svare på dette opslag</p>
|
|
7228
7224
|
</div>
|
|
7225
|
+
}
|
|
7226
|
+
|
|
7227
|
+
<!-- Bottom spacer for fixed composer -->
|
|
7228
|
+
<div class="composer-spacer"></div>
|
|
7229
|
+
</div>
|
|
7229
7230
|
}
|
|
7230
|
-
|
|
7231
|
-
<!-- Bottom spacer for fixed composer -->
|
|
7232
|
-
<div class="composer-spacer"></div>
|
|
7233
|
-
</div>
|
|
7234
|
-
}
|
|
7235
7231
|
</div>
|
|
7236
7232
|
</div>
|
|
7237
7233
|
</ion-content>
|
|
7238
|
-
|
|
7234
|
+
|
|
7239
7235
|
<!-- Fixed comment composer -->
|
|
7240
7236
|
@if (!loading && !error) {
|
|
7241
7237
|
<div class="comment-composer-fixed">
|
|
7242
7238
|
<div class="comment-composer">
|
|
7243
7239
|
<!-- Edit indicator -->
|
|
7244
7240
|
@if (editingComment()) {
|
|
7245
|
-
|
|
7246
|
-
|
|
7247
|
-
|
|
7248
|
-
|
|
7249
|
-
</div>
|
|
7250
|
-
<button class="cancel-edit" (click)="cancelEdit()">
|
|
7251
|
-
<ds-icon name="remixCloseLine" size="16px" />
|
|
7252
|
-
</button>
|
|
7241
|
+
<div class="edit-indicator">
|
|
7242
|
+
<div class="edit-indicator-content">
|
|
7243
|
+
<ds-icon name="remixEditLine" size="16px" />
|
|
7244
|
+
<span class="edit-text">Redigerer kommentar</span>
|
|
7253
7245
|
</div>
|
|
7246
|
+
<button class="cancel-edit" (click)="cancelEdit()">
|
|
7247
|
+
<ds-icon name="remixCloseLine" size="16px" />
|
|
7248
|
+
</button>
|
|
7249
|
+
</div>
|
|
7254
7250
|
} @else if (replyingTo()) {
|
|
7255
|
-
|
|
7256
|
-
|
|
7257
|
-
|
|
7258
|
-
|
|
7259
|
-
|
|
7260
|
-
|
|
7261
|
-
|
|
7262
|
-
</div>
|
|
7263
|
-
<button class="cancel-reply" (click)="cancelReply()">
|
|
7264
|
-
<ds-icon name="remixCloseLine" size="16px" />
|
|
7265
|
-
</button>
|
|
7251
|
+
<!-- Reply indicator -->
|
|
7252
|
+
<div class="reply-indicator">
|
|
7253
|
+
<div class="reply-indicator-content">
|
|
7254
|
+
<ds-icon name="remixReplyLine" size="16px" />
|
|
7255
|
+
<span class="reply-to-text">
|
|
7256
|
+
Svarer til <span class="reply-author">{{ replyingTo()!.authorName }}</span>
|
|
7257
|
+
</span>
|
|
7266
7258
|
</div>
|
|
7259
|
+
<button class="cancel-reply" (click)="cancelReply()">
|
|
7260
|
+
<ds-icon name="remixCloseLine" size="16px" />
|
|
7261
|
+
</button>
|
|
7262
|
+
</div>
|
|
7267
7263
|
}
|
|
7268
|
-
|
|
7264
|
+
|
|
7269
7265
|
<div class="composer-content">
|
|
7270
|
-
<ds-avatar
|
|
7271
|
-
[initials]="currentUserInitials()"
|
|
7272
|
-
[type]="'initials'"
|
|
7273
|
-
size="md"
|
|
7274
|
-
/>
|
|
7266
|
+
<ds-avatar [initials]="currentUserInitials()" [type]="'initials'" size="md" />
|
|
7275
7267
|
<div class="composer-input-wrapper">
|
|
7276
7268
|
<!-- Mention menu -->
|
|
7277
7269
|
@if (showMentionMenu() && filteredUsers().length > 0 && !editingComment()) {
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
|
|
7287
|
-
|
|
7288
|
-
|
|
7289
|
-
<span class="mention-user-role">{{ user.role }}</span>
|
|
7290
|
-
</div>
|
|
7291
|
-
</button>
|
|
7292
|
-
}
|
|
7293
|
-
</div>
|
|
7270
|
+
<div class="mention-menu">
|
|
7271
|
+
@for (user of filteredUsers(); track user.name) {
|
|
7272
|
+
<button class="mention-menu-item" (click)="selectMention(user.name)">
|
|
7273
|
+
<ds-avatar [initials]="user.initials" [type]="'initials'" size="sm" />
|
|
7274
|
+
<div class="mention-user-info">
|
|
7275
|
+
<span class="mention-user-name">{{ user.name }}</span>
|
|
7276
|
+
<span class="mention-user-role">{{ user.role }}</span>
|
|
7277
|
+
</div>
|
|
7278
|
+
</button>
|
|
7279
|
+
}
|
|
7280
|
+
</div>
|
|
7294
7281
|
}
|
|
7295
|
-
|
|
7282
|
+
|
|
7296
7283
|
<textarea
|
|
7297
7284
|
#commentInput
|
|
7298
7285
|
class="composer-input"
|
|
7299
|
-
[placeholder]="editingComment() ? 'Rediger din kommentar...' :
|
|
7300
|
-
[
|
|
7286
|
+
[placeholder]="editingComment() ? 'Rediger din kommentar...' : replyingTo() ? 'Tilføj et svar...' : 'Tilføj et svar...'"
|
|
7287
|
+
[ngModel]="commentText()"
|
|
7288
|
+
(ngModelChange)="commentText.set($event)"
|
|
7301
7289
|
(input)="handleInput($event)"
|
|
7302
7290
|
(focus)="showKeyboard()"
|
|
7303
7291
|
(click)="showKeyboard()"
|
|
7304
|
-
rows="1"
|
|
7305
|
-
></textarea>
|
|
7292
|
+
rows="1"></textarea>
|
|
7306
7293
|
</div>
|
|
7307
7294
|
@if (commentText().trim().length > 0) {
|
|
7308
|
-
|
|
7309
|
-
icon="remixCheckLine"
|
|
7310
|
-
variant="primary"
|
|
7311
|
-
size="sm"
|
|
7312
|
-
(clicked)="submitComment()"
|
|
7313
|
-
aria-label="Send kommentar"
|
|
7314
|
-
class="send-button-fixed">
|
|
7315
|
-
</ds-icon-button>
|
|
7295
|
+
<ds-icon-button icon="remixCheckLine" variant="primary" size="sm" (clicked)="submitComment()" aria-label="Send kommentar" class="send-button-fixed"> </ds-icon-button>
|
|
7316
7296
|
}
|
|
7317
7297
|
</div>
|
|
7318
7298
|
</div>
|
|
7319
7299
|
</div>
|
|
7320
7300
|
}
|
|
7321
|
-
`, isInline: true, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-sm);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}\n", ":host{display:block;position:relative;height:100%;width:100%}.post-modal-content{--background: var(--color-background-neutral-primary, #ffffff)}.post-modal-wrapper{display:flex;flex-direction:column;min-height:100%;min-height:100dvh;background:var(--color-background-neutral-primary, #ffffff)}.post-modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:0 16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:72px}.post-author-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.author-details{display:flex;flex-direction:column;min-width:0;flex:1}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.post-detail-container{display:flex;flex-direction:column;gap:16px;width:100%;max-width:640px;margin:0 auto;padding:16px 0 20px;flex:1}.post-section{width:100%;border-bottom:1px solid var(--border-color-default);padding:0 0 16px}.post-content-only{font-size:var(--font-size-sm);line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px;padding:0 20px}.post-content-only post-media{margin-top:16px}.post-actions{display:flex;align-items:center;gap:16px;padding:0 20px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:0;margin-right:0;padding:0 20px}.comments-header{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0 0 16px;padding-left:0;padding-right:0}.comments-list{display:flex;flex-direction:column}.comments-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px;margin-bottom:24px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.composer-spacer{height:calc(81px + env(safe-area-inset-bottom,0px))}.bottom-spacer{height:0px}.comment-composer-fixed{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s ease-out;max-width:100vw}.comment-composer{pointer-events:auto;background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px));width:100%;display:flex;flex-direction:column;gap:8px;box-shadow:100px 150px 0 150px var(--color-background-neutral-primary, #ffffff)}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-brand-base, #6B5FF5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-brand-base, #6B5FF5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-brand-base, #6B5FF5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-brand-base, #6B5FF5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.composer-content{display:flex;align-items:flex-start;gap:12px;width:100%;position:relative}.composer-content ds-avatar{position:relative;top:6px}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 48px 12px 16px;min-height:44px;position:relative}.mention-menu{position:absolute;bottom:100%;left:0;right:0;background:var(--color-background-neutral-primary, #ffffff);border-radius:12px;box-shadow:0 4px 12px #00000026;margin-bottom:8px;max-height:200px;overflow-y:auto;z-index:10;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.mention-menu-item{display:flex;align-items:center;gap:12px;padding:12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background .2s ease;border-bottom:1px solid var(--border-color-default)}.mention-menu-item:last-child{border-bottom:none}.mention-menu-item:active{background:var(--color-background-neutral-secondary, #f5f5f5)}.mention-user-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-fixed{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;animation:slideInFromRight .2s ease-out}.send-button-fixed::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}.composer-input-wrapper ds-icon-button{flex-shrink:0;animation:slideInFromRight .2s ease-out}.composer-input-wrapper ds-icon-button::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}@supports (padding: env(safe-area-inset-bottom)){.post-detail-container{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}.post-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.post-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCommentComponent, selector: "ds-mobile-comment", inputs: ["authorName", "authorRole", "timestamp", "content", "avatarInitials", "avatarType", "clickable", "isOwnComment", "isLiked", "likeCount"], outputs: ["isLikedChange", "likeCountChange", "commentClick", "replyClick", "editClick", "longPress"] }] });
|
|
7301
|
+
`, isInline: true, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-sm);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}\n", ":host{display:block;position:relative;height:100%;width:100%}.post-modal-content{--background: var(--color-background-neutral-primary, #ffffff)}.post-modal-wrapper{display:flex;flex-direction:column;min-height:100%;min-height:100dvh;background:var(--color-background-neutral-primary, #ffffff)}.post-modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:0 16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:72px}.post-author-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.author-details{display:flex;flex-direction:column;min-width:0;flex:1}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.post-detail-container{display:flex;flex-direction:column;gap:16px;width:100%;max-width:640px;margin:0 auto;padding:16px 0 20px;flex:1}.post-section{width:100%;border-bottom:1px solid var(--border-color-default);padding:0 0 16px}.post-content-only{font-size:var(--font-size-sm);line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px;padding:0 20px}.post-content-only post-media{margin-top:16px}.post-actions{display:flex;align-items:center;gap:16px;padding:0 20px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:0;margin-right:0;padding:0 20px}.comments-header{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0 0 16px;padding-left:0;padding-right:0}.comments-list{display:flex;flex-direction:column}.comments-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px;margin-bottom:24px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.composer-spacer{height:calc(81px + env(safe-area-inset-bottom,0px))}.bottom-spacer{height:0px}.comment-composer-fixed{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s ease-out;max-width:100vw}.comment-composer{pointer-events:auto;background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px));width:100%;display:flex;flex-direction:column;gap:8px;box-shadow:100px 150px 0 150px var(--color-background-neutral-primary, #ffffff)}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-brand-base, #6b5ff5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-brand-base, #6b5ff5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-brand-base, #6b5ff5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-brand-base, #6b5ff5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.composer-content{display:flex;align-items:flex-start;gap:12px;width:100%;position:relative}.composer-content ds-avatar{position:relative;top:6px}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 48px 12px 16px;min-height:44px;position:relative}.mention-menu{position:absolute;bottom:100%;left:0;right:0;background:var(--color-background-neutral-primary, #ffffff);border-radius:12px;box-shadow:0 4px 12px #00000026;margin-bottom:8px;max-height:200px;overflow-y:auto;z-index:10;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.mention-menu-item{display:flex;align-items:center;gap:12px;padding:12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background .2s ease;border-bottom:1px solid var(--border-color-default)}.mention-menu-item:last-child{border-bottom:none}.mention-menu-item:active{background:var(--color-background-neutral-secondary, #f5f5f5)}.mention-user-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-fixed{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;animation:slideInFromRight .2s ease-out}.send-button-fixed::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}.composer-input-wrapper ds-icon-button{flex-shrink:0;animation:slideInFromRight .2s ease-out}.composer-input-wrapper ds-icon-button::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}@supports (padding: env(safe-area-inset-bottom)){.post-detail-container{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}.post-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.post-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: PostTextComponent, selector: "post-text" }, { kind: "component", type: PostMediaComponent, selector: "post-media" }, { kind: "component", type: ActionLikeComponent, selector: "action-like", inputs: ["active", "count"], outputs: ["activeChange", "countChange", "likeClick"] }, { kind: "component", type: ActionCommentComponent, selector: "action-comment", inputs: ["count"], outputs: ["commentClick"] }, { kind: "component", type: DsMobileCommentComponent, selector: "ds-mobile-comment", inputs: ["authorName", "authorRole", "timestamp", "content", "avatarInitials", "avatarType", "clickable", "isOwnComment", "isLiked", "likeCount"], outputs: ["isLikedChange", "likeCountChange", "commentClick", "replyClick", "editClick", "longPress"] }] });
|
|
7322
7302
|
}
|
|
7323
7303
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DsMobilePostDetailModalComponent, decorators: [{
|
|
7324
7304
|
type: Component,
|
|
@@ -7333,7 +7313,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
7333
7313
|
PostMediaComponent,
|
|
7334
7314
|
ActionLikeComponent,
|
|
7335
7315
|
ActionCommentComponent,
|
|
7336
|
-
DsMobileCommentComponent
|
|
7316
|
+
DsMobileCommentComponent,
|
|
7337
7317
|
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: `
|
|
7338
7318
|
<ion-content [fullscreen]="true" [scrollY]="true" class="post-modal-content">
|
|
7339
7319
|
<div class="post-modal-wrapper">
|
|
@@ -7342,12 +7322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
7342
7322
|
<div class="header-content">
|
|
7343
7323
|
<!-- Post author info -->
|
|
7344
7324
|
<div class="post-author-info">
|
|
7345
|
-
<ds-avatar
|
|
7346
|
-
[initials]="post().avatarInitials || ''"
|
|
7347
|
-
[type]="post().avatarType || 'initials'"
|
|
7348
|
-
[src]="post().avatarSrc || ''"
|
|
7349
|
-
size="md"
|
|
7350
|
-
/>
|
|
7325
|
+
<ds-avatar [initials]="post().avatarInitials || ''" [type]="post().avatarType || 'initials'" [src]="post().avatarSrc || ''" size="md" />
|
|
7351
7326
|
<div class="author-details">
|
|
7352
7327
|
<div class="author-name">{{ post().authorName }}</div>
|
|
7353
7328
|
<div class="author-meta">
|
|
@@ -7357,34 +7332,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
7357
7332
|
</div>
|
|
7358
7333
|
</div>
|
|
7359
7334
|
</div>
|
|
7360
|
-
|
|
7335
|
+
|
|
7361
7336
|
<!-- Close button -->
|
|
7362
|
-
<ds-icon-button
|
|
7363
|
-
icon="remixCloseLine"
|
|
7364
|
-
variant="secondary"
|
|
7365
|
-
size="lg"
|
|
7366
|
-
(click)="close()"
|
|
7367
|
-
class="close-button"
|
|
7368
|
-
aria-label="Luk opslag">
|
|
7369
|
-
</ds-icon-button>
|
|
7337
|
+
<ds-icon-button icon="remixCloseLine" variant="secondary" size="lg" (click)="close()" class="close-button" aria-label="Luk opslag"> </ds-icon-button>
|
|
7370
7338
|
</div>
|
|
7371
7339
|
</div>
|
|
7372
7340
|
|
|
7373
7341
|
<!-- Post content -->
|
|
7374
7342
|
<div class="post-detail-container">
|
|
7375
7343
|
@if (loading) {
|
|
7376
|
-
|
|
7377
|
-
|
|
7378
|
-
|
|
7379
|
-
|
|
7380
|
-
|
|
7344
|
+
<!-- Loading State -->
|
|
7345
|
+
<div class="post-loading-state">
|
|
7346
|
+
<div class="loading-spinner"></div>
|
|
7347
|
+
<p class="loading-text">Loading post...</p>
|
|
7348
|
+
</div>
|
|
7381
7349
|
} @else if (error) {
|
|
7382
|
-
|
|
7383
|
-
|
|
7384
|
-
|
|
7385
|
-
|
|
7386
|
-
|
|
7387
|
-
|
|
7350
|
+
<!-- Error State -->
|
|
7351
|
+
<div class="post-error-state">
|
|
7352
|
+
<ds-icon name="remixErrorWarningLine" size="48px" [style.color]="'var(--color-destructive-base)'" />
|
|
7353
|
+
<h3 class="error-state-title">Error loading post</h3>
|
|
7354
|
+
<p class="error-state-description">{{ error }}</p>
|
|
7355
|
+
</div>
|
|
7388
7356
|
} @else {
|
|
7389
7357
|
<!-- Post Section -->
|
|
7390
7358
|
<div class="post-section">
|
|
@@ -7393,156 +7361,131 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
7393
7361
|
<div [innerHTML]="post().content"></div>
|
|
7394
7362
|
</post-text>
|
|
7395
7363
|
@if (post().imageSrc) {
|
|
7396
|
-
|
|
7397
|
-
|
|
7398
|
-
|
|
7399
|
-
[alt]="post().imageAlt || 'Post image'"
|
|
7400
|
-
class="clickable-image"
|
|
7401
|
-
(click)="openImageLightbox()"
|
|
7402
|
-
/>
|
|
7403
|
-
</post-media>
|
|
7364
|
+
<post-media>
|
|
7365
|
+
<img [src]="post().imageSrc" [alt]="post().imageAlt || 'Post image'" class="clickable-image" (click)="openImageLightbox()" />
|
|
7366
|
+
</post-media>
|
|
7404
7367
|
}
|
|
7405
7368
|
</div>
|
|
7406
|
-
|
|
7369
|
+
|
|
7407
7370
|
<!-- Post actions -->
|
|
7408
7371
|
<div class="post-actions">
|
|
7409
|
-
<action-like
|
|
7410
|
-
|
|
7411
|
-
[count]="post().likeCount || 0" />
|
|
7412
|
-
<action-comment
|
|
7413
|
-
[count]="post().commentCount || 0"
|
|
7414
|
-
(commentClick)="focusCommentInput()" />
|
|
7372
|
+
<action-like [active]="post().isLiked || false" [count]="post().likeCount || 0" />
|
|
7373
|
+
<action-comment [count]="post().commentCount || 0" (commentClick)="focusCommentInput()" />
|
|
7415
7374
|
</div>
|
|
7416
7375
|
</div>
|
|
7417
|
-
|
|
7418
|
-
|
|
7419
|
-
|
|
7420
|
-
|
|
7376
|
+
|
|
7377
|
+
<!-- Comments Section -->
|
|
7378
|
+
<div class="comments-section">
|
|
7379
|
+
@if (post().comments && post().comments!.length > 0) {
|
|
7421
7380
|
<h2 class="comments-header">{{ post().comments!.length }} {{ post().comments!.length === 1 ? 'reply' : 'replies' }}</h2>
|
|
7422
|
-
|
|
7381
|
+
|
|
7423
7382
|
<div class="comments-list">
|
|
7424
7383
|
@for (comment of post().comments!; track comment.authorName + comment.timestamp) {
|
|
7425
|
-
|
|
7426
|
-
|
|
7427
|
-
|
|
7428
|
-
|
|
7429
|
-
|
|
7430
|
-
|
|
7431
|
-
|
|
7432
|
-
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
|
|
7436
|
-
|
|
7437
|
-
|
|
7384
|
+
<ds-mobile-comment
|
|
7385
|
+
[authorName]="comment.authorName"
|
|
7386
|
+
[authorRole]="comment.authorRole"
|
|
7387
|
+
[timestamp]="comment.timestamp"
|
|
7388
|
+
[avatarInitials]="comment.avatarInitials"
|
|
7389
|
+
[content]="comment.content"
|
|
7390
|
+
[isLiked]="comment.isLiked || false"
|
|
7391
|
+
[likeCount]="comment.likeCount || 0"
|
|
7392
|
+
[clickable]="true"
|
|
7393
|
+
[isOwnComment]="comment.isOwnComment || false"
|
|
7394
|
+
(replyClick)="handleReply(comment.authorName, comment.content)"
|
|
7395
|
+
(editClick)="handleEditComment(comment.authorName, comment.content, comment.timestamp)"
|
|
7396
|
+
(longPress)="handleCommentLongPress(comment.authorName, comment.content, comment.isOwnComment || false)" />
|
|
7438
7397
|
}
|
|
7439
7398
|
</div>
|
|
7440
|
-
|
|
7399
|
+
} @else {
|
|
7441
7400
|
<!-- Empty State -->
|
|
7442
7401
|
<div class="comments-empty-state">
|
|
7443
|
-
<img
|
|
7444
|
-
src="/Assets/Empty%20state-chat.png"
|
|
7445
|
-
alt="Ingen kommentarer endnu"
|
|
7446
|
-
class="empty-state-image"
|
|
7447
|
-
/>
|
|
7402
|
+
<img src="/Assets/Empty%20state-chat.png" alt="Ingen kommentarer endnu" class="empty-state-image" />
|
|
7448
7403
|
<h3 class="empty-state-title">Ingen svar endnu</h3>
|
|
7449
7404
|
<p class="empty-state-description">Vær den første til at svare på dette opslag</p>
|
|
7450
7405
|
</div>
|
|
7406
|
+
}
|
|
7407
|
+
|
|
7408
|
+
<!-- Bottom spacer for fixed composer -->
|
|
7409
|
+
<div class="composer-spacer"></div>
|
|
7410
|
+
</div>
|
|
7451
7411
|
}
|
|
7452
|
-
|
|
7453
|
-
<!-- Bottom spacer for fixed composer -->
|
|
7454
|
-
<div class="composer-spacer"></div>
|
|
7455
|
-
</div>
|
|
7456
|
-
}
|
|
7457
7412
|
</div>
|
|
7458
7413
|
</div>
|
|
7459
7414
|
</ion-content>
|
|
7460
|
-
|
|
7415
|
+
|
|
7461
7416
|
<!-- Fixed comment composer -->
|
|
7462
7417
|
@if (!loading && !error) {
|
|
7463
7418
|
<div class="comment-composer-fixed">
|
|
7464
7419
|
<div class="comment-composer">
|
|
7465
7420
|
<!-- Edit indicator -->
|
|
7466
7421
|
@if (editingComment()) {
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
</div>
|
|
7472
|
-
<button class="cancel-edit" (click)="cancelEdit()">
|
|
7473
|
-
<ds-icon name="remixCloseLine" size="16px" />
|
|
7474
|
-
</button>
|
|
7422
|
+
<div class="edit-indicator">
|
|
7423
|
+
<div class="edit-indicator-content">
|
|
7424
|
+
<ds-icon name="remixEditLine" size="16px" />
|
|
7425
|
+
<span class="edit-text">Redigerer kommentar</span>
|
|
7475
7426
|
</div>
|
|
7427
|
+
<button class="cancel-edit" (click)="cancelEdit()">
|
|
7428
|
+
<ds-icon name="remixCloseLine" size="16px" />
|
|
7429
|
+
</button>
|
|
7430
|
+
</div>
|
|
7476
7431
|
} @else if (replyingTo()) {
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
|
|
7482
|
-
|
|
7483
|
-
|
|
7484
|
-
</div>
|
|
7485
|
-
<button class="cancel-reply" (click)="cancelReply()">
|
|
7486
|
-
<ds-icon name="remixCloseLine" size="16px" />
|
|
7487
|
-
</button>
|
|
7432
|
+
<!-- Reply indicator -->
|
|
7433
|
+
<div class="reply-indicator">
|
|
7434
|
+
<div class="reply-indicator-content">
|
|
7435
|
+
<ds-icon name="remixReplyLine" size="16px" />
|
|
7436
|
+
<span class="reply-to-text">
|
|
7437
|
+
Svarer til <span class="reply-author">{{ replyingTo()!.authorName }}</span>
|
|
7438
|
+
</span>
|
|
7488
7439
|
</div>
|
|
7440
|
+
<button class="cancel-reply" (click)="cancelReply()">
|
|
7441
|
+
<ds-icon name="remixCloseLine" size="16px" />
|
|
7442
|
+
</button>
|
|
7443
|
+
</div>
|
|
7489
7444
|
}
|
|
7490
|
-
|
|
7445
|
+
|
|
7491
7446
|
<div class="composer-content">
|
|
7492
|
-
<ds-avatar
|
|
7493
|
-
[initials]="currentUserInitials()"
|
|
7494
|
-
[type]="'initials'"
|
|
7495
|
-
size="md"
|
|
7496
|
-
/>
|
|
7447
|
+
<ds-avatar [initials]="currentUserInitials()" [type]="'initials'" size="md" />
|
|
7497
7448
|
<div class="composer-input-wrapper">
|
|
7498
7449
|
<!-- Mention menu -->
|
|
7499
7450
|
@if (showMentionMenu() && filteredUsers().length > 0 && !editingComment()) {
|
|
7500
|
-
|
|
7501
|
-
|
|
7502
|
-
|
|
7503
|
-
|
|
7504
|
-
|
|
7505
|
-
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
<span class="mention-user-role">{{ user.role }}</span>
|
|
7512
|
-
</div>
|
|
7513
|
-
</button>
|
|
7514
|
-
}
|
|
7515
|
-
</div>
|
|
7451
|
+
<div class="mention-menu">
|
|
7452
|
+
@for (user of filteredUsers(); track user.name) {
|
|
7453
|
+
<button class="mention-menu-item" (click)="selectMention(user.name)">
|
|
7454
|
+
<ds-avatar [initials]="user.initials" [type]="'initials'" size="sm" />
|
|
7455
|
+
<div class="mention-user-info">
|
|
7456
|
+
<span class="mention-user-name">{{ user.name }}</span>
|
|
7457
|
+
<span class="mention-user-role">{{ user.role }}</span>
|
|
7458
|
+
</div>
|
|
7459
|
+
</button>
|
|
7460
|
+
}
|
|
7461
|
+
</div>
|
|
7516
7462
|
}
|
|
7517
|
-
|
|
7463
|
+
|
|
7518
7464
|
<textarea
|
|
7519
7465
|
#commentInput
|
|
7520
7466
|
class="composer-input"
|
|
7521
|
-
[placeholder]="editingComment() ? 'Rediger din kommentar...' :
|
|
7522
|
-
[
|
|
7467
|
+
[placeholder]="editingComment() ? 'Rediger din kommentar...' : replyingTo() ? 'Tilføj et svar...' : 'Tilføj et svar...'"
|
|
7468
|
+
[ngModel]="commentText()"
|
|
7469
|
+
(ngModelChange)="commentText.set($event)"
|
|
7523
7470
|
(input)="handleInput($event)"
|
|
7524
7471
|
(focus)="showKeyboard()"
|
|
7525
7472
|
(click)="showKeyboard()"
|
|
7526
|
-
rows="1"
|
|
7527
|
-
></textarea>
|
|
7473
|
+
rows="1"></textarea>
|
|
7528
7474
|
</div>
|
|
7529
7475
|
@if (commentText().trim().length > 0) {
|
|
7530
|
-
|
|
7531
|
-
icon="remixCheckLine"
|
|
7532
|
-
variant="primary"
|
|
7533
|
-
size="sm"
|
|
7534
|
-
(clicked)="submitComment()"
|
|
7535
|
-
aria-label="Send kommentar"
|
|
7536
|
-
class="send-button-fixed">
|
|
7537
|
-
</ds-icon-button>
|
|
7476
|
+
<ds-icon-button icon="remixCheckLine" variant="primary" size="sm" (clicked)="submitComment()" aria-label="Send kommentar" class="send-button-fixed"> </ds-icon-button>
|
|
7538
7477
|
}
|
|
7539
7478
|
</div>
|
|
7540
7479
|
</div>
|
|
7541
7480
|
</div>
|
|
7542
7481
|
}
|
|
7543
|
-
`, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-sm);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}\n", ":host{display:block;position:relative;height:100%;width:100%}.post-modal-content{--background: var(--color-background-neutral-primary, #ffffff)}.post-modal-wrapper{display:flex;flex-direction:column;min-height:100%;min-height:100dvh;background:var(--color-background-neutral-primary, #ffffff)}.post-modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:0 16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:72px}.post-author-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.author-details{display:flex;flex-direction:column;min-width:0;flex:1}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.post-detail-container{display:flex;flex-direction:column;gap:16px;width:100%;max-width:640px;margin:0 auto;padding:16px 0 20px;flex:1}.post-section{width:100%;border-bottom:1px solid var(--border-color-default);padding:0 0 16px}.post-content-only{font-size:var(--font-size-sm);line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px;padding:0 20px}.post-content-only post-media{margin-top:16px}.post-actions{display:flex;align-items:center;gap:16px;padding:0 20px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:0;margin-right:0;padding:0 20px}.comments-header{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0 0 16px;padding-left:0;padding-right:0}.comments-list{display:flex;flex-direction:column}.comments-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px;margin-bottom:24px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.composer-spacer{height:calc(81px + env(safe-area-inset-bottom,0px))}.bottom-spacer{height:0px}.comment-composer-fixed{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s ease-out;max-width:100vw}.comment-composer{pointer-events:auto;background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px));width:100%;display:flex;flex-direction:column;gap:8px;box-shadow:100px 150px 0 150px var(--color-background-neutral-primary, #ffffff)}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-brand-base, #6B5FF5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-brand-base, #6B5FF5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-brand-base, #6B5FF5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-brand-base, #6B5FF5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.composer-content{display:flex;align-items:flex-start;gap:12px;width:100%;position:relative}.composer-content ds-avatar{position:relative;top:6px}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 48px 12px 16px;min-height:44px;position:relative}.mention-menu{position:absolute;bottom:100%;left:0;right:0;background:var(--color-background-neutral-primary, #ffffff);border-radius:12px;box-shadow:0 4px 12px #00000026;margin-bottom:8px;max-height:200px;overflow-y:auto;z-index:10;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.mention-menu-item{display:flex;align-items:center;gap:12px;padding:12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background .2s ease;border-bottom:1px solid var(--border-color-default)}.mention-menu-item:last-child{border-bottom:none}.mention-menu-item:active{background:var(--color-background-neutral-secondary, #f5f5f5)}.mention-user-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-fixed{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;animation:slideInFromRight .2s ease-out}.send-button-fixed::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}.composer-input-wrapper ds-icon-button{flex-shrink:0;animation:slideInFromRight .2s ease-out}.composer-input-wrapper ds-icon-button::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}@supports (padding: env(safe-area-inset-bottom)){.post-detail-container{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}.post-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.post-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}\n"] }]
|
|
7482
|
+
`, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-sm);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}\n", ":host{display:block;position:relative;height:100%;width:100%}.post-modal-content{--background: var(--color-background-neutral-primary, #ffffff)}.post-modal-wrapper{display:flex;flex-direction:column;min-height:100%;min-height:100dvh;background:var(--color-background-neutral-primary, #ffffff)}.post-modal-header{position:sticky;top:0;z-index:10;background:var(--color-background-neutral-primary, #ffffff);border-bottom:1px solid var(--border-color-default);padding:0 16px}.header-content{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:72px}.post-author-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.author-details{display:flex;flex-direction:column;min-width:0;flex:1}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.close-button{flex-shrink:0;border-radius:50%}.close-button::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.post-detail-container{display:flex;flex-direction:column;gap:16px;width:100%;max-width:640px;margin:0 auto;padding:16px 0 20px;flex:1}.post-section{width:100%;border-bottom:1px solid var(--border-color-default);padding:0 0 16px}.post-content-only{font-size:var(--font-size-sm);line-height:24px;color:var(--color-text-primary, #1a1a1a);margin-bottom:16px;padding:0 20px}.post-content-only post-media{margin-top:16px}.post-actions{display:flex;align-items:center;gap:16px;padding:0 20px}.clickable-image{cursor:pointer;transition:transform .2s ease,opacity .2s ease;border-radius:8px;display:block;width:100%;aspect-ratio:16/9;object-fit:cover}.clickable-image:active{transform:scale(.98);opacity:.9}.comments-section{display:flex;flex-direction:column;margin-left:0;margin-right:0;padding:0 20px}.comments-header{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:24px;color:var(--color-text-primary, #1a1a1a);margin:0 0 16px;padding-left:0;padding-right:0}.comments-list{display:flex;flex-direction:column}.comments-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-image{width:96px;height:96px;margin-bottom:24px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}.composer-spacer{height:calc(81px + env(safe-area-inset-bottom,0px))}.bottom-spacer{height:0px}.comment-composer-fixed{position:fixed;bottom:0;left:0;right:0;z-index:1000;pointer-events:none;transform:translateY(calc(-1 * var(--keyboard-height, 0px)));transition:transform .3s ease-out;max-width:100vw}.comment-composer{pointer-events:auto;background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px));width:100%;display:flex;flex-direction:column;gap:8px;box-shadow:100px 150px 0 150px var(--color-background-neutral-primary, #ffffff)}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-brand-base, #6b5ff5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-brand-base, #6b5ff5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-brand-base, #6b5ff5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-brand-base, #6b5ff5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.composer-content{display:flex;align-items:flex-start;gap:12px;width:100%;position:relative}.composer-content ds-avatar{position:relative;top:6px}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 48px 12px 16px;min-height:44px;position:relative}.mention-menu{position:absolute;bottom:100%;left:0;right:0;background:var(--color-background-neutral-primary, #ffffff);border-radius:12px;box-shadow:0 4px 12px #00000026;margin-bottom:8px;max-height:200px;overflow-y:auto;z-index:10;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.mention-menu-item{display:flex;align-items:center;gap:12px;padding:12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;transition:background .2s ease;border-bottom:1px solid var(--border-color-default)}.mention-menu-item:last-child{border-bottom:none}.mention-menu-item:active{background:var(--color-background-neutral-secondary, #f5f5f5)}.mention-user-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-fixed{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;animation:slideInFromRight .2s ease-out}.send-button-fixed::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}.composer-input-wrapper ds-icon-button{flex-shrink:0;animation:slideInFromRight .2s ease-out}.composer-input-wrapper ds-icon-button::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}@supports (padding: env(safe-area-inset-bottom)){.post-detail-container{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}.post-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-background-neutral-secondary, #f0f0f0);border-top-color:var(--color-primary-base, #2563eb);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin-top:16px}.post-error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;gap:16px}.error-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a);margin:0}.error-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--color-text-secondary, #737373);margin:0}\n"] }]
|
|
7544
7483
|
}], ctorParameters: () => [{ type: i1.ModalController }, { type: DsMobileLightboxService }, { type: DsMobileBottomSheetService }], propDecorators: { postData: [{
|
|
7545
7484
|
type: Input
|
|
7485
|
+
}], currentUserName: [{
|
|
7486
|
+
type: Input
|
|
7487
|
+
}], currentUserInitialsInput: [{
|
|
7488
|
+
type: Input
|
|
7546
7489
|
}], onSubmitComment: [{
|
|
7547
7490
|
type: Input
|
|
7548
7491
|
}], loading: [{
|
|
@@ -7611,13 +7554,16 @@ class DsMobilePostDetailModalService {
|
|
|
7611
7554
|
*/
|
|
7612
7555
|
async open(postData, options) {
|
|
7613
7556
|
console.log('[PostDetailModal] Opening with data:', postData);
|
|
7557
|
+
console.log('[PostDetailModal] options.onSubmitComment =', options?.onSubmitComment);
|
|
7614
7558
|
const modal = await this.modalController.create({
|
|
7615
7559
|
component: DsMobilePostDetailModalComponent,
|
|
7616
7560
|
componentProps: {
|
|
7617
7561
|
postData: postData,
|
|
7618
7562
|
loading: options?.loading ?? false,
|
|
7619
7563
|
error: options?.error,
|
|
7620
|
-
onSubmitComment: options?.onSubmitComment
|
|
7564
|
+
onSubmitComment: options?.onSubmitComment,
|
|
7565
|
+
currentUserName: options?.currentUserName ?? '',
|
|
7566
|
+
currentUserInitialsInput: options?.currentUserInitials ?? ''
|
|
7621
7567
|
},
|
|
7622
7568
|
cssClass: 'ds-post-detail-modal',
|
|
7623
7569
|
mode: 'ios',
|
|
@@ -7628,7 +7574,7 @@ class DsMobilePostDetailModalService {
|
|
|
7628
7574
|
keyboardClose: true,
|
|
7629
7575
|
// Control the presenting element animation
|
|
7630
7576
|
enterAnimation: undefined, // Use default
|
|
7631
|
-
leaveAnimation: undefined // Use default
|
|
7577
|
+
leaveAnimation: undefined, // Use default
|
|
7632
7578
|
});
|
|
7633
7579
|
console.log('[PostDetailModal] Modal created, presenting...');
|
|
7634
7580
|
await modal.present();
|
|
@@ -7657,7 +7603,7 @@ class DsMobilePostDetailModalService {
|
|
|
7657
7603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: DsMobilePostDetailModalService, decorators: [{
|
|
7658
7604
|
type: Injectable,
|
|
7659
7605
|
args: [{
|
|
7660
|
-
providedIn: 'root'
|
|
7606
|
+
providedIn: 'root',
|
|
7661
7607
|
}]
|
|
7662
7608
|
}], ctorParameters: () => [{ type: i1.ModalController }] });
|
|
7663
7609
|
|