barsa-sap-ui 2.3.74 → 2.3.75
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.
|
@@ -15439,7 +15439,7 @@ class BarsaChatMessageComponent extends BaseComponent {
|
|
|
15439
15439
|
return { ...image, displayWidth, displayHeight };
|
|
15440
15440
|
}
|
|
15441
15441
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BarsaChatMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15442
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaChatMessageComponent, isStandalone: false, selector: "bsu-barsa-chat-message", inputs: { message: "message", showSender: "showSender", nextIsSame: "nextIsSame", pervIsSame: "pervIsSame", badge: "badge", nextHasBadge: "nextHasBadge", badgeLabel: "badgeLabel" }, outputs: { reply: "reply" }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"tw-w-full tw-px-4 tw-flex tw-flex-wrap\"\r\n [ngClass]=\"{\r\n'tw-pt-1': pervIsSame,\r\n'tw-pt-3': !pervIsSame,\r\n}\"\r\n>\r\n @if (badge) {\r\n <div class=\"tw-w-full tw-pb-6 tw-pt-5\">\r\n <div class=\"tw-w-fit tw-bg-zinc-500 tw-text-white tw-px-4 tw-mx-auto tw-rounded-full tw-text-md\">\r\n {{ badgeLabel }}\r\n </div>\r\n </div>\r\n }\r\n <div\r\n class=\"tw-w-full tw-flex tw-gap-2 tw-items-end tw-relative\"\r\n [ngClass]=\"{\r\n'tw-justify-start': message.owner.id === message.userId,\r\n'tw-flex-row-reverse': message.owner.id !== message.userId,\r\n'tw-ms-14': (nextIsSame && !nextHasBadge) && message.owner.id === message.userId,\r\n'tw-me-14': (nextIsSame && !nextHasBadge) && message.owner.id !== message.userId,\r\n }\"\r\n >\r\n @if (!nextIsSame || nextHasBadge) {\r\n <fd-avatar\r\n size=\"s\"\r\n [label]=\"message.owner.avatar ? '' : message.owner?.name\"\r\n [circle]=\"true\"\r\n [image]=\"message.owner?.avatar\"\r\n [placeholder]=\"message.owner.avatar ? false : true\"\r\n ></fd-avatar>\r\n } @if (!nextIsSame || nextHasBadge) {\r\n <div\r\n class=\"tw-bg-transparent tw-overflow-hidden tw-size-3 tw-absolute tw-bottom-0 tw-border-[6px] tw-border-t-transparent\"\r\n [ngClass]=\"{\r\n 'tw-right-11 tw-border-b-green-100 tw-border-l-green-100 tw-border-r-transparent':\r\n message.owner.id === message.userId,\r\n 'tw-left-11 tw-border-b-default tw-border-r-default tw-border-l-transparent':\r\n message.owner.id !== message.userId\r\n }\"\r\n ></div>\r\n }\r\n <div\r\n [@inPaneAnimation]=\"animationState\"\r\n class=\"tw-max-w-[80%] tw-min-w-40 tw-rounded-2xl tw-text-base tw-relative tw-overflow-hidden\"\r\n [ngClass]=\"{\r\n '!tw-rounded-br-none':\r\n message.owner.id === message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-bl-none':\r\n message.owner.id !== message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-tr-none': message.owner.id === message.userId && pervIsSame && !badge,\r\n '!tw-rounded-tl-none': message.owner.id !== message.userId && pervIsSame && !badge\r\n }\"\r\n >\r\n @if (showSender && (!pervIsSame || badge)) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId && !message.image,\r\n'tw-bg-default': message.owner.id !== message.userId && !message.image,\r\n'tw-absolute tw-top-0 tw-right-0 tw-pb-8 tw-w-full tw-rounded-tr-2xl tw-bg-gradient-to-b tw-to-transparent': message.image,\r\n'tw-from-green-100': message.owner.id === message.userId && message.image,\r\n'tw-from-default': message.owner.id !== message.userId && message.image,\r\n }\"\r\n class=\"tw-font-bold tw-text-base tw-px-3 tw-pt-2 tw-z-10\"\r\n >\r\n {{ message.owner.name }}\r\n </div>\r\n } @if (message.image) { @if (imageRatio(message.image); as image) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100/[.3]': message.owner.id === message.userId,\r\n'tw-bg-default/[.3]': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-flex tw-justify-center tw-items-center tw-bg-zinc-500/[.3] tw-relative\"\r\n >\r\n <a\r\n [download]=\"message.image.name\"\r\n href=\"assets/bg-chat.jpg\"\r\n target=\"_blank\"\r\n class=\"tw-absolute tw-w-full tw-h-full tw-bg-black/[.4] dark:tw-bg-white/[.4] tw-opacity-0 hover:tw-opacity-100 tw-transition-all tw-cursor-pointer tw-flex tw-justify-center tw-items-center\"\r\n >\r\n <fd-icon class=\"!tw-text-default !tw-text-3xl\" glyph=\"download\"></fd-icon>\r\n </a>\r\n <img\r\n [ngStyle]=\"{\r\n width: image.displayWidth + 'px',\r\n height: image.displayHeight + 'px'\r\n }\"\r\n [src]=\"image.url\"\r\n />\r\n </div>\r\n } } @for(file of message.files;track file.Id) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-px-2 tw-pt-2 w-full tw-flex tw-gap-2\"\r\n >\r\n <a\r\n downloadFiles\r\n [files]=\"[file]\"\r\n class=\"tw-shrink-0 tw-row-0 tw-size-12 tw-rounded-lg tw-bg-orange-400 tw-flex tw-justify-center tw-items-center tw-cursor-pointer tw-transition-all hover:tw-bg-orange-600\"\r\n >\r\n <span class=\"tw-font-bold leading-6 tw-text-lg tw-text-white\">\r\n {{ file.Type }}\r\n </span>\r\n </a>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span\r\n class=\"tw-font-bold tw-text-md tw-text-base tw-w-full tw-truncate\"\r\n [attr.title]=\"file.FileName\"\r\n >\r\n {{ file.FileName }}</span\r\n >\r\n <span class=\"tw-text-sm tw-text-gray-500 dark:tw-text-gray-400 tw-w-full tw-truncate\">\r\n {{ file.Size }}KB</span\r\n >\r\n </div>\r\n </div>\r\n } @if (message.text) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-whitespace-pre-line tw-px-3 tw-pt-1\"\r\n [innerHTML]=\"message.text\"\r\n ></div>\r\n }\r\n <div\r\n class=\"tw-flex tw-w-full tw-px-2 tw-pt-1 tw-pb-2 tw-items-center tw-gap-2 tw-justify-end\"\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default tw-flex-row-reverse': message.owner.id !== message.userId,\r\n}\"\r\n >\r\n <span class=\"tw-text-xs tw-text-gray-500 dark:tw-text-gray-300\">\r\n {{ message.createdAt | utilDateToHhMm }}\r\n @if(message.owner.id === message.userId){\r\n <bsu-barsa-chat-message-status\r\n [messageSent]=\"true\"\r\n [messageRead]=\"!!message.readAt\"\r\n ></bsu-barsa-chat-message-status>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #moreActions>\r\n <fd-popover placement=\"bottom-end\" title=\"bottom-end\">\r\n <fd-popover-control>\r\n <button fd-button fdType=\"transparent\" [fdCompact]=\"true\" glyph=\"navigation-down-arrow\"></button>\r\n </fd-popover-control>\r\n <fd-popover-body minWidth=\"10rem\">\r\n <div class=\"tw-flex tw-flex-col tw-bg-default tw-w-full\" bodyClick>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n (click)=\"reply.emit(message)\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"undo\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u067E\u0627\u0633\u062E \u062F\u0627\u062F\u0646</span>\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"forward\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u0627\u0631\u0633\u0627\u0644 \u06A9\u0631\u062F\u0646</span>\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"delete\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u062D\u0630\u0641</span>\r\n </label>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i3$6.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "directive", type: i4$3.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i1$2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: BarsaChatMessageStatusComponent, selector: "bsu-barsa-chat-message-status", inputs: ["messageRead", "messageSent"] }, { kind: "directive", type: DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "pipe", type: UtilDateToHhMmPipe, name: "utilDateToHhMm" }], animations: [
|
|
15442
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: BarsaChatMessageComponent, isStandalone: false, selector: "bsu-barsa-chat-message", inputs: { message: "message", showSender: "showSender", nextIsSame: "nextIsSame", pervIsSame: "pervIsSame", badge: "badge", nextHasBadge: "nextHasBadge", badgeLabel: "badgeLabel" }, outputs: { reply: "reply" }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"tw-w-full tw-px-4 tw-flex tw-flex-wrap\"\r\n [ngClass]=\"{\r\n'tw-pt-1': pervIsSame,\r\n'tw-pt-3': !pervIsSame,\r\n}\"\r\n>\r\n @if (badge) {\r\n <div class=\"tw-w-full tw-pb-6 tw-pt-5\">\r\n <div class=\"tw-w-fit tw-bg-zinc-500 tw-text-white tw-px-4 tw-mx-auto tw-rounded-full tw-text-md\">\r\n {{ badgeLabel }}\r\n </div>\r\n </div>\r\n }\r\n <div\r\n class=\"tw-w-full tw-flex tw-gap-2 tw-items-end tw-relative\"\r\n [ngClass]=\"{\r\n'tw-justify-start': message.owner.id === message.userId,\r\n'tw-flex-row-reverse': message.owner.id !== message.userId,\r\n'tw-ms-14': (nextIsSame && !nextHasBadge) && message.owner.id === message.userId,\r\n'tw-me-14': (nextIsSame && !nextHasBadge) && message.owner.id !== message.userId,\r\n }\"\r\n >\r\n @if (!nextIsSame || nextHasBadge) {\r\n <fd-avatar\r\n size=\"s\"\r\n [label]=\"message.owner.avatar ? '' : message.owner?.name\"\r\n [circle]=\"true\"\r\n [image]=\"message.owner?.avatar\"\r\n [placeholder]=\"message.owner.avatar ? false : true\"\r\n ></fd-avatar>\r\n } @if (!nextIsSame || nextHasBadge) {\r\n <div\r\n class=\"tw-bg-transparent tw-overflow-hidden tw-size-3 tw-absolute tw-bottom-0 tw-border-[6px] tw-border-t-transparent\"\r\n [ngClass]=\"{\r\n 'tw-right-11 tw-border-b-green-100 tw-border-l-green-100 tw-border-r-transparent':\r\n message.owner.id === message.userId,\r\n 'tw-left-11 tw-border-b-default tw-border-r-default tw-border-l-transparent':\r\n message.owner.id !== message.userId\r\n }\"\r\n ></div>\r\n }\r\n <div\r\n [@inPaneAnimation]=\"animationState\"\r\n class=\"tw-max-w-[80%] tw-min-w-40 tw-rounded-2xl tw-text-base tw-relative tw-overflow-hidden\"\r\n [ngClass]=\"{\r\n '!tw-rounded-br-none':\r\n message.owner.id === message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-bl-none':\r\n message.owner.id !== message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-tr-none': message.owner.id === message.userId && pervIsSame && !badge,\r\n '!tw-rounded-tl-none': message.owner.id !== message.userId && pervIsSame && !badge\r\n }\"\r\n >\r\n @if (showSender && (!pervIsSame || badge)) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId && !message.image,\r\n'tw-bg-default': message.owner.id !== message.userId && !message.image,\r\n'tw-absolute tw-top-0 tw-right-0 tw-pb-8 tw-w-full tw-rounded-tr-2xl tw-bg-gradient-to-b tw-to-transparent': message.image,\r\n'tw-from-green-100': message.owner.id === message.userId && message.image,\r\n'tw-from-default': message.owner.id !== message.userId && message.image,\r\n }\"\r\n class=\"tw-font-bold tw-text-base tw-px-3 tw-pt-2 tw-z-10\"\r\n >\r\n {{ message.owner.name }}\r\n </div>\r\n } @if (message.image) { @if (imageRatio(message.image); as image) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100/[.3]': message.owner.id === message.userId,\r\n'tw-bg-default/[.3]': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-flex tw-justify-center tw-items-center tw-bg-zinc-500/[.3] tw-relative\"\r\n >\r\n <a\r\n [download]=\"message.image.name\"\r\n href=\"assets/bg-chat.jpg\"\r\n target=\"_blank\"\r\n class=\"tw-absolute tw-w-full tw-h-full tw-bg-black/[.4] dark:tw-bg-white/[.4] tw-opacity-0 hover:tw-opacity-100 tw-transition-all tw-cursor-pointer tw-flex tw-justify-center tw-items-center\"\r\n >\r\n <fd-icon class=\"!tw-text-default !tw-text-3xl\" glyph=\"download\"></fd-icon>\r\n </a>\r\n <img\r\n [ngStyle]=\"{\r\n width: image.displayWidth + 'px',\r\n height: image.displayHeight + 'px'\r\n }\"\r\n [src]=\"image.url\"\r\n />\r\n </div>\r\n } } @for(file of message.files;track file.Id) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-px-2 tw-pt-2 w-full tw-flex tw-gap-2\"\r\n >\r\n <a\r\n downloadFiles\r\n [files]=\"[file]\"\r\n class=\"tw-shrink-0 tw-row-0 tw-size-12 tw-rounded-lg tw-bg-orange-400 tw-flex tw-justify-center tw-items-center tw-cursor-pointer tw-transition-all hover:tw-bg-orange-600\"\r\n >\r\n <span class=\"tw-font-bold leading-6 tw-text-lg tw-text-white\">\r\n {{ file.Type }}\r\n </span>\r\n </a>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span\r\n class=\"tw-font-bold tw-text-md tw-text-base tw-truncate tw-max-w-48\"\r\n [attr.title]=\"file.FileName\"\r\n >\r\n {{ file.FileName }}</span\r\n >\r\n <span class=\"tw-text-sm tw-text-gray-500 dark:tw-text-gray-400 tw-w-full tw-truncate\">\r\n {{ file.Size }}KB</span\r\n >\r\n </div>\r\n </div>\r\n } @if (message.text) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-whitespace-pre-line tw-px-3 tw-pt-1\"\r\n [innerHTML]=\"message.text\"\r\n ></div>\r\n }\r\n <div\r\n class=\"tw-flex tw-w-full tw-px-2 tw-pt-1 tw-pb-2 tw-items-center tw-gap-2 tw-justify-end\"\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default tw-flex-row-reverse': message.owner.id !== message.userId,\r\n}\"\r\n >\r\n <span class=\"tw-text-xs tw-text-gray-500 dark:tw-text-gray-300\">\r\n {{ message.createdAt | utilDateToHhMm }}\r\n @if(message.owner.id === message.userId){\r\n <bsu-barsa-chat-message-status\r\n [messageSent]=\"true\"\r\n [messageRead]=\"!!message.readAt\"\r\n ></bsu-barsa-chat-message-status>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #moreActions>\r\n <fd-popover placement=\"bottom-end\" title=\"bottom-end\">\r\n <fd-popover-control>\r\n <button fd-button fdType=\"transparent\" [fdCompact]=\"true\" glyph=\"navigation-down-arrow\"></button>\r\n </fd-popover-control>\r\n <fd-popover-body minWidth=\"10rem\">\r\n <div class=\"tw-flex tw-flex-col tw-bg-default tw-w-full\" bodyClick>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n (click)=\"reply.emit(message)\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"undo\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u067E\u0627\u0633\u062E \u062F\u0627\u062F\u0646</span>\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"forward\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u0627\u0631\u0633\u0627\u0644 \u06A9\u0631\u062F\u0646</span>\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"delete\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u062D\u0630\u0641</span>\r\n </label>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i3$6.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "directive", type: i4$3.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i1$2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i7$2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7$2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7$2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: BarsaChatMessageStatusComponent, selector: "bsu-barsa-chat-message-status", inputs: ["messageRead", "messageSent"] }, { kind: "directive", type: DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "pipe", type: UtilDateToHhMmPipe, name: "utilDateToHhMm" }], animations: [
|
|
15443
15443
|
trigger('inPaneAnimation', [
|
|
15444
15444
|
state('hidden', style({ opacity: 0, transform: 'scale(0, 0)' })),
|
|
15445
15445
|
state('visible', style({ opacity: 1, transform: 'scale(1, 1)' })),
|
|
@@ -15457,7 +15457,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
15457
15457
|
transition('hidden => visible', animate('300ms ease-in-out')),
|
|
15458
15458
|
transition('visible => hidden', animate('300ms ease-in-out'))
|
|
15459
15459
|
])
|
|
15460
|
-
], standalone: false, template: "<div\r\n class=\"tw-w-full tw-px-4 tw-flex tw-flex-wrap\"\r\n [ngClass]=\"{\r\n'tw-pt-1': pervIsSame,\r\n'tw-pt-3': !pervIsSame,\r\n}\"\r\n>\r\n @if (badge) {\r\n <div class=\"tw-w-full tw-pb-6 tw-pt-5\">\r\n <div class=\"tw-w-fit tw-bg-zinc-500 tw-text-white tw-px-4 tw-mx-auto tw-rounded-full tw-text-md\">\r\n {{ badgeLabel }}\r\n </div>\r\n </div>\r\n }\r\n <div\r\n class=\"tw-w-full tw-flex tw-gap-2 tw-items-end tw-relative\"\r\n [ngClass]=\"{\r\n'tw-justify-start': message.owner.id === message.userId,\r\n'tw-flex-row-reverse': message.owner.id !== message.userId,\r\n'tw-ms-14': (nextIsSame && !nextHasBadge) && message.owner.id === message.userId,\r\n'tw-me-14': (nextIsSame && !nextHasBadge) && message.owner.id !== message.userId,\r\n }\"\r\n >\r\n @if (!nextIsSame || nextHasBadge) {\r\n <fd-avatar\r\n size=\"s\"\r\n [label]=\"message.owner.avatar ? '' : message.owner?.name\"\r\n [circle]=\"true\"\r\n [image]=\"message.owner?.avatar\"\r\n [placeholder]=\"message.owner.avatar ? false : true\"\r\n ></fd-avatar>\r\n } @if (!nextIsSame || nextHasBadge) {\r\n <div\r\n class=\"tw-bg-transparent tw-overflow-hidden tw-size-3 tw-absolute tw-bottom-0 tw-border-[6px] tw-border-t-transparent\"\r\n [ngClass]=\"{\r\n 'tw-right-11 tw-border-b-green-100 tw-border-l-green-100 tw-border-r-transparent':\r\n message.owner.id === message.userId,\r\n 'tw-left-11 tw-border-b-default tw-border-r-default tw-border-l-transparent':\r\n message.owner.id !== message.userId\r\n }\"\r\n ></div>\r\n }\r\n <div\r\n [@inPaneAnimation]=\"animationState\"\r\n class=\"tw-max-w-[80%] tw-min-w-40 tw-rounded-2xl tw-text-base tw-relative tw-overflow-hidden\"\r\n [ngClass]=\"{\r\n '!tw-rounded-br-none':\r\n message.owner.id === message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-bl-none':\r\n message.owner.id !== message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-tr-none': message.owner.id === message.userId && pervIsSame && !badge,\r\n '!tw-rounded-tl-none': message.owner.id !== message.userId && pervIsSame && !badge\r\n }\"\r\n >\r\n @if (showSender && (!pervIsSame || badge)) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId && !message.image,\r\n'tw-bg-default': message.owner.id !== message.userId && !message.image,\r\n'tw-absolute tw-top-0 tw-right-0 tw-pb-8 tw-w-full tw-rounded-tr-2xl tw-bg-gradient-to-b tw-to-transparent': message.image,\r\n'tw-from-green-100': message.owner.id === message.userId && message.image,\r\n'tw-from-default': message.owner.id !== message.userId && message.image,\r\n }\"\r\n class=\"tw-font-bold tw-text-base tw-px-3 tw-pt-2 tw-z-10\"\r\n >\r\n {{ message.owner.name }}\r\n </div>\r\n } @if (message.image) { @if (imageRatio(message.image); as image) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100/[.3]': message.owner.id === message.userId,\r\n'tw-bg-default/[.3]': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-flex tw-justify-center tw-items-center tw-bg-zinc-500/[.3] tw-relative\"\r\n >\r\n <a\r\n [download]=\"message.image.name\"\r\n href=\"assets/bg-chat.jpg\"\r\n target=\"_blank\"\r\n class=\"tw-absolute tw-w-full tw-h-full tw-bg-black/[.4] dark:tw-bg-white/[.4] tw-opacity-0 hover:tw-opacity-100 tw-transition-all tw-cursor-pointer tw-flex tw-justify-center tw-items-center\"\r\n >\r\n <fd-icon class=\"!tw-text-default !tw-text-3xl\" glyph=\"download\"></fd-icon>\r\n </a>\r\n <img\r\n [ngStyle]=\"{\r\n width: image.displayWidth + 'px',\r\n height: image.displayHeight + 'px'\r\n }\"\r\n [src]=\"image.url\"\r\n />\r\n </div>\r\n } } @for(file of message.files;track file.Id) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-px-2 tw-pt-2 w-full tw-flex tw-gap-2\"\r\n >\r\n <a\r\n downloadFiles\r\n [files]=\"[file]\"\r\n class=\"tw-shrink-0 tw-row-0 tw-size-12 tw-rounded-lg tw-bg-orange-400 tw-flex tw-justify-center tw-items-center tw-cursor-pointer tw-transition-all hover:tw-bg-orange-600\"\r\n >\r\n <span class=\"tw-font-bold leading-6 tw-text-lg tw-text-white\">\r\n {{ file.Type }}\r\n </span>\r\n </a>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span\r\n class=\"tw-font-bold tw-text-md tw-text-base tw-
|
|
15460
|
+
], standalone: false, template: "<div\r\n class=\"tw-w-full tw-px-4 tw-flex tw-flex-wrap\"\r\n [ngClass]=\"{\r\n'tw-pt-1': pervIsSame,\r\n'tw-pt-3': !pervIsSame,\r\n}\"\r\n>\r\n @if (badge) {\r\n <div class=\"tw-w-full tw-pb-6 tw-pt-5\">\r\n <div class=\"tw-w-fit tw-bg-zinc-500 tw-text-white tw-px-4 tw-mx-auto tw-rounded-full tw-text-md\">\r\n {{ badgeLabel }}\r\n </div>\r\n </div>\r\n }\r\n <div\r\n class=\"tw-w-full tw-flex tw-gap-2 tw-items-end tw-relative\"\r\n [ngClass]=\"{\r\n'tw-justify-start': message.owner.id === message.userId,\r\n'tw-flex-row-reverse': message.owner.id !== message.userId,\r\n'tw-ms-14': (nextIsSame && !nextHasBadge) && message.owner.id === message.userId,\r\n'tw-me-14': (nextIsSame && !nextHasBadge) && message.owner.id !== message.userId,\r\n }\"\r\n >\r\n @if (!nextIsSame || nextHasBadge) {\r\n <fd-avatar\r\n size=\"s\"\r\n [label]=\"message.owner.avatar ? '' : message.owner?.name\"\r\n [circle]=\"true\"\r\n [image]=\"message.owner?.avatar\"\r\n [placeholder]=\"message.owner.avatar ? false : true\"\r\n ></fd-avatar>\r\n } @if (!nextIsSame || nextHasBadge) {\r\n <div\r\n class=\"tw-bg-transparent tw-overflow-hidden tw-size-3 tw-absolute tw-bottom-0 tw-border-[6px] tw-border-t-transparent\"\r\n [ngClass]=\"{\r\n 'tw-right-11 tw-border-b-green-100 tw-border-l-green-100 tw-border-r-transparent':\r\n message.owner.id === message.userId,\r\n 'tw-left-11 tw-border-b-default tw-border-r-default tw-border-l-transparent':\r\n message.owner.id !== message.userId\r\n }\"\r\n ></div>\r\n }\r\n <div\r\n [@inPaneAnimation]=\"animationState\"\r\n class=\"tw-max-w-[80%] tw-min-w-40 tw-rounded-2xl tw-text-base tw-relative tw-overflow-hidden\"\r\n [ngClass]=\"{\r\n '!tw-rounded-br-none':\r\n message.owner.id === message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-bl-none':\r\n message.owner.id !== message.userId &&\r\n (nextHasBadge || (nextIsSame && !nextHasBadge) || !nextIsSame),\r\n '!tw-rounded-tr-none': message.owner.id === message.userId && pervIsSame && !badge,\r\n '!tw-rounded-tl-none': message.owner.id !== message.userId && pervIsSame && !badge\r\n }\"\r\n >\r\n @if (showSender && (!pervIsSame || badge)) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId && !message.image,\r\n'tw-bg-default': message.owner.id !== message.userId && !message.image,\r\n'tw-absolute tw-top-0 tw-right-0 tw-pb-8 tw-w-full tw-rounded-tr-2xl tw-bg-gradient-to-b tw-to-transparent': message.image,\r\n'tw-from-green-100': message.owner.id === message.userId && message.image,\r\n'tw-from-default': message.owner.id !== message.userId && message.image,\r\n }\"\r\n class=\"tw-font-bold tw-text-base tw-px-3 tw-pt-2 tw-z-10\"\r\n >\r\n {{ message.owner.name }}\r\n </div>\r\n } @if (message.image) { @if (imageRatio(message.image); as image) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100/[.3]': message.owner.id === message.userId,\r\n'tw-bg-default/[.3]': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-flex tw-justify-center tw-items-center tw-bg-zinc-500/[.3] tw-relative\"\r\n >\r\n <a\r\n [download]=\"message.image.name\"\r\n href=\"assets/bg-chat.jpg\"\r\n target=\"_blank\"\r\n class=\"tw-absolute tw-w-full tw-h-full tw-bg-black/[.4] dark:tw-bg-white/[.4] tw-opacity-0 hover:tw-opacity-100 tw-transition-all tw-cursor-pointer tw-flex tw-justify-center tw-items-center\"\r\n >\r\n <fd-icon class=\"!tw-text-default !tw-text-3xl\" glyph=\"download\"></fd-icon>\r\n </a>\r\n <img\r\n [ngStyle]=\"{\r\n width: image.displayWidth + 'px',\r\n height: image.displayHeight + 'px'\r\n }\"\r\n [src]=\"image.url\"\r\n />\r\n </div>\r\n } } @for(file of message.files;track file.Id) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-px-2 tw-pt-2 w-full tw-flex tw-gap-2\"\r\n >\r\n <a\r\n downloadFiles\r\n [files]=\"[file]\"\r\n class=\"tw-shrink-0 tw-row-0 tw-size-12 tw-rounded-lg tw-bg-orange-400 tw-flex tw-justify-center tw-items-center tw-cursor-pointer tw-transition-all hover:tw-bg-orange-600\"\r\n >\r\n <span class=\"tw-font-bold leading-6 tw-text-lg tw-text-white\">\r\n {{ file.Type }}\r\n </span>\r\n </a>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span\r\n class=\"tw-font-bold tw-text-md tw-text-base tw-truncate tw-max-w-48\"\r\n [attr.title]=\"file.FileName\"\r\n >\r\n {{ file.FileName }}</span\r\n >\r\n <span class=\"tw-text-sm tw-text-gray-500 dark:tw-text-gray-400 tw-w-full tw-truncate\">\r\n {{ file.Size }}KB</span\r\n >\r\n </div>\r\n </div>\r\n } @if (message.text) {\r\n <div\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default': message.owner.id !== message.userId,\r\n }\"\r\n class=\"tw-whitespace-pre-line tw-px-3 tw-pt-1\"\r\n [innerHTML]=\"message.text\"\r\n ></div>\r\n }\r\n <div\r\n class=\"tw-flex tw-w-full tw-px-2 tw-pt-1 tw-pb-2 tw-items-center tw-gap-2 tw-justify-end\"\r\n [ngClass]=\"{\r\n'tw-bg-green-100': message.owner.id === message.userId,\r\n'tw-bg-default tw-flex-row-reverse': message.owner.id !== message.userId,\r\n}\"\r\n >\r\n <span class=\"tw-text-xs tw-text-gray-500 dark:tw-text-gray-300\">\r\n {{ message.createdAt | utilDateToHhMm }}\r\n @if(message.owner.id === message.userId){\r\n <bsu-barsa-chat-message-status\r\n [messageSent]=\"true\"\r\n [messageRead]=\"!!message.readAt\"\r\n ></bsu-barsa-chat-message-status>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #moreActions>\r\n <fd-popover placement=\"bottom-end\" title=\"bottom-end\">\r\n <fd-popover-control>\r\n <button fd-button fdType=\"transparent\" [fdCompact]=\"true\" glyph=\"navigation-down-arrow\"></button>\r\n </fd-popover-control>\r\n <fd-popover-body minWidth=\"10rem\">\r\n <div class=\"tw-flex tw-flex-col tw-bg-default tw-w-full\" bodyClick>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n (click)=\"reply.emit(message)\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"undo\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u067E\u0627\u0633\u062E \u062F\u0627\u062F\u0646</span>\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"forward\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u0627\u0631\u0633\u0627\u0644 \u06A9\u0631\u062F\u0646</span>\r\n </label>\r\n <label\r\n class=\"tw-px-4 tw-py-2 tw-flex tw-gap-2 tw-w-full hover:tw-bg-base/[.1] tw-transition-all tw-cursor-pointer\"\r\n >\r\n <fd-icon class=\"!tw-text-base !tw-text-3xl\" glyph=\"delete\"></fd-icon>\r\n <span class=\"!tw-text-base\">\u062D\u0630\u0641</span>\r\n </label>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"] }]
|
|
15461
15461
|
}], propDecorators: { message: [{
|
|
15462
15462
|
type: Input
|
|
15463
15463
|
}], showSender: [{
|