UNPKG

8.88 kBHTMLView Raw
1<mat-card class="package-list-container" *ngIf="salesPackages$ | async as salesPackages else loading">
2 <mat-list>
3 <div class="package-list" *ngFor="let package of salesPackages; let packageIndex = index">
4 <mat-list-item class="package-list-item">
5 <va-icon mat-list-avatar [name]="package.name" [iconUrl]="package.icon" [diameter]="40">
6 </va-icon>
7 <h3 mat-line>{{package.name}}</h3>
8 <p class="package-dropdown-font" mat-line>{{package.formattedPrices}}</p>
9 <span *ngIf="!package.activationStatus" class="package-dropdown-layout">
10 <p class="package-dropdown-font package-notice">
11 <span *ngIf="(package.products?.length > 0) || (package.totalAddons > 0)">Contains </span>
12 <span *ngIf="package.products?.length > 0">
13 {{package.products.length}} {{package.products.length === 1 ? "Product" : "Products"}}
14 </span>
15 <span *ngIf="(package.products?.length > 0) && (package.totalAddons > 0)"> & </span>
16 <span *ngIf="package.totalAddons > 0">
17 {{package.totalAddons}} {{package.totalAddons === 1 ? "Addon" : "Addons"}}
18 </span>
19 <span *ngIf="(package.products?.length === 0) && (package.totalAddons === 0)">
20 No Items in Package
21 </span>
22 </p>
23 <button *ngIf="package.products?.length > 0 || package.addonsWithNoParent?.length > 0" mat-icon-button type="button" (click)="toggleProducts(packageIndex)">
24 <mat-icon mat-list-icon
25 class="dropdown-icon"
26 [ngClass]="{'dropdown-icon-rotate-up': !dropdownToggles[packageIndex], 'dropdown-icon-rotate-down': dropdownToggles[packageIndex]}">
27 keyboard_arrow_down
28 </mat-icon>
29 </button>
30 </span>
31 <span *ngIf="package.activationStatus" class="package-dropdown-layout package-dropdown-status">
32 <div [ngClass]="{
33 'activated': isActivatedStatus(package.activationStatus.status),
34 'warning': isWarningStatus(package.activationStatus.status),
35 'error': isErrorStatus(package.activationStatus.status)}">
36 <mat-icon>{{package.activationStatus.icon}}</mat-icon>
37 </div>
38 <p class="package-notice"
39 [ngClass]="{
40 'activated': isActivatedStatus(package.activationStatus.status),
41 'warning': isWarningStatus(package.activationStatus.status),
42 'error': isErrorStatus(package.activationStatus.status)}">
43 {{package.activationStatus.text}}
44 </p>
45 <button *ngIf="package.products?.length > 0 || package.addonsWithNoParent?.length > 0" mat-icon-button type="button" (click)="toggleProducts(packageIndex)">
46 <mat-icon mat-list-icon
47 class="dropdown-icon"
48 [ngClass]="{'dropdown-icon-rotate-up': !dropdownToggles[packageIndex], 'dropdown-icon-rotate-down': dropdownToggles[packageIndex]}">
49 keyboard_arrow_down
50 </mat-icon>
51 </button>
52 </span>
53 </mat-list-item>
54 <mat-list class="product-or-addon-list package-dropdown-font" *ngIf="dropdownToggles[packageIndex]" [@listAnimationStart]>
55 <div *ngFor="let product of package.products">
56 <mat-list-item class="product-or-addon-item">
57 <va-icon mat-list-avatar [name]="product.name" [iconUrl]="product.icon" [diameter]="40"></va-icon>
58 <h3 mat-line>{{product.name}}</h3>
59 <p class="package-dropdown-font" mat-line>
60 <span>{{product.tagline}}</span>
61 </p>
62 <div *ngIf="product.activationStatus" class="package-dropdown-status" >
63 <div [ngClass]="{
64 'activated': isActivatedStatus(product.activationStatus.status),
65 'warning': isWarningStatus(product.activationStatus.status),
66 'error': isErrorStatus(product.activationStatus.status)}">
67 <mat-icon>{{product.activationStatus.icon}}</mat-icon>
68 </div>
69 <p [ngClass]="{
70 'activated': isActivatedStatus(product.activationStatus.status),
71 'warning': isWarningStatus(product.activationStatus.status),
72 'error': isErrorStatus(product.activationStatus.status)}">
73 {{product.activationStatus.text}}
74 </p>
75 </div>
76 </mat-list-item>
77 <mat-list-item *ngFor="let addon of product.addons" class="product-or-addon-item addon-with-product">
78 <va-icon mat-list-avatar [name]="addon.name" [iconUrl]="addon.icon" [diameter]="40"></va-icon>
79 <h3 mat-line>{{addon.name}}</h3>
80 <p class="package-dropdown-font" mat-line>{{addon.tagline}}</p>
81 <div *ngIf="addon.activationStatus" class="package-dropdown-status">
82 <div [ngClass]="{
83 'activated': isActivatedStatus(addon.activationStatus.status),
84 'warning': isWarningStatus(addon.activationStatus.status),
85 'error': isErrorStatus(addon.activationStatus.status)}">
86 <mat-icon>{{addon.activationStatus.icon}}</mat-icon>
87 </div>
88 <p [ngClass]="{
89 'activated': isActivatedStatus(addon.activationStatus.status),
90 'warning': isWarningStatus(addon.activationStatus.status),
91 'error': isErrorStatus(addon.activationStatus.status)}">
92 {{addon.activationStatus.text}}
93 </p>
94 </div>
95 </mat-list-item>
96 </div>
97
98 <mat-list-item *ngFor="let addon of package.addonsWithNoParent" class="product-or-addon-item">
99 <div class="icon-area">
100 <va-icon mat-list-avatar [iconUrl]="addon.icon" [name]="addon.name" [diameter]="40"></va-icon>
101 <va-icon mat-list-avatar class="addon-indicator" [iconUrl]="addon.parentIcon" [diameter]="20" [name]="addon.parentName"></va-icon>
102 </div>
103 <h3 mat-line >{{addon.name}} <span class="required-product">(Requires {{addon.parentName || ''}})</span></h3>
104 <p class="package-dropdown-font" mat-line>
105 <span>{{addon.tagline}}</span>
106 </p>
107 <div *ngIf="addon.activationStatus" class="package-dropdown-status">
108 <div [ngClass]="{
109 'activated': isActivatedStatus(addon.activationStatus.status),
110 'warning': isWarningStatus(addon.activationStatus.status),
111 'error': isErrorStatus(addon.activationStatus.status)}">
112 <mat-icon>{{addon.activationStatus.icon}}</mat-icon>
113 </div>
114 <p [ngClass]="{
115 'activated': isActivatedStatus(addon.activationStatus.status),
116 'warning': isWarningStatus(addon.activationStatus.status),
117 'error': isErrorStatus(addon.activationStatus.status)}">
118 {{addon.activationStatus.text}}
119 </p>
120 </div>
121 </mat-list-item>
122 </mat-list>
123 </div>
124 </mat-list>
125</mat-card>
126<ng-template #loading>
127 <mat-card>
128 <div class="package-dropdown-stencil-display">
129 <va-icon [iconUrl]=""></va-icon>
130 <div class="stencil-text">
131 <h1 class="stencil-title stencil-shimmer"></h1>
132 <span class="stencil-tagline stencil-shimmer"></span>
133 </div>
134 </div>
135 </mat-card>
136</ng-template>