@sunbird-cb/consumption 0.1.19-cbrelease-4.8.27-multilingual → 0.1.21-cbrelease-4.8.27-multilingual
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_common/cards/available-languages/available-languages.component.mjs +3 -3
- package/esm2022/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.mjs +2 -2
- package/esm2022/lib/_services/content-language.service.mjs +3 -3
- package/fesm2022/sunbird-cb-consumption.mjs +6 -6
- package/fesm2022/sunbird-cb-consumption.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -27,12 +27,12 @@ export class AvailableLanguagesComponent {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AvailableLanguagesComponent, deps: [{ token: i1.MatLegacyDialog }, { token: i2.ContentLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: { content: "content" }, ngImport: i0, template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: { content: "content" }, ngImport: i0, template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1; else emptyplaceholderBlock\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n<ng-template #emptyplaceholderBlock>\n <div class=\"empty-placeholder\">\n </div>\n</ng-template>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}.empty-placeholder{height:16px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
31
31
|
}
|
|
32
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AvailableLanguagesComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
|
-
args: [{ selector: 'sb-uic-available-languages', template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}\n"] }]
|
|
34
|
+
args: [{ selector: 'sb-uic-available-languages', template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1; else emptyplaceholderBlock\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n<ng-template #emptyplaceholderBlock>\n <div class=\"empty-placeholder\">\n </div>\n</ng-template>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}.empty-placeholder{height:16px}\n"] }]
|
|
35
35
|
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialog }, { type: i2.ContentLanguageService }]; }, propDecorators: { content: [{
|
|
36
36
|
type: Input
|
|
37
37
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhaWxhYmxlLWxhbmd1YWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY29uc3VtcHRpb24vc3JjL2xpYi9fY29tbW9uL2NhcmRzL2F2YWlsYWJsZS1sYW5ndWFnZXMvYXZhaWxhYmxlLWxhbmd1YWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY29uc3VtcHRpb24vc3JjL2xpYi9fY29tbW9uL2NhcmRzL2F2YWlsYWJsZS1sYW5ndWFnZXMvYXZhaWxhYmxlLWxhbmd1YWdlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQzs7Ozs7O0FBUW5ILE1BQU0sT0FBTywyQkFBMkI7SUFLdEMsWUFDVSxNQUFpQixFQUNqQixjQUFzQztRQUR0QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUpoRCxpQkFBWSxHQUFTLEVBQUUsQ0FBQztJQU94QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUdELGtCQUFrQixDQUFDLEtBQVU7UUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFO1lBQy9DLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLFlBQVksRUFBRSxFQUFFO2dCQUNoQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7YUFFaEMsQ0FBQyxxQ0FBcUM7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0E3QlUsMkJBQTJCO21HQUEzQiwyQkFBMkIsa0dDWHhDLDRlQVdBOzs0RkRBYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsNEJBQTRCOzJJQUs3QixPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5zQ2FyZENvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL2NhcmQtY29udGVudC5tb2RlbCc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBUT0NNdWx0aUxpbmd1YWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi90b2MtbXVsdGktbGluZ3VhbC1kaWFsb2cvdG9jLW11bHRpLWxpbmd1YWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZW50TGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2NvbnRlbnQtbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NiLXVpYy1hdmFpbGFibGUtbGFuZ3VhZ2VzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YWlsYWJsZS1sYW5ndWFnZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdmFpbGFibGUtbGFuZ3VhZ2VzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXZhaWxhYmxlTGFuZ3VhZ2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY29udGVudCE6IE5zQ2FyZENvbnRlbnQuSUNhcmQ7XG5cbiAgbGFuZ3VhZ2VMaXN0OmFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGNvbnRlbnRMYW5nU3ZjOiBDb250ZW50TGFuZ3VhZ2VTZXJ2aWNlLFxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sYW5ndWFnZUxpc3QgPSBbLi4udGhpcy5jb250ZW50TGFuZ1N2Yy5nZXRBbGxDb250ZW50TGFuZ3VhZ2VzKHRoaXMuY29udGVudCldXG4gIH1cblxuXG4gIG9wZW5MYW5ndWFnZURpYWxvZyhldmVudDogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB0aGlzLmRpYWxvZy5vcGVuKFRPQ011bHRpTGluZ3VhbERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc0NzBweCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRpdGxlOiAnICcsXG4gICAgICAgIGZyb206ICdhdmFpbGFibGVMYW5ndWFnZXMnLFxuICAgICAgICBhY2NlcHRCdXR0b246ICcnLFxuICAgICAgICBsYW5ndWFnZUxpc3Q6IHRoaXMubGFuZ3VhZ2VMaXN0XG5cbiAgICAgIH0gLy8gb3B0aW9uYWwsIGlmIHlvdSBuZWVkIHRvIHBhc3MgZGF0YVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGxhbmd1YWdlLXRleHQtYm94XCIgKm5nSWY9XCJsYW5ndWFnZUxpc3Q/Lmxlbmd0aCA+IDE7IGVsc2UgZW1wdHlwbGFjZWhvbGRlckJsb2NrXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwibGFuZ3VhZ2VfaWNvblwiPmxhbmd1YWdlPC9tYXQtaWNvbj5cbiAgICA8YSBjbGFzcz1cImxhbmd1YWdlLXRleHRcIiAoY2xpY2spPVwib3Blbkxhbmd1YWdlRGlhbG9nKCRldmVudClcIj5cbiAgICAgIEF2YWlsYWJsZSBpbiB7eyBsYW5ndWFnZUxpc3QubGVuZ3RoIH19IGxhbmd1YWdlc1xuICAgIDwvYT5cbiAgIDxtYXQtaWNvbiBjbGFzcz1cImxhbmd1YWdlX2ljb24gY29sb3JfYmx1ZVwiPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNlbXB0eXBsYWNlaG9sZGVyQmxvY2s+XG4gIDxkaXYgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlclwiPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -125,11 +125,11 @@ export class CardProgressPortraitLibComponent {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardProgressPortraitLibComponent, deps: [{ token: i1.MatLegacySnackBar }, { token: i2.TranslateService }, { token: i3.EventService }, { token: i4.MultilingualTranslationsService }, { token: i3.ConfigurationsService }, { token: i5.WidgetContentLibService }, { token: i6.CertificateService }, { token: i7.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardProgressPortraitLibComponent, selector: "sb-uic-card-progress-portrait-lib", inputs: { widgetData: "widgetData", isLiveOrMarkForDeletion: "isLiveOrMarkForDeletion", showIntranetContent: "showIntranetContent", isIntranetAllowedSettings: "isIntranetAllowedSettings", isCardLoading: "isCardLoading", cbPlanMapData: "cbPlanMapData" }, outputs: { contentData: "contentData" }, ngImport: i0, template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:318px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i9.MatLegacyCardImage, selector: "[mat-card-image], [matCardImage]" }, { kind: "directive", type: i10.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.DisplayContentTypeLibComponent, selector: "sb-uic-display-content-type", inputs: ["useTranslation", "displayContentType"] }, { kind: "directive", type: i14.DefaultThumbnailDirective, selector: "[wsUtilsDefaultThumbnail]", inputs: ["wsUtilsDefaultThumbnail", "src"] }, { kind: "component", type: i15.SkeletonLoaderLibComponent, selector: "sb-uic-skeleton-loader", inputs: ["bindingClass", "height", "width"] }, { kind: "component", type: i16.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i17.ContentProgressComponent, selector: "sb-uic-content-progress", inputs: ["contentId", "progress", "progressType", "forPreview", "className", "customClassName"] }, { kind: "component", type: i18.AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: ["content"] }, { kind: "pipe", type: i8.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.DatePipe, name: "date" }, { kind: "pipe", type: i3.PipePublicURL, name: "pipePublicURL" }, { kind: "pipe", type: i19.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardProgressPortraitLibComponent, selector: "sb-uic-card-progress-portrait-lib", inputs: { widgetData: "widgetData", isLiveOrMarkForDeletion: "isLiveOrMarkForDeletion", showIntranetContent: "showIntranetContent", isIntranetAllowedSettings: "isIntranetAllowedSettings", isCardLoading: "isCardLoading", cbPlanMapData: "cbPlanMapData" }, outputs: { contentData: "contentData" }, ngImport: i0, template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:322px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i9.MatLegacyCardImage, selector: "[mat-card-image], [matCardImage]" }, { kind: "directive", type: i10.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.DisplayContentTypeLibComponent, selector: "sb-uic-display-content-type", inputs: ["useTranslation", "displayContentType"] }, { kind: "directive", type: i14.DefaultThumbnailDirective, selector: "[wsUtilsDefaultThumbnail]", inputs: ["wsUtilsDefaultThumbnail", "src"] }, { kind: "component", type: i15.SkeletonLoaderLibComponent, selector: "sb-uic-skeleton-loader", inputs: ["bindingClass", "height", "width"] }, { kind: "component", type: i16.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i17.ContentProgressComponent, selector: "sb-uic-content-progress", inputs: ["contentId", "progress", "progressType", "forPreview", "className", "customClassName"] }, { kind: "component", type: i18.AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: ["content"] }, { kind: "pipe", type: i8.DecimalPipe, name: "number" }, { kind: "pipe", type: i8.DatePipe, name: "date" }, { kind: "pipe", type: i3.PipePublicURL, name: "pipePublicURL" }, { kind: "pipe", type: i19.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
129
129
|
}
|
|
130
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardProgressPortraitLibComponent, decorators: [{
|
|
131
131
|
type: Component,
|
|
132
|
-
args: [{ selector: 'sb-uic-card-progress-portrait-lib', template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:318px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"] }]
|
|
132
|
+
args: [{ selector: 'sb-uic-card-progress-portrait-lib', template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:322px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"] }]
|
|
133
133
|
}], ctorParameters: function () { return [{ type: i1.MatLegacySnackBar }, { type: i2.TranslateService }, { type: i3.EventService }, { type: i4.MultilingualTranslationsService }, { type: i3.ConfigurationsService }, { type: i5.WidgetContentLibService }, { type: i6.CertificateService }, { type: i7.MatLegacyDialog }]; }, propDecorators: { widgetData: [{
|
|
134
134
|
type: Input
|
|
135
135
|
}], isLiveOrMarkForDeletion: [{
|
|
@@ -40,7 +40,7 @@ export class ContentLanguageService {
|
|
|
40
40
|
});
|
|
41
41
|
let output = [];
|
|
42
42
|
// Case 1: When languageMapV1 is available
|
|
43
|
-
if (content.languageMapV1 && Object.keys(content.languageMapV1).length > 0) {
|
|
43
|
+
if (content && content.languageMapV1 && Object.keys(content.languageMapV1).length > 0) {
|
|
44
44
|
// Iterate over each language in languageMapV1
|
|
45
45
|
for (const langKey of Object.keys(content.languageMapV1)) {
|
|
46
46
|
const langData = content.languageMapV1[langKey];
|
|
@@ -62,7 +62,7 @@ export class ContentLanguageService {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
// Case 2: When languageMapV1 is not available, use language array
|
|
65
|
-
else if (content.language && content.language.length > 0) {
|
|
65
|
+
else if (content && content.language && content.language.length > 0) {
|
|
66
66
|
for (const lang of content.language) {
|
|
67
67
|
const masterLang = masterLanguages.get(lang.toLowerCase());
|
|
68
68
|
if (masterLang) {
|
|
@@ -118,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
118
118
|
providedIn: 'root'
|
|
119
119
|
}]
|
|
120
120
|
}], ctorParameters: function () { return []; } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sYW5ndWFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NvbnN1bXB0aW9uL3NyYy9saWIvX3NlcnZpY2VzL2NvbnRlbnQtbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLGdCQUFnQixDQUFDO0lBRWpCLHNCQUFzQixDQUFDLE9BQVk7UUFDakMsTUFBTSxvQkFBb0IsR0FBRztZQUMzQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUNyQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQzdDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDNUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDekMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUNsRCxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQ2pELEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDN0MsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNqRCxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQzdDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFF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QUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4RixPQUFPLGdCQUFnQixDQUFBO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELDBCQUEwQixDQUFDLE9BQVksRUFBRSxNQUFjO1FBQ3JELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQywwREFBMEQ7WUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztZQUN2RSxPQUFPLGdCQUFnQixDQUFBO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQVk7UUFDN0IsSUFBRyxPQUFPLElBQUksT0FBTyxFQUFFLFFBQVEsSUFBSSxPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDOUQsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ3pDO0lBQ0gsQ0FBQzsrR0F4SFUsc0JBQXNCO21IQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudExhbmd1YWdlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZXRBbGxDb250ZW50TGFuZ3VhZ2VzKGNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnN0IG1hc3Rlckxhbmd1YWdlc0FycmF5ID0gW1xuICAgICAgeyBuYW1lOiBcIkVuZ2xpc2hcIiwgdmFsdWU6IFwiRW5nbGlzaFwiIH0sXG4gICAgICB7IG5hbWU6IFwi4LKV4LKo4LON4LKo4LKhIChLYW5uYWRhKVwiLCB2YWx1ZTogXCJLYW5uYWRhXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgsKTgsYbgsLLgsYHgsJfgsYEgKFRlbHVndSlcIiwgdmFsdWU6IFwiVGVsdWd1XCIgfSxcbiAgICAgIHsgbmFtZTogXCLgrqTgrq7grr/grrTgr40gKFRhbWlsKVwiLCB2YWx1ZTogXCJUYW1pbFwiIH0sXG4gICAgICB7IG5hbWU6IFwi4LSu4LSy4LSv4LS+4LSz4LSCIChNYWxheWFsYW0pXCIsIHZhbHVlOiBcIk1hbGF5YWxhbVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4KS54KS/4KSC4KSm4KWAIChIaW5kaSlcIiwgdmFsdWU6IFwiSGluZGlcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCmheCmuOCmruCngOCmr+CmvOCmviAoQXNzYW1lc2UpXCIsIHZhbHVlOiBcIkFzc2FtZXNlXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpqzgpr7gpoLgprLgpr4gKEJlbmdhbGkpXCIsIHZhbHVlOiBcIkJlbmdhbGlcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCql+CrgeCqnOCqsOCqvuCqpOCrgCAoR3VqYXJhdGkpXCIsIHZhbHVlOiBcIkd1amFyYXRpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpK7gpLDgpL7gpKDgpYAgKE1hcmF0aGkpXCIsIHZhbHVlOiBcIk1hcmF0aGlcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCsk+CsoeCsv+CshiAoT2RpYSlcIiwgdmFsdWU6IFwiT2RpYVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4Kiq4Kmw4Kic4Ki+4Kis4KmAIChQdW5qYWJpKVwiLCB2YWx1ZTogXCJQdW5qYWJpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpJXgpYvgpILgpJXgpKPgpYAgKEtvbmthbmkpXCIsIHZhbHVlOiBcIktvbmthbmlcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCkrOCkoeCkvOCliyAoQm9kbylcIiwgdmFsdWU6IFwiQm9kb1wiIH0sXG4gICAgICB7IG5hbWU6IFwi4KSh4KWL4KSX4KSw4KWAIChEb2dyaSlcIiwgdmFsdWU6IFwiRG9ncmlcIiB9LFxuICAgICAgeyBuYW1lOiBcItmD2LTZhdmK2LHZiiAvIOCkleCktuCljeCkruClgOCksOClgCAoS2FzaG1pcmkpXCIsIHZhbHVlOiBcIkthc2htaXJpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpK7gpYjgpKXgpL/gpLLgpYAgKE1haXRoaWxpKVwiLCB2YWx1ZTogXCJNYWl0aGlsaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4Kau4KeI4Kak4KeI4Kay4KeL4Kao4KeNICAoTWFuaXB1cmkgKVwiLCB2YWx1ZTogXCJNYW5pcHVyaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4KSo4KWH4KSq4KS+4KSy4KWAIChOZXBhbGkpXCIsIHZhbHVlOiBcIk5lcGFsaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4KS44KSC4KS44KWN4KSV4KWD4KSk4KSu4KWNIChTYW5za3JpdClcIiwgdmFsdWU6IFwiU2Fuc2tyaXRcIiB9LFxuICAgICAgeyBuYW1lOiBcIuGxpeGxn+GxseGxm+Gxn+GxsuGxpCAoU2FudGFsaSlcIiwgdmFsdWU6IFwiU2FudGFsaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi2LPZhtqM2YogLyDgpLjgpL/gpILgpKfgpYAgKFNpbmRoaSlcIiwgdmFsdWU6IFwiU2luZGhpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLYp9mP2LHYr9mP2YggKFVyZHUpXCIsIHZhbHVlOiBcIlVyZHVcIiB9XG4gICAgXTtcbiAgICBcbiAgICAvLyBDb252ZXJ0IGFycmF5IHRvIG1hcCBmb3IgZWZmaWNpZW50IGxvb2t1cCBieSBsYW5ndWFnZSB2YWx1ZVxuICAgIGNvbnN0IG1hc3Rlckxhbmd1YWdlcyA9IG5ldyBNYXAoKTtcbiAgICBcbiAgICAvLyBFeHRyYWN0IGxvY2FsIHZhbHVlIChuYW1lIHdpdGhvdXQgYnJhY2tldHMpIGFuZCBwb3B1bGF0ZSBtYXBcbiAgICBtYXN0ZXJMYW5ndWFnZXNBcnJheS5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgY29uc3QgbG9jYWxWYWx1ZSA9IGxhbmcubmFtZS5zcGxpdCgnKCcpWzBdLnRyaW0oKTtcbiAgICAgIG1hc3Rlckxhbmd1YWdlcy5zZXQobGFuZy52YWx1ZS50b0xvd2VyQ2FzZSgpLCB7XG4gICAgICAgIC4uLmxhbmcsXG4gICAgICAgIGxvY2FsVmFsdWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIGxldCBvdXRwdXQgPSBbXTtcbiAgICBcbiAgICAvLyBDYXNlIDE6IFdoZW4gbGFuZ3VhZ2VNYXBWMSBpcyBhdmFpbGFibGVcbiAgICBpZiAoY29udGVudC5sYW5ndWFnZU1hcFYxICYmIE9iamVjdC5rZXlzKGNvbnRlbnQubGFuZ3VhZ2VNYXBWMSkubGVuZ3RoID4gMCkge1xuICAgICAgLy8gSXRlcmF0ZSBvdmVyIGVhY2ggbGFuZ3VhZ2UgaW4gbGFuZ3VhZ2VNYXBWMVxuICAgICAgZm9yIChjb25zdCBsYW5nS2V5IG9mIE9iamVjdC5rZXlzKGNvbnRlbnQubGFuZ3VhZ2VNYXBWMSkpIHtcbiAgICAgICAgY29uc3QgbGFuZ0RhdGEgPSBjb250ZW50Lmxhbmd1YWdlTWFwVjFbbGFuZ0tleV07XG4gICAgICAgIC8vIEZpbmQgbWF0Y2hpbmcgbWFzdGVyIGxhbmd1YWdlXG4gICAgICAgaWYobGFuZ0RhdGEgJiYgbGFuZ0RhdGEuc3RhdHVzICYmIGxhbmdEYXRhLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnbGl2ZScpIHtcbiAgICAgICAgY29uc3QgbWFzdGVyTGFuZyA9IG1hc3Rlckxhbmd1YWdlcy5nZXQobGFuZ0tleS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChtYXN0ZXJMYW5nKSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goe1xuICAgICAgICAgICAgbmFtZTogbWFzdGVyTGFuZy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IG1hc3RlckxhbmcudmFsdWUsXG4gICAgICAgICAgICBsb2NhbFZhbHVlOiBtYXN0ZXJMYW5nLmxvY2FsVmFsdWUsXG4gICAgICAgICAgICBsYW5nSWQ6IGxhbmdLZXkudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIGlzQmFzZUxhbmc6IGxhbmdEYXRhPy5pc0Jhc2VMYW5nLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogbGFuZ0RhdGEuaWQsXG4gICAgICAgICAgICBzdGF0dXM6IGxhbmdEYXRhLnN0YXR1c1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgfVxuICAgICAgfVxuICAgIH0gXG4gICAgLy8gQ2FzZSAyOiBXaGVuIGxhbmd1YWdlTWFwVjEgaXMgbm90IGF2YWlsYWJsZSwgdXNlIGxhbmd1YWdlIGFycmF5XG4gICAgZWxzZSBpZiAoY29udGVudC5sYW5ndWFnZSAmJiBjb250ZW50Lmxhbmd1YWdlLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgbGFuZyBvZiBjb250ZW50Lmxhbmd1YWdlKSB7XG4gICAgICAgIGNvbnN0IG1hc3RlckxhbmcgPSBtYXN0ZXJMYW5ndWFnZXMuZ2V0KGxhbmcudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIFxuICAgICAgICBpZiAobWFzdGVyTGFuZykge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IG1hc3RlckxhbmcubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBtYXN0ZXJMYW5nLnZhbHVlLFxuICAgICAgICAgICAgbG9jYWxWYWx1ZTogbWFzdGVyTGFuZy5sb2NhbFZhbHVlLFxuICAgICAgICAgICAgbGFuZ0lkOiBsYW5nLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBpc0Jhc2VMYW5nOiB0cnVlLCAvLyBBc3N1bWluZyB0aGUgZmlyc3QgbGFuZ3VhZ2UgaXMgYmFzZSBsYW5ndWFnZVxuICAgICAgICAgICAgaWRlbnRpZmllcjogY29udGVudC5pZGVudGlmaWVyLCAvLyBVc2UgdGhlIGNvbnRlbnQgaWRlbnRpZmllclxuICAgICAgICAgICAgc3RhdHVzOiBjb250ZW50LnN0YXR1cyB8fCAnTGl2ZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgZ2V0QmFzZUxhbmd1YWdlKGNvbnRlbnQ6IGFueSkge1xuICAgIGxldCBsYW5nTGlzdCA9IHRoaXMuZ2V0QWxsQ29udGVudExhbmd1YWdlcyhjb250ZW50KTtcbiAgICBpZiAobGFuZ0xpc3QgJiYgbGFuZ0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgLy8gRmluZCB0aGUgZmlyc3QgbGFuZ3VhZ2UgdGhhdCBpcyBtYXJrZWQgYXMgYmFzZSBsYW5ndWFnZVxuICAgICAgY29uc3Qgc2VsZWN0ZWRMYW5ndWFnZSA9IGxhbmdMaXN0LmZpbmQobGFuZyA9PiBsYW5nPy5pc0Jhc2VMYW5nKTtcbiAgICAgIHJldHVybiBzZWxlY3RlZExhbmd1YWdlIFxuICAgIH1cbiAgfVxuICBcbiAgZ2V0U2VsZWN0ZWRMYW5ndWFnZShjb250ZW50OiBhbnkpIHtcbiAgICBsZXQgbGFuZ0xpc3QgPSB0aGlzLmdldEFsbENvbnRlbnRMYW5ndWFnZXMoY29udGVudCk7XG4gICAgaWYgKGxhbmdMaXN0ICYmIGxhbmdMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlIHRoYXQgaXMgbWFya2VkIGFzIGJhc2UgbGFuZ3VhZ2VcbiAgICAgIGNvbnN0IHNlbGVjdGVkTGFuZ3VhZ2UgPSBsYW5nTGlzdC5maW5kKGxhbmcgPT4gbGFuZy5pZGVudGlmaWVyID09PSBjb250ZW50Py5pZGVudGlmaWVyKTtcbiAgICAgIHJldHVybiBzZWxlY3RlZExhbmd1YWdlIFxuICAgIH1cbiAgfVxuXG4gIGdldFJlcXVpcmVkTGFuZ3VhZ2VEZXRhaWxzKGNvbnRlbnQ6IGFueSwgbGFuZ0lkOiBzdHJpbmcpIHtcbiAgICBsZXQgbGFuZ0xpc3QgPSB0aGlzLmdldEFsbENvbnRlbnRMYW5ndWFnZXMoY29udGVudCk7XG4gICAgaWYgKGxhbmdMaXN0ICYmIGxhbmdMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlIHRoYXQgaXMgbWFya2VkIGFzIGJhc2UgbGFuZ3VhZ2VcbiAgICAgIGNvbnN0IHNlbGVjdGVkTGFuZ3VhZ2UgPSBsYW5nTGlzdC5maW5kKGxhbmcgPT4gbGFuZy5sYW5nSWQgPT09IGxhbmdJZCk7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRMYW5ndWFnZSBcbiAgICB9XG4gIH1cblxuICBnZXRDb250ZW50TGFuZ3VhZ2UoY29udGVudDogYW55KXtcbiAgICBpZihjb250ZW50ICYmIGNvbnRlbnQ/Lmxhbmd1YWdlICYmIGNvbnRlbnQ/Lmxhbmd1YWdlLmxlbmd0aCA+IDApeyBcbiAgICAgIHJldHVybiBjb250ZW50Lmxhbmd1YWdlWzBdLnRvTG93ZXJDYXNlKClcbiAgICB9XG4gIH1cbn0iXX0=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sYW5ndWFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NvbnN1bXB0aW9uL3NyYy9saWIvX3NlcnZpY2VzL2NvbnRlbnQtbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLGdCQUFnQixDQUFDO0lBRWpCLHNCQUFzQixDQUFDLE9BQVk7UUFDakMsTUFBTSxvQkFBb0IsR0FBRztZQUMzQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUNyQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQzdDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDNUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDekMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUNsRCxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQ2pELEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDN0MsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNqRCxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQzdDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFF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WUFDbkMsMERBQTBEO1lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sZ0JBQWdCLENBQUE7U0FDeEI7SUFDSCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsT0FBWSxFQUFFLE1BQWM7UUFDckQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLDBEQUEwRDtZQUMxRCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sZ0JBQWdCLENBQUE7U0FDeEI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBWTtRQUM3QixJQUFHLE9BQU8sSUFBSSxPQUFPLEVBQUUsUUFBUSxJQUFJLE9BQU8sRUFBRSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUM5RCxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7U0FDekM7SUFDSCxDQUFDOytHQXhIVSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50TGFuZ3VhZ2VTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldEFsbENvbnRlbnRMYW5ndWFnZXMoY29udGVudDogYW55KSB7XG4gICAgY29uc3QgbWFzdGVyTGFuZ3VhZ2VzQXJyYXkgPSBbXG4gICAgICB7IG5hbWU6IFwiRW5nbGlzaFwiLCB2YWx1ZTogXCJFbmdsaXNoXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgspXgsqjgs43gsqjgsqEgKEthbm5hZGEpXCIsIHZhbHVlOiBcIkthbm5hZGFcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCwpOCxhuCwsuCxgeCwl+CxgSAoVGVsdWd1KVwiLCB2YWx1ZTogXCJUZWx1Z3VcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCupOCuruCuv+CutOCvjSAoVGFtaWwpXCIsIHZhbHVlOiBcIlRhbWlsXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgtK7gtLLgtK/gtL7gtLPgtIIgKE1hbGF5YWxhbSlcIiwgdmFsdWU6IFwiTWFsYXlhbGFtXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpLngpL/gpILgpKbgpYAgKEhpbmRpKVwiLCB2YWx1ZTogXCJIaW5kaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4KaF4Ka44Kau4KeA4Kav4Ka84Ka+IChBc3NhbWVzZSlcIiwgdmFsdWU6IFwiQXNzYW1lc2VcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCmrOCmvuCmguCmsuCmviAoQmVuZ2FsaSlcIiwgdmFsdWU6IFwiQmVuZ2FsaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4KqX4KuB4Kqc4Kqw4Kq+4Kqk4KuAIChHdWphcmF0aSlcIiwgdmFsdWU6IFwiR3VqYXJhdGlcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCkruCksOCkvuCkoOClgCAoTWFyYXRoaSlcIiwgdmFsdWU6IFwiTWFyYXRoaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4KyT4Kyh4Ky/4KyGIChPZGlhKVwiLCB2YWx1ZTogXCJPZGlhXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgqKrgqbDgqJzgqL7gqKzgqYAgKFB1bmphYmkpXCIsIHZhbHVlOiBcIlB1bmphYmlcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCkleCli+CkguCkleCko+ClgCAoS29ua2FuaSlcIiwgdmFsdWU6IFwiS29ua2FuaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi4KSs4KSh4KS84KWLIChCb2RvKVwiLCB2YWx1ZTogXCJCb2RvXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpKHgpYvgpJfgpLDgpYAgKERvZ3JpKVwiLCB2YWx1ZTogXCJEb2dyaVwiIH0sXG4gICAgICB7IG5hbWU6IFwi2YPYtNmF2YrYsdmKIC8g4KSV4KS24KWN4KSu4KWA4KSw4KWAIChLYXNobWlyaSlcIiwgdmFsdWU6IFwiS2FzaG1pcmlcIiB9LFxuICAgICAgeyBuYW1lOiBcIuCkruCliOCkpeCkv+CksuClgCAoTWFpdGhpbGkpXCIsIHZhbHVlOiBcIk1haXRoaWxpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpq7gp4jgpqTgp4jgprLgp4vgpqjgp40gIChNYW5pcHVyaSApXCIsIHZhbHVlOiBcIk1hbmlwdXJpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpKjgpYfgpKrgpL7gpLLgpYAgKE5lcGFsaSlcIiwgdmFsdWU6IFwiTmVwYWxpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLgpLjgpILgpLjgpY3gpJXgpYPgpKTgpK7gpY0gKFNhbnNrcml0KVwiLCB2YWx1ZTogXCJTYW5za3JpdFwiIH0sXG4gICAgICB7IG5hbWU6IFwi4bGl4bGf4bGx4bGb4bGf4bGy4bGkIChTYW50YWxpKVwiLCB2YWx1ZTogXCJTYW50YWxpXCIgfSxcbiAgICAgIHsgbmFtZTogXCLYs9mG2ozZiiAvIOCkuOCkv+CkguCkp+ClgCAoU2luZGhpKVwiLCB2YWx1ZTogXCJTaW5kaGlcIiB9LFxuICAgICAgeyBuYW1lOiBcItin2Y/Ysdiv2Y/ZiCAoVXJkdSlcIiwgdmFsdWU6IFwiVXJkdVwiIH1cbiAgICBdO1xuICAgIFxuICAgIC8vIENvbnZlcnQgYXJyYXkgdG8gbWFwIGZvciBlZmZpY2llbnQgbG9va3VwIGJ5IGxhbmd1YWdlIHZhbHVlXG4gICAgY29uc3QgbWFzdGVyTGFuZ3VhZ2VzID0gbmV3IE1hcCgpO1xuICAgIFxuICAgIC8vIEV4dHJhY3QgbG9jYWwgdmFsdWUgKG5hbWUgd2l0aG91dCBicmFja2V0cykgYW5kIHBvcHVsYXRlIG1hcFxuICAgIG1hc3Rlckxhbmd1YWdlc0FycmF5LmZvckVhY2gobGFuZyA9PiB7XG4gICAgICBjb25zdCBsb2NhbFZhbHVlID0gbGFuZy5uYW1lLnNwbGl0KCcoJylbMF0udHJpbSgpO1xuICAgICAgbWFzdGVyTGFuZ3VhZ2VzLnNldChsYW5nLnZhbHVlLnRvTG93ZXJDYXNlKCksIHtcbiAgICAgICAgLi4ubGFuZyxcbiAgICAgICAgbG9jYWxWYWx1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgXG4gICAgbGV0IG91dHB1dCA9IFtdO1xuICAgIFxuICAgIC8vIENhc2UgMTogV2hlbiBsYW5ndWFnZU1hcFYxIGlzIGF2YWlsYWJsZVxuICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQubGFuZ3VhZ2VNYXBWMSAmJiBPYmplY3Qua2V5cyhjb250ZW50Lmxhbmd1YWdlTWFwVjEpLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGxhbmd1YWdlIGluIGxhbmd1YWdlTWFwVjFcbiAgICAgIGZvciAoY29uc3QgbGFuZ0tleSBvZiBPYmplY3Qua2V5cyhjb250ZW50Lmxhbmd1YWdlTWFwVjEpKSB7XG4gICAgICAgIGNvbnN0IGxhbmdEYXRhID0gY29udGVudC5sYW5ndWFnZU1hcFYxW2xhbmdLZXldO1xuICAgICAgICAvLyBGaW5kIG1hdGNoaW5nIG1hc3RlciBsYW5ndWFnZVxuICAgICAgIGlmKGxhbmdEYXRhICYmIGxhbmdEYXRhLnN0YXR1cyAmJiBsYW5nRGF0YS5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2xpdmUnKSB7XG4gICAgICAgIGNvbnN0IG1hc3RlckxhbmcgPSBtYXN0ZXJMYW5ndWFnZXMuZ2V0KGxhbmdLZXkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIFxuICAgICAgICBpZiAobWFzdGVyTGFuZykge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IG1hc3RlckxhbmcubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBtYXN0ZXJMYW5nLnZhbHVlLFxuICAgICAgICAgICAgbG9jYWxWYWx1ZTogbWFzdGVyTGFuZy5sb2NhbFZhbHVlLFxuICAgICAgICAgICAgbGFuZ0lkOiBsYW5nS2V5LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBpc0Jhc2VMYW5nOiBsYW5nRGF0YT8uaXNCYXNlTGFuZyxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGxhbmdEYXRhLmlkLFxuICAgICAgICAgICAgc3RhdHVzOiBsYW5nRGF0YS5zdGF0dXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgIH1cbiAgICAgIH1cbiAgICB9IFxuICAgIC8vIENhc2UgMjogV2hlbiBsYW5ndWFnZU1hcFYxIGlzIG5vdCBhdmFpbGFibGUsIHVzZSBsYW5ndWFnZSBhcnJheVxuICAgIGVsc2UgaWYgKGNvbnRlbnQgJiYgY29udGVudC5sYW5ndWFnZSAmJiBjb250ZW50Lmxhbmd1YWdlLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgbGFuZyBvZiBjb250ZW50Lmxhbmd1YWdlKSB7XG4gICAgICAgIGNvbnN0IG1hc3RlckxhbmcgPSBtYXN0ZXJMYW5ndWFnZXMuZ2V0KGxhbmcudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIFxuICAgICAgICBpZiAobWFzdGVyTGFuZykge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IG1hc3RlckxhbmcubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBtYXN0ZXJMYW5nLnZhbHVlLFxuICAgICAgICAgICAgbG9jYWxWYWx1ZTogbWFzdGVyTGFuZy5sb2NhbFZhbHVlLFxuICAgICAgICAgICAgbGFuZ0lkOiBsYW5nLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBpc0Jhc2VMYW5nOiB0cnVlLCAvLyBBc3N1bWluZyB0aGUgZmlyc3QgbGFuZ3VhZ2UgaXMgYmFzZSBsYW5ndWFnZVxuICAgICAgICAgICAgaWRlbnRpZmllcjogY29udGVudC5pZGVudGlmaWVyLCAvLyBVc2UgdGhlIGNvbnRlbnQgaWRlbnRpZmllclxuICAgICAgICAgICAgc3RhdHVzOiBjb250ZW50LnN0YXR1cyB8fCAnTGl2ZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgZ2V0QmFzZUxhbmd1YWdlKGNvbnRlbnQ6IGFueSkge1xuICAgIGxldCBsYW5nTGlzdCA9IHRoaXMuZ2V0QWxsQ29udGVudExhbmd1YWdlcyhjb250ZW50KTtcbiAgICBpZiAobGFuZ0xpc3QgJiYgbGFuZ0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgLy8gRmluZCB0aGUgZmlyc3QgbGFuZ3VhZ2UgdGhhdCBpcyBtYXJrZWQgYXMgYmFzZSBsYW5ndWFnZVxuICAgICAgY29uc3Qgc2VsZWN0ZWRMYW5ndWFnZSA9IGxhbmdMaXN0LmZpbmQobGFuZyA9PiBsYW5nPy5pc0Jhc2VMYW5nKTtcbiAgICAgIHJldHVybiBzZWxlY3RlZExhbmd1YWdlIFxuICAgIH1cbiAgfVxuICBcbiAgZ2V0U2VsZWN0ZWRMYW5ndWFnZShjb250ZW50OiBhbnkpIHtcbiAgICBsZXQgbGFuZ0xpc3QgPSB0aGlzLmdldEFsbENvbnRlbnRMYW5ndWFnZXMoY29udGVudCk7XG4gICAgaWYgKGxhbmdMaXN0ICYmIGxhbmdMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlIHRoYXQgaXMgbWFya2VkIGFzIGJhc2UgbGFuZ3VhZ2VcbiAgICAgIGNvbnN0IHNlbGVjdGVkTGFuZ3VhZ2UgPSBsYW5nTGlzdC5maW5kKGxhbmcgPT4gbGFuZy5pZGVudGlmaWVyID09PSBjb250ZW50Py5pZGVudGlmaWVyKTtcbiAgICAgIHJldHVybiBzZWxlY3RlZExhbmd1YWdlIFxuICAgIH1cbiAgfVxuXG4gIGdldFJlcXVpcmVkTGFuZ3VhZ2VEZXRhaWxzKGNvbnRlbnQ6IGFueSwgbGFuZ0lkOiBzdHJpbmcpIHtcbiAgICBsZXQgbGFuZ0xpc3QgPSB0aGlzLmdldEFsbENvbnRlbnRMYW5ndWFnZXMoY29udGVudCk7XG4gICAgaWYgKGxhbmdMaXN0ICYmIGxhbmdMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGxhbmd1YWdlIHRoYXQgaXMgbWFya2VkIGFzIGJhc2UgbGFuZ3VhZ2VcbiAgICAgIGNvbnN0IHNlbGVjdGVkTGFuZ3VhZ2UgPSBsYW5nTGlzdC5maW5kKGxhbmcgPT4gbGFuZy5sYW5nSWQgPT09IGxhbmdJZCk7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRMYW5ndWFnZSBcbiAgICB9XG4gIH1cblxuICBnZXRDb250ZW50TGFuZ3VhZ2UoY29udGVudDogYW55KXtcbiAgICBpZihjb250ZW50ICYmIGNvbnRlbnQ/Lmxhbmd1YWdlICYmIGNvbnRlbnQ/Lmxhbmd1YWdlLmxlbmd0aCA+IDApeyBcbiAgICAgIHJldHVybiBjb250ZW50Lmxhbmd1YWdlWzBdLnRvTG93ZXJDYXNlKClcbiAgICB9XG4gIH1cbn0iXX0=
|
|
@@ -1186,7 +1186,7 @@ class ContentLanguageService {
|
|
|
1186
1186
|
});
|
|
1187
1187
|
let output = [];
|
|
1188
1188
|
// Case 1: When languageMapV1 is available
|
|
1189
|
-
if (content.languageMapV1 && Object.keys(content.languageMapV1).length > 0) {
|
|
1189
|
+
if (content && content.languageMapV1 && Object.keys(content.languageMapV1).length > 0) {
|
|
1190
1190
|
// Iterate over each language in languageMapV1
|
|
1191
1191
|
for (const langKey of Object.keys(content.languageMapV1)) {
|
|
1192
1192
|
const langData = content.languageMapV1[langKey];
|
|
@@ -1208,7 +1208,7 @@ class ContentLanguageService {
|
|
|
1208
1208
|
}
|
|
1209
1209
|
}
|
|
1210
1210
|
// Case 2: When languageMapV1 is not available, use language array
|
|
1211
|
-
else if (content.language && content.language.length > 0) {
|
|
1211
|
+
else if (content && content.language && content.language.length > 0) {
|
|
1212
1212
|
for (const lang of content.language) {
|
|
1213
1213
|
const masterLang = masterLanguages.get(lang.toLowerCase());
|
|
1214
1214
|
if (masterLang) {
|
|
@@ -6317,11 +6317,11 @@ class AvailableLanguagesComponent {
|
|
|
6317
6317
|
});
|
|
6318
6318
|
}
|
|
6319
6319
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AvailableLanguagesComponent, deps: [{ token: i1$3.MatLegacyDialog }, { token: ContentLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6320
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: { content: "content" }, ngImport: i0, template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}\n"], dependencies: [{ kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
6320
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: { content: "content" }, ngImport: i0, template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1; else emptyplaceholderBlock\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n<ng-template #emptyplaceholderBlock>\n <div class=\"empty-placeholder\">\n </div>\n</ng-template>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}.empty-placeholder{height:16px}\n"], dependencies: [{ kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
6321
6321
|
}
|
|
6322
6322
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AvailableLanguagesComponent, decorators: [{
|
|
6323
6323
|
type: Component,
|
|
6324
|
-
args: [{ selector: 'sb-uic-available-languages', template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}\n"] }]
|
|
6324
|
+
args: [{ selector: 'sb-uic-available-languages', template: "<div class=\"flex language-text-box\" *ngIf=\"languageList?.length > 1; else emptyplaceholderBlock\">\n <mat-icon class=\"language_icon\">language</mat-icon>\n <a class=\"language-text\" (click)=\"openLanguageDialog($event)\">\n Available in {{ languageList.length }} languages\n </a>\n <mat-icon class=\"language_icon color_blue\">keyboard_arrow_right</mat-icon>\n</div>\n<ng-template #emptyplaceholderBlock>\n <div class=\"empty-placeholder\">\n </div>\n</ng-template>\n", styles: [".language_icon{font-size:16px;width:16px;height:16px}.language-text{color:#1b4ca1;font:400 12px/16px Lato;margin-left:4px}.empty-placeholder{height:16px}\n"] }]
|
|
6325
6325
|
}], ctorParameters: function () { return [{ type: i1$3.MatLegacyDialog }, { type: ContentLanguageService }]; }, propDecorators: { content: [{
|
|
6326
6326
|
type: Input
|
|
6327
6327
|
}] } });
|
|
@@ -7551,11 +7551,11 @@ class CardProgressPortraitLibComponent {
|
|
|
7551
7551
|
}
|
|
7552
7552
|
}
|
|
7553
7553
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardProgressPortraitLibComponent, deps: [{ token: i1$4.MatLegacySnackBar }, { token: i2$1.TranslateService }, { token: i2.EventService }, { token: MultilingualTranslationsService }, { token: i2.ConfigurationsService }, { token: WidgetContentLibService }, { token: CertificateService }, { token: i1$3.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7554
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardProgressPortraitLibComponent, selector: "sb-uic-card-progress-portrait-lib", inputs: { widgetData: "widgetData", isLiveOrMarkForDeletion: "isLiveOrMarkForDeletion", showIntranetContent: "showIntranetContent", isIntranetAllowedSettings: "isIntranetAllowedSettings", isCardLoading: "isCardLoading", cbPlanMapData: "cbPlanMapData" }, outputs: { contentData: "contentData" }, ngImport: i0, template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:318px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6$1.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i6$1.MatLegacyCardImage, selector: "[mat-card-image], [matCardImage]" }, { kind: "directive", type: i4.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: DisplayContentTypeLibComponent, selector: "sb-uic-display-content-type", inputs: ["useTranslation", "displayContentType"] }, { kind: "directive", type: DefaultThumbnailDirective, selector: "[wsUtilsDefaultThumbnail]", inputs: ["wsUtilsDefaultThumbnail", "src"] }, { kind: "component", type: SkeletonLoaderLibComponent, selector: "sb-uic-skeleton-loader", inputs: ["bindingClass", "height", "width"] }, { kind: "component", type: i16.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ContentProgressComponent, selector: "sb-uic-content-progress", inputs: ["contentId", "progress", "progressType", "forPreview", "className", "customClassName"] }, { kind: "component", type: AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: ["content"] }, { kind: "pipe", type: i2$2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2$2.DatePipe, name: "date" }, { kind: "pipe", type: i2.PipePublicURL, name: "pipePublicURL" }, { kind: "pipe", type: PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
7554
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardProgressPortraitLibComponent, selector: "sb-uic-card-progress-portrait-lib", inputs: { widgetData: "widgetData", isLiveOrMarkForDeletion: "isLiveOrMarkForDeletion", showIntranetContent: "showIntranetContent", isIntranetAllowedSettings: "isIntranetAllowedSettings", isCardLoading: "isCardLoading", cbPlanMapData: "cbPlanMapData" }, outputs: { contentData: "contentData" }, ngImport: i0, template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:322px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i2$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6$1.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i6$1.MatLegacyCardImage, selector: "[mat-card-image], [matCardImage]" }, { kind: "directive", type: i4.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: DisplayContentTypeLibComponent, selector: "sb-uic-display-content-type", inputs: ["useTranslation", "displayContentType"] }, { kind: "directive", type: DefaultThumbnailDirective, selector: "[wsUtilsDefaultThumbnail]", inputs: ["wsUtilsDefaultThumbnail", "src"] }, { kind: "component", type: SkeletonLoaderLibComponent, selector: "sb-uic-skeleton-loader", inputs: ["bindingClass", "height", "width"] }, { kind: "component", type: i16.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ContentProgressComponent, selector: "sb-uic-content-progress", inputs: ["contentId", "progress", "progressType", "forPreview", "className", "customClassName"] }, { kind: "component", type: AvailableLanguagesComponent, selector: "sb-uic-available-languages", inputs: ["content"] }, { kind: "pipe", type: i2$2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2$2.DatePipe, name: "date" }, { kind: "pipe", type: i2.PipePublicURL, name: "pipePublicURL" }, { kind: "pipe", type: PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
7555
7555
|
}
|
|
7556
7556
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardProgressPortraitLibComponent, decorators: [{
|
|
7557
7557
|
type: Component,
|
|
7558
|
-
args: [{ selector: 'sb-uic-card-progress-portrait-lib', template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:318px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"] }]
|
|
7558
|
+
args: [{ selector: 'sb-uic-card-progress-portrait-lib', template: "<ng-container *ngIf=\"!isCardLoading\">\n <mat-card class=\"card-portrait card-progress-portrait-lib cursor-pointer mt-4\"\n [ngClass]=\"widgetData?.cardCustomeClass ? widgetData?.cardCustomeClass : ''\"\n (click)=\"raiseTelemetry();getRedirectUrlData(widgetData?.content); $event.stopPropagation()\">\n <div class=\"course_widget portrait_widget flex margin-bottom-xs\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100,'margin-bottom-xl':!widgetData?.content?.primaryCategory}\">\n <div class=\"flex flex-end flex-middle course_port\" *ngIf=\"widgetData?.content?.primaryCategory\">\n <mat-icon class=\"mat-icon main_icon ws-mat-default-text margin-right-xs\">video_library</mat-icon>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory === 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\"\n [displayContentType]=\"widgetData?.content?.courseCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n <ng-container *ngIf=\"widgetData?.content?.courseCategory !== 'Case Study'\">\n <sb-uic-display-content-type i18n-title title=\"Content Type\"\n class=\"ws-mat-black60-text font-normal mat-caption\" [displayContentType]=\"widgetData?.content?.primaryCategory==='Course Unit'\n ?'Module'\n :widgetData?.content?.courseCategory ? widgetData?.content?.courseCategory :widgetData?.content?.primaryCategory\">\n </sb-uic-display-content-type>\n </ng-container>\n </div>\n </div>\n <div class=\"flex\"\n [ngClass]=\"{'retiredCards': widgetData?.content?.status === 'Retired' && widgetData?.content?.completionPercentage === 100}\">\n <div class=\"margin-right-s\">\n <ng-container *ngIf=\"widgetData?.content?.posterImage\">\n <div class=\" img-block-portrait position-relative\">\n <img mat-card-image [src]=\"widgetData?.content?.posterImage | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.duration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{ (widgetData?.content?.duration || 120)| pipeDurationTransform: 'hms' }}\n </span>\n </div>\n <div class=\"duration-box right-corner-portrait\" *ngIf=\"widgetData?.content?.programDuration > 0\">\n <mat-icon class=\"mat-icon main_icon mr-1\">access_time</mat-icon>\n <span class=\" ws-mat-white-text duration\">\n {{widgetData?.content?.programDuration}} {{widgetData?.content?.programDuration === 1 ? 'day' : 'days'}}\n </span>\n </div>\n <ng-container\n *ngIf=\"cbPlanMapData && cbPlanMapData[widgetData?.content?.identifier] && cbPlanMapData[widgetData?.content?.identifier]?.contentStatus < 2\">\n <ng-container [ngTemplateOutlet]=\"cbpPlan\" [ngTemplateOutletContext]=\"{data: {\n cbpData: cbPlanMapData[widgetData?.content?.identifier]\n }}\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!widgetData?.content?.posterImage\">\n <ng-container *ngIf=\"widgetData?.content?.appIcon; else defaultImg\">\n <img mat-card-image [src]=\"widgetData?.content?.appIcon | pipePublicURL\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\"\n [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" [alt]=\"widgetData?.content?.name\" />\n </ng-container>\n <ng-template #defaultImg>\n <img mat-card-image [src]=\"defaultThumbnail\" loading=\"lazy\"\n class=\"card-image ws-mat-primary-lite-background margin-remove\" [alt]=\"widgetData?.content?.name\" />\n </ng-template>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div [id]=\"'m-c-'+ widgetData?.content?.identifier\" class=\"portrait-subheading mat-subheading-2 title-text\">\n {{ widgetData?.content?.name }}\n </div>\n <div class=\"flex w-full flex-middle\">\n <div class=\"portrait_course_logo_box margin-right-xs\">\n <img [src]=\"widgetData?.content?.creatorLogo | pipePublicURL \" class=\"source-icon\" loading=\"lazy\"\n [wsUtilsDefaultThumbnail]=\"defaultSLogo\"\n [alt]=\"(widgetData?.content?.sourceName + '_' + widgetData?.content?.identifier)\" />\n </div>\n <span class=\"portrait-org-name font-normal mat-caption\">{{'cardcontentv2.by' | translate}} {{\n (widgetData?.content?.organisation && widgetData?.content?.organisation[0]) ?\n widgetData?.content?.organisation[0] : 'Karmayogi Bharat' }}</span>\n </div>\n <div class=\"mt-2 mb-2\">\n <sb-uic-available-languages [content]=\"widgetData?.content\"></sb-uic-available-languages>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"widgetData?.content?.completionPercentage < 100\">\n <div class=\"flex flex-align-end progress-wrapper flex-between\"\n [ngClass]=\"{'flex-end':!widgetData?.content?.primaryCategory}\">\n <div class=\"progress-block\" *ngIf=\"!widgetData?.content?.externalId\">\n <div class=\"completed-time\" *ngIf=\"widgetData?.content?.cType !== 'event'\">\n <mat-icon class=\"mat-icon schedule margin-right-xs\">schedule</mat-icon>\n <span>{{widgetData?.content?.completionPercentage | number: '1.0-2'}}%</span>\n </div>\n <div>\n <ng-container *ngIf=\"widgetData?.content?.completionStatus < 2 && widgetData?.content?.cType !== 'event'\">\n <sb-uic-content-progress class=\"progress-bar-new\" [customClassName]=\"'course-progress-bar'\"\n *ngIf=\"widgetData?.content?.identifier\" [contentId]=\"widgetData?.content?.identifier\"\n [progress]=\"widgetData?.content?.completionPercentage\" [progressType]=\"'percentage'\">\n </sb-uic-content-progress>\n </ng-container>\n </div>\n </div>\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between\"\n [routerLink]=\"['/app/toc/',widgetData?.content?.identifier,'overview']\"\n [queryParams]=\"{primaryCategory: widgetData?.content?.primaryCategory}\" [state]=\"widgetData?.stateData\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') : translateLabels('resume', 'cardcontentv2')}}\">\n <span class=\"textwrap margin-right-xs\">\n {{!widgetData?.content?.completionPercentage ? translateLabels('start', 'cardcontentv2') :\n translateLabels('resume', 'cardcontentv2')}}</span>\n <img class=\"stats-icon\" height=\"20\" width=\"20\" src=\"/assets/icons/home/play.svg\">\n </button>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"widgetData?.content?.completionPercentage === 100 && widgetData?.content?.courseCategory !== 'Case Study'\">\n <div class=\"flex flex-align-end progress-wrapper flex-end mt-1\">\n <div class=\"progress-btn\">\n <button class=\"resume-btn flex flex-middle flex-between view-btn\"\n [ngClass]=\"{'disable-btn': downloadCertificateLoading || widgetData?.content?.issuedCertificates?.length === 0}\"\n (click)=\"!downloadCertificateLoading && downloadCertificate(widgetData?.content, $event);$event.stopPropagation()\"\n [matTooltipPosition]=\"'below'\"\n [matTooltipDisabled]=\"(translateLabels('viewCertificate', 'cardcontentv2')).length < 11\"\n matTooltip=\"{{'cardcontentv2.viewCertificate' | translate }}\">\n <span class=\"margin-right-xs textwrap\">{{'cardcontentv2.viewCertificate' | translate }}</span>\n <img class=\"stats-icon\" *ngIf=\"!downloadCertificateLoading\" height=\"20\" width=\"20\"\n src=\"/assets/icons/home/eye-white.svg\">\n <div class=\"center flex flex-middle\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'red'\" class=\"white-spinner\" [diameter]=\"16\"></mat-spinner>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n </mat-card>\n</ng-container>\n\n\n<ng-template #cbpPlan let-data=\"data\">\n <div class=\"cbp-mark left-0 border-top-radius\">\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.UPCOMING\" class=\"cbp-warning\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.SUCCESS\" class=\"cbp-success\">{{data.cbpData.endDate | date:\n 'd MMM, y'}}</p>\n <p *ngIf=\"data.cbpData.planDuration === acbpConstants?.OVERDUE\" class=\"cbp-danger\">{{'OverDue' }}</p>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"isCardLoading\">\n <mat-card class=\"card-portrait\" [ngClass]=\"widgetData.cardCustomeClass ? widgetData.cardCustomeClass : ''\">\n <div class=\"margin-bottom-xs\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'26px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"flex\">\n <div class=\"margin-right-s\">\n <ng-container>\n <sb-uic-skeleton-loader [width]=\"'147px'\" [height]=\"'98px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </ng-container>\n </div>\n <div class=\"width-1-1\">\n <div class=\"portrait-subheading title-text\">\n <sb-uic-skeleton-loader [bindingClass]=\"'flex rounded width-1-1'\"></sb-uic-skeleton-loader>\n </div>\n <div class=\"flex w-full flex-wrap flex-middle\">\n <div class=\" margin-right-xs\">\n <sb-uic-skeleton-loader [width]=\"'24px'\" [height]=\"'24px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n <span class=\"\"><sb-uic-skeleton-loader [width]=\"'133px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader></span>\n </div>\n <div class=\"portrait_widget flex margin-top-xs\">\n <div class=\"flex flex-end flex-middle\">\n <sb-uic-skeleton-loader [width]=\"'65px'\" [height]=\"'12px'\"\n [bindingClass]=\"'flex rounded'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-align-end progress-wrapper flex-between\">\n <div class=\"progress-block\">\n <div class=\"completed-time\">\n <sb-uic-skeleton-loader [width]=\"'211px'\" [height]=\"'16px'\"\n [bindingClass]=\"'flex rounded margin-top-xs md:w-211'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n <div class=\"progress-btn\">\n <sb-uic-skeleton-loader [width]=\"'117px'\" [height]=\"'32px'\"\n [bindingClass]=\"'flex rounded margin-top-xs'\"></sb-uic-skeleton-loader>\n </div>\n </div>\n </mat-card>\n</ng-container>", styles: [".card-portrait{border-radius:12px;border:1px solid rgba(0,0,0,.08);opacity:1;width:322px;min-height:174px;padding:16px}.card-portrait .img-block-portrait{line-height:10px}.card-portrait .card-image{border-radius:8px;opacity:1;background-size:100%;width:147px;height:100px}.card-portrait .portrait-subheading{opacity:1;color:#000000de;font-weight:700;font-style:normal;letter-spacing:.25px;text-align:left;word-break:break-word;white-space:initial;margin:0 0 8px;position:relative;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.card-portrait .portrait_course_logo_box img{padding:3px;display:inline-block;width:24px;height:24px;border:1px solid #d6d6d6;border-radius:4px;box-sizing:border-box}.card-portrait span.portrait-org-name{width:75%;word-break:break-word;white-space:initial;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.card-portrait .portrait_widget{align-items:center;margin-top:0}.card-portrait .portrait_widget .course_port{border:1px solid #EF951E;padding:4px 8px;align-items:center;border-radius:16px}.card-portrait .portrait_widget .video-icon{opacity:1;color:#ef951e;width:15px;height:15px;font-size:15px}.card-portrait .portrait_widget .portrait-category{color:#0009!important;font-size:.75rem;opacity:1;font-family:Lato-Regular;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:20px}.card-portrait .progress-wrapper .progress-block{width:60%}.card-portrait .progress-wrapper .progress-block .completed-time{color:#ef951e;display:flex;padding:8px 0}.card-portrait .progress-wrapper .progress-block .completed-time mat-icon{width:1rem;height:1rem;font-size:1rem}.card-portrait .progress-wrapper .progress-block .completed-time span{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.card-portrait .progress-wrapper .progress-btn .resume-btn{opacity:1;color:#fff;font-family:Lato-Bold;font-size:14px;font-weight:700;font-style:normal;letter-spacing:.5px;text-align:left;line-height:20px;background:#1a4ca1;border-radius:63px;padding:6px 16px;border:none;width:100%;cursor:pointer}.card-portrait .progress-wrapper .progress-btn .resume-btn .textwrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:82px}.card-portrait .progress-wrapper .progress-btn .resume-btn:hover{background-color:#253379}.card-portrait .progress-bar-new{color:#ef951e!important;height:10px;border-radius:5px}.card-portrait .rating-session mat-icon{font-size:20px;height:20px;width:20px;color:#ef951e}.card-portrait .rating-session .rating-number{font-size:14px}.card-portrait .rating-session .most-enrolled-text{font-size:10px;font-weight:400}.card-portrait .rating-session .most-enrolled-text{padding:4px;background:#ffea9e;border-radius:4px;line-height:12px}.card-portrait .right-corner-portrait{right:8px;bottom:8px}.course_widget{margin-top:10px}.course_widget .mat-icon{vertical-align:middle;color:#ef951e!important}.course_widget .course_v2{border:1px solid #EF951E;padding:4px 8px;align-items:end;border-radius:16px}.course_widget .main_icon{font-size:16px;width:16px;height:16px}.rating-session mat-icon{font-size:16px;height:16px;width:12px;padding-right:3px;color:#ef951e}.rating-session span{font-size:11px}.rating-session .most-enrolled-text{padding:0 8px;background:#ffea9e;border-radius:4px}.duration-box{background:#000;position:absolute;border:none;display:flex;align-items:center;padding:4px;border-radius:4px}.duration-box.right-corner{right:4px;bottom:4px}.duration-box .mat-icon{vertical-align:middle;color:#fff!important;height:14px!important;width:14px!important;font-size:14px}.duration-box .duration{font:700 12px/16px Lato;display:inline-block;margin:0;padding:0}.disable-btn{opacity:.6!important;cursor:not-allowed!important;pointer-events:none!important}\n"] }]
|
|
7559
7559
|
}], ctorParameters: function () { return [{ type: i1$4.MatLegacySnackBar }, { type: i2$1.TranslateService }, { type: i2.EventService }, { type: MultilingualTranslationsService }, { type: i2.ConfigurationsService }, { type: WidgetContentLibService }, { type: CertificateService }, { type: i1$3.MatLegacyDialog }]; }, propDecorators: { widgetData: [{
|
|
7560
7560
|
type: Input
|
|
7561
7561
|
}], isLiveOrMarkForDeletion: [{
|