|
|
|
@@ -1,21 +1,14 @@
|
|
|
|
|
<div
|
|
|
|
|
class="tab-container d-flex flex-col"
|
|
|
|
|
[ngClass]="{
|
|
|
|
|
<div class="tab-container d-flex flex-col" [ngClass]="{
|
|
|
|
|
mac: electronService.isMac,
|
|
|
|
|
windows: electronService.isWin,
|
|
|
|
|
linux: electronService.isLinux
|
|
|
|
|
}"
|
|
|
|
|
>
|
|
|
|
|
}">
|
|
|
|
|
<div class="control-container">
|
|
|
|
|
<div class="select-container">
|
|
|
|
|
<mat-form-field>
|
|
|
|
|
<mat-label>{{ "PAGES.MY_ADDONS.CLIENT_TYPE_SELECT_LABEL" | translate }}</mat-label>
|
|
|
|
|
<mat-select
|
|
|
|
|
class="select pointer"
|
|
|
|
|
[(value)]="selectedClient"
|
|
|
|
|
(selectionChange)="onClientChange()"
|
|
|
|
|
[disabled]="enableControls === false"
|
|
|
|
|
>
|
|
|
|
|
<mat-select class="select pointer" [(value)]="selectedClient" (selectionChange)="onClientChange()"
|
|
|
|
|
[disabled]="enableControls === false">
|
|
|
|
|
<mat-option [value]="clientType" *ngFor="let clientType of warcraftService.installedClientTypes$ | async">
|
|
|
|
|
{{ warcraftService.getClientDisplayName(clientType) }}
|
|
|
|
|
</mat-option>
|
|
|
|
@@ -27,55 +20,28 @@
|
|
|
|
|
<mat-form-field>
|
|
|
|
|
<mat-label>{{ "PAGES.MY_ADDONS.FILTER_LABEL" | translate }}</mat-label>
|
|
|
|
|
<input matInput (keyup)="filterAddons()" [(ngModel)]="filter" />
|
|
|
|
|
<button
|
|
|
|
|
mat-button
|
|
|
|
|
color="accent"
|
|
|
|
|
*ngIf="filter"
|
|
|
|
|
matSuffix
|
|
|
|
|
mat-icon-button
|
|
|
|
|
aria-label="Clear"
|
|
|
|
|
(click)="onClearFilter()"
|
|
|
|
|
>
|
|
|
|
|
<button mat-button color="accent" *ngIf="filter" matSuffix mat-icon-button aria-label="Clear"
|
|
|
|
|
(click)="onClearFilter()">
|
|
|
|
|
<mat-icon>close</mat-icon>
|
|
|
|
|
</button>
|
|
|
|
|
</mat-form-field>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="button-container">
|
|
|
|
|
<button
|
|
|
|
|
mat-flat-button
|
|
|
|
|
color="primary"
|
|
|
|
|
[matTooltip]="'PAGES.MY_ADDONS.UPDATE_ALL_BUTTON_TOOLTIP' | translate"
|
|
|
|
|
[disabled]="enableControls === false || enableUpdateAll === false"
|
|
|
|
|
(click)="onUpdateAll()"
|
|
|
|
|
(contextmenu)="onUpdateAllContext($event)"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="UpdateAll"
|
|
|
|
|
>
|
|
|
|
|
<button mat-flat-button color="primary" [matTooltip]="'PAGES.MY_ADDONS.UPDATE_ALL_BUTTON_TOOLTIP' | translate"
|
|
|
|
|
[disabled]="enableControls === false || enableUpdateAll === false" (click)="onUpdateAll()"
|
|
|
|
|
(contextmenu)="onUpdateAllContext($event)" appUserActionTracker category="MyAddons" action="UpdateAll">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.UPDATE_ALL_BUTTON" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
mat-flat-button
|
|
|
|
|
color="primary"
|
|
|
|
|
<button mat-flat-button color="primary"
|
|
|
|
|
[matTooltip]="'PAGES.MY_ADDONS.CHECK_UPDATES_BUTTON_TOOLTIP' | translate"
|
|
|
|
|
[disabled]="enableControls === false"
|
|
|
|
|
(click)="onRefresh()"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="CheckUpdates"
|
|
|
|
|
>
|
|
|
|
|
[disabled]="enableControls === false" (click)="onRefresh()" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="CheckUpdates">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.CHECK_UPDATES_BUTTON" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
mat-flat-button
|
|
|
|
|
color="primary"
|
|
|
|
|
<button mat-flat-button color="primary"
|
|
|
|
|
[matTooltip]="'PAGES.MY_ADDONS.RESCAN_FOLDERS_BUTTON_TOOLTIP' | translate"
|
|
|
|
|
[disabled]="enableControls === false"
|
|
|
|
|
(click)="onReScan()"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="ReScanFolders"
|
|
|
|
|
>
|
|
|
|
|
[disabled]="enableControls === false" (click)="onReScan()" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="ReScanFolders">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.RESCAN_FOLDERS_BUTTON" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
@@ -91,26 +57,15 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="table-container flex-grow-1" [hidden]="isBusy === true || sortedListItems.length === 0">
|
|
|
|
|
<table
|
|
|
|
|
#table
|
|
|
|
|
mat-table
|
|
|
|
|
matSort
|
|
|
|
|
(matSortChange)="onSortChange()"
|
|
|
|
|
[dataSource]="dataSource"
|
|
|
|
|
[matSortActive]="activeSort"
|
|
|
|
|
[matSortDirection]="activeSortDirection"
|
|
|
|
|
class="mat-elevation-z8"
|
|
|
|
|
>
|
|
|
|
|
<table #table mat-table matSort (matSortChange)="onSortChange()" [dataSource]="dataSource"
|
|
|
|
|
[matSortActive]="activeSort" [matSortDirection]="activeSortDirection" class="mat-elevation-z8">
|
|
|
|
|
<ng-container matColumnDef="addon.name">
|
|
|
|
|
<th mat-header-cell mat-sort-header *matHeaderCellDef>
|
|
|
|
|
{{ "PAGES.MY_ADDONS.TABLE.ADDON_COLUMN_HEADER" | translate }}
|
|
|
|
|
</th>
|
|
|
|
|
<td mat-cell *matCellDef="let element" class="cell-padding">
|
|
|
|
|
<app-my-addons-addon-cell
|
|
|
|
|
[addon]="element"
|
|
|
|
|
(onViewDetails)="openDetailDialog($event)"
|
|
|
|
|
[showUpdateToVersion]="!isLatestUpdateColumnVisible()"
|
|
|
|
|
>
|
|
|
|
|
<app-my-addons-addon-cell [addon]="element" (onViewDetails)="openDetailDialog($event)"
|
|
|
|
|
[showUpdateToVersion]="!isLatestUpdateColumnVisible()">
|
|
|
|
|
</app-my-addons-addon-cell>
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
|
|
|
@@ -128,14 +83,9 @@
|
|
|
|
|
<th class="installed-at-cell" mat-header-cell mat-sort-header *matHeaderCellDef>
|
|
|
|
|
{{ "PAGES.MY_ADDONS.TABLE.UPDATED_AT_COLUMN_HEADER" | translate }}
|
|
|
|
|
</th>
|
|
|
|
|
<td
|
|
|
|
|
mat-cell
|
|
|
|
|
*matCellDef="let element"
|
|
|
|
|
class="cell-padding"
|
|
|
|
|
<td mat-cell *matCellDef="let element" class="cell-padding"
|
|
|
|
|
[matTooltip]="'COMMON.DATES.DATETIME_SHORT' | translate: { d: element.installedAt }"
|
|
|
|
|
matTooltipPosition="above"
|
|
|
|
|
matTooltipShowDelay="500"
|
|
|
|
|
>
|
|
|
|
|
matTooltipPosition="above" matTooltipShowDelay="500">
|
|
|
|
|
{{ element.installedAt | relativeDuration }}
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
|
|
|
@@ -144,12 +94,8 @@
|
|
|
|
|
<th mat-header-cell mat-sort-header *matHeaderCellDef>
|
|
|
|
|
{{ "PAGES.MY_ADDONS.TABLE.LATEST_VERSION_COLUMN_HEADER" | translate }}
|
|
|
|
|
</th>
|
|
|
|
|
<td
|
|
|
|
|
mat-cell
|
|
|
|
|
*matCellDef="let element"
|
|
|
|
|
class="cell-padding"
|
|
|
|
|
[ngClass]="{ 'addon-update-available': element.addon.latestVersion !== element.addon.installedVersion }"
|
|
|
|
|
>
|
|
|
|
|
<td mat-cell *matCellDef="let element" class="cell-padding"
|
|
|
|
|
[ngClass]="{ 'addon-update-available': element.addon.latestVersion !== element.addon.installedVersion }">
|
|
|
|
|
{{ element.addon.latestVersion }}
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
|
|
|
@@ -158,14 +104,9 @@
|
|
|
|
|
<th class="released-at-cell" mat-header-cell mat-sort-header *matHeaderCellDef>
|
|
|
|
|
{{ "PAGES.MY_ADDONS.TABLE.RELEASED_AT_COLUMN_HEADER" | translate }}
|
|
|
|
|
</th>
|
|
|
|
|
<td
|
|
|
|
|
mat-cell
|
|
|
|
|
*matCellDef="let element"
|
|
|
|
|
class="cell-padding"
|
|
|
|
|
<td mat-cell *matCellDef="let element" class="cell-padding"
|
|
|
|
|
[matTooltip]="'COMMON.DATES.DATETIME_SHORT' | translate: { d: element.addon.releasedAt }"
|
|
|
|
|
matTooltipPosition="above"
|
|
|
|
|
matTooltipShowDelay="500"
|
|
|
|
|
>
|
|
|
|
|
matTooltipPosition="above" matTooltipShowDelay="500">
|
|
|
|
|
{{ element.addon.releasedAt | relativeDuration }}
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
|
|
|
@@ -191,11 +132,8 @@
|
|
|
|
|
<div class="addon-provider-name">
|
|
|
|
|
{{ element.addon.providerSource }}
|
|
|
|
|
</div>
|
|
|
|
|
<img
|
|
|
|
|
class="provider-logo"
|
|
|
|
|
[matTooltip]="'Sourced from ' + element.addon.providerName"
|
|
|
|
|
src="assets/icons/favicon.256x256.png"
|
|
|
|
|
/>
|
|
|
|
|
<img class="provider-logo" [matTooltip]="'Sourced from ' + element.addon.providerName"
|
|
|
|
|
src="assets/icons/favicon.256x256.png" />
|
|
|
|
|
</div>
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
|
|
|
@@ -213,42 +151,24 @@
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
|
|
|
|
|
|
|
|
|
<tr
|
|
|
|
|
mat-header-row
|
|
|
|
|
*matHeaderRowDef="displayedColumns; sticky: true"
|
|
|
|
|
(contextmenu)="onHeaderContext($event); $event.preventDefault()"
|
|
|
|
|
></tr>
|
|
|
|
|
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"
|
|
|
|
|
(contextmenu)="onHeaderContext($event); $event.preventDefault()"></tr>
|
|
|
|
|
|
|
|
|
|
<tr
|
|
|
|
|
mat-row
|
|
|
|
|
*matRowDef="let row; let i = index; columns: displayedColumns"
|
|
|
|
|
tabindex="0"
|
|
|
|
|
[ngClass]="{ 'selected-row': row.selected }"
|
|
|
|
|
(click)="onRowClicked($event, row, i)"
|
|
|
|
|
(dblclick)="openDetailDialog(row)"
|
|
|
|
|
(contextmenu)="onCellContext($event, row)"
|
|
|
|
|
(keydown.control.a)="selectAllRows($event)"
|
|
|
|
|
(keydown.meta.a)="selectAllRows($event)"
|
|
|
|
|
></tr>
|
|
|
|
|
<tr mat-row *matRowDef="let row; let i = index; columns: displayedColumns" tabindex="0"
|
|
|
|
|
[ngClass]="{ 'selected-row': row.selected }" (click)="onRowClicked($event, row, i)"
|
|
|
|
|
(dblclick)="openDetailDialog(row)" (contextmenu)="onCellContext($event, row)"
|
|
|
|
|
(keydown.control.a)="selectAllRows($event)" (keydown.meta.a)="selectAllRows($event)"></tr>
|
|
|
|
|
</table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
style="visibility: hidden; position: fixed"
|
|
|
|
|
#addonContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x"
|
|
|
|
|
[style.top]="contextMenuPosition.y"
|
|
|
|
|
[matMenuTriggerFor]="contextMenu"
|
|
|
|
|
></div>
|
|
|
|
|
<div style="visibility: hidden; position: fixed" #addonContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="contextMenu"></div>
|
|
|
|
|
<mat-menu #contextMenu="matMenu" class="addon-context-menu">
|
|
|
|
|
<ng-template matMenuContent let-listItem="listItem">
|
|
|
|
|
<div class="addon-context-menu-header">
|
|
|
|
|
<div
|
|
|
|
|
*ngIf="listItem.hasThumbnail === true"
|
|
|
|
|
class="thumbnail"
|
|
|
|
|
[style.backgroundImage]="'url(' + listItem.addon.thumbnailUrl + ')'"
|
|
|
|
|
></div>
|
|
|
|
|
<div *ngIf="listItem.hasThumbnail === true" class="thumbnail"
|
|
|
|
|
[style.backgroundImage]="'url(' + listItem.addon.thumbnailUrl + ')'"></div>
|
|
|
|
|
<div *ngIf="listItem.hasThumbnail === false" class="thumbnail">
|
|
|
|
|
<div class="thumbnail-letter">
|
|
|
|
|
{{ listItem.thumbnailLetter }}
|
|
|
|
@@ -263,97 +183,45 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<mat-divider></mat-divider>
|
|
|
|
|
<mat-checkbox
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[checked]="listItem.addon.isIgnored"
|
|
|
|
|
(change)="onClickIgnoreAddon($event, listItem)"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="IgnoreAddon"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<mat-checkbox class="mat-menu-item" [checked]="listItem.addon.isIgnored"
|
|
|
|
|
(change)="onClickIgnoreAddon($event, listItem)" appUserActionTracker category="MyAddons" action="IgnoreAddon"
|
|
|
|
|
[label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.IGNORE_ADDON_BUTTON" | translate }}
|
|
|
|
|
</mat-checkbox>
|
|
|
|
|
<mat-checkbox
|
|
|
|
|
*ngIf="listItem.addon.isIgnored === false"
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[checked]="listItem.addon.autoUpdateEnabled"
|
|
|
|
|
(change)="onClickAutoUpdateAddon($event, listItem)"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="AutoUpdateAddon"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<mat-checkbox *ngIf="listItem.addon.isIgnored === false" class="mat-menu-item"
|
|
|
|
|
[checked]="listItem.addon.autoUpdateEnabled" (change)="onClickAutoUpdateAddon($event, listItem)"
|
|
|
|
|
appUserActionTracker category="MyAddons" action="AutoUpdateAddon" [label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.AUTO_UPDATE_ADDON_BUTTON" | translate }}
|
|
|
|
|
</mat-checkbox>
|
|
|
|
|
<button mat-menu-item [matMenuTriggerFor]="addonChannels">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.CHANNEL_SUBMENT_TITLE" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
mat-menu-item
|
|
|
|
|
(click)="onShowfolder(listItem.addon)"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="ShowAddonFolder"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<button mat-menu-item (click)="onShowfolder(listItem.addon)" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="ShowAddonFolder" [label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.SHOW_FOLDER" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
mat-menu-item
|
|
|
|
|
(click)="onReInstallAddon(listItem)"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="ReInstallAddon"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<button mat-menu-item (click)="onReInstallAddon(listItem)" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="ReInstallAddon" [label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.REINSTALL_ADDON_BUTTON" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<mat-divider></mat-divider>
|
|
|
|
|
<button
|
|
|
|
|
mat-menu-item
|
|
|
|
|
(click)="onRemoveAddon(listItem.addon)"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="RemoveAddon"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<button mat-menu-item (click)="onRemoveAddon(listItem.addon)" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="RemoveAddon" [label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.REMOVE_ADDON_BUTTON" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<mat-menu #addonChannels="matMenu" class="addon-context-menu">
|
|
|
|
|
<mat-radio-group
|
|
|
|
|
class="vertical-radio-group"
|
|
|
|
|
[ngModel]="listItem.addon.channelType"
|
|
|
|
|
(change)="onSelectedAddonChannelChange($event, listItem)"
|
|
|
|
|
>
|
|
|
|
|
<mat-radio-button
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[value]="0"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="SetStableAddonChannel"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<mat-radio-group class="vertical-radio-group" [ngModel]="listItem.addon.channelType"
|
|
|
|
|
(change)="onSelectedAddonChannelChange($event, listItem)">
|
|
|
|
|
<mat-radio-button class="mat-menu-item" [value]="0" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="SetStableAddonChannel" [label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.STABLE_ADDON_CHANNEL" | translate }}
|
|
|
|
|
</mat-radio-button>
|
|
|
|
|
<mat-radio-button
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[value]="1"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="SetBetaAddonChannel"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<mat-radio-button class="mat-menu-item" [value]="1" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="SetBetaAddonChannel" [label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.BETA_ADDON_CHANNEL" | translate }}
|
|
|
|
|
</mat-radio-button>
|
|
|
|
|
<mat-radio-button
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[value]="2"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="SetAlphaAddonChannel"
|
|
|
|
|
[label]="listItem.addon.name"
|
|
|
|
|
>
|
|
|
|
|
<mat-radio-button class="mat-menu-item" [value]="2" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="SetAlphaAddonChannel" [label]="listItem.addon.name">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.ALPHA_ADDON_CHANNEL" | translate }}
|
|
|
|
|
</mat-radio-button>
|
|
|
|
|
</mat-radio-group>
|
|
|
|
@@ -361,33 +229,21 @@
|
|
|
|
|
</ng-template>
|
|
|
|
|
</mat-menu>
|
|
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
style="visibility: hidden; position: fixed"
|
|
|
|
|
#addonMultiContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x"
|
|
|
|
|
[style.top]="contextMenuPosition.y"
|
|
|
|
|
[matMenuTriggerFor]="multiContextMenu"
|
|
|
|
|
></div>
|
|
|
|
|
<div style="visibility: hidden; position: fixed" #addonMultiContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="multiContextMenu"></div>
|
|
|
|
|
<mat-menu #multiContextMenu="matMenu" class="addon-context-menu">
|
|
|
|
|
<ng-template matMenuContent let-listItems="listItems">
|
|
|
|
|
<div class="addon-context-menu-header">
|
|
|
|
|
{{ listItems.length + " addons selected" }}
|
|
|
|
|
<div class="addon-context-menu-header" translate [translateParams]="{ count: listItems.length }">
|
|
|
|
|
PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.ADDONS_SELECTED
|
|
|
|
|
</div>
|
|
|
|
|
<mat-divider></mat-divider>
|
|
|
|
|
<mat-checkbox
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[indeterminate]="isIndeterminate(listItems, 'addon.isIgnored')"
|
|
|
|
|
[checked]="isAllItemsSelected(listItems, 'addon.isIgnored')"
|
|
|
|
|
(change)="onClickIgnoreAddons($event, listItems)"
|
|
|
|
|
>
|
|
|
|
|
<mat-checkbox class="mat-menu-item" [indeterminate]="isIndeterminate(listItems, 'addon.isIgnored')"
|
|
|
|
|
[checked]="isAllItemsSelected(listItems, 'addon.isIgnored')" (change)="onClickIgnoreAddons($event, listItems)">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.IGNORE_ADDON_BUTTON" | translate }}
|
|
|
|
|
</mat-checkbox>
|
|
|
|
|
<mat-checkbox
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[indeterminate]="isIndeterminate(listItems, 'addon.autoUpdateEnabled')"
|
|
|
|
|
<mat-checkbox class="mat-menu-item" [indeterminate]="isIndeterminate(listItems, 'addon.autoUpdateEnabled')"
|
|
|
|
|
[checked]="isAllItemsSelected(listItems, 'addon.autoUpdateEnabled')"
|
|
|
|
|
(change)="onClickAutoUpdateAddons($event, listItems)"
|
|
|
|
|
>
|
|
|
|
|
(change)="onClickAutoUpdateAddons($event, listItems)">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.ADDON_CONTEXT_MENU.AUTO_UPDATE_ADDON_BUTTON" | translate }}
|
|
|
|
|
</mat-checkbox>
|
|
|
|
|
<button mat-menu-item [matMenuTriggerFor]="addonChannels">
|
|
|
|
@@ -416,13 +272,9 @@
|
|
|
|
|
</ng-template>
|
|
|
|
|
</mat-menu>
|
|
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
style="visibility: hidden; position: fixed"
|
|
|
|
|
#columnContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x"
|
|
|
|
|
[style.top]="contextMenuPosition.y"
|
|
|
|
|
[matMenuTriggerFor]="columnContextMenu"
|
|
|
|
|
></div>
|
|
|
|
|
<div style="visibility: hidden; position: fixed" #columnContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="columnContextMenu">
|
|
|
|
|
</div>
|
|
|
|
|
<mat-menu #columnContextMenu="matMenu" class="addon-context-menu">
|
|
|
|
|
<ng-template matMenuContent let-columns="columns">
|
|
|
|
|
<div class="addon-context-menu-header">
|
|
|
|
@@ -431,43 +283,25 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<mat-divider></mat-divider>
|
|
|
|
|
<mat-checkbox
|
|
|
|
|
*ngFor="let column of columns"
|
|
|
|
|
class="mat-menu-item"
|
|
|
|
|
[checked]="column.visible"
|
|
|
|
|
(change)="onColumnVisibleChange($event, column)"
|
|
|
|
|
>
|
|
|
|
|
<mat-checkbox *ngFor="let column of columns" class="mat-menu-item" [checked]="column.visible"
|
|
|
|
|
(change)="onColumnVisibleChange($event, column)">
|
|
|
|
|
{{ column.display | translate }}
|
|
|
|
|
</mat-checkbox>
|
|
|
|
|
</ng-template>
|
|
|
|
|
</mat-menu>
|
|
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
style="visibility: hidden; position: fixed"
|
|
|
|
|
#updateAllContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x"
|
|
|
|
|
[style.top]="contextMenuPosition.y"
|
|
|
|
|
[matMenuTriggerFor]="updateAllContextMenu"
|
|
|
|
|
></div>
|
|
|
|
|
<div style="visibility: hidden; position: fixed" #updateAllContextMenuTrigger="matMenuTrigger"
|
|
|
|
|
[style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y" [matMenuTriggerFor]="updateAllContextMenu">
|
|
|
|
|
</div>
|
|
|
|
|
<mat-menu #updateAllContextMenu="matMenu" class="addon-context-menu">
|
|
|
|
|
<ng-template matMenuContent let-columns="columns">
|
|
|
|
|
<button
|
|
|
|
|
mat-menu-item
|
|
|
|
|
(click)="onUpdateAllRetailClassic()"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="UpdateAllClassicRetail"
|
|
|
|
|
>
|
|
|
|
|
<button mat-menu-item (click)="onUpdateAllRetailClassic()" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="UpdateAllClassicRetail">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.UPDATE_ALL_CONTEXT_MENU.UPDATE_RETAIL_CLASSIC_BUTTON" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
mat-menu-item
|
|
|
|
|
(click)="onUpdateAllClients()"
|
|
|
|
|
appUserActionTracker
|
|
|
|
|
category="MyAddons"
|
|
|
|
|
action="UpdateAllClients"
|
|
|
|
|
>
|
|
|
|
|
<button mat-menu-item (click)="onUpdateAllClients()" appUserActionTracker category="MyAddons"
|
|
|
|
|
action="UpdateAllClients">
|
|
|
|
|
{{ "PAGES.MY_ADDONS.UPDATE_ALL_CONTEXT_MENU.UPDATE_ALL_CLIENTS_BUTTON" | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
</ng-template>
|
|
|
|
|
</mat-menu>
|
|
|
|
|
</mat-menu>
|