@omnia/fx
Version:
Provide Omnia Fx typings and tooling for clientside Omnia development.
103 lines (102 loc) • 4.88 kB
TypeScript
import { type IPostCustomSlots, PostPermission, ThemeStore, Theming, VueComponentBase } from "../..";
import { IWebComponentInstance, OmniaContext } from "../../..";
import { type IPersistedPost, IPostBaseContext, IPostBaseWithContext, type OmitProperties, ReactionType, ResolvedUserIdentity, type ThemeDefinition } from "../../../models";
import { IRichTextEditor } from "../../richtexteditor";
import { ILikeService, UserIdentityStore } from "@omnia/fx/stores";
import { IdentitiesLocalization } from "../../identities/loc/localize";
export declare class PostTemplate extends VueComponentBase<{}, {}, {}> implements IWebComponentInstance {
persistedPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>;
persistedPosts: Array<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
richTextSettings: OmitProperties<IRichTextEditor, "initialContent" | "onContentChange">;
currentUser: ResolvedUserIdentity;
canShowEditDialogOnLoad?: boolean;
canLike?: boolean;
enableMention?: boolean;
openReply: (postToReplyOn: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
cancelReply: (post: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
openEdit: (post: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
closeEdit: (post: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => void;
refresh: (addedPost: boolean) => void;
cardStyle?: ThemeDefinition;
hideEdit?: boolean;
handleAddingPost: (addingPost: IPostBaseWithContext<IPostBaseContext>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
handleUpdatingPost: (updatingPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
handleDeletingPost: (deletingPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
handleTogglingLike: (togglingPost: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
handleSocialReacts: (postToReact: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>, isReacts: boolean, reactionType: ReactionType) => Promise<IPersistedPost<IPostBaseWithContext<IPostBaseContext>>>;
customSlots?: IPostCustomSlots;
hideEditOption?: boolean;
getTopPostIds: () => {
[commentId: string]: string;
};
getUserHash: () => {
[principalName: string]: ResolvedUserIdentity;
};
topicPermissionDictionary: {
[topicId: string]: PostPermission;
};
private omniaUxLocalization;
private postLoc;
identityLoc: IdentitiesLocalization.locInterface;
userIdentityStore: UserIdentityStore;
omniaCtx: OmniaContext;
themeStore: ThemeStore;
dialogTheme: Theming;
private dateFormat;
private isAdd;
private isEdit;
private isReply;
private isAddingOrUpdatingPost;
private isDeleting;
private draftContent;
private language;
private resetContent;
private isRTEPlaceholderClicked;
private isLoadingRTE;
private isRenderRTE;
private draftMentionUsers;
private customCardThemeId;
private childTargetThemeId;
private useAccessibilityFeatures;
private dialogModel;
private deleteDialogModel;
onPostChange(newValue: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>, oldValue: IPersistedPost<IPostBaseWithContext<IPostBaseContext>>): void;
created(): void;
mounted(): void;
beforeUnmount(): void;
private migrateData;
private getReactions;
private ensureCustomThemeRegistered;
private ensureCustomThemeUnregistered;
getReplyToPost(): IPersistedPost<IPostBaseWithContext<IPostBaseContext>>;
ensureContentOnSave(content: string): string;
getContentInsideTag(content: string): string;
onClickReply(): void;
onReact(topicId: string, commentId: string, isReacts: boolean, reactionType: ReactionType): Promise<void>;
onClickRemoveReplyToPost(): void;
onClickDelete(): void;
onSave(): void;
onContentUpdate(content: string): void;
onMentionUpdate(mentionUsers: Array<ResolvedUserIdentity>): void;
onEditPostClicked(): void;
getCommentLikeService(): ILikeService;
loadRTE(): void;
private renderUserLink;
/**
* Render title for post
* @param isDialog
* @param cardTheming Nested theming for everything inside the post card
*/
private renderTitleInfo;
private renderEditDialog;
private renderEdit;
private renderEditContentBody;
private renderEditButton;
private renderDeleteButton;
private renderDeleteDialog;
private renderEditOptionsBase;
private renderEditOptions;
private renderDisplay;
private renderDeletedMessage;
render(): VueTsxSupport.JSX.Element;
}