1313 </ a >
1414 </ div >
1515
16- < section class ="import-works-dialog__section " *ngIf ="certifiedLinks.length ">
16+ < section class ="import-works-dialog__section " *ngIf ="loading || certifiedLinks.length ">
1717 < h3 class ="import-works-dialog__section-heading ">
18- ORCID Certified Services
18+ {{ certifiedSectionHeading }}
1919 </ h3 >
2020 < div class ="import-works-dialog__card-list ">
21- < div
22- *ngFor ="let link of certifiedLinks "
23- class ="import-works-dialog__card import-works-dialog__card--certified "
24- >
25- < div class ="import-works-dialog__card-icon " *ngIf ="link.imageUrl || link.icon ">
26- < img *ngIf ="link.imageUrl " [src] ="link.imageUrl " [alt] ="link.name + ' logo' " class ="import-works-dialog__card-img " />
27- < mat-icon *ngIf ="!link.imageUrl && link.icon " [attr.aria-hidden] ="true "> {{ link.icon }}</ mat-icon >
28- </ div >
29- < div class ="import-works-dialog__card-content ">
30- < p class ="import-works-dialog__card-title "> {{ link.name }}</ p >
31- < p class ="import-works-dialog__card-description ">
32- {{ link.description }}
33- </ p >
21+ <!-- Shimmer skeleton cards while loading -->
22+ < ng-container *ngIf ="loading ">
23+ < div
24+ *ngFor ="let _ of certifiedSkeletonCount "
25+ class ="import-works-dialog__card import-works-dialog__card--certified import-works-dialog__card--skeleton "
26+ aria-hidden ="true "
27+ >
28+ < div class ="import-works-dialog__card-icon ">
29+ < orcid-skeleton-placeholder [accentBackground] ="false " shape ="square " width ="48px " height ="48px "> </ orcid-skeleton-placeholder >
30+ </ div >
31+ < div class ="import-works-dialog__card-content ">
32+ < orcid-skeleton-placeholder [accentBackground] ="false " class ="import-works-dialog__skeleton-title " height ="27px " width ="60% "> </ orcid-skeleton-placeholder >
33+ < orcid-skeleton-placeholder [accentBackground] ="false " class ="import-works-dialog__skeleton-line " height ="21px " width ="85% "> </ orcid-skeleton-placeholder >
34+ </ div >
35+ < div class ="import-works-dialog__card-actions ">
36+ < orcid-skeleton-placeholder [accentBackground] ="false " class ="import-works-dialog__skeleton-btn " height ="36px " width ="120px "> </ orcid-skeleton-placeholder >
37+ </ div >
3438 </ div >
35- < div class ="import-works-dialog__card-actions ">
36- < ng-container *ngIf ="link.connected; else connectCertified ">
37- < span class ="import-works-dialog__connected ">
38- < span class ="import-works-dialog__connected-dot " aria-hidden ="true "> </ span >
39- Connected
40- </ span >
41- </ ng-container >
42- < ng-template #connectCertified >
43- < button
44- mat-flat-button
45- class ="import-works-dialog__btn-connect "
46- (click) ="openInNewTab(link.url) "
47- >
48- Connect now
49- </ button >
50- </ ng-template >
39+ </ ng-container >
40+ <!-- Real certified links -->
41+ < ng-container *ngIf ="!loading ">
42+ < div
43+ *ngFor ="let link of certifiedLinks "
44+ class ="import-works-dialog__card import-works-dialog__card--certified "
45+ >
46+ < div class ="import-works-dialog__card-icon " *ngIf ="link.imageUrl || link.icon ">
47+ < img *ngIf ="link.imageUrl " [src] ="link.imageUrl " [alt] ="link.name + ' logo' " class ="import-works-dialog__card-img " />
48+ < mat-icon *ngIf ="!link.imageUrl && link.icon " [attr.aria-hidden] ="true "> {{ link.icon }}</ mat-icon >
49+ </ div >
50+ < div class ="import-works-dialog__card-content ">
51+ < p class ="import-works-dialog__card-title "> {{ link.name }}</ p >
52+ < p class ="import-works-dialog__card-description ">
53+ {{ link.description }}
54+ </ p >
55+ </ div >
56+ < div class ="import-works-dialog__card-actions ">
57+ < ng-container *ngIf ="link.connected; else connectCertified ">
58+ < span class ="import-works-dialog__connected ">
59+ < span class ="import-works-dialog__connected-dot " aria-hidden ="true "> </ span >
60+ {{ connectedLabel }}
61+ </ span >
62+ </ ng-container >
63+ < ng-template #connectCertified >
64+ < button
65+ mat-flat-button
66+ class ="import-works-dialog__btn-connect "
67+ (click) ="openInNewTab(link.url) "
68+ >
69+ {{ connectNowLabel }}
70+ </ button >
71+ </ ng-template >
72+ </ div >
5173 </ div >
52- </ div >
74+ </ ng-container >
5375 </ div >
5476 </ section >
5577
56- < section class ="import-works-dialog__section import-works-dialog__section--more " *ngIf ="moreServicesLinks.length ">
78+ < section class ="import-works-dialog__section import-works-dialog__section--more " *ngIf ="loading || moreServicesLinks.length ">
5779 < div class ="import-works-dialog__more-panel ">
5880 < button
5981 type ="button "
@@ -67,7 +89,8 @@ <h3 class="import-works-dialog__section-heading">
6789 {{ moreServicesExpanded ? 'expand_more' : 'expand_less' }}
6890 </ mat-icon >
6991 < span class ="import-works-dialog__more-heading-text ">
70- More Services < span class ="import-works-dialog__more-count "> ({{ moreServicesLinks.length }})</ span >
92+ {{ moreServicesHeading }}
93+ < span class ="import-works-dialog__more-count " *ngIf ="!loading "> ({{ moreServicesLinks.length }})</ span >
7194 </ span >
7295 </ button >
7396 < div
@@ -77,30 +100,53 @@ <h3 class="import-works-dialog__section-heading">
77100 [attr.aria-labelledby] ="'import-works-more-heading' "
78101 [hidden] ="!moreServicesExpanded "
79102 >
80- < div
81- *ngFor ="let link of moreServicesLinks "
82- class ="import-works-dialog__card import-works-dialog__card--more "
83- >
84- < div class ="import-works-dialog__card-icon " *ngIf ="link.imageUrl || link.icon ">
85- < img *ngIf ="link.imageUrl " [src] ="link.imageUrl " [alt] ="link.name + ' logo' " class ="import-works-dialog__card-img " />
86- < mat-icon *ngIf ="!link.imageUrl && link.icon " [attr.aria-hidden] ="true "> {{ link.icon }}</ mat-icon >
103+ <!-- Shimmer skeleton cards while loading -->
104+ < ng-container *ngIf ="loading ">
105+ < div
106+ *ngFor ="let _ of moreServicesSkeletonCount "
107+ class ="import-works-dialog__card import-works-dialog__card--more import-works-dialog__card--skeleton "
108+ aria-hidden ="true "
109+ >
110+ < div class ="import-works-dialog__card-icon ">
111+ < orcid-skeleton-placeholder [accentBackground] ="false " shape ="square " width ="48px " height ="48px "> </ orcid-skeleton-placeholder >
112+ </ div >
113+ < div class ="import-works-dialog__card-content ">
114+ < orcid-skeleton-placeholder [accentBackground] ="false " class ="import-works-dialog__skeleton-title " height ="27px " width ="55% "> </ orcid-skeleton-placeholder >
115+ < orcid-skeleton-placeholder [accentBackground] ="false " class ="import-works-dialog__skeleton-line " height ="21px " width ="100% "> </ orcid-skeleton-placeholder >
116+ < orcid-skeleton-placeholder [accentBackground] ="false " class ="import-works-dialog__skeleton-line " height ="21px " width ="80% "> </ orcid-skeleton-placeholder >
117+ </ div >
118+ < div class ="import-works-dialog__card-actions ">
119+ < orcid-skeleton-placeholder [accentBackground] ="false " class ="import-works-dialog__skeleton-btn " height ="36px " width ="120px "> </ orcid-skeleton-placeholder >
120+ </ div >
87121 </ div >
88- < div class ="import-works-dialog__card-content ">
89- < p class ="import-works-dialog__card-title "> {{ link.name }}</ p >
90- < p class ="import-works-dialog__card-description ">
91- {{ link.description }}
92- </ p >
93- </ div >
94- < div class ="import-works-dialog__card-actions ">
95- < button
96- mat-stroked-button
97- class ="import-works-dialog__btn-connect-more "
98- (click) ="openInNewTab(link.url) "
99- >
100- Connect now
101- </ button >
122+ </ ng-container >
123+ <!-- Real more services links -->
124+ < ng-container *ngIf ="!loading ">
125+ < div
126+ *ngFor ="let link of moreServicesLinks "
127+ class ="import-works-dialog__card import-works-dialog__card--more "
128+ >
129+ < div class ="import-works-dialog__card-icon " *ngIf ="link.imageUrl || link.icon ">
130+ < img *ngIf ="link.imageUrl " [src] ="link.imageUrl " [alt] ="link.name + ' logo' " class ="import-works-dialog__card-img " />
131+ < mat-icon *ngIf ="!link.imageUrl && link.icon " [attr.aria-hidden] ="true "> {{ link.icon }}</ mat-icon >
132+ </ div >
133+ < div class ="import-works-dialog__card-content ">
134+ < p class ="import-works-dialog__card-title "> {{ link.name }}</ p >
135+ < p class ="import-works-dialog__card-description ">
136+ {{ link.description }}
137+ </ p >
138+ </ div >
139+ < div class ="import-works-dialog__card-actions ">
140+ < button
141+ mat-stroked-button
142+ class ="import-works-dialog__btn-connect-more "
143+ (click) ="openInNewTab(link.url) "
144+ >
145+ {{ connectNowLabel }}
146+ </ button >
147+ </ div >
102148 </ div >
103- </ div >
149+ </ ng-container >
104150 </ div >
105151 </ div >
106152 </ section >
0 commit comments