@tuki-io/tuki-widgets 0.0.219-dev.60 → 0.0.219-dev.63
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/di2mt/widgets/site-upgrade/site-upgrade.module.d.ts +9 -8
- package/di2mt/widgets/user-upgrade/user-upgrade.module.d.ts +11 -10
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +12 -11
- package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.module.mjs +7 -3
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.mjs +12 -11
- package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.module.mjs +7 -3
- package/esm2020/locations/src/locations.component.mjs +11 -11
- package/esm2020/locations/src/locations.module.mjs +7 -6
- package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +9 -9
- package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +17 -9
- package/esm2020/meetings/src/meetings.module.mjs +7 -6
- package/esm2020/shared/public-api.mjs +2 -1
- package/esm2020/shared/src/ui/tk-loader/tk-loader.component.mjs +34 -0
- package/esm2020/user-creation/src/user-creation.module.mjs +7 -6
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +16 -16
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +27 -10
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +11 -11
- package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +10 -10
- package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +11 -11
- package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +9 -9
- package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +9 -9
- package/esm2020/user-device-manage/src/user-device-manage.module.mjs +8 -7
- package/esm2020/user-manage/src/user-manage-widget.component.mjs +12 -12
- package/esm2020/user-manage/src/user-manage.module.mjs +8 -7
- package/esm2020/users-list/src/classes/site-option.mjs +2 -0
- package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +18 -4
- package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +15 -15
- package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +5 -5
- package/esm2020/users-list/src/users-list.component.mjs +104 -46
- package/esm2020/users-list/src/users-list.module.mjs +7 -6
- package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +7 -7
- package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +9 -9
- package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +13 -3
- package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -6
- package/esm2020/workspaces/src/services/workspaces.service.mjs +3 -1
- package/esm2020/workspaces/src/types/workspace.mjs +6 -2
- package/esm2020/workspaces/src/workspaces.component.mjs +43 -9
- package/esm2020/workspaces/src/workspaces.module.mjs +7 -6
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +26 -18
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-locations.mjs +16 -24
- package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +31 -33
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-shared.mjs +31 -1
- package/fesm2015/tuki-io-tuki-widgets-shared.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +52 -43
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
- package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +20 -29
- package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +136 -73
- package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +87 -43
- package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +26 -18
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-locations.mjs +16 -24
- package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +31 -33
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-shared.mjs +31 -1
- package/fesm2020/tuki-io-tuki-widgets-shared.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +51 -43
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
- package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +20 -29
- package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +134 -71
- package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +87 -42
- package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
- package/locations/src/locations.module.d.ts +2 -2
- package/meetings/src/meetings.module.d.ts +2 -2
- package/package.json +1 -1
- package/shared/public-api.d.ts +1 -0
- package/shared/src/ui/tk-loader/tk-loader.component.d.ts +15 -0
- package/user-creation/src/user-creation.module.d.ts +3 -3
- package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +2 -0
- package/user-device-manage/src/user-device-manage.module.d.ts +16 -16
- package/user-manage/src/user-manage.module.d.ts +12 -13
- package/users-list/src/classes/site-option.d.ts +4 -0
- package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +6 -1
- package/users-list/src/users-list.component.d.ts +11 -1
- package/users-list/src/users-list.module.d.ts +9 -9
- package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +1 -1
- package/workspaces/src/components/workspaces-filters/workspaces-filters.component.d.ts +9 -1
- package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +2 -2
- package/workspaces/src/types/workspace.d.ts +5 -0
- package/workspaces/src/workspaces.component.d.ts +6 -2
- package/workspaces/src/workspaces.module.d.ts +2 -2
- package/esm2020/locations/src/utils/app-loader/app-loader.mjs +0 -14
- package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +0 -14
- package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +0 -14
- package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +0 -14
- package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +0 -14
- package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +0 -14
- package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +0 -14
- package/locations/src/utils/app-loader/app-loader.d.ts +0 -6
- package/meetings/src/utils/app-loader/app-loader.d.ts +0 -6
- package/user-creation/src/utils/app-loader/app-loader.d.ts +0 -6
- package/user-device-manage/src/utils/app-loader/app-loader.d.ts +0 -6
- package/user-manage/src/utils/app-loader/app-loader.d.ts +0 -6
- package/users-list/src/utils/app-loader/app-loader.d.ts +0 -6
- package/workspaces/src/utils/app-loader/app-loader.d.ts +0 -6
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as i2 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { NgModule, Component, ViewEncapsulation, Inject, Injectable, EventEmitter, Input, Output } from '@angular/core';
|
|
5
|
-
import * as i1$
|
|
5
|
+
import * as i1$1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpClientModule } from '@angular/common/http';
|
|
7
|
-
import * as
|
|
7
|
+
import * as i3 from '@angular/forms';
|
|
8
8
|
import { FormsModule } from '@angular/forms';
|
|
9
9
|
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import * as
|
|
10
|
+
import * as i4 from '@angular/material/icon';
|
|
11
11
|
import { MatIconModule } from '@angular/material/icon';
|
|
12
12
|
import { MatTableModule } from '@angular/material/table';
|
|
13
13
|
import * as i3$1 from '@angular/material/progress-spinner';
|
|
14
14
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
15
15
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
16
16
|
import { MatInputModule } from '@angular/material/input';
|
|
17
|
-
import * as i4 from '@angular/material/menu';
|
|
17
|
+
import * as i4$1 from '@angular/material/menu';
|
|
18
18
|
import { MatMenuModule } from '@angular/material/menu';
|
|
19
19
|
import * as i5 from '@angular/material/paginator';
|
|
20
20
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
@@ -24,6 +24,8 @@ import * as i1 from '@angular/material/dialog';
|
|
|
24
24
|
import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
25
25
|
import { forkJoin, map as map$1, switchMap, timer, takeWhile } from 'rxjs';
|
|
26
26
|
import { map } from 'rxjs/operators';
|
|
27
|
+
import * as i1$2 from '@tuki-io/tuki-widgets/shared';
|
|
28
|
+
import { TkLoaderComponent } from '@tuki-io/tuki-widgets/shared';
|
|
27
29
|
|
|
28
30
|
class MaterialModule {
|
|
29
31
|
}
|
|
@@ -114,7 +116,7 @@ class WorkspaceConfirmDialogComponent {
|
|
|
114
116
|
}
|
|
115
117
|
}
|
|
116
118
|
WorkspaceConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
117
|
-
WorkspaceConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceConfirmDialogComponent, selector: "tk-workspace-confirm-dialog", ngImport: i0, template: "<div id=\"tk-workspace-confirm-dialog\" class=\"tk-workspace-confirm-dialog\" aria-labelledby=\"tk-workspace-confirm-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"tk-workspace-confirm-dialog__title\">{{ title }}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"tk-workspace-confirm-dialog__content\">\r\n <div class=\"tk-workspace-confirm-dialog__message\" [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"tk-workspace-confirm-dialog__actions\">\r\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\r\n {{ confirmButtonText }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspace-confirm-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative;padding:0 0 30px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 24px}.tk-workspace-confirm-dialog__content{color:#000000b3;font-size:14px;margin:0 auto 15px;padding:0}.tk-workspace-confirm-dialog__message{font-weight:500}.tk-workspace-confirm-dialog__message p{padding:15px 0 0;margin:0}.tk-workspace-confirm-dialog__actions{gap:16px;display:flex;justify-content:flex-end;margin:0}.tk-workspace-confirm-dialog__button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-workspace-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:white}.tk-workspace-confirm-dialog__button--confirm{background:black;color:#fff}\n"], dependencies: [{ kind: "directive", type:
|
|
119
|
+
WorkspaceConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceConfirmDialogComponent, selector: "tk-workspace-confirm-dialog", ngImport: i0, template: "<div id=\"tk-workspace-confirm-dialog\" class=\"tk-workspace-confirm-dialog\" aria-labelledby=\"tk-workspace-confirm-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"tk-workspace-confirm-dialog__title\">{{ title }}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"tk-workspace-confirm-dialog__content\">\r\n <div class=\"tk-workspace-confirm-dialog__message\" [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"tk-workspace-confirm-dialog__actions\">\r\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\r\n {{ confirmButtonText }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspace-confirm-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative;padding:0 0 30px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 24px}.tk-workspace-confirm-dialog__content{color:#000000b3;font-size:14px;margin:0 auto 15px;padding:0}.tk-workspace-confirm-dialog__message{font-weight:500}.tk-workspace-confirm-dialog__message p{padding:15px 0 0;margin:0}.tk-workspace-confirm-dialog__actions{gap:16px;display:flex;justify-content:flex-end;margin:0}.tk-workspace-confirm-dialog__button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-workspace-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:white}.tk-workspace-confirm-dialog__button--confirm{background:black;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
118
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceConfirmDialogComponent, decorators: [{
|
|
119
121
|
type: Component,
|
|
120
122
|
args: [{ selector: 'tk-workspace-confirm-dialog', encapsulation: ViewEncapsulation.None, template: "<div id=\"tk-workspace-confirm-dialog\" class=\"tk-workspace-confirm-dialog\" aria-labelledby=\"tk-workspace-confirm-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"tk-workspace-confirm-dialog__title\">{{ title }}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"tk-workspace-confirm-dialog__content\">\r\n <div class=\"tk-workspace-confirm-dialog__message\" [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"tk-workspace-confirm-dialog__actions\">\r\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"tk-workspace-confirm-dialog__button tk-workspace-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\r\n {{ confirmButtonText }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspace-confirm-dialog{min-height:150px;width:400px;box-sizing:border-box;position:relative;padding:0 0 30px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 24px}.tk-workspace-confirm-dialog__content{color:#000000b3;font-size:14px;margin:0 auto 15px;padding:0}.tk-workspace-confirm-dialog__message{font-weight:500}.tk-workspace-confirm-dialog__message p{padding:15px 0 0;margin:0}.tk-workspace-confirm-dialog__actions{gap:16px;display:flex;justify-content:flex-end;margin:0}.tk-workspace-confirm-dialog__button{height:32px;padding:10px 12px;text-align:center;border-radius:50px;box-shadow:none;line-height:11px;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-workspace-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:white}.tk-workspace-confirm-dialog__button--confirm{background:black;color:#fff}\n"] }]
|
|
@@ -179,14 +181,14 @@ class APIService {
|
|
|
179
181
|
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
|
180
182
|
}
|
|
181
183
|
}
|
|
182
|
-
APIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, deps: [{ token: i1$
|
|
184
|
+
APIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
183
185
|
APIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, providedIn: 'root' });
|
|
184
186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: APIService, decorators: [{
|
|
185
187
|
type: Injectable,
|
|
186
188
|
args: [{
|
|
187
189
|
providedIn: 'root'
|
|
188
190
|
}]
|
|
189
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
191
|
+
}], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
|
|
190
192
|
|
|
191
193
|
class ApiWebexService extends APIService {
|
|
192
194
|
}
|
|
@@ -306,6 +308,7 @@ function mergeCucmAndWebexWorkspaces(cucmWorkspaces, webexItems, webexWorkspaces
|
|
|
306
308
|
}
|
|
307
309
|
});
|
|
308
310
|
webexWorkspaces.forEach((webexWorkspace, webexIndex) => {
|
|
311
|
+
var _a;
|
|
309
312
|
const matchedMac = (webexItems[webexIndex].workspaceDevices || [])
|
|
310
313
|
.map(workspaceDevice => toMacKey(workspaceDevice.mac))
|
|
311
314
|
.find(key => key && cucmIndexByMac.has(key));
|
|
@@ -316,7 +319,7 @@ function mergeCucmAndWebexWorkspaces(cucmWorkspaces, webexItems, webexWorkspaces
|
|
|
316
319
|
const cucmIndex = cucmIndexByMac.get(matchedMac);
|
|
317
320
|
cucmIndexByMac.delete(matchedMac);
|
|
318
321
|
const cucmWorkspace = result[cucmIndex];
|
|
319
|
-
result[cucmIndex] = Object.assign(Object.assign(Object.assign({}, cucmWorkspace), webexWorkspace), { displayName: cucmWorkspace.displayName, device: Object.assign(Object.assign({}, mergeDevices(cucmWorkspace.device, webexWorkspace.device)), { name: cucmWorkspace.device.name, newName: cucmWorkspace.device.newName }), isHybrid: true, cucmDeviceName: cucmWorkspace.cucmDeviceName });
|
|
322
|
+
result[cucmIndex] = Object.assign(Object.assign(Object.assign({}, cucmWorkspace), webexWorkspace), { displayName: cucmWorkspace.displayName, location: webexWorkspace.location || cucmWorkspace.location, siteId: (_a = webexWorkspace.siteId) !== null && _a !== void 0 ? _a : cucmWorkspace.siteId, device: Object.assign(Object.assign({}, mergeDevices(cucmWorkspace.device, webexWorkspace.device)), { name: cucmWorkspace.device.name, newName: cucmWorkspace.device.newName }), isHybrid: true, cucmDeviceName: cucmWorkspace.cucmDeviceName });
|
|
320
323
|
});
|
|
321
324
|
return result;
|
|
322
325
|
}
|
|
@@ -412,6 +415,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
412
415
|
}]
|
|
413
416
|
}], ctorParameters: function () { return [{ type: ApiWebexService }]; } });
|
|
414
417
|
|
|
418
|
+
// Raw shapes returned by /api/search/quicknonuserdevices (a paginated CUCM
|
|
419
|
+
// non-user/shared device search, reused here as the "Workspaces" list).
|
|
420
|
+
const WORKSPACE_PROVISIONING_TYPE_OPTIONS = [
|
|
421
|
+
{ value: 'webex-di', label: 'Webex Calling DI' },
|
|
422
|
+
{ value: 'webex', label: 'Webex Calling' },
|
|
423
|
+
{ value: 'hybrid', label: 'Hybrid' },
|
|
424
|
+
];
|
|
425
|
+
|
|
415
426
|
class WorkspacesFiltersComponent {
|
|
416
427
|
constructor() {
|
|
417
428
|
this.resultCount = 0;
|
|
@@ -420,10 +431,13 @@ class WorkspacesFiltersComponent {
|
|
|
420
431
|
this.searchChange = new EventEmitter();
|
|
421
432
|
this.typeChange = new EventEmitter();
|
|
422
433
|
this.locationChange = new EventEmitter();
|
|
434
|
+
this.provisioningTypeChange = new EventEmitter();
|
|
423
435
|
this.addWorkspace = new EventEmitter();
|
|
424
436
|
this.searchTerm = '';
|
|
425
437
|
this.selectedType = '';
|
|
426
438
|
this.selectedLocation = '';
|
|
439
|
+
this.selectedProvisioningType = '';
|
|
440
|
+
this.provisioningTypeOptions = WORKSPACE_PROVISIONING_TYPE_OPTIONS;
|
|
427
441
|
}
|
|
428
442
|
onSearchInputChange(event) {
|
|
429
443
|
this.searchTerm = event.target.value;
|
|
@@ -437,15 +451,19 @@ class WorkspacesFiltersComponent {
|
|
|
437
451
|
this.selectedLocation = value;
|
|
438
452
|
this.locationChange.emit(value);
|
|
439
453
|
}
|
|
454
|
+
onProvisioningTypeChange(value) {
|
|
455
|
+
this.selectedProvisioningType = value;
|
|
456
|
+
this.provisioningTypeChange.emit(value);
|
|
457
|
+
}
|
|
440
458
|
onAddWorkspace() {
|
|
441
459
|
this.addWorkspace.emit();
|
|
442
460
|
}
|
|
443
461
|
}
|
|
444
462
|
WorkspacesFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
445
|
-
WorkspacesFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: { resultCount: "resultCount", typeOptions: "typeOptions", locationOptions: "locationOptions" }, outputs: { searchChange: "searchChange", typeChange: "typeChange", locationChange: "locationChange", addWorkspace: "addWorkspace" }, ngImport: i0, template: "<div class=\"tk-workspaces-filters\">\r\n <div class=\"tk-workspaces-filters__search\">\r\n <input\r\n class=\"tk-workspaces-filters__search-input blue-input\"\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearchInputChange($event)\"\r\n />\r\n <mat-icon class=\"tk-workspaces-filters__search-icon\">search</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__filters\">\r\n <span class=\"tk-workspaces-filters__filters-label\">Filters:</span>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedType\"\r\n (ngModelChange)=\"onTypeChange($event)\">\r\n <option value=\"\">General</option>\r\n <option *ngFor=\"let type of typeOptions\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedLocation\"\r\n (ngModelChange)=\"onLocationChange($event)\">\r\n <option value=\"\">Location</option>\r\n <option *ngFor=\"let location of locationOptions\" [value]=\"location\">{{ location }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <span class=\"tk-workspaces-filters__count\">{{ resultCount }} workspace{{ resultCount === 1 ? '' : 's' }} in total</span>\r\n\r\n <button type=\"button\" class=\"tk-workspaces-filters__add-button\" [matMenuTriggerFor]=\"addMenu\">\r\n Add workspace\r\n <mat-icon class=\"tk-workspaces-filters__add-icon\">expand_more</mat-icon>\r\n </button>\r\n\r\n <mat-menu #addMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item (click)=\"onAddWorkspace()\">Add workspace</button>\r\n <button type=\"button\" mat-menu-item disabled>Import workspaces</button>\r\n </mat-menu>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;font-size:.875rem;font-weight:400;color:#000000f2}.tk-workspaces-filters__search{position:relative;min-width:14rem}.tk-workspaces-filters__search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__search-input{width:100%;height:34px;padding:6px 12px 6px 44px;border-radius:.5rem;outline:none;box-sizing:border-box;font-family:inherit;font-size:1rem;color:#000000f2;background:#fff}.tk-workspaces-filters__search-input::placeholder{color:#0006}.tk-workspaces-filters__filters{display:flex;align-items:center;gap:.5rem}.tk-workspaces-filters__filters-label{font-size:.875rem;color:#000000f2;white-space:nowrap}.tk-workspaces-filters__select-wrap{position:relative;display:flex;align-items:center}.tk-workspaces-filters__select{appearance:none;height:34px;padding:6px 32px 6px 12px;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:.5rem;font-family:inherit;font-size:1rem;color:#222;cursor:pointer;box-sizing:border-box}.tk-workspaces-filters__select:focus{outline:none;border-color:#0006}.tk-workspaces-filters__select-icon{position:absolute;right:.375rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__count{margin-left:auto;font-size:.875rem;color:#0009;white-space:nowrap;font-weight:400;flex:1}.tk-workspaces-filters__add-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap}.tk-workspaces-filters__add-button:hover{background:#222}.tk-workspaces-filters__add-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}\n"], dependencies: [{ kind: "directive", type:
|
|
463
|
+
WorkspacesFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: { resultCount: "resultCount", typeOptions: "typeOptions", locationOptions: "locationOptions" }, outputs: { searchChange: "searchChange", typeChange: "typeChange", locationChange: "locationChange", provisioningTypeChange: "provisioningTypeChange", addWorkspace: "addWorkspace" }, ngImport: i0, template: "<div class=\"tk-workspaces-filters\">\r\n <div class=\"tk-workspaces-filters__search\">\r\n <input\r\n class=\"tk-workspaces-filters__search-input blue-input\"\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearchInputChange($event)\"\r\n />\r\n <mat-icon class=\"tk-workspaces-filters__search-icon\">search</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__filters\">\r\n <span class=\"tk-workspaces-filters__filters-label\">Filters:</span>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedType\"\r\n (ngModelChange)=\"onTypeChange($event)\">\r\n <option value=\"\">General</option>\r\n <option *ngFor=\"let type of typeOptions\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedLocation\"\r\n (ngModelChange)=\"onLocationChange($event)\">\r\n <option value=\"\">Location</option>\r\n <option *ngFor=\"let location of locationOptions\" [value]=\"location\">{{ location }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedProvisioningType\"\r\n (ngModelChange)=\"onProvisioningTypeChange($event)\">\r\n <option value=\"\">Provisioning type</option>\r\n <option *ngFor=\"let option of provisioningTypeOptions\" [value]=\"option.value\">{{ option.label }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <span class=\"tk-workspaces-filters__count\">{{ resultCount }} workspace{{ resultCount === 1 ? '' : 's' }} in total</span>\r\n\r\n <button type=\"button\" class=\"tk-workspaces-filters__add-button\" [matMenuTriggerFor]=\"addMenu\">\r\n Add workspace\r\n <mat-icon class=\"tk-workspaces-filters__add-icon\">expand_more</mat-icon>\r\n </button>\r\n\r\n <mat-menu #addMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item (click)=\"onAddWorkspace()\">Add workspace</button>\r\n <button type=\"button\" mat-menu-item disabled>Import workspaces</button>\r\n </mat-menu>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;font-size:.875rem;font-weight:400;color:#000000f2}.tk-workspaces-filters__search{position:relative;min-width:14rem}.tk-workspaces-filters__search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__search-input{width:100%;height:34px;padding:6px 12px 6px 44px;border-radius:.5rem;outline:none;box-sizing:border-box;font-family:inherit;font-size:1rem;color:#000000f2;background:#fff}.tk-workspaces-filters__search-input::placeholder{color:#0006}.tk-workspaces-filters__filters{display:flex;align-items:center;gap:.5rem}.tk-workspaces-filters__filters-label{font-size:.875rem;color:#000000f2;white-space:nowrap}.tk-workspaces-filters__select-wrap{position:relative;display:flex;align-items:center}.tk-workspaces-filters__select{appearance:none;height:34px;padding:6px 32px 6px 12px;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:.5rem;font-family:inherit;font-size:1rem;color:#222;cursor:pointer;box-sizing:border-box}.tk-workspaces-filters__select:focus{outline:none;border-color:#0006}.tk-workspaces-filters__select-icon{position:absolute;right:.375rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__count{margin-left:auto;font-size:.875rem;color:#0009;white-space:nowrap;font-weight:400;flex:1}.tk-workspaces-filters__add-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap}.tk-workspaces-filters__add-button:hover{background:#222}.tk-workspaces-filters__add-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
|
|
446
464
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesFiltersComponent, decorators: [{
|
|
447
465
|
type: Component,
|
|
448
|
-
args: [{ selector: 'tk-workspaces-filters', template: "<div class=\"tk-workspaces-filters\">\r\n <div class=\"tk-workspaces-filters__search\">\r\n <input\r\n class=\"tk-workspaces-filters__search-input blue-input\"\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearchInputChange($event)\"\r\n />\r\n <mat-icon class=\"tk-workspaces-filters__search-icon\">search</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__filters\">\r\n <span class=\"tk-workspaces-filters__filters-label\">Filters:</span>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedType\"\r\n (ngModelChange)=\"onTypeChange($event)\">\r\n <option value=\"\">General</option>\r\n <option *ngFor=\"let type of typeOptions\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedLocation\"\r\n (ngModelChange)=\"onLocationChange($event)\">\r\n <option value=\"\">Location</option>\r\n <option *ngFor=\"let location of locationOptions\" [value]=\"location\">{{ location }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <span class=\"tk-workspaces-filters__count\">{{ resultCount }} workspace{{ resultCount === 1 ? '' : 's' }} in total</span>\r\n\r\n <button type=\"button\" class=\"tk-workspaces-filters__add-button\" [matMenuTriggerFor]=\"addMenu\">\r\n Add workspace\r\n <mat-icon class=\"tk-workspaces-filters__add-icon\">expand_more</mat-icon>\r\n </button>\r\n\r\n <mat-menu #addMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item (click)=\"onAddWorkspace()\">Add workspace</button>\r\n <button type=\"button\" mat-menu-item disabled>Import workspaces</button>\r\n </mat-menu>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;font-size:.875rem;font-weight:400;color:#000000f2}.tk-workspaces-filters__search{position:relative;min-width:14rem}.tk-workspaces-filters__search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__search-input{width:100%;height:34px;padding:6px 12px 6px 44px;border-radius:.5rem;outline:none;box-sizing:border-box;font-family:inherit;font-size:1rem;color:#000000f2;background:#fff}.tk-workspaces-filters__search-input::placeholder{color:#0006}.tk-workspaces-filters__filters{display:flex;align-items:center;gap:.5rem}.tk-workspaces-filters__filters-label{font-size:.875rem;color:#000000f2;white-space:nowrap}.tk-workspaces-filters__select-wrap{position:relative;display:flex;align-items:center}.tk-workspaces-filters__select{appearance:none;height:34px;padding:6px 32px 6px 12px;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:.5rem;font-family:inherit;font-size:1rem;color:#222;cursor:pointer;box-sizing:border-box}.tk-workspaces-filters__select:focus{outline:none;border-color:#0006}.tk-workspaces-filters__select-icon{position:absolute;right:.375rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__count{margin-left:auto;font-size:.875rem;color:#0009;white-space:nowrap;font-weight:400;flex:1}.tk-workspaces-filters__add-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap}.tk-workspaces-filters__add-button:hover{background:#222}.tk-workspaces-filters__add-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}\n"] }]
|
|
466
|
+
args: [{ selector: 'tk-workspaces-filters', template: "<div class=\"tk-workspaces-filters\">\r\n <div class=\"tk-workspaces-filters__search\">\r\n <input\r\n class=\"tk-workspaces-filters__search-input blue-input\"\r\n type=\"text\"\r\n placeholder=\"Search\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearchInputChange($event)\"\r\n />\r\n <mat-icon class=\"tk-workspaces-filters__search-icon\">search</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__filters\">\r\n <span class=\"tk-workspaces-filters__filters-label\">Filters:</span>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedType\"\r\n (ngModelChange)=\"onTypeChange($event)\">\r\n <option value=\"\">General</option>\r\n <option *ngFor=\"let type of typeOptions\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedLocation\"\r\n (ngModelChange)=\"onLocationChange($event)\">\r\n <option value=\"\">Location</option>\r\n <option *ngFor=\"let location of locationOptions\" [value]=\"location\">{{ location }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n\r\n <div class=\"tk-workspaces-filters__select-wrap\">\r\n <select\r\n class=\"tk-workspaces-filters__select\"\r\n [ngModel]=\"selectedProvisioningType\"\r\n (ngModelChange)=\"onProvisioningTypeChange($event)\">\r\n <option value=\"\">Provisioning type</option>\r\n <option *ngFor=\"let option of provisioningTypeOptions\" [value]=\"option.value\">{{ option.label }}</option>\r\n </select>\r\n <mat-icon class=\"tk-workspaces-filters__select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <span class=\"tk-workspaces-filters__count\">{{ resultCount }} workspace{{ resultCount === 1 ? '' : 's' }} in total</span>\r\n\r\n <button type=\"button\" class=\"tk-workspaces-filters__add-button\" [matMenuTriggerFor]=\"addMenu\">\r\n Add workspace\r\n <mat-icon class=\"tk-workspaces-filters__add-icon\">expand_more</mat-icon>\r\n </button>\r\n\r\n <mat-menu #addMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item (click)=\"onAddWorkspace()\">Add workspace</button>\r\n <button type=\"button\" mat-menu-item disabled>Import workspaces</button>\r\n </mat-menu>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;font-size:.875rem;font-weight:400;color:#000000f2}.tk-workspaces-filters__search{position:relative;min-width:14rem}.tk-workspaces-filters__search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__search-input{width:100%;height:34px;padding:6px 12px 6px 44px;border-radius:.5rem;outline:none;box-sizing:border-box;font-family:inherit;font-size:1rem;color:#000000f2;background:#fff}.tk-workspaces-filters__search-input::placeholder{color:#0006}.tk-workspaces-filters__filters{display:flex;align-items:center;gap:.5rem}.tk-workspaces-filters__filters-label{font-size:.875rem;color:#000000f2;white-space:nowrap}.tk-workspaces-filters__select-wrap{position:relative;display:flex;align-items:center}.tk-workspaces-filters__select{appearance:none;height:34px;padding:6px 32px 6px 12px;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:.5rem;font-family:inherit;font-size:1rem;color:#222;cursor:pointer;box-sizing:border-box}.tk-workspaces-filters__select:focus{outline:none;border-color:#0006}.tk-workspaces-filters__select-icon{position:absolute;right:.375rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-workspaces-filters__count{margin-left:auto;font-size:.875rem;color:#0009;white-space:nowrap;font-weight:400;flex:1}.tk-workspaces-filters__add-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap}.tk-workspaces-filters__add-button:hover{background:#222}.tk-workspaces-filters__add-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}\n"] }]
|
|
449
467
|
}], propDecorators: { resultCount: [{
|
|
450
468
|
type: Input
|
|
451
469
|
}], typeOptions: [{
|
|
@@ -458,6 +476,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
458
476
|
type: Output
|
|
459
477
|
}], locationChange: [{
|
|
460
478
|
type: Output
|
|
479
|
+
}], provisioningTypeChange: [{
|
|
480
|
+
type: Output
|
|
461
481
|
}], addWorkspace: [{
|
|
462
482
|
type: Output
|
|
463
483
|
}] } });
|
|
@@ -484,8 +504,8 @@ class WorkspacesTableComponent {
|
|
|
484
504
|
this.pageSize = 10;
|
|
485
505
|
this.pageSizeOptions = [10, 25, 50, 100];
|
|
486
506
|
this.pendingWorkspaceIds = new Set();
|
|
507
|
+
this.isLoading = false;
|
|
487
508
|
this.openWorkspace = new EventEmitter();
|
|
488
|
-
this.licenseWithHybrid = new EventEmitter();
|
|
489
509
|
this.migrateToMT = new EventEmitter();
|
|
490
510
|
this.enableWebexCalling = new EventEmitter();
|
|
491
511
|
this.migrateToUCM = new EventEmitter();
|
|
@@ -565,10 +585,10 @@ class WorkspacesTableComponent {
|
|
|
565
585
|
}
|
|
566
586
|
}
|
|
567
587
|
WorkspacesTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
568
|
-
WorkspacesTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: { workspaces: "workspaces", total: "total", pageIndex: "pageIndex", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", pendingWorkspaceIds: "pendingWorkspaceIds" }, outputs: { openWorkspace: "openWorkspace", licenseWithHybrid: "licenseWithHybrid", migrateToMT: "migrateToMT", enableWebexCalling: "enableWebexCalling", migrateToUCM: "migrateToUCM", addDevice: "addDevice", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\"\r\n [class.tk-workspaces-table__row--disabled]=\"!canOpenWorkspace(workspace)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ getDisplayName(workspace) }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n <div class=\"tk-workspaces-table__device-tooltip\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"tk-workspaces-table__device-tooltip-title\">{{ device.label }}</div>\r\n <div class=\"tk-workspaces-table__device-tooltip-status\">\r\n <span\r\n class=\"tk-workspaces-table__device-tooltip-status-dot\"\r\n [class.tk-workspaces-table__device-tooltip-status-dot--active]=\"workspace.status === 'active'\"></span>\r\n {{ workspace.statusLabel }}\r\n </div>\r\n <div class=\"tk-workspaces-table__device-tooltip-divider\"></div>\r\n <div class=\"tk-workspaces-table__device-tooltip-mac\">\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-label\">MAC address</span>\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-value\">{{ device.mac }}</span>\r\n <button\r\n *ngIf=\"device.mac\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-tooltip-copy\"\r\n (click)=\"onCopyMac(device.mac)\">\r\n <img class=\"tk-workspaces-table__device-tooltip-copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </button>\r\n </div>\r\n </div>\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"licenseWithHybrid.emit(workspace)\">\r\n License with Cloud Intelligence\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate Workspace To Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled td{cursor:default}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled:hover td{background:#ffffff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled.tk-workspaces-table__row--selected:hover td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-card:hover .tk-workspaces-table__device-tooltip{visibility:visible;opacity:1}.tk-workspaces-table__device-tooltip{position:absolute;bottom:calc(100% + .75rem);left:50%;transform:translate(-50%);z-index:20;visibility:hidden;opacity:0;transition:opacity .15s ease;border:1px solid #d6d6d6;min-width:16rem;padding:.75rem;border-radius:.215rem;background:#ededed;box-shadow:0 2px 12px #0000002e;font-size:.8125rem;white-space:normal;cursor:default}.tk-workspaces-table__device-tooltip:before,.tk-workspaces-table__device-tooltip:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-style:solid;border-color:transparent}.tk-workspaces-table__device-tooltip:before{border-width:9px 8px 0;border-top-color:#d6d6d6}.tk-workspaces-table__device-tooltip:after{margin-top:-1px;border-width:8px 7px 0;border-top-color:#ededed}.tk-workspaces-table__device-tooltip-title{font-weight:600;color:#2e2e2e;font-size:1rem}.tk-workspaces-table__device-tooltip-status{display:flex;align-items:center;gap:.75rem;margin-top:.375rem;color:#1c1c1c;font-size:.875rem}.tk-workspaces-table__device-tooltip-status-dot{width:.438rem;height:.438rem;border-radius:50%;background:#707070;flex-shrink:0}.tk-workspaces-table__device-tooltip-status-dot--active{background:#1d805f}.tk-workspaces-table__device-tooltip-divider{margin:.825rem 0 1rem;border-top:1px solid #a8a8a8}.tk-workspaces-table__device-tooltip-mac{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.tk-workspaces-table__device-tooltip-mac-label{color:#0009}.tk-workspaces-table__device-tooltip-mac-value{font-weight:500;color:#000000f2}.tk-workspaces-table__device-tooltip-copy{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.tk-workspaces-table__device-tooltip-copy-icon{width:.875rem;height:.875rem;opacity:.6}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;block-size:62px;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
588
|
+
WorkspacesTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: { workspaces: "workspaces", total: "total", pageIndex: "pageIndex", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", pendingWorkspaceIds: "pendingWorkspaceIds", isLoading: "isLoading" }, outputs: { openWorkspace: "openWorkspace", migrateToMT: "migrateToMT", enableWebexCalling: "enableWebexCalling", migrateToUCM: "migrateToUCM", addDevice: "addDevice", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\"\r\n [class.tk-workspaces-table__row--disabled]=\"!canOpenWorkspace(workspace)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ getDisplayName(workspace) }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n <div class=\"tk-workspaces-table__device-tooltip\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"tk-workspaces-table__device-tooltip-title\">{{ device.label }}</div>\r\n <div class=\"tk-workspaces-table__device-tooltip-status\">\r\n <span\r\n class=\"tk-workspaces-table__device-tooltip-status-dot\"\r\n [class.tk-workspaces-table__device-tooltip-status-dot--active]=\"workspace.status === 'active'\"></span>\r\n {{ workspace.statusLabel }}\r\n </div>\r\n <div class=\"tk-workspaces-table__device-tooltip-divider\"></div>\r\n <div class=\"tk-workspaces-table__device-tooltip-mac\">\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-label\">MAC address</span>\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-value\">{{ device.mac }}</span>\r\n <button\r\n *ngIf=\"device.mac\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-tooltip-copy\"\r\n (click)=\"onCopyMac(device.mac)\">\r\n <img class=\"tk-workspaces-table__device-tooltip-copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </button>\r\n </div>\r\n </div>\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <div class=\"spinner-wrapper\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </div>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate Workspace To Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!isLoading && !workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled td{cursor:default}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled:hover td{background:#ffffff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled.tk-workspaces-table__row--selected:hover td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-card:hover .tk-workspaces-table__device-tooltip{visibility:visible;opacity:1}.tk-workspaces-table__device-tooltip{position:absolute;bottom:calc(100% + .75rem);left:50%;transform:translate(-50%);z-index:20;visibility:hidden;opacity:0;transition:opacity .15s ease;border:1px solid #d6d6d6;min-width:16rem;padding:.75rem;border-radius:.215rem;background:#ededed;box-shadow:0 2px 12px #0000002e;font-size:.8125rem;white-space:normal;cursor:default}.tk-workspaces-table__device-tooltip:before,.tk-workspaces-table__device-tooltip:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-style:solid;border-color:transparent}.tk-workspaces-table__device-tooltip:before{border-width:9px 8px 0;border-top-color:#d6d6d6}.tk-workspaces-table__device-tooltip:after{margin-top:-1px;border-width:8px 7px 0;border-top-color:#ededed}.tk-workspaces-table__device-tooltip-title{font-weight:600;color:#2e2e2e;font-size:1rem}.tk-workspaces-table__device-tooltip-status{display:flex;align-items:center;gap:.75rem;margin-top:.375rem;color:#1c1c1c;font-size:.875rem}.tk-workspaces-table__device-tooltip-status-dot{width:.438rem;height:.438rem;border-radius:50%;background:#707070;flex-shrink:0}.tk-workspaces-table__device-tooltip-status-dot--active{background:#1d805f}.tk-workspaces-table__device-tooltip-divider{margin:.825rem 0 1rem;border-top:1px solid #a8a8a8}.tk-workspaces-table__device-tooltip-mac{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.tk-workspaces-table__device-tooltip-mac-label{color:#0009}.tk-workspaces-table__device-tooltip-mac-value{font-weight:500;color:#000000f2}.tk-workspaces-table__device-tooltip-copy{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.tk-workspaces-table__device-tooltip-copy-icon{width:.875rem;height:.875rem;opacity:.6}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;block-size:62px;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
569
589
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesTableComponent, decorators: [{
|
|
570
590
|
type: Component,
|
|
571
|
-
args: [{ selector: 'tk-workspaces-table', template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\"\r\n [class.tk-workspaces-table__row--disabled]=\"!canOpenWorkspace(workspace)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ getDisplayName(workspace) }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n <div class=\"tk-workspaces-table__device-tooltip\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"tk-workspaces-table__device-tooltip-title\">{{ device.label }}</div>\r\n <div class=\"tk-workspaces-table__device-tooltip-status\">\r\n <span\r\n class=\"tk-workspaces-table__device-tooltip-status-dot\"\r\n [class.tk-workspaces-table__device-tooltip-status-dot--active]=\"workspace.status === 'active'\"></span>\r\n {{ workspace.statusLabel }}\r\n </div>\r\n <div class=\"tk-workspaces-table__device-tooltip-divider\"></div>\r\n <div class=\"tk-workspaces-table__device-tooltip-mac\">\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-label\">MAC address</span>\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-value\">{{ device.mac }}</span>\r\n <button\r\n *ngIf=\"device.mac\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-tooltip-copy\"\r\n (click)=\"onCopyMac(device.mac)\">\r\n <img class=\"tk-workspaces-table__device-tooltip-copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </button>\r\n </div>\r\n </div>\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"licenseWithHybrid.emit(workspace)\">\r\n License with Cloud Intelligence\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate Workspace To Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled td{cursor:default}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled:hover td{background:#ffffff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled.tk-workspaces-table__row--selected:hover td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-card:hover .tk-workspaces-table__device-tooltip{visibility:visible;opacity:1}.tk-workspaces-table__device-tooltip{position:absolute;bottom:calc(100% + .75rem);left:50%;transform:translate(-50%);z-index:20;visibility:hidden;opacity:0;transition:opacity .15s ease;border:1px solid #d6d6d6;min-width:16rem;padding:.75rem;border-radius:.215rem;background:#ededed;box-shadow:0 2px 12px #0000002e;font-size:.8125rem;white-space:normal;cursor:default}.tk-workspaces-table__device-tooltip:before,.tk-workspaces-table__device-tooltip:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-style:solid;border-color:transparent}.tk-workspaces-table__device-tooltip:before{border-width:9px 8px 0;border-top-color:#d6d6d6}.tk-workspaces-table__device-tooltip:after{margin-top:-1px;border-width:8px 7px 0;border-top-color:#ededed}.tk-workspaces-table__device-tooltip-title{font-weight:600;color:#2e2e2e;font-size:1rem}.tk-workspaces-table__device-tooltip-status{display:flex;align-items:center;gap:.75rem;margin-top:.375rem;color:#1c1c1c;font-size:.875rem}.tk-workspaces-table__device-tooltip-status-dot{width:.438rem;height:.438rem;border-radius:50%;background:#707070;flex-shrink:0}.tk-workspaces-table__device-tooltip-status-dot--active{background:#1d805f}.tk-workspaces-table__device-tooltip-divider{margin:.825rem 0 1rem;border-top:1px solid #a8a8a8}.tk-workspaces-table__device-tooltip-mac{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.tk-workspaces-table__device-tooltip-mac-label{color:#0009}.tk-workspaces-table__device-tooltip-mac-value{font-weight:500;color:#000000f2}.tk-workspaces-table__device-tooltip-copy{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.tk-workspaces-table__device-tooltip-copy-icon{width:.875rem;height:.875rem;opacity:.6}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;block-size:62px;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"] }]
|
|
591
|
+
args: [{ selector: 'tk-workspaces-table', template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\"\r\n [class.tk-workspaces-table__row--disabled]=\"!canOpenWorkspace(workspace)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ getDisplayName(workspace) }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">·</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n <div class=\"tk-workspaces-table__device-tooltip\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"tk-workspaces-table__device-tooltip-title\">{{ device.label }}</div>\r\n <div class=\"tk-workspaces-table__device-tooltip-status\">\r\n <span\r\n class=\"tk-workspaces-table__device-tooltip-status-dot\"\r\n [class.tk-workspaces-table__device-tooltip-status-dot--active]=\"workspace.status === 'active'\"></span>\r\n {{ workspace.statusLabel }}\r\n </div>\r\n <div class=\"tk-workspaces-table__device-tooltip-divider\"></div>\r\n <div class=\"tk-workspaces-table__device-tooltip-mac\">\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-label\">MAC address</span>\r\n <span class=\"tk-workspaces-table__device-tooltip-mac-value\">{{ device.mac }}</span>\r\n <button\r\n *ngIf=\"device.mac\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-tooltip-copy\"\r\n (click)=\"onCopyMac(device.mac)\">\r\n <img class=\"tk-workspaces-table__device-tooltip-copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </button>\r\n </div>\r\n </div>\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <div class=\"spinner-wrapper\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </div>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate Workspace To Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!isLoading && !workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled td{cursor:default}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled:hover td{background:#ffffff}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--disabled.tk-workspaces-table__row--selected:hover td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-card:hover .tk-workspaces-table__device-tooltip{visibility:visible;opacity:1}.tk-workspaces-table__device-tooltip{position:absolute;bottom:calc(100% + .75rem);left:50%;transform:translate(-50%);z-index:20;visibility:hidden;opacity:0;transition:opacity .15s ease;border:1px solid #d6d6d6;min-width:16rem;padding:.75rem;border-radius:.215rem;background:#ededed;box-shadow:0 2px 12px #0000002e;font-size:.8125rem;white-space:normal;cursor:default}.tk-workspaces-table__device-tooltip:before,.tk-workspaces-table__device-tooltip:after{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);border-style:solid;border-color:transparent}.tk-workspaces-table__device-tooltip:before{border-width:9px 8px 0;border-top-color:#d6d6d6}.tk-workspaces-table__device-tooltip:after{margin-top:-1px;border-width:8px 7px 0;border-top-color:#ededed}.tk-workspaces-table__device-tooltip-title{font-weight:600;color:#2e2e2e;font-size:1rem}.tk-workspaces-table__device-tooltip-status{display:flex;align-items:center;gap:.75rem;margin-top:.375rem;color:#1c1c1c;font-size:.875rem}.tk-workspaces-table__device-tooltip-status-dot{width:.438rem;height:.438rem;border-radius:50%;background:#707070;flex-shrink:0}.tk-workspaces-table__device-tooltip-status-dot--active{background:#1d805f}.tk-workspaces-table__device-tooltip-divider{margin:.825rem 0 1rem;border-top:1px solid #a8a8a8}.tk-workspaces-table__device-tooltip-mac{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.tk-workspaces-table__device-tooltip-mac-label{color:#0009}.tk-workspaces-table__device-tooltip-mac-value{font-weight:500;color:#000000f2}.tk-workspaces-table__device-tooltip-copy{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:none;cursor:pointer}.tk-workspaces-table__device-tooltip-copy-icon{width:.875rem;height:.875rem;opacity:.6}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;block-size:62px;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"] }]
|
|
572
592
|
}], propDecorators: { workspaces: [{
|
|
573
593
|
type: Input
|
|
574
594
|
}], total: [{
|
|
@@ -581,10 +601,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
581
601
|
type: Input
|
|
582
602
|
}], pendingWorkspaceIds: [{
|
|
583
603
|
type: Input
|
|
604
|
+
}], isLoading: [{
|
|
605
|
+
type: Input
|
|
584
606
|
}], openWorkspace: [{
|
|
585
607
|
type: Output
|
|
586
|
-
}], licenseWithHybrid: [{
|
|
587
|
-
type: Output
|
|
588
608
|
}], migrateToMT: [{
|
|
589
609
|
type: Output
|
|
590
610
|
}], enableWebexCalling: [{
|
|
@@ -767,17 +787,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
767
787
|
}]
|
|
768
788
|
}], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }]; } });
|
|
769
789
|
|
|
770
|
-
class AppLoaderComponent {
|
|
771
|
-
constructor() {
|
|
772
|
-
}
|
|
773
|
-
}
|
|
774
|
-
AppLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
775
|
-
AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"], dependencies: [{ kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
776
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, decorators: [{
|
|
777
|
-
type: Component,
|
|
778
|
-
args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"] }]
|
|
779
|
-
}], ctorParameters: function () { return []; } });
|
|
780
|
-
|
|
781
790
|
class WorkspaceDeviceDetailComponent {
|
|
782
791
|
constructor() {
|
|
783
792
|
this.device = null;
|
|
@@ -822,10 +831,10 @@ class WorkspaceDeviceDetailComponent {
|
|
|
822
831
|
}
|
|
823
832
|
}
|
|
824
833
|
WorkspaceDeviceDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDeviceDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
825
|
-
WorkspaceDeviceDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceDeviceDetailComponent, selector: "tk-workspace-device-detail", inputs: { workspace: "workspace", device: "device", details: "details", isLoading: "isLoading" }, outputs: { back: "back" }, ngImport: i0, template: "<button type=\"button\" class=\"tk-workspace-device-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Devices\r\n</button>\r\n\r\n<app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n<ng-container *ngIf=\"!isLoading\">\r\n <div class=\"tk-workspace-device-detail__header\">\r\n <img class=\"tk-workspace-device-detail__icon\" [src]=\"deviceIcon\" [alt]=\"deviceLabel\" />\r\n <div class=\"tk-workspace-device-detail__title-block\">\r\n <h1 class=\"tk-workspace-device-detail__name\">{{ deviceLabel }}</h1>\r\n <div class=\"tk-workspace-device-detail__meta\">\r\n <span class=\"tk-workspace-device-detail__meta-pill\">\r\n <span class=\"tk-workspace-device-detail__status-dot\" [class.tk-workspace-device-detail__status-dot--active]=\"isRegistered\"></span>\r\n {{ details?.registrationStatus || 'Not Registered' }}\r\n </span>\r\n <span class=\"tk-workspace-device-detail__meta-sep\"></span>\r\n <span>Phones</span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-device-detail__workspace-link\">{{ workspace.displayName }}</a>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__grid\">\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Details</h2>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.lineCount ?? 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Lines</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.mac || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">MAC address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.hostIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Host IP address</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.remoteIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.managedBy || 'Cisco' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Managed By</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <div class=\"tk-workspace-device-detail__card-header\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Software</h2>\r\n <div class=\"tk-workspace-device-detail__settings-icon-wrapper\">\r\n <img class=\"tk-workspace-device-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareChannel || 'Unknown' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software Channel</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareVersion || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software version</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Tags</h2>\r\n <div class=\"tk-workspace-device-detail__tags\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tk-workspace-device-detail__tag\">\r\n <span>{{ tag }}</span>\r\n <mat-icon class=\"tk-workspace-device-detail__tag-remove\" (click)=\"removeTag(i)\">close</mat-icon>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__tag tk-workspace-device-detail__tag--add\" (click)=\"showTagInput()\">\r\n <mat-icon class=\"tk-workspace-device-detail__tag-add-icon\">add</mat-icon>\r\n Add tag\r\n </button>\r\n <input\r\n *ngIf=\"isAddingTag\"\r\n class=\"tk-workspace-device-detail__tag-input\"\r\n type=\"text\"\r\n placeholder=\"Enter tag...\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onTagInputBlur()\" />\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-device-detail__no-issues\">\r\n <mat-icon class=\"tk-workspace-device-detail__no-issues-icon\">check_circle</mat-icon>\r\n No reported issues at this time\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Hoteling</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">Allow this device to be used as a Hoteling Host by visiting guests.</p>\r\n <div class=\"tk-workspace-device-detail__hoteling-toggle-row\">\r\n <label class=\"tk-workspace-device-detail__toggle\">\r\n <input type=\"checkbox\" [(ngModel)]=\"hotelingEnabled\" />\r\n <span class=\"tk-workspace-device-detail__toggle-slider\"></span>\r\n </label>\r\n <img\r\n class=\"tk-workspace-device-detail__meta-icon\"\r\n src=\"assets/icons/info-circle-regular.svg\"\r\n alt=\"\"\r\n matTooltip=\"Enabling this device for Hoteling means that a guest can log into this host and use this phone as if it were their own.\" />\r\n </div>\r\n <p class=\"tk-workspace-device-detail__hint\">Limit the time a guest can use this phone to</p>\r\n <select class=\"tk-workspace-device-detail__select\" [(ngModel)]=\"guestHoursLimit\">\r\n <option *ngFor=\"let hour of hotelingTimeHours\" [value]=\"hour\">{{ hour }}</option>\r\n </select>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Device Management</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <p class=\"tk-workspace-device-detail__hint\">\r\n To add and remove users and workspaces, select <b>Configure Lines</b>.<br />\r\n To customize the programmable Line Keys, select <b>Configure Layout</b>.<br />\r\n To set up the display settings and dialing options, select <b>Device Settings</b>.\r\n </p>\r\n <div class=\"tk-workspace-device-detail__table-wrapper\">\r\n <table class=\"tk-workspace-device-detail__table\">\r\n <thead>\r\n <tr>\r\n <th>Index #</th>\r\n <th>Name</th>\r\n <th>Number/Extension</th>\r\n <th>Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let line of details?.lines; let i = index\">\r\n <td>{{ i + 1 }}</td>\r\n <td>{{ line.name || 'NA' }}</td>\r\n <td>{{ line.number }}</td>\r\n <td>\r\n <span *ngIf=\"line.registered; else notRegistered\" class=\"tk-workspace-device-detail__registered\">Registered</span>\r\n <ng-template #notRegistered>\r\n <mat-icon class=\"tk-workspace-device-detail__warning-icon\" matTooltip=\"Unregistered\">warning</mat-icon>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!details?.lines?.length\">\r\n <td colspan=\"4\" class=\"tk-workspace-device-detail__table-empty\">No lines configured.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Lines</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Layout</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Settings</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Support</h2>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Meetings & Calls</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Go to troubleshooting</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Logs</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-device-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-device-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-device-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem;position:relative}.tk-workspace-device-detail__icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-device-detail__title-block{flex:1;min-width:0}.tk-workspace-device-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-device-detail__meta{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-device-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-device-detail__meta-sep:before{content:\"\";inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:#00000073}.tk-workspace-device-detail__meta-pill{display:inline-flex;align-items:center;gap:.35rem}.tk-workspace-device-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-device-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-device-detail__status-dot--active{background:#1d805f}.tk-workspace-device-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-device-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-device-detail__workspace-link{position:absolute;top:0;right:0;color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500;align-self:center;margin-top:3rem}.tk-workspace-device-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-device-detail__grid{grid-template-columns:1fr}}.tk-workspace-device-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-device-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-device-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.tk-workspace-device-detail__card-title{margin:0 0 1rem;font-size:1rem;font-weight:500}.tk-workspace-device-detail__card-header .tk-workspace-device-detail__card-title{margin-bottom:0}.tk-workspace-device-detail__settings-icon-wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);cursor:pointer}.tk-workspace-device-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-device-detail__row{display:flex;gap:1.5rem}.tk-workspace-device-detail__row-half{flex:1;display:flex;flex-direction:column;gap:.25rem}.tk-workspace-device-detail__value{font-size:.875rem;font-weight:500;color:#000000f2}.tk-workspace-device-detail__label{font-size:.75rem;color:#0009}.tk-workspace-device-detail__hint{font-size:.8125rem;color:#0009;margin:0 0 .75rem}.tk-workspace-device-detail__tags{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.tk-workspace-device-detail__tag{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border:1px solid rgba(0,0,0,.12);border-radius:6.25rem;font-size:.8125rem;background:#f5f5f5}.tk-workspace-device-detail__tag mat-icon{font-size:1rem;height:1rem;width:1rem;cursor:pointer}.tk-workspace-device-detail__tag--add{background:none;border-style:dashed;cursor:pointer;font-family:inherit;color:#000000f2}.tk-workspace-device-detail__tag-input{border:1px solid rgba(0,0,0,.12);border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit}.tk-workspace-device-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-device-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__hoteling-toggle-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.tk-workspace-device-detail__toggle{position:relative;display:inline-block;width:2.25rem;height:1.25rem}.tk-workspace-device-detail__toggle input{opacity:0;width:0;height:0}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider{background-color:#0353a8}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider:before{transform:translate(1rem)}.tk-workspace-device-detail__toggle-slider{position:absolute;inset:0;background-color:#b3b3b3;border-radius:1.25rem;cursor:pointer;transition:background-color .15s ease}.tk-workspace-device-detail__toggle-slider:before{content:\"\";position:absolute;height:1rem;width:1rem;left:.125rem;top:.125rem;background-color:#fff;border-radius:50%;transition:transform .15s ease}.tk-workspace-device-detail__select{font-family:inherit;font-size:.875rem;padding:.375rem .5rem;border-radius:.25rem;border:1px solid rgba(0,0,0,.12);max-width:8rem}.tk-workspace-device-detail__table-wrapper{overflow-x:auto;margin-bottom:.75rem}.tk-workspace-device-detail__table{width:100%;border-collapse:collapse;font-size:.8125rem}.tk-workspace-device-detail__table th{text-align:left;font-weight:400;color:#0009;padding:.5rem .75rem;background:#ededed;border-bottom:1px solid #e8e8e8}.tk-workspace-device-detail__table td{padding:.5rem .75rem;border-bottom:1px solid #e8e8e8;vertical-align:middle}.tk-workspace-device-detail__table-empty{color:#0009;text-align:center}.tk-workspace-device-detail__registered{color:#1d805f;font-weight:500}.tk-workspace-device-detail__warning-icon{color:#b54708;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__configure-lines{opacity:.4;pointer-events:none}.tk-workspace-device-detail__configure-line{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;font-size:.875rem}.tk-workspace-device-detail__configure-manage{font-weight:500;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }] });
|
|
834
|
+
WorkspaceDeviceDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceDeviceDetailComponent, selector: "tk-workspace-device-detail", inputs: { workspace: "workspace", device: "device", details: "details", isLoading: "isLoading" }, outputs: { back: "back" }, ngImport: i0, template: "<button type=\"button\" class=\"tk-workspace-device-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Devices\r\n</button>\r\n\r\n<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<ng-container *ngIf=\"!isLoading\">\r\n <div class=\"tk-workspace-device-detail__header\">\r\n <img class=\"tk-workspace-device-detail__icon\" [src]=\"deviceIcon\" [alt]=\"deviceLabel\" />\r\n <div class=\"tk-workspace-device-detail__title-block\">\r\n <h1 class=\"tk-workspace-device-detail__name\">{{ deviceLabel }}</h1>\r\n <div class=\"tk-workspace-device-detail__meta\">\r\n <span class=\"tk-workspace-device-detail__meta-pill\">\r\n <span class=\"tk-workspace-device-detail__status-dot\" [class.tk-workspace-device-detail__status-dot--active]=\"isRegistered\"></span>\r\n {{ details?.registrationStatus || 'Not Registered' }}\r\n </span>\r\n <span class=\"tk-workspace-device-detail__meta-sep\"></span>\r\n <span>Phones</span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-device-detail__workspace-link\">{{ workspace.displayName }}</a>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__grid\">\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Details</h2>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.lineCount ?? 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Lines</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.mac || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">MAC address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.hostIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Host IP address</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.remoteIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.managedBy || 'Cisco' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Managed By</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <div class=\"tk-workspace-device-detail__card-header\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Software</h2>\r\n <div class=\"tk-workspace-device-detail__settings-icon-wrapper\">\r\n <img class=\"tk-workspace-device-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareChannel || 'Unknown' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software Channel</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareVersion || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software version</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Tags</h2>\r\n <div class=\"tk-workspace-device-detail__tags\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tk-workspace-device-detail__tag\">\r\n <span>{{ tag }}</span>\r\n <mat-icon class=\"tk-workspace-device-detail__tag-remove\" (click)=\"removeTag(i)\">close</mat-icon>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__tag tk-workspace-device-detail__tag--add\" (click)=\"showTagInput()\">\r\n <mat-icon class=\"tk-workspace-device-detail__tag-add-icon\">add</mat-icon>\r\n Add tag\r\n </button>\r\n <input\r\n *ngIf=\"isAddingTag\"\r\n class=\"tk-workspace-device-detail__tag-input\"\r\n type=\"text\"\r\n placeholder=\"Enter tag...\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onTagInputBlur()\" />\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-device-detail__no-issues\">\r\n <mat-icon class=\"tk-workspace-device-detail__no-issues-icon\">check_circle</mat-icon>\r\n No reported issues at this time\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Hoteling</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">Allow this device to be used as a Hoteling Host by visiting guests.</p>\r\n <div class=\"tk-workspace-device-detail__hoteling-toggle-row\">\r\n <label class=\"tk-workspace-device-detail__toggle\">\r\n <input type=\"checkbox\" [(ngModel)]=\"hotelingEnabled\" />\r\n <span class=\"tk-workspace-device-detail__toggle-slider\"></span>\r\n </label>\r\n <img\r\n class=\"tk-workspace-device-detail__meta-icon\"\r\n src=\"assets/icons/info-circle-regular.svg\"\r\n alt=\"\"\r\n matTooltip=\"Enabling this device for Hoteling means that a guest can log into this host and use this phone as if it were their own.\" />\r\n </div>\r\n <p class=\"tk-workspace-device-detail__hint\">Limit the time a guest can use this phone to</p>\r\n <select class=\"tk-workspace-device-detail__select\" [(ngModel)]=\"guestHoursLimit\">\r\n <option *ngFor=\"let hour of hotelingTimeHours\" [value]=\"hour\">{{ hour }}</option>\r\n </select>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Device Management</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <p class=\"tk-workspace-device-detail__hint\">\r\n To add and remove users and workspaces, select <b>Configure Lines</b>.<br />\r\n To customize the programmable Line Keys, select <b>Configure Layout</b>.<br />\r\n To set up the display settings and dialing options, select <b>Device Settings</b>.\r\n </p>\r\n <div class=\"tk-workspace-device-detail__table-wrapper\">\r\n <table class=\"tk-workspace-device-detail__table\">\r\n <thead>\r\n <tr>\r\n <th>Index #</th>\r\n <th>Name</th>\r\n <th>Number/Extension</th>\r\n <th>Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let line of details?.lines; let i = index\">\r\n <td>{{ i + 1 }}</td>\r\n <td>{{ line.name || 'NA' }}</td>\r\n <td>{{ line.number }}</td>\r\n <td>\r\n <span *ngIf=\"line.registered; else notRegistered\" class=\"tk-workspace-device-detail__registered\">Registered</span>\r\n <ng-template #notRegistered>\r\n <mat-icon class=\"tk-workspace-device-detail__warning-icon\" matTooltip=\"Unregistered\">warning</mat-icon>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!details?.lines?.length\">\r\n <td colspan=\"4\" class=\"tk-workspace-device-detail__table-empty\">No lines configured.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Lines</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Layout</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Settings</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Support</h2>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Meetings & Calls</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Go to troubleshooting</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Logs</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-device-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-device-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-device-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem;position:relative}.tk-workspace-device-detail__icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-device-detail__title-block{flex:1;min-width:0}.tk-workspace-device-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-device-detail__meta{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-device-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-device-detail__meta-sep:before{content:\"\";inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:#00000073}.tk-workspace-device-detail__meta-pill{display:inline-flex;align-items:center;gap:.35rem}.tk-workspace-device-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-device-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-device-detail__status-dot--active{background:#1d805f}.tk-workspace-device-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-device-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-device-detail__workspace-link{position:absolute;top:0;right:0;color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500;align-self:center;margin-top:3rem}.tk-workspace-device-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-device-detail__grid{grid-template-columns:1fr}}.tk-workspace-device-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-device-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-device-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.tk-workspace-device-detail__card-title{margin:0 0 1rem;font-size:1rem;font-weight:500}.tk-workspace-device-detail__card-header .tk-workspace-device-detail__card-title{margin-bottom:0}.tk-workspace-device-detail__settings-icon-wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);cursor:pointer}.tk-workspace-device-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-device-detail__row{display:flex;gap:1.5rem}.tk-workspace-device-detail__row-half{flex:1;display:flex;flex-direction:column;gap:.25rem}.tk-workspace-device-detail__value{font-size:.875rem;font-weight:500;color:#000000f2}.tk-workspace-device-detail__label{font-size:.75rem;color:#0009}.tk-workspace-device-detail__hint{font-size:.8125rem;color:#0009;margin:0 0 .75rem}.tk-workspace-device-detail__tags{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.tk-workspace-device-detail__tag{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border:1px solid rgba(0,0,0,.12);border-radius:6.25rem;font-size:.8125rem;background:#f5f5f5}.tk-workspace-device-detail__tag mat-icon{font-size:1rem;height:1rem;width:1rem;cursor:pointer}.tk-workspace-device-detail__tag--add{background:none;border-style:dashed;cursor:pointer;font-family:inherit;color:#000000f2}.tk-workspace-device-detail__tag-input{border:1px solid rgba(0,0,0,.12);border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit}.tk-workspace-device-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-device-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__hoteling-toggle-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.tk-workspace-device-detail__toggle{position:relative;display:inline-block;width:2.25rem;height:1.25rem}.tk-workspace-device-detail__toggle input{opacity:0;width:0;height:0}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider{background-color:#0353a8}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider:before{transform:translate(1rem)}.tk-workspace-device-detail__toggle-slider{position:absolute;inset:0;background-color:#b3b3b3;border-radius:1.25rem;cursor:pointer;transition:background-color .15s ease}.tk-workspace-device-detail__toggle-slider:before{content:\"\";position:absolute;height:1rem;width:1rem;left:.125rem;top:.125rem;background-color:#fff;border-radius:50%;transition:transform .15s ease}.tk-workspace-device-detail__select{font-family:inherit;font-size:.875rem;padding:.375rem .5rem;border-radius:.25rem;border:1px solid rgba(0,0,0,.12);max-width:8rem}.tk-workspace-device-detail__table-wrapper{overflow-x:auto;margin-bottom:.75rem}.tk-workspace-device-detail__table{width:100%;border-collapse:collapse;font-size:.8125rem}.tk-workspace-device-detail__table th{text-align:left;font-weight:400;color:#0009;padding:.5rem .75rem;background:#ededed;border-bottom:1px solid #e8e8e8}.tk-workspace-device-detail__table td{padding:.5rem .75rem;border-bottom:1px solid #e8e8e8;vertical-align:middle}.tk-workspace-device-detail__table-empty{color:#0009;text-align:center}.tk-workspace-device-detail__registered{color:#1d805f;font-weight:500}.tk-workspace-device-detail__warning-icon{color:#b54708;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__configure-lines{opacity:.4;pointer-events:none}.tk-workspace-device-detail__configure-line{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;font-size:.875rem}.tk-workspace-device-detail__configure-manage{font-weight:500;cursor:pointer}\n"], dependencies: [{ kind: "component", type: i1$2.TkLoaderComponent, selector: "tk-loader", inputs: ["diameter", "strokeWidth", "backdrop", "color"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
826
835
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDeviceDetailComponent, decorators: [{
|
|
827
836
|
type: Component,
|
|
828
|
-
args: [{ selector: 'tk-workspace-device-detail', template: "<button type=\"button\" class=\"tk-workspace-device-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Devices\r\n</button>\r\n\r\n<app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n<ng-container *ngIf=\"!isLoading\">\r\n <div class=\"tk-workspace-device-detail__header\">\r\n <img class=\"tk-workspace-device-detail__icon\" [src]=\"deviceIcon\" [alt]=\"deviceLabel\" />\r\n <div class=\"tk-workspace-device-detail__title-block\">\r\n <h1 class=\"tk-workspace-device-detail__name\">{{ deviceLabel }}</h1>\r\n <div class=\"tk-workspace-device-detail__meta\">\r\n <span class=\"tk-workspace-device-detail__meta-pill\">\r\n <span class=\"tk-workspace-device-detail__status-dot\" [class.tk-workspace-device-detail__status-dot--active]=\"isRegistered\"></span>\r\n {{ details?.registrationStatus || 'Not Registered' }}\r\n </span>\r\n <span class=\"tk-workspace-device-detail__meta-sep\"></span>\r\n <span>Phones</span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-device-detail__workspace-link\">{{ workspace.displayName }}</a>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__grid\">\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Details</h2>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.lineCount ?? 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Lines</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.mac || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">MAC address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.hostIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Host IP address</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.remoteIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.managedBy || 'Cisco' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Managed By</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <div class=\"tk-workspace-device-detail__card-header\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Software</h2>\r\n <div class=\"tk-workspace-device-detail__settings-icon-wrapper\">\r\n <img class=\"tk-workspace-device-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareChannel || 'Unknown' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software Channel</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareVersion || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software version</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Tags</h2>\r\n <div class=\"tk-workspace-device-detail__tags\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tk-workspace-device-detail__tag\">\r\n <span>{{ tag }}</span>\r\n <mat-icon class=\"tk-workspace-device-detail__tag-remove\" (click)=\"removeTag(i)\">close</mat-icon>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__tag tk-workspace-device-detail__tag--add\" (click)=\"showTagInput()\">\r\n <mat-icon class=\"tk-workspace-device-detail__tag-add-icon\">add</mat-icon>\r\n Add tag\r\n </button>\r\n <input\r\n *ngIf=\"isAddingTag\"\r\n class=\"tk-workspace-device-detail__tag-input\"\r\n type=\"text\"\r\n placeholder=\"Enter tag...\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onTagInputBlur()\" />\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-device-detail__no-issues\">\r\n <mat-icon class=\"tk-workspace-device-detail__no-issues-icon\">check_circle</mat-icon>\r\n No reported issues at this time\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Hoteling</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">Allow this device to be used as a Hoteling Host by visiting guests.</p>\r\n <div class=\"tk-workspace-device-detail__hoteling-toggle-row\">\r\n <label class=\"tk-workspace-device-detail__toggle\">\r\n <input type=\"checkbox\" [(ngModel)]=\"hotelingEnabled\" />\r\n <span class=\"tk-workspace-device-detail__toggle-slider\"></span>\r\n </label>\r\n <img\r\n class=\"tk-workspace-device-detail__meta-icon\"\r\n src=\"assets/icons/info-circle-regular.svg\"\r\n alt=\"\"\r\n matTooltip=\"Enabling this device for Hoteling means that a guest can log into this host and use this phone as if it were their own.\" />\r\n </div>\r\n <p class=\"tk-workspace-device-detail__hint\">Limit the time a guest can use this phone to</p>\r\n <select class=\"tk-workspace-device-detail__select\" [(ngModel)]=\"guestHoursLimit\">\r\n <option *ngFor=\"let hour of hotelingTimeHours\" [value]=\"hour\">{{ hour }}</option>\r\n </select>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Device Management</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <p class=\"tk-workspace-device-detail__hint\">\r\n To add and remove users and workspaces, select <b>Configure Lines</b>.<br />\r\n To customize the programmable Line Keys, select <b>Configure Layout</b>.<br />\r\n To set up the display settings and dialing options, select <b>Device Settings</b>.\r\n </p>\r\n <div class=\"tk-workspace-device-detail__table-wrapper\">\r\n <table class=\"tk-workspace-device-detail__table\">\r\n <thead>\r\n <tr>\r\n <th>Index #</th>\r\n <th>Name</th>\r\n <th>Number/Extension</th>\r\n <th>Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let line of details?.lines; let i = index\">\r\n <td>{{ i + 1 }}</td>\r\n <td>{{ line.name || 'NA' }}</td>\r\n <td>{{ line.number }}</td>\r\n <td>\r\n <span *ngIf=\"line.registered; else notRegistered\" class=\"tk-workspace-device-detail__registered\">Registered</span>\r\n <ng-template #notRegistered>\r\n <mat-icon class=\"tk-workspace-device-detail__warning-icon\" matTooltip=\"Unregistered\">warning</mat-icon>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!details?.lines?.length\">\r\n <td colspan=\"4\" class=\"tk-workspace-device-detail__table-empty\">No lines configured.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Lines</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Layout</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Settings</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Support</h2>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Meetings & Calls</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Go to troubleshooting</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Logs</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-device-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-device-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-device-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem;position:relative}.tk-workspace-device-detail__icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-device-detail__title-block{flex:1;min-width:0}.tk-workspace-device-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-device-detail__meta{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-device-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-device-detail__meta-sep:before{content:\"\";inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:#00000073}.tk-workspace-device-detail__meta-pill{display:inline-flex;align-items:center;gap:.35rem}.tk-workspace-device-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-device-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-device-detail__status-dot--active{background:#1d805f}.tk-workspace-device-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-device-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-device-detail__workspace-link{position:absolute;top:0;right:0;color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500;align-self:center;margin-top:3rem}.tk-workspace-device-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-device-detail__grid{grid-template-columns:1fr}}.tk-workspace-device-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-device-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-device-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.tk-workspace-device-detail__card-title{margin:0 0 1rem;font-size:1rem;font-weight:500}.tk-workspace-device-detail__card-header .tk-workspace-device-detail__card-title{margin-bottom:0}.tk-workspace-device-detail__settings-icon-wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);cursor:pointer}.tk-workspace-device-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-device-detail__row{display:flex;gap:1.5rem}.tk-workspace-device-detail__row-half{flex:1;display:flex;flex-direction:column;gap:.25rem}.tk-workspace-device-detail__value{font-size:.875rem;font-weight:500;color:#000000f2}.tk-workspace-device-detail__label{font-size:.75rem;color:#0009}.tk-workspace-device-detail__hint{font-size:.8125rem;color:#0009;margin:0 0 .75rem}.tk-workspace-device-detail__tags{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.tk-workspace-device-detail__tag{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border:1px solid rgba(0,0,0,.12);border-radius:6.25rem;font-size:.8125rem;background:#f5f5f5}.tk-workspace-device-detail__tag mat-icon{font-size:1rem;height:1rem;width:1rem;cursor:pointer}.tk-workspace-device-detail__tag--add{background:none;border-style:dashed;cursor:pointer;font-family:inherit;color:#000000f2}.tk-workspace-device-detail__tag-input{border:1px solid rgba(0,0,0,.12);border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit}.tk-workspace-device-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-device-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__hoteling-toggle-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.tk-workspace-device-detail__toggle{position:relative;display:inline-block;width:2.25rem;height:1.25rem}.tk-workspace-device-detail__toggle input{opacity:0;width:0;height:0}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider{background-color:#0353a8}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider:before{transform:translate(1rem)}.tk-workspace-device-detail__toggle-slider{position:absolute;inset:0;background-color:#b3b3b3;border-radius:1.25rem;cursor:pointer;transition:background-color .15s ease}.tk-workspace-device-detail__toggle-slider:before{content:\"\";position:absolute;height:1rem;width:1rem;left:.125rem;top:.125rem;background-color:#fff;border-radius:50%;transition:transform .15s ease}.tk-workspace-device-detail__select{font-family:inherit;font-size:.875rem;padding:.375rem .5rem;border-radius:.25rem;border:1px solid rgba(0,0,0,.12);max-width:8rem}.tk-workspace-device-detail__table-wrapper{overflow-x:auto;margin-bottom:.75rem}.tk-workspace-device-detail__table{width:100%;border-collapse:collapse;font-size:.8125rem}.tk-workspace-device-detail__table th{text-align:left;font-weight:400;color:#0009;padding:.5rem .75rem;background:#ededed;border-bottom:1px solid #e8e8e8}.tk-workspace-device-detail__table td{padding:.5rem .75rem;border-bottom:1px solid #e8e8e8;vertical-align:middle}.tk-workspace-device-detail__table-empty{color:#0009;text-align:center}.tk-workspace-device-detail__registered{color:#1d805f;font-weight:500}.tk-workspace-device-detail__warning-icon{color:#b54708;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__configure-lines{opacity:.4;pointer-events:none}.tk-workspace-device-detail__configure-line{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;font-size:.875rem}.tk-workspace-device-detail__configure-manage{font-weight:500;cursor:pointer}\n"] }]
|
|
837
|
+
args: [{ selector: 'tk-workspace-device-detail', template: "<button type=\"button\" class=\"tk-workspace-device-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Devices\r\n</button>\r\n\r\n<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<ng-container *ngIf=\"!isLoading\">\r\n <div class=\"tk-workspace-device-detail__header\">\r\n <img class=\"tk-workspace-device-detail__icon\" [src]=\"deviceIcon\" [alt]=\"deviceLabel\" />\r\n <div class=\"tk-workspace-device-detail__title-block\">\r\n <h1 class=\"tk-workspace-device-detail__name\">{{ deviceLabel }}</h1>\r\n <div class=\"tk-workspace-device-detail__meta\">\r\n <span class=\"tk-workspace-device-detail__meta-pill\">\r\n <span class=\"tk-workspace-device-detail__status-dot\" [class.tk-workspace-device-detail__status-dot--active]=\"isRegistered\"></span>\r\n {{ details?.registrationStatus || 'Not Registered' }}\r\n </span>\r\n <span class=\"tk-workspace-device-detail__meta-sep\"></span>\r\n <span>Phones</span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-device-detail__workspace-link\">{{ workspace.displayName }}</a>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__grid\">\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Details</h2>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.lineCount ?? 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Lines</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.mac || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">MAC address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.hostIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Host IP address</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.remoteIpAddress || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.managedBy || 'Cisco' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Managed By</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <div class=\"tk-workspace-device-detail__card-header\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Software</h2>\r\n <div class=\"tk-workspace-device-detail__settings-icon-wrapper\">\r\n <img class=\"tk-workspace-device-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row\">\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareChannel || 'Unknown' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software Channel</span>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__row-half\">\r\n <span class=\"tk-workspace-device-detail__value\">{{ details?.softwareVersion || 'N/A' }}</span>\r\n <span class=\"tk-workspace-device-detail__label\">Software version</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Tags</h2>\r\n <div class=\"tk-workspace-device-detail__tags\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tk-workspace-device-detail__tag\">\r\n <span>{{ tag }}</span>\r\n <mat-icon class=\"tk-workspace-device-detail__tag-remove\" (click)=\"removeTag(i)\">close</mat-icon>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-device-detail__tag tk-workspace-device-detail__tag--add\" (click)=\"showTagInput()\">\r\n <mat-icon class=\"tk-workspace-device-detail__tag-add-icon\">add</mat-icon>\r\n Add tag\r\n </button>\r\n <input\r\n *ngIf=\"isAddingTag\"\r\n class=\"tk-workspace-device-detail__tag-input\"\r\n type=\"text\"\r\n placeholder=\"Enter tag...\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onTagInputBlur()\" />\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-device-detail__col\">\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-device-detail__no-issues\">\r\n <mat-icon class=\"tk-workspace-device-detail__no-issues-icon\">check_circle</mat-icon>\r\n No reported issues at this time\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Hoteling</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">Allow this device to be used as a Hoteling Host by visiting guests.</p>\r\n <div class=\"tk-workspace-device-detail__hoteling-toggle-row\">\r\n <label class=\"tk-workspace-device-detail__toggle\">\r\n <input type=\"checkbox\" [(ngModel)]=\"hotelingEnabled\" />\r\n <span class=\"tk-workspace-device-detail__toggle-slider\"></span>\r\n </label>\r\n <img\r\n class=\"tk-workspace-device-detail__meta-icon\"\r\n src=\"assets/icons/info-circle-regular.svg\"\r\n alt=\"\"\r\n matTooltip=\"Enabling this device for Hoteling means that a guest can log into this host and use this phone as if it were their own.\" />\r\n </div>\r\n <p class=\"tk-workspace-device-detail__hint\">Limit the time a guest can use this phone to</p>\r\n <select class=\"tk-workspace-device-detail__select\" [(ngModel)]=\"guestHoursLimit\">\r\n <option *ngFor=\"let hour of hotelingTimeHours\" [value]=\"hour\">{{ hour }}</option>\r\n </select>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Device Management</h2>\r\n <p class=\"tk-workspace-device-detail__hint\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <p class=\"tk-workspace-device-detail__hint\">\r\n To add and remove users and workspaces, select <b>Configure Lines</b>.<br />\r\n To customize the programmable Line Keys, select <b>Configure Layout</b>.<br />\r\n To set up the display settings and dialing options, select <b>Device Settings</b>.\r\n </p>\r\n <div class=\"tk-workspace-device-detail__table-wrapper\">\r\n <table class=\"tk-workspace-device-detail__table\">\r\n <thead>\r\n <tr>\r\n <th>Index #</th>\r\n <th>Name</th>\r\n <th>Number/Extension</th>\r\n <th>Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let line of details?.lines; let i = index\">\r\n <td>{{ i + 1 }}</td>\r\n <td>{{ line.name || 'NA' }}</td>\r\n <td>{{ line.number }}</td>\r\n <td>\r\n <span *ngIf=\"line.registered; else notRegistered\" class=\"tk-workspace-device-detail__registered\">Registered</span>\r\n <ng-template #notRegistered>\r\n <mat-icon class=\"tk-workspace-device-detail__warning-icon\" matTooltip=\"Unregistered\">warning</mat-icon>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!details?.lines?.length\">\r\n <td colspan=\"4\" class=\"tk-workspace-device-detail__table-empty\">No lines configured.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Lines</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Configure Layout</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Settings</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-device-detail__card\">\r\n <h2 class=\"tk-workspace-device-detail__card-title\">Support</h2>\r\n <div class=\"tk-workspace-device-detail__configure-lines\">\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Meetings & Calls</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Go to troubleshooting</span>\r\n </div>\r\n <hr class=\"tk-workspace-device-detail__divider\" />\r\n <div class=\"tk-workspace-device-detail__configure-line\">\r\n <span>Device Logs</span>\r\n <span class=\"tk-workspace-device-detail__configure-manage\">Manage</span>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-device-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-device-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-device-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem;position:relative}.tk-workspace-device-detail__icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-device-detail__title-block{flex:1;min-width:0}.tk-workspace-device-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-device-detail__meta{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-device-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-device-detail__meta-sep:before{content:\"\";inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:#00000073}.tk-workspace-device-detail__meta-pill{display:inline-flex;align-items:center;gap:.35rem}.tk-workspace-device-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-device-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-device-detail__status-dot--active{background:#1d805f}.tk-workspace-device-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-device-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-device-detail__workspace-link{position:absolute;top:0;right:0;color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500;align-self:center;margin-top:3rem}.tk-workspace-device-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-device-detail__grid{grid-template-columns:1fr}}.tk-workspace-device-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-device-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-device-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.tk-workspace-device-detail__card-title{margin:0 0 1rem;font-size:1rem;font-weight:500}.tk-workspace-device-detail__card-header .tk-workspace-device-detail__card-title{margin-bottom:0}.tk-workspace-device-detail__settings-icon-wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);cursor:pointer}.tk-workspace-device-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-device-detail__row{display:flex;gap:1.5rem}.tk-workspace-device-detail__row-half{flex:1;display:flex;flex-direction:column;gap:.25rem}.tk-workspace-device-detail__value{font-size:.875rem;font-weight:500;color:#000000f2}.tk-workspace-device-detail__label{font-size:.75rem;color:#0009}.tk-workspace-device-detail__hint{font-size:.8125rem;color:#0009;margin:0 0 .75rem}.tk-workspace-device-detail__tags{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.tk-workspace-device-detail__tag{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border:1px solid rgba(0,0,0,.12);border-radius:6.25rem;font-size:.8125rem;background:#f5f5f5}.tk-workspace-device-detail__tag mat-icon{font-size:1rem;height:1rem;width:1rem;cursor:pointer}.tk-workspace-device-detail__tag--add{background:none;border-style:dashed;cursor:pointer;font-family:inherit;color:#000000f2}.tk-workspace-device-detail__tag-input{border:1px solid rgba(0,0,0,.12);border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit}.tk-workspace-device-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-device-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__hoteling-toggle-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.tk-workspace-device-detail__toggle{position:relative;display:inline-block;width:2.25rem;height:1.25rem}.tk-workspace-device-detail__toggle input{opacity:0;width:0;height:0}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider{background-color:#0353a8}.tk-workspace-device-detail__toggle input:checked+.tk-workspace-device-detail__toggle-slider:before{transform:translate(1rem)}.tk-workspace-device-detail__toggle-slider{position:absolute;inset:0;background-color:#b3b3b3;border-radius:1.25rem;cursor:pointer;transition:background-color .15s ease}.tk-workspace-device-detail__toggle-slider:before{content:\"\";position:absolute;height:1rem;width:1rem;left:.125rem;top:.125rem;background-color:#fff;border-radius:50%;transition:transform .15s ease}.tk-workspace-device-detail__select{font-family:inherit;font-size:.875rem;padding:.375rem .5rem;border-radius:.25rem;border:1px solid rgba(0,0,0,.12);max-width:8rem}.tk-workspace-device-detail__table-wrapper{overflow-x:auto;margin-bottom:.75rem}.tk-workspace-device-detail__table{width:100%;border-collapse:collapse;font-size:.8125rem}.tk-workspace-device-detail__table th{text-align:left;font-weight:400;color:#0009;padding:.5rem .75rem;background:#ededed;border-bottom:1px solid #e8e8e8}.tk-workspace-device-detail__table td{padding:.5rem .75rem;border-bottom:1px solid #e8e8e8;vertical-align:middle}.tk-workspace-device-detail__table-empty{color:#0009;text-align:center}.tk-workspace-device-detail__registered{color:#1d805f;font-weight:500}.tk-workspace-device-detail__warning-icon{color:#b54708;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-device-detail__configure-lines{opacity:.4;pointer-events:none}.tk-workspace-device-detail__configure-line{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;font-size:.875rem}.tk-workspace-device-detail__configure-manage{font-weight:500;cursor:pointer}\n"] }]
|
|
829
838
|
}], propDecorators: { workspace: [{
|
|
830
839
|
type: Input
|
|
831
840
|
}], device: [{
|
|
@@ -912,12 +921,12 @@ class WorkspaceDetailComponent {
|
|
|
912
921
|
this.location.replaceState(`/workspaces/${this.deviceName}/${this.activeTab}`);
|
|
913
922
|
}
|
|
914
923
|
}
|
|
915
|
-
WorkspaceDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailComponent, deps: [{ token: WorkspaceDetailService }, { token:
|
|
916
|
-
WorkspaceDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: { workspace: "workspace", connectionType: "connectionType", customerId: "customerId" }, outputs: { back: "back" }, ngImport: i0, template: "<ng-container *ngIf=\"view === 'overview'; else deviceDetailView\">\r\n<button type=\"button\" class=\"tk-workspace-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Workspaces\r\n</button>\r\n\r\n<div class=\"tk-workspace-detail__header\">\r\n <span class=\"tk-workspace-detail__icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspace-detail__title-block\">\r\n <h1 class=\"tk-workspace-detail__name\">{{ workspace.displayName }}</h1>\r\n <div class=\"tk-workspace-detail__meta\">\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Live status unavailable\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-type\">Type: {{ workspace.typeLabel === 'No type' ? 'Not set' : workspace.typeLabel }}</span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n Capacity: {{ workspace.capacity ?? 'Not set' }}\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill tk-workspace-detail__meta-pill--muted\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n Size not set\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n</div>\r\n\r\n<nav class=\"tk-workspace-detail__tabs\">\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'overview'\"\r\n (click)=\"selectTab('overview')\">\r\n Overview\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'calling'\"\r\n (click)=\"selectTab('calling')\">\r\n Calling\r\n </button>\r\n</nav>\r\n\r\n<app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n<ng-container *ngIf=\"details\">\r\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'overview'\">\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-detail__no-issues\" *ngIf=\"!details.issues.length\">\r\n <mat-icon class=\"tk-workspace-detail__no-issues-icon\">check_circle</mat-icon>\r\n There are currently no issues detected in your workspace.\r\n </div>\r\n <div class=\"tk-workspace-detail__issue\" *ngFor=\"let issue of details.issues\">\r\n <div class=\"tk-workspace-detail__issue-row\">\r\n <div class=\"tk-workspace-detail__issue-info\">\r\n <div class=\"tk-workspace-detail__issue-message-row\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <div class=\"tk-workspace-detail__issue-message\">{{ issue.message }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-timestamp\">{{ issue.timestamp }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-actions\">\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">{{ issue.actionLabel }}</button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__issue-toggle\"\r\n [class.tk-workspace-detail__issue-toggle--open]=\"expandedIssueId === issue.id\"\r\n [attr.aria-expanded]=\"expandedIssueId === issue.id\"\r\n (click)=\"'void 0'\">\r\n <img style=\"width: .75rem; height: .75rem;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-details\" *ngIf=\"expandedIssueId === issue.id\">\r\n <p>{{ issue.description }}</p>\r\n <p>\r\n Suggested action:<br />\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__issue-link\">{{ issue.suggestedAction }}</a>\r\n </p>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Devices</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__devices\" *ngIf=\"workspace.devices.length; else noDevices\">\r\n <div class=\"tk-workspace-detail__device\" *ngFor=\"let device of workspace.devices\">\r\n <img class=\"tk-workspace-detail__device-icon\" [src]=\"resolveIcon(device.model)\" [alt]=\"device.label\" />\r\n <div class=\"tk-workspace-detail__device-info\">\r\n <div style=\"display: flex; gap: 0.5rem; align-items: center;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__device-link\" (click)=\"onOpenDevice(device)\">{{ device.label }}</a>\r\n <span class=\"tk-workspace-detail__device-primary\">Primary</span>\r\n </div>\r\n <div class=\"tk-workspace-detail__device-status\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Status unavailable\r\n <img class=\"tk-workspace-detail__info-icon\" style=\"width: 12px; height: 12px;\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #noDevices>\r\n <div class=\"tk-workspace-detail__no-devices\">\r\n <img class=\"tk-workspace-detail__no-devices-icon\" src=\"assets/icons/desk-phone-bold.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add device</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Add an IP Phone to collaborate in this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add device</button>\r\n </div>\r\n </ng-template>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__calling-license\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/handset-regular.svg\" alt=\"\" />\r\n {{ details.calling.license }}\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\r\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\r\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.schedulingConfigured\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Scheduling</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Choose scheduling</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Choose a calendar service or setup hot-desking for this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Choose scheduling</button>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Meetings</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Device hosted meetings unavailable</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Service not supported by Cisco IP phones</p>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">\r\n Planned Maintenance\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </h2>\r\n <div class=\"tk-workspace-detail__row\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/tools-regular.svg\" alt=\"\">\r\n <span>{{ details.plannedMaintenanceEnabled ? 'On' : 'Off' }}</span>\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--with-action\">\r\n <div class=\"tk-workspace-detail__row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div style=\"display: flex; gap: 1rem; align-items: center;\">\r\n <img class=\"tk-workspace-detail__meta-icon\" style=\"width: 20px; height: 20px;\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <div>Schedule</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__row-hint\">No schedule set</div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Edit schedule</button>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.notes\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Add Notes</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/notes-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add notes</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Write a note about this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add notes</button>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\" style=\"margin-bottom: 1.25rem;\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Location</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__location\">\r\n <!-- <mat-icon>location_on</mat-icon> -->\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <div style=\"display: flex; flex-direction: column; gap: .25rem;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__location-link\">{{ details.location.country }}</a>\r\n <div class=\"tk-workspace-detail__location-address\">{{ details.location.address }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\" *ngIf=\"activeTab === 'calling'\">\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__numbers-card\">\r\n <h2 class=\"tk-workspace-detail__numbers-title\">Numbers</h2>\r\n\r\n <div class=\"tk-workspace-detail__numbers-content\">\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Directory number\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <table class=\"tk-workspace-detail__numbers-table\">\r\n <thead>\r\n <tr>\r\n <th>Type</th>\r\n <th>Phone Number</th>\r\n <th>Extension</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td><span class=\"tk-workspace-detail__badge\">Primary</span></td>\r\n <td>\r\n {{ details.calling.directoryNumber }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td>\r\n {{ details.calling.extension || 'Not set' }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td class=\"tk-workspace-detail__numbers-chevron-cell\">\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Caller ID\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>{{ callerIdLabel }}</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Emergency Calling\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>Not set</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</ng-container>\r\n</ng-container>\r\n\r\n<ng-template #deviceDetailView>\r\n <tk-workspace-device-detail\r\n [workspace]=\"workspace\"\r\n [device]=\"selectedDevice\"\r\n [details]=\"details?.device ?? null\"\r\n [isLoading]=\"isLoading\"\r\n (back)=\"onDeviceBack()\">\r\n </tk-workspace-device-detail>\r\n</ng-template>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-detail__breadcrumb mat-icon{font-size:1.25rem;height:1.25rem;width:1.25rem}.tk-workspace-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.tk-workspace-detail__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:50%;background:#2b2b2b}.tk-workspace-detail__icon img{height:1.375rem;width:1.375rem;filter:brightness(0) invert(1)}.tk-workspace-detail__title-block{flex:1;min-width:0}.tk-workspace-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-detail__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-size:.875rem;color:#0009}.tk-workspace-detail__meta-type{color:#000000f2}.tk-workspace-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-detail__meta-sep:before{content:\"\";flex-shrink:0;inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:var(--mch-OutlinePrimary-normal, rgba(0, 0, 0, .45))}.tk-workspace-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-detail__meta-muted{color:#0006}.tk-workspace-detail__meta-pill{display:inline-flex;font-size:.875rem;align-items:center;gap:.35rem;border:1px solid rgba(0,0,0,.2);padding:.25rem .5rem;cursor:pointer;min-inline-size:1.5rem;block-size:100%;max-block-size:1.5rem;color:#000000f2;border-radius:.5rem}.tk-workspace-detail__meta-pill--muted{color:#0006}.tk-workspace-detail__meta-pill-icon{font-size:.875rem;height:.875rem;width:.875rem;opacity:.4}.tk-workspace-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-detail__actions-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__tabs{display:flex;align-items:center;gap:1.5rem;border-bottom:1px solid rgba(0,0,0,.12);margin-bottom:1.25rem}.tk-workspace-detail__tab{padding:.75rem 0;background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;font-size:.9375rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspace-detail__tab:hover{color:#000000f2}.tk-workspace-detail__tab--active{color:#000000f2;border-bottom-color:#000}.tk-workspace-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-detail__grid{grid-template-columns:1fr}}.tk-workspace-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-detail__card--centered{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:1rem 1.5rem}.tk-workspace-detail__card-icon{color:#0009;margin-bottom:.5rem}.tk-workspace-detail__card-heading{margin:0;font-size:.9375rem;font-weight:500}.tk-workspace-detail__card-text{margin:0 0 .5rem;font-size:.875rem;color:#000000b3;max-width:20rem}.tk-workspace-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;width:100%}.tk-workspace-detail__card-title{display:flex;align-items:center;gap:.375rem;margin:0;padding:0;font-size:1rem;font-weight:500;margin-bottom:1rem}.tk-workspace-detail__card-title__settings_icon_wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);color:#000000f2;cursor:pointer}.tk-workspace-detail__card-header .tk-workspace-detail__card-title{margin-bottom:0}.tk-workspace-detail__settings-icon,.tk-workspace-detail__info-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-workspace-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__issue+.tk-workspace-detail__issue{margin-top:.75rem}.tk-workspace-detail__issue-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 1rem;border-radius:.5rem;border:.0625rem solid rgba(0,0,0,.2);cursor:pointer;height:46px;box-sizing:content-box}.tk-workspace-detail__issue-row:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-actions{display:flex;align-items:center;gap:1rem;flex-shrink:0}.tk-workspace-detail__issue-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:50%;color:#0009;cursor:pointer;flex-shrink:0;background:transparent}.tk-workspace-detail__issue-toggle:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-toggle:active{background:rgba(0,0,0,.2)}.tk-workspace-detail__issue-toggle mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;transition:transform .15s ease}.tk-workspace-detail__issue-toggle--open mat-icon{transform:rotate(180deg)}.tk-workspace-detail__issue-details{padding:.75rem 1rem .25rem 2.75rem;font-size:.8125rem;color:#0009}.tk-workspace-detail__issue-details p{margin:0 0 .5rem}.tk-workspace-detail__issue-link{color:#0353a8;text-decoration:underline}.tk-workspace-detail__issue-info{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;height:100%;justify-content:space-around}.tk-workspace-detail__issue-icon{color:#0353a8;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__issue-message-row{display:flex;align-items:center;gap:.5rem}.tk-workspace-detail__issue-message-row .tk-workspace-detail__issue-message{font-size:.875rem;font-weight:500}.tk-workspace-detail__issue-timestamp{font-size:.75rem;color:#000000b3}.tk-workspace-detail__pill-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;text-overflow:ellipsis;overflow:hidden!important;cursor:pointer;white-space:nowrap}.tk-workspace-detail__pill-button:hover{background:#ededed}.tk-workspace-detail__pill-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__devices{display:flex;flex-wrap:wrap;gap:.75rem;display:grid;grid-template-rows:auto 1fr;grid-template-columns:repeat(auto-fit,minmax(16.75rem,1fr));gap:.5rem}.tk-workspace-detail__device{align-items:center;gap:1.5rem;padding:.75rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;min-width:12rem;align-items:start;display:flex;flex-direction:column;grid-row:span 2;grid-column:1;min-block-size:8rem}.tk-workspace-detail__device-icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-detail__device-info{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.tk-workspace-detail__device-info .tk-workspace-detail__device-primary{font-size:.75rem;min-inline-size:1.25rem;block-size:100%;max-block-size:1.25rem;border-color:#5ebff7;background-color:#08599c;color:#fffffff2;display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid #5ebff7;border-radius:.25rem;line-height:1;text-overflow:ellipsis;box-sizing:border-box}.tk-workspace-detail__device-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__device-status{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#000000f2}.tk-workspace-detail__no-devices{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:2rem 1.25rem}.tk-workspace-detail__no-devices-icon{width:2rem;height:2rem;margin-bottom:.5rem}.tk-workspace-detail__calling-license{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__calling-license mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__row{display:flex;align-items:center;gap:1rem;font-size:.875rem}.tk-workspace-detail__row mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__row--with-action,.tk-workspace-detail__row--kv{justify-content:space-between}.tk-workspace-detail__row--kv:first-of-type{border-top:none}.tk-workspace-detail__row-label{color:#000000f2}.tk-workspace-detail__row-value{font-weight:500;text-align:right}.tk-workspace-detail__row-hint{font-size:14px;color:#000000b3}.tk-workspace-detail__row-chevron{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__numbers-card{display:flex;gap:1rem}.tk-workspace-detail__numbers-title{width:8.75rem;flex-shrink:0;margin:0;font-size:.9375rem;font-weight:600}.tk-workspace-detail__numbers-content{flex:1;min-width:0;display:flex;flex-direction:column}.tk-workspace-detail__numbers-row{display:flex;align-items:flex-start;gap:1rem;padding:.75rem 0}.tk-workspace-detail__numbers-row-label{width:9.375rem;flex-shrink:0;display:flex;align-items:center;gap:.375rem;font-size:.875rem}.tk-workspace-detail__numbers-row-value{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-detail__numbers-table{flex:1;min-width:0;border-collapse:collapse;font-size:.875rem}.tk-workspace-detail__numbers-table th{padding:0 .75rem .5rem 0;text-align:left;font-weight:400;font-size:.8125rem;color:#0009}.tk-workspace-detail__numbers-table td{padding:0 .75rem 0 0;vertical-align:middle;white-space:nowrap}.tk-workspace-detail__numbers-chevron-cell{width:1.5rem;text-align:right;white-space:nowrap}.tk-workspace-detail__copy-icon{font-size:1rem;height:1rem;width:1rem;margin-left:.25rem;color:#0006;vertical-align:middle;cursor:pointer}.tk-workspace-detail__badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:6.25rem;background:#e8f4fc;border:1px solid #b8d9ed;color:#1170a8;font-size:.75rem;font-weight:500}.tk-workspace-detail__location{display:flex;align-items:flex-start;gap:1rem}.tk-workspace-detail__location mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__location-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__location-address{font-size:.875rem;color:#000000f2}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: WorkspaceDeviceDetailComponent, selector: "tk-workspace-device-detail", inputs: ["workspace", "device", "details", "isLoading"], outputs: ["back"] }, { kind: "component", type: AppLoaderComponent, selector: "app-loader" }] });
|
|
924
|
+
WorkspaceDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailComponent, deps: [{ token: WorkspaceDetailService }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
925
|
+
WorkspaceDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: { workspace: "workspace", connectionType: "connectionType", customerId: "customerId" }, outputs: { back: "back" }, ngImport: i0, template: "<ng-container *ngIf=\"view === 'overview'; else deviceDetailView\">\r\n<button type=\"button\" class=\"tk-workspace-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Workspaces\r\n</button>\r\n\r\n<div class=\"tk-workspace-detail__header\">\r\n <span class=\"tk-workspace-detail__icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspace-detail__title-block\">\r\n <h1 class=\"tk-workspace-detail__name\">{{ workspace.displayName }}</h1>\r\n <div class=\"tk-workspace-detail__meta\">\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Live status unavailable\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-type\">Type: {{ workspace.typeLabel === 'No type' ? 'Not set' : workspace.typeLabel }}</span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n Capacity: {{ workspace.capacity ?? 'Not set' }}\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill tk-workspace-detail__meta-pill--muted\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n Size not set\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n</div>\r\n\r\n<nav class=\"tk-workspace-detail__tabs\">\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'overview'\"\r\n (click)=\"selectTab('overview')\">\r\n Overview\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'calling'\"\r\n (click)=\"selectTab('calling')\">\r\n Calling\r\n </button>\r\n</nav>\r\n\r\n<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<ng-container *ngIf=\"details\">\r\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'overview'\">\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-detail__no-issues\" *ngIf=\"!details.issues.length\">\r\n <mat-icon class=\"tk-workspace-detail__no-issues-icon\">check_circle</mat-icon>\r\n There are currently no issues detected in your workspace.\r\n </div>\r\n <div class=\"tk-workspace-detail__issue\" *ngFor=\"let issue of details.issues\">\r\n <div class=\"tk-workspace-detail__issue-row\">\r\n <div class=\"tk-workspace-detail__issue-info\">\r\n <div class=\"tk-workspace-detail__issue-message-row\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <div class=\"tk-workspace-detail__issue-message\">{{ issue.message }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-timestamp\">{{ issue.timestamp }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-actions\">\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">{{ issue.actionLabel }}</button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__issue-toggle\"\r\n [class.tk-workspace-detail__issue-toggle--open]=\"expandedIssueId === issue.id\"\r\n [attr.aria-expanded]=\"expandedIssueId === issue.id\"\r\n (click)=\"'void 0'\">\r\n <img style=\"width: .75rem; height: .75rem;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-details\" *ngIf=\"expandedIssueId === issue.id\">\r\n <p>{{ issue.description }}</p>\r\n <p>\r\n Suggested action:<br />\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__issue-link\">{{ issue.suggestedAction }}</a>\r\n </p>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Devices</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__devices\" *ngIf=\"workspace.devices.length; else noDevices\">\r\n <div class=\"tk-workspace-detail__device\" *ngFor=\"let device of workspace.devices\">\r\n <img class=\"tk-workspace-detail__device-icon\" [src]=\"resolveIcon(device.model)\" [alt]=\"device.label\" />\r\n <div class=\"tk-workspace-detail__device-info\">\r\n <div style=\"display: flex; gap: 0.5rem; align-items: center;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__device-link\" (click)=\"onOpenDevice(device)\">{{ device.label }}</a>\r\n <span class=\"tk-workspace-detail__device-primary\">Primary</span>\r\n </div>\r\n <div class=\"tk-workspace-detail__device-status\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Status unavailable\r\n <img class=\"tk-workspace-detail__info-icon\" style=\"width: 12px; height: 12px;\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #noDevices>\r\n <div class=\"tk-workspace-detail__no-devices\">\r\n <img class=\"tk-workspace-detail__no-devices-icon\" src=\"assets/icons/desk-phone-bold.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add device</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Add an IP Phone to collaborate in this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add device</button>\r\n </div>\r\n </ng-template>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__calling-license\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/handset-regular.svg\" alt=\"\" />\r\n {{ details.calling.license }}\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\r\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\r\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.schedulingConfigured\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Scheduling</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Choose scheduling</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Choose a calendar service or setup hot-desking for this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Choose scheduling</button>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Meetings</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Device hosted meetings unavailable</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Service not supported by Cisco IP phones</p>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">\r\n Planned Maintenance\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </h2>\r\n <div class=\"tk-workspace-detail__row\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/tools-regular.svg\" alt=\"\">\r\n <span>{{ details.plannedMaintenanceEnabled ? 'On' : 'Off' }}</span>\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--with-action\">\r\n <div class=\"tk-workspace-detail__row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div style=\"display: flex; gap: 1rem; align-items: center;\">\r\n <img class=\"tk-workspace-detail__meta-icon\" style=\"width: 20px; height: 20px;\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <div>Schedule</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__row-hint\">No schedule set</div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Edit schedule</button>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.notes\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Add Notes</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/notes-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add notes</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Write a note about this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add notes</button>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\" style=\"margin-bottom: 1.25rem;\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Location</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__location\">\r\n <!-- <mat-icon>location_on</mat-icon> -->\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <div style=\"display: flex; flex-direction: column; gap: .25rem;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__location-link\">{{ details.location.country }}</a>\r\n <div class=\"tk-workspace-detail__location-address\">{{ details.location.address }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\" *ngIf=\"activeTab === 'calling'\">\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__numbers-card\">\r\n <h2 class=\"tk-workspace-detail__numbers-title\">Numbers</h2>\r\n\r\n <div class=\"tk-workspace-detail__numbers-content\">\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Directory number\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <table class=\"tk-workspace-detail__numbers-table\">\r\n <thead>\r\n <tr>\r\n <th>Type</th>\r\n <th>Phone Number</th>\r\n <th>Extension</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td><span class=\"tk-workspace-detail__badge\">Primary</span></td>\r\n <td>\r\n {{ details.calling.directoryNumber }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td>\r\n {{ details.calling.extension || 'Not set' }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td class=\"tk-workspace-detail__numbers-chevron-cell\">\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Caller ID\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>{{ callerIdLabel }}</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Emergency Calling\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>Not set</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</ng-container>\r\n</ng-container>\r\n\r\n<ng-template #deviceDetailView>\r\n <tk-workspace-device-detail\r\n [workspace]=\"workspace\"\r\n [device]=\"selectedDevice\"\r\n [details]=\"details?.device ?? null\"\r\n [isLoading]=\"isLoading\"\r\n (back)=\"onDeviceBack()\">\r\n </tk-workspace-device-detail>\r\n</ng-template>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-detail__breadcrumb mat-icon{font-size:1.25rem;height:1.25rem;width:1.25rem}.tk-workspace-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.tk-workspace-detail__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:50%;background:#2b2b2b}.tk-workspace-detail__icon img{height:1.375rem;width:1.375rem;filter:brightness(0) invert(1)}.tk-workspace-detail__title-block{flex:1;min-width:0}.tk-workspace-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-detail__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-size:.875rem;color:#0009}.tk-workspace-detail__meta-type{color:#000000f2}.tk-workspace-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-detail__meta-sep:before{content:\"\";flex-shrink:0;inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:var(--mch-OutlinePrimary-normal, rgba(0, 0, 0, .45))}.tk-workspace-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-detail__meta-muted{color:#0006}.tk-workspace-detail__meta-pill{display:inline-flex;font-size:.875rem;align-items:center;gap:.35rem;border:1px solid rgba(0,0,0,.2);padding:.25rem .5rem;cursor:pointer;min-inline-size:1.5rem;block-size:100%;max-block-size:1.5rem;color:#000000f2;border-radius:.5rem}.tk-workspace-detail__meta-pill--muted{color:#0006}.tk-workspace-detail__meta-pill-icon{font-size:.875rem;height:.875rem;width:.875rem;opacity:.4}.tk-workspace-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-detail__actions-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__tabs{display:flex;align-items:center;gap:1.5rem;border-bottom:1px solid rgba(0,0,0,.12);margin-bottom:1.25rem}.tk-workspace-detail__tab{padding:.75rem 0;background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;font-size:.9375rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspace-detail__tab:hover{color:#000000f2}.tk-workspace-detail__tab--active{color:#000000f2;border-bottom-color:#000}.tk-workspace-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-detail__grid{grid-template-columns:1fr}}.tk-workspace-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-detail__card--centered{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:1rem 1.5rem}.tk-workspace-detail__card-icon{color:#0009;margin-bottom:.5rem}.tk-workspace-detail__card-heading{margin:0;font-size:.9375rem;font-weight:500}.tk-workspace-detail__card-text{margin:0 0 .5rem;font-size:.875rem;color:#000000b3;max-width:20rem}.tk-workspace-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;width:100%}.tk-workspace-detail__card-title{display:flex;align-items:center;gap:.375rem;margin:0;padding:0;font-size:1rem;font-weight:500;margin-bottom:1rem}.tk-workspace-detail__card-title__settings_icon_wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);color:#000000f2;cursor:pointer}.tk-workspace-detail__card-header .tk-workspace-detail__card-title{margin-bottom:0}.tk-workspace-detail__settings-icon,.tk-workspace-detail__info-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-workspace-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__issue+.tk-workspace-detail__issue{margin-top:.75rem}.tk-workspace-detail__issue-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 1rem;border-radius:.5rem;border:.0625rem solid rgba(0,0,0,.2);cursor:pointer;height:46px;box-sizing:content-box}.tk-workspace-detail__issue-row:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-actions{display:flex;align-items:center;gap:1rem;flex-shrink:0}.tk-workspace-detail__issue-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:50%;color:#0009;cursor:pointer;flex-shrink:0;background:transparent}.tk-workspace-detail__issue-toggle:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-toggle:active{background:rgba(0,0,0,.2)}.tk-workspace-detail__issue-toggle mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;transition:transform .15s ease}.tk-workspace-detail__issue-toggle--open mat-icon{transform:rotate(180deg)}.tk-workspace-detail__issue-details{padding:.75rem 1rem .25rem 2.75rem;font-size:.8125rem;color:#0009}.tk-workspace-detail__issue-details p{margin:0 0 .5rem}.tk-workspace-detail__issue-link{color:#0353a8;text-decoration:underline}.tk-workspace-detail__issue-info{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;height:100%;justify-content:space-around}.tk-workspace-detail__issue-icon{color:#0353a8;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__issue-message-row{display:flex;align-items:center;gap:.5rem}.tk-workspace-detail__issue-message-row .tk-workspace-detail__issue-message{font-size:.875rem;font-weight:500}.tk-workspace-detail__issue-timestamp{font-size:.75rem;color:#000000b3}.tk-workspace-detail__pill-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;text-overflow:ellipsis;overflow:hidden!important;cursor:pointer;white-space:nowrap}.tk-workspace-detail__pill-button:hover{background:#ededed}.tk-workspace-detail__pill-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__devices{display:flex;flex-wrap:wrap;gap:.75rem;display:grid;grid-template-rows:auto 1fr;grid-template-columns:repeat(auto-fit,minmax(16.75rem,1fr));gap:.5rem}.tk-workspace-detail__device{align-items:center;gap:1.5rem;padding:.75rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;min-width:12rem;align-items:start;display:flex;flex-direction:column;grid-row:span 2;grid-column:1;min-block-size:8rem}.tk-workspace-detail__device-icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-detail__device-info{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.tk-workspace-detail__device-info .tk-workspace-detail__device-primary{font-size:.75rem;min-inline-size:1.25rem;block-size:100%;max-block-size:1.25rem;border-color:#5ebff7;background-color:#08599c;color:#fffffff2;display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid #5ebff7;border-radius:.25rem;line-height:1;text-overflow:ellipsis;box-sizing:border-box}.tk-workspace-detail__device-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__device-status{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#000000f2}.tk-workspace-detail__no-devices{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:2rem 1.25rem}.tk-workspace-detail__no-devices-icon{width:2rem;height:2rem;margin-bottom:.5rem}.tk-workspace-detail__calling-license{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__calling-license mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__row{display:flex;align-items:center;gap:1rem;font-size:.875rem}.tk-workspace-detail__row mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__row--with-action,.tk-workspace-detail__row--kv{justify-content:space-between}.tk-workspace-detail__row--kv:first-of-type{border-top:none}.tk-workspace-detail__row-label{color:#000000f2}.tk-workspace-detail__row-value{font-weight:500;text-align:right}.tk-workspace-detail__row-hint{font-size:14px;color:#000000b3}.tk-workspace-detail__row-chevron{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__numbers-card{display:flex;gap:1rem}.tk-workspace-detail__numbers-title{width:8.75rem;flex-shrink:0;margin:0;font-size:.9375rem;font-weight:600}.tk-workspace-detail__numbers-content{flex:1;min-width:0;display:flex;flex-direction:column}.tk-workspace-detail__numbers-row{display:flex;align-items:flex-start;gap:1rem;padding:.75rem 0}.tk-workspace-detail__numbers-row-label{width:9.375rem;flex-shrink:0;display:flex;align-items:center;gap:.375rem;font-size:.875rem}.tk-workspace-detail__numbers-row-value{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-detail__numbers-table{flex:1;min-width:0;border-collapse:collapse;font-size:.875rem}.tk-workspace-detail__numbers-table th{padding:0 .75rem .5rem 0;text-align:left;font-weight:400;font-size:.8125rem;color:#0009}.tk-workspace-detail__numbers-table td{padding:0 .75rem 0 0;vertical-align:middle;white-space:nowrap}.tk-workspace-detail__numbers-chevron-cell{width:1.5rem;text-align:right;white-space:nowrap}.tk-workspace-detail__copy-icon{font-size:1rem;height:1rem;width:1rem;margin-left:.25rem;color:#0006;vertical-align:middle;cursor:pointer}.tk-workspace-detail__badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:6.25rem;background:#e8f4fc;border:1px solid #b8d9ed;color:#1170a8;font-size:.75rem;font-weight:500}.tk-workspace-detail__location{display:flex;align-items:flex-start;gap:1rem}.tk-workspace-detail__location mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__location-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__location-address{font-size:.875rem;color:#000000f2}\n"], dependencies: [{ kind: "component", type: i1$2.TkLoaderComponent, selector: "tk-loader", inputs: ["diameter", "strokeWidth", "backdrop", "color"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: WorkspaceDeviceDetailComponent, selector: "tk-workspace-device-detail", inputs: ["workspace", "device", "details", "isLoading"], outputs: ["back"] }] });
|
|
917
926
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailComponent, decorators: [{
|
|
918
927
|
type: Component,
|
|
919
|
-
args: [{ selector: 'tk-workspace-detail', template: "<ng-container *ngIf=\"view === 'overview'; else deviceDetailView\">\r\n<button type=\"button\" class=\"tk-workspace-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Workspaces\r\n</button>\r\n\r\n<div class=\"tk-workspace-detail__header\">\r\n <span class=\"tk-workspace-detail__icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspace-detail__title-block\">\r\n <h1 class=\"tk-workspace-detail__name\">{{ workspace.displayName }}</h1>\r\n <div class=\"tk-workspace-detail__meta\">\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Live status unavailable\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-type\">Type: {{ workspace.typeLabel === 'No type' ? 'Not set' : workspace.typeLabel }}</span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n Capacity: {{ workspace.capacity ?? 'Not set' }}\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill tk-workspace-detail__meta-pill--muted\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n Size not set\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n</div>\r\n\r\n<nav class=\"tk-workspace-detail__tabs\">\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'overview'\"\r\n (click)=\"selectTab('overview')\">\r\n Overview\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'calling'\"\r\n (click)=\"selectTab('calling')\">\r\n Calling\r\n </button>\r\n</nav>\r\n\r\n<app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n<ng-container *ngIf=\"details\">\r\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'overview'\">\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-detail__no-issues\" *ngIf=\"!details.issues.length\">\r\n <mat-icon class=\"tk-workspace-detail__no-issues-icon\">check_circle</mat-icon>\r\n There are currently no issues detected in your workspace.\r\n </div>\r\n <div class=\"tk-workspace-detail__issue\" *ngFor=\"let issue of details.issues\">\r\n <div class=\"tk-workspace-detail__issue-row\">\r\n <div class=\"tk-workspace-detail__issue-info\">\r\n <div class=\"tk-workspace-detail__issue-message-row\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <div class=\"tk-workspace-detail__issue-message\">{{ issue.message }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-timestamp\">{{ issue.timestamp }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-actions\">\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">{{ issue.actionLabel }}</button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__issue-toggle\"\r\n [class.tk-workspace-detail__issue-toggle--open]=\"expandedIssueId === issue.id\"\r\n [attr.aria-expanded]=\"expandedIssueId === issue.id\"\r\n (click)=\"'void 0'\">\r\n <img style=\"width: .75rem; height: .75rem;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-details\" *ngIf=\"expandedIssueId === issue.id\">\r\n <p>{{ issue.description }}</p>\r\n <p>\r\n Suggested action:<br />\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__issue-link\">{{ issue.suggestedAction }}</a>\r\n </p>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Devices</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__devices\" *ngIf=\"workspace.devices.length; else noDevices\">\r\n <div class=\"tk-workspace-detail__device\" *ngFor=\"let device of workspace.devices\">\r\n <img class=\"tk-workspace-detail__device-icon\" [src]=\"resolveIcon(device.model)\" [alt]=\"device.label\" />\r\n <div class=\"tk-workspace-detail__device-info\">\r\n <div style=\"display: flex; gap: 0.5rem; align-items: center;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__device-link\" (click)=\"onOpenDevice(device)\">{{ device.label }}</a>\r\n <span class=\"tk-workspace-detail__device-primary\">Primary</span>\r\n </div>\r\n <div class=\"tk-workspace-detail__device-status\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Status unavailable\r\n <img class=\"tk-workspace-detail__info-icon\" style=\"width: 12px; height: 12px;\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #noDevices>\r\n <div class=\"tk-workspace-detail__no-devices\">\r\n <img class=\"tk-workspace-detail__no-devices-icon\" src=\"assets/icons/desk-phone-bold.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add device</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Add an IP Phone to collaborate in this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add device</button>\r\n </div>\r\n </ng-template>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__calling-license\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/handset-regular.svg\" alt=\"\" />\r\n {{ details.calling.license }}\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\r\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\r\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.schedulingConfigured\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Scheduling</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Choose scheduling</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Choose a calendar service or setup hot-desking for this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Choose scheduling</button>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Meetings</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Device hosted meetings unavailable</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Service not supported by Cisco IP phones</p>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">\r\n Planned Maintenance\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </h2>\r\n <div class=\"tk-workspace-detail__row\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/tools-regular.svg\" alt=\"\">\r\n <span>{{ details.plannedMaintenanceEnabled ? 'On' : 'Off' }}</span>\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--with-action\">\r\n <div class=\"tk-workspace-detail__row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div style=\"display: flex; gap: 1rem; align-items: center;\">\r\n <img class=\"tk-workspace-detail__meta-icon\" style=\"width: 20px; height: 20px;\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <div>Schedule</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__row-hint\">No schedule set</div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Edit schedule</button>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.notes\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Add Notes</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/notes-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add notes</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Write a note about this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add notes</button>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\" style=\"margin-bottom: 1.25rem;\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Location</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__location\">\r\n <!-- <mat-icon>location_on</mat-icon> -->\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <div style=\"display: flex; flex-direction: column; gap: .25rem;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__location-link\">{{ details.location.country }}</a>\r\n <div class=\"tk-workspace-detail__location-address\">{{ details.location.address }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\" *ngIf=\"activeTab === 'calling'\">\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__numbers-card\">\r\n <h2 class=\"tk-workspace-detail__numbers-title\">Numbers</h2>\r\n\r\n <div class=\"tk-workspace-detail__numbers-content\">\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Directory number\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <table class=\"tk-workspace-detail__numbers-table\">\r\n <thead>\r\n <tr>\r\n <th>Type</th>\r\n <th>Phone Number</th>\r\n <th>Extension</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td><span class=\"tk-workspace-detail__badge\">Primary</span></td>\r\n <td>\r\n {{ details.calling.directoryNumber }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td>\r\n {{ details.calling.extension || 'Not set' }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td class=\"tk-workspace-detail__numbers-chevron-cell\">\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Caller ID\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>{{ callerIdLabel }}</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Emergency Calling\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>Not set</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</ng-container>\r\n</ng-container>\r\n\r\n<ng-template #deviceDetailView>\r\n <tk-workspace-device-detail\r\n [workspace]=\"workspace\"\r\n [device]=\"selectedDevice\"\r\n [details]=\"details?.device ?? null\"\r\n [isLoading]=\"isLoading\"\r\n (back)=\"onDeviceBack()\">\r\n </tk-workspace-device-detail>\r\n</ng-template>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-detail__breadcrumb mat-icon{font-size:1.25rem;height:1.25rem;width:1.25rem}.tk-workspace-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.tk-workspace-detail__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:50%;background:#2b2b2b}.tk-workspace-detail__icon img{height:1.375rem;width:1.375rem;filter:brightness(0) invert(1)}.tk-workspace-detail__title-block{flex:1;min-width:0}.tk-workspace-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-detail__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-size:.875rem;color:#0009}.tk-workspace-detail__meta-type{color:#000000f2}.tk-workspace-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-detail__meta-sep:before{content:\"\";flex-shrink:0;inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:var(--mch-OutlinePrimary-normal, rgba(0, 0, 0, .45))}.tk-workspace-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-detail__meta-muted{color:#0006}.tk-workspace-detail__meta-pill{display:inline-flex;font-size:.875rem;align-items:center;gap:.35rem;border:1px solid rgba(0,0,0,.2);padding:.25rem .5rem;cursor:pointer;min-inline-size:1.5rem;block-size:100%;max-block-size:1.5rem;color:#000000f2;border-radius:.5rem}.tk-workspace-detail__meta-pill--muted{color:#0006}.tk-workspace-detail__meta-pill-icon{font-size:.875rem;height:.875rem;width:.875rem;opacity:.4}.tk-workspace-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-detail__actions-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__tabs{display:flex;align-items:center;gap:1.5rem;border-bottom:1px solid rgba(0,0,0,.12);margin-bottom:1.25rem}.tk-workspace-detail__tab{padding:.75rem 0;background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;font-size:.9375rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspace-detail__tab:hover{color:#000000f2}.tk-workspace-detail__tab--active{color:#000000f2;border-bottom-color:#000}.tk-workspace-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-detail__grid{grid-template-columns:1fr}}.tk-workspace-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-detail__card--centered{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:1rem 1.5rem}.tk-workspace-detail__card-icon{color:#0009;margin-bottom:.5rem}.tk-workspace-detail__card-heading{margin:0;font-size:.9375rem;font-weight:500}.tk-workspace-detail__card-text{margin:0 0 .5rem;font-size:.875rem;color:#000000b3;max-width:20rem}.tk-workspace-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;width:100%}.tk-workspace-detail__card-title{display:flex;align-items:center;gap:.375rem;margin:0;padding:0;font-size:1rem;font-weight:500;margin-bottom:1rem}.tk-workspace-detail__card-title__settings_icon_wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);color:#000000f2;cursor:pointer}.tk-workspace-detail__card-header .tk-workspace-detail__card-title{margin-bottom:0}.tk-workspace-detail__settings-icon,.tk-workspace-detail__info-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-workspace-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__issue+.tk-workspace-detail__issue{margin-top:.75rem}.tk-workspace-detail__issue-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 1rem;border-radius:.5rem;border:.0625rem solid rgba(0,0,0,.2);cursor:pointer;height:46px;box-sizing:content-box}.tk-workspace-detail__issue-row:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-actions{display:flex;align-items:center;gap:1rem;flex-shrink:0}.tk-workspace-detail__issue-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:50%;color:#0009;cursor:pointer;flex-shrink:0;background:transparent}.tk-workspace-detail__issue-toggle:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-toggle:active{background:rgba(0,0,0,.2)}.tk-workspace-detail__issue-toggle mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;transition:transform .15s ease}.tk-workspace-detail__issue-toggle--open mat-icon{transform:rotate(180deg)}.tk-workspace-detail__issue-details{padding:.75rem 1rem .25rem 2.75rem;font-size:.8125rem;color:#0009}.tk-workspace-detail__issue-details p{margin:0 0 .5rem}.tk-workspace-detail__issue-link{color:#0353a8;text-decoration:underline}.tk-workspace-detail__issue-info{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;height:100%;justify-content:space-around}.tk-workspace-detail__issue-icon{color:#0353a8;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__issue-message-row{display:flex;align-items:center;gap:.5rem}.tk-workspace-detail__issue-message-row .tk-workspace-detail__issue-message{font-size:.875rem;font-weight:500}.tk-workspace-detail__issue-timestamp{font-size:.75rem;color:#000000b3}.tk-workspace-detail__pill-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;text-overflow:ellipsis;overflow:hidden!important;cursor:pointer;white-space:nowrap}.tk-workspace-detail__pill-button:hover{background:#ededed}.tk-workspace-detail__pill-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__devices{display:flex;flex-wrap:wrap;gap:.75rem;display:grid;grid-template-rows:auto 1fr;grid-template-columns:repeat(auto-fit,minmax(16.75rem,1fr));gap:.5rem}.tk-workspace-detail__device{align-items:center;gap:1.5rem;padding:.75rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;min-width:12rem;align-items:start;display:flex;flex-direction:column;grid-row:span 2;grid-column:1;min-block-size:8rem}.tk-workspace-detail__device-icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-detail__device-info{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.tk-workspace-detail__device-info .tk-workspace-detail__device-primary{font-size:.75rem;min-inline-size:1.25rem;block-size:100%;max-block-size:1.25rem;border-color:#5ebff7;background-color:#08599c;color:#fffffff2;display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid #5ebff7;border-radius:.25rem;line-height:1;text-overflow:ellipsis;box-sizing:border-box}.tk-workspace-detail__device-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__device-status{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#000000f2}.tk-workspace-detail__no-devices{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:2rem 1.25rem}.tk-workspace-detail__no-devices-icon{width:2rem;height:2rem;margin-bottom:.5rem}.tk-workspace-detail__calling-license{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__calling-license mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__row{display:flex;align-items:center;gap:1rem;font-size:.875rem}.tk-workspace-detail__row mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__row--with-action,.tk-workspace-detail__row--kv{justify-content:space-between}.tk-workspace-detail__row--kv:first-of-type{border-top:none}.tk-workspace-detail__row-label{color:#000000f2}.tk-workspace-detail__row-value{font-weight:500;text-align:right}.tk-workspace-detail__row-hint{font-size:14px;color:#000000b3}.tk-workspace-detail__row-chevron{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__numbers-card{display:flex;gap:1rem}.tk-workspace-detail__numbers-title{width:8.75rem;flex-shrink:0;margin:0;font-size:.9375rem;font-weight:600}.tk-workspace-detail__numbers-content{flex:1;min-width:0;display:flex;flex-direction:column}.tk-workspace-detail__numbers-row{display:flex;align-items:flex-start;gap:1rem;padding:.75rem 0}.tk-workspace-detail__numbers-row-label{width:9.375rem;flex-shrink:0;display:flex;align-items:center;gap:.375rem;font-size:.875rem}.tk-workspace-detail__numbers-row-value{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-detail__numbers-table{flex:1;min-width:0;border-collapse:collapse;font-size:.875rem}.tk-workspace-detail__numbers-table th{padding:0 .75rem .5rem 0;text-align:left;font-weight:400;font-size:.8125rem;color:#0009}.tk-workspace-detail__numbers-table td{padding:0 .75rem 0 0;vertical-align:middle;white-space:nowrap}.tk-workspace-detail__numbers-chevron-cell{width:1.5rem;text-align:right;white-space:nowrap}.tk-workspace-detail__copy-icon{font-size:1rem;height:1rem;width:1rem;margin-left:.25rem;color:#0006;vertical-align:middle;cursor:pointer}.tk-workspace-detail__badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:6.25rem;background:#e8f4fc;border:1px solid #b8d9ed;color:#1170a8;font-size:.75rem;font-weight:500}.tk-workspace-detail__location{display:flex;align-items:flex-start;gap:1rem}.tk-workspace-detail__location mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__location-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__location-address{font-size:.875rem;color:#000000f2}\n"] }]
|
|
920
|
-
}], ctorParameters: function () { return [{ type: WorkspaceDetailService }, { type:
|
|
928
|
+
args: [{ selector: 'tk-workspace-detail', template: "<ng-container *ngIf=\"view === 'overview'; else deviceDetailView\">\r\n<button type=\"button\" class=\"tk-workspace-detail__breadcrumb\" (click)=\"onBack()\">\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-left-bold.svg\" alt=\"Back\" />\r\n Workspaces\r\n</button>\r\n\r\n<div class=\"tk-workspace-detail__header\">\r\n <span class=\"tk-workspace-detail__icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspace-detail__title-block\">\r\n <h1 class=\"tk-workspace-detail__name\">{{ workspace.displayName }}</h1>\r\n <div class=\"tk-workspace-detail__meta\">\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Live status unavailable\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-type\">Type: {{ workspace.typeLabel === 'No type' ? 'Not set' : workspace.typeLabel }}</span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n Capacity: {{ workspace.capacity ?? 'Not set' }}\r\n </span>\r\n <span class=\"tk-workspace-detail__meta-sep\"></span>\r\n <span class=\"tk-workspace-detail__meta-pill tk-workspace-detail__meta-pill--muted\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n Size not set\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__actions-button\" [matMenuTriggerFor]=\"actionsMenu\">\r\n Actions\r\n <img style=\"width: 16px; height: 16px;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n <mat-menu #actionsMenu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item disabled>More actions coming soon</button>\r\n </mat-menu>\r\n</div>\r\n\r\n<nav class=\"tk-workspace-detail__tabs\">\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'overview'\"\r\n (click)=\"selectTab('overview')\">\r\n Overview\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__tab\"\r\n [class.tk-workspace-detail__tab--active]=\"activeTab === 'calling'\"\r\n (click)=\"selectTab('calling')\">\r\n Calling\r\n </button>\r\n</nav>\r\n\r\n<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<ng-container *ngIf=\"details\">\r\n <div class=\"tk-workspace-detail__grid\" *ngIf=\"activeTab === 'overview'\">\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Issues & Information</h2>\r\n <div class=\"tk-workspace-detail__no-issues\" *ngIf=\"!details.issues.length\">\r\n <mat-icon class=\"tk-workspace-detail__no-issues-icon\">check_circle</mat-icon>\r\n There are currently no issues detected in your workspace.\r\n </div>\r\n <div class=\"tk-workspace-detail__issue\" *ngFor=\"let issue of details.issues\">\r\n <div class=\"tk-workspace-detail__issue-row\">\r\n <div class=\"tk-workspace-detail__issue-info\">\r\n <div class=\"tk-workspace-detail__issue-message-row\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <div class=\"tk-workspace-detail__issue-message\">{{ issue.message }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-timestamp\">{{ issue.timestamp }}</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-actions\">\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">{{ issue.actionLabel }}</button>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspace-detail__issue-toggle\"\r\n [class.tk-workspace-detail__issue-toggle--open]=\"expandedIssueId === issue.id\"\r\n [attr.aria-expanded]=\"expandedIssueId === issue.id\"\r\n (click)=\"'void 0'\">\r\n <img style=\"width: .75rem; height: .75rem;\" src=\"assets/icons/arrow-down-regular.svg\" alt=\"Expand\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__issue-details\" *ngIf=\"expandedIssueId === issue.id\">\r\n <p>{{ issue.description }}</p>\r\n <p>\r\n Suggested action:<br />\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__issue-link\">{{ issue.suggestedAction }}</a>\r\n </p>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Devices</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__devices\" *ngIf=\"workspace.devices.length; else noDevices\">\r\n <div class=\"tk-workspace-detail__device\" *ngFor=\"let device of workspace.devices\">\r\n <img class=\"tk-workspace-detail__device-icon\" [src]=\"resolveIcon(device.model)\" [alt]=\"device.label\" />\r\n <div class=\"tk-workspace-detail__device-info\">\r\n <div style=\"display: flex; gap: 0.5rem; align-items: center;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__device-link\" (click)=\"onOpenDevice(device)\">{{ device.label }}</a>\r\n <span class=\"tk-workspace-detail__device-primary\">Primary</span>\r\n </div>\r\n <div class=\"tk-workspace-detail__device-status\">\r\n <span class=\"tk-workspace-detail__status-dot\"></span>\r\n Status unavailable\r\n <img class=\"tk-workspace-detail__info-icon\" style=\"width: 12px; height: 12px;\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #noDevices>\r\n <div class=\"tk-workspace-detail__no-devices\">\r\n <img class=\"tk-workspace-detail__no-devices-icon\" src=\"assets/icons/desk-phone-bold.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add device</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Add an IP Phone to collaborate in this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add device</button>\r\n </div>\r\n </ng-template>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Calling</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__calling-license\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/handset-regular.svg\" alt=\"\" />\r\n {{ details.calling.license }}\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--kv\">\r\n <span class=\"tk-workspace-detail__row-label\">Cisco Webex SIP Address</span>\r\n <span class=\"tk-workspace-detail__row-value\">{{ details.calling.sipAddress }}</span>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.schedulingConfigured\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Scheduling</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Choose scheduling</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Choose a calendar service or setup hot-desking for this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Choose scheduling</button>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Meetings</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Device hosted meetings unavailable</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Service not supported by Cisco IP phones</p>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card\">\r\n <h2 class=\"tk-workspace-detail__card-title\">\r\n Planned Maintenance\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </h2>\r\n <div class=\"tk-workspace-detail__row\">\r\n <img style=\"width: 20px; height: 20px;\" src=\"assets/icons/tools-regular.svg\" alt=\"\">\r\n <span>{{ details.plannedMaintenanceEnabled ? 'On' : 'Off' }}</span>\r\n </div>\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n <div class=\"tk-workspace-detail__row tk-workspace-detail__row--with-action\">\r\n <div class=\"tk-workspace-detail__row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div style=\"display: flex; gap: 1rem; align-items: center;\">\r\n <img class=\"tk-workspace-detail__meta-icon\" style=\"width: 20px; height: 20px;\" src=\"assets/icons/calendar-month-regular.svg\" alt=\"\" />\r\n <div>Schedule</div>\r\n </div>\r\n <div class=\"tk-workspace-detail__row-hint\">No schedule set</div>\r\n </div>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Edit schedule</button>\r\n </div>\r\n </section>\r\n\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__card--centered\" *ngIf=\"!details.notes\">\r\n <div class=\"tk-workspace-detail__card-header\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Add Notes</h2>\r\n </div>\r\n <img class=\"tk-workspace-detail__card-icon\" src=\"assets/icons/notes-regular.svg\" alt=\"\" />\r\n <h3 class=\"tk-workspace-detail__card-heading\">Add notes</h3>\r\n <p class=\"tk-workspace-detail__card-text\">Write a note about this workspace.</p>\r\n <button type=\"button\" class=\"tk-workspace-detail__pill-button\">Add notes</button>\r\n </section>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\">\r\n <section class=\"tk-workspace-detail__card\">\r\n <div class=\"tk-workspace-detail__card-header\" style=\"margin-bottom: 1.25rem;\">\r\n <h2 class=\"tk-workspace-detail__card-title\">Location</h2>\r\n <div class=\"tk-workspace-detail__card-title__settings_icon_wrapper\">\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/settings-regular.svg\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"tk-workspace-detail__location\">\r\n <!-- <mat-icon>location_on</mat-icon> -->\r\n <img class=\"tk-workspace-detail__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <div style=\"display: flex; flex-direction: column; gap: .25rem;\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspace-detail__location-link\">{{ details.location.country }}</a>\r\n <div class=\"tk-workspace-detail__location-address\">{{ details.location.address }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-workspace-detail__col\" *ngIf=\"activeTab === 'calling'\">\r\n <section class=\"tk-workspace-detail__card tk-workspace-detail__numbers-card\">\r\n <h2 class=\"tk-workspace-detail__numbers-title\">Numbers</h2>\r\n\r\n <div class=\"tk-workspace-detail__numbers-content\">\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Directory number\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <table class=\"tk-workspace-detail__numbers-table\">\r\n <thead>\r\n <tr>\r\n <th>Type</th>\r\n <th>Phone Number</th>\r\n <th>Extension</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td><span class=\"tk-workspace-detail__badge\">Primary</span></td>\r\n <td>\r\n {{ details.calling.directoryNumber }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td>\r\n {{ details.calling.extension || 'Not set' }}\r\n <img class=\"tk-workspace-detail__copy-icon\" src=\"assets/icons/copy-regular.svg\" alt=\"Copy\" />\r\n </td>\r\n <td class=\"tk-workspace-detail__numbers-chevron-cell\">\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Caller ID\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>{{ callerIdLabel }}</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n\r\n <hr class=\"tk-workspace-detail__divider\" />\r\n\r\n <div class=\"tk-workspace-detail__numbers-row\">\r\n <div class=\"tk-workspace-detail__numbers-row-label\">\r\n Emergency Calling\r\n <img class=\"tk-workspace-detail__info-icon\" src=\"assets/icons/info-circle-regular.svg\" alt=\"\" />\r\n </div>\r\n <div class=\"tk-workspace-detail__numbers-row-value\">\r\n <span>Not set</span>\r\n <img class=\"tk-workspace-detail__row-chevron\" src=\"assets/icons/arrow-right-regular.svg\" alt=\"Expand\" />\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n</ng-container>\r\n</ng-container>\r\n\r\n<ng-template #deviceDetailView>\r\n <tk-workspace-device-detail\r\n [workspace]=\"workspace\"\r\n [device]=\"selectedDevice\"\r\n [details]=\"details?.device ?? null\"\r\n [isLoading]=\"isLoading\"\r\n (back)=\"onDeviceBack()\">\r\n </tk-workspace-device-detail>\r\n</ng-template>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspace-detail__breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:0;margin-bottom:1rem;background:none;border:none;font-family:inherit;font-size:.875rem;font-weight:500;color:#0009;cursor:pointer}.tk-workspace-detail__breadcrumb:hover{color:#000000f2}.tk-workspace-detail__breadcrumb mat-icon{font-size:1.25rem;height:1.25rem;width:1.25rem}.tk-workspace-detail__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.tk-workspace-detail__icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:50%;background:#2b2b2b}.tk-workspace-detail__icon img{height:1.375rem;width:1.375rem;filter:brightness(0) invert(1)}.tk-workspace-detail__title-block{flex:1;min-width:0}.tk-workspace-detail__name{margin:0 0 .375rem;font-size:1.25rem;font-weight:600}.tk-workspace-detail__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;font-size:.875rem;color:#0009}.tk-workspace-detail__meta-type{color:#000000f2}.tk-workspace-detail__meta-sep{display:inline-flex;align-items:center}.tk-workspace-detail__meta-sep:before{content:\"\";flex-shrink:0;inline-size:.25rem;block-size:.25rem;border-radius:50%;background-color:var(--mch-OutlinePrimary-normal, rgba(0, 0, 0, .45))}.tk-workspace-detail__meta-icon{height:1rem;width:1rem}.tk-workspace-detail__meta-muted{color:#0006}.tk-workspace-detail__meta-pill{display:inline-flex;font-size:.875rem;align-items:center;gap:.35rem;border:1px solid rgba(0,0,0,.2);padding:.25rem .5rem;cursor:pointer;min-inline-size:1.5rem;block-size:100%;max-block-size:1.5rem;color:#000000f2;border-radius:.5rem}.tk-workspace-detail__meta-pill--muted{color:#0006}.tk-workspace-detail__meta-pill-icon{font-size:.875rem;height:.875rem;width:.875rem;opacity:.4}.tk-workspace-detail__status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#707070}.tk-workspace-detail__actions-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;flex-shrink:0}.tk-workspace-detail__actions-button:hover{background:#2b2b2b}.tk-workspace-detail__actions-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__tabs{display:flex;align-items:center;gap:1.5rem;border-bottom:1px solid rgba(0,0,0,.12);margin-bottom:1.25rem}.tk-workspace-detail__tab{padding:.75rem 0;background:none;border:none;border-bottom:2px solid transparent;font-family:inherit;font-size:.9375rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspace-detail__tab:hover{color:#000000f2}.tk-workspace-detail__tab--active{color:#000000f2;border-bottom-color:#000}.tk-workspace-detail__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}@media (max-width: 900px){.tk-workspace-detail__grid{grid-template-columns:1fr}}.tk-workspace-detail__col{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.tk-workspace-detail__card{background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;padding:1rem 1.5rem;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspace-detail__card--centered{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:1rem 1.5rem}.tk-workspace-detail__card-icon{color:#0009;margin-bottom:.5rem}.tk-workspace-detail__card-heading{margin:0;font-size:.9375rem;font-weight:500}.tk-workspace-detail__card-text{margin:0 0 .5rem;font-size:.875rem;color:#000000b3;max-width:20rem}.tk-workspace-detail__card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;width:100%}.tk-workspace-detail__card-title{display:flex;align-items:center;gap:.375rem;margin:0;padding:0;font-size:1rem;font-weight:500;margin-bottom:1rem}.tk-workspace-detail__card-title__settings_icon_wrapper{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(0,0,0,.5019607843);color:#000000f2;cursor:pointer}.tk-workspace-detail__card-header .tk-workspace-detail__card-title{margin-bottom:0}.tk-workspace-detail__settings-icon,.tk-workspace-detail__info-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-workspace-detail__divider{border:none;border-top:1px solid rgba(0,0,0,.2);margin:.75rem 0}.tk-workspace-detail__no-issues{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__no-issues-icon{color:#1d805f;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__issue+.tk-workspace-detail__issue{margin-top:.75rem}.tk-workspace-detail__issue-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 1rem;border-radius:.5rem;border:.0625rem solid rgba(0,0,0,.2);cursor:pointer;height:46px;box-sizing:content-box}.tk-workspace-detail__issue-row:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-actions{display:flex;align-items:center;gap:1rem;flex-shrink:0}.tk-workspace-detail__issue-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:50%;color:#0009;cursor:pointer;flex-shrink:0;background:transparent}.tk-workspace-detail__issue-toggle:hover{background:rgba(0,0,0,.0705882353)}.tk-workspace-detail__issue-toggle:active{background:rgba(0,0,0,.2)}.tk-workspace-detail__issue-toggle mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;transition:transform .15s ease}.tk-workspace-detail__issue-toggle--open mat-icon{transform:rotate(180deg)}.tk-workspace-detail__issue-details{padding:.75rem 1rem .25rem 2.75rem;font-size:.8125rem;color:#0009}.tk-workspace-detail__issue-details p{margin:0 0 .5rem}.tk-workspace-detail__issue-link{color:#0353a8;text-decoration:underline}.tk-workspace-detail__issue-info{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;height:100%;justify-content:space-around}.tk-workspace-detail__issue-icon{color:#0353a8;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__issue-message-row{display:flex;align-items:center;gap:.5rem}.tk-workspace-detail__issue-message-row .tk-workspace-detail__issue-message{font-size:.875rem;font-weight:500}.tk-workspace-detail__issue-timestamp{font-size:.75rem;color:#000000b3}.tk-workspace-detail__pill-button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;text-overflow:ellipsis;overflow:hidden!important;cursor:pointer;white-space:nowrap}.tk-workspace-detail__pill-button:hover{background:#ededed}.tk-workspace-detail__pill-button mat-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__devices{display:flex;flex-wrap:wrap;gap:.75rem;display:grid;grid-template-rows:auto 1fr;grid-template-columns:repeat(auto-fit,minmax(16.75rem,1fr));gap:.5rem}.tk-workspace-detail__device{align-items:center;gap:1.5rem;padding:.75rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;min-width:12rem;align-items:start;display:flex;flex-direction:column;grid-row:span 2;grid-column:1;min-block-size:8rem}.tk-workspace-detail__device-icon{width:3rem;height:3rem;flex-shrink:0}.tk-workspace-detail__device-info{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.tk-workspace-detail__device-info .tk-workspace-detail__device-primary{font-size:.75rem;min-inline-size:1.25rem;block-size:100%;max-block-size:1.25rem;border-color:#5ebff7;background-color:#08599c;color:#fffffff2;display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid #5ebff7;border-radius:.25rem;line-height:1;text-overflow:ellipsis;box-sizing:border-box}.tk-workspace-detail__device-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__device-status{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#000000f2}.tk-workspace-detail__no-devices{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.375rem;padding:2rem 1.25rem}.tk-workspace-detail__no-devices-icon{width:2rem;height:2rem;margin-bottom:.5rem}.tk-workspace-detail__calling-license{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.tk-workspace-detail__calling-license mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-workspace-detail__row{display:flex;align-items:center;gap:1rem;font-size:.875rem}.tk-workspace-detail__row mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__row--with-action,.tk-workspace-detail__row--kv{justify-content:space-between}.tk-workspace-detail__row--kv:first-of-type{border-top:none}.tk-workspace-detail__row-label{color:#000000f2}.tk-workspace-detail__row-value{font-weight:500;text-align:right}.tk-workspace-detail__row-hint{font-size:14px;color:#000000b3}.tk-workspace-detail__row-chevron{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;flex-shrink:0}.tk-workspace-detail__numbers-card{display:flex;gap:1rem}.tk-workspace-detail__numbers-title{width:8.75rem;flex-shrink:0;margin:0;font-size:.9375rem;font-weight:600}.tk-workspace-detail__numbers-content{flex:1;min-width:0;display:flex;flex-direction:column}.tk-workspace-detail__numbers-row{display:flex;align-items:flex-start;gap:1rem;padding:.75rem 0}.tk-workspace-detail__numbers-row-label{width:9.375rem;flex-shrink:0;display:flex;align-items:center;gap:.375rem;font-size:.875rem}.tk-workspace-detail__numbers-row-value{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.875rem;color:#0009}.tk-workspace-detail__numbers-table{flex:1;min-width:0;border-collapse:collapse;font-size:.875rem}.tk-workspace-detail__numbers-table th{padding:0 .75rem .5rem 0;text-align:left;font-weight:400;font-size:.8125rem;color:#0009}.tk-workspace-detail__numbers-table td{padding:0 .75rem 0 0;vertical-align:middle;white-space:nowrap}.tk-workspace-detail__numbers-chevron-cell{width:1.5rem;text-align:right;white-space:nowrap}.tk-workspace-detail__copy-icon{font-size:1rem;height:1rem;width:1rem;margin-left:.25rem;color:#0006;vertical-align:middle;cursor:pointer}.tk-workspace-detail__badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:6.25rem;background:#e8f4fc;border:1px solid #b8d9ed;color:#1170a8;font-size:.75rem;font-weight:500}.tk-workspace-detail__location{display:flex;align-items:flex-start;gap:1rem}.tk-workspace-detail__location mat-icon{color:#0006;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-top:.125rem}.tk-workspace-detail__location-link{color:#0353a8;text-decoration:none;font-size:.875rem;font-weight:500}.tk-workspace-detail__location-address{font-size:.875rem;color:#000000f2}\n"] }]
|
|
929
|
+
}], ctorParameters: function () { return [{ type: WorkspaceDetailService }, { type: i2.Location }]; }, propDecorators: { workspace: [{
|
|
921
930
|
type: Input
|
|
922
931
|
}], connectionType: [{
|
|
923
932
|
type: Input
|
|
@@ -927,6 +936,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
927
936
|
type: Output
|
|
928
937
|
}] } });
|
|
929
938
|
|
|
939
|
+
const NO_LOCATION_OPTION = 'No location';
|
|
940
|
+
function hasNoLocation(location) {
|
|
941
|
+
const value = location === null || location === void 0 ? void 0 : location.trim().toLowerCase();
|
|
942
|
+
return !value || value === NO_LOCATION_OPTION.toLowerCase();
|
|
943
|
+
}
|
|
930
944
|
class WorkspacesComponent {
|
|
931
945
|
constructor(apiService, apiWebexService, workspacesService, migrationService, dialog, location) {
|
|
932
946
|
this.apiService = apiService;
|
|
@@ -956,6 +970,7 @@ class WorkspacesComponent {
|
|
|
956
970
|
this.searchTerm = '';
|
|
957
971
|
this.typeFilter = '';
|
|
958
972
|
this.locationFilter = '';
|
|
973
|
+
this.provisioningTypeFilter = '';
|
|
959
974
|
this.pendingWorkspaceIds = new Set();
|
|
960
975
|
this.subscriptions = [];
|
|
961
976
|
}
|
|
@@ -973,13 +988,37 @@ class WorkspacesComponent {
|
|
|
973
988
|
return [...new Set(this.workspaces.map(workspace => workspace.typeLabel).filter(Boolean))];
|
|
974
989
|
}
|
|
975
990
|
get locationOptions() {
|
|
976
|
-
|
|
991
|
+
const locations = [...new Set(this.workspaces.map(workspace => workspace.location).filter(location => !hasNoLocation(location)))];
|
|
992
|
+
return this.workspaces.some(workspace => hasNoLocation(workspace.location))
|
|
993
|
+
? [NO_LOCATION_OPTION, ...locations]
|
|
994
|
+
: locations;
|
|
977
995
|
}
|
|
978
996
|
get filteredWorkspacesAll() {
|
|
979
997
|
const term = this.searchTerm.trim().toLowerCase();
|
|
980
998
|
return this.workspaces.filter(workspace => (!term || workspace.displayName.toLowerCase().includes(term) || workspace.location.toLowerCase().includes(term)) &&
|
|
981
999
|
(!this.typeFilter || workspace.typeLabel === this.typeFilter) &&
|
|
982
|
-
|
|
1000
|
+
this.matchesLocationFilter(workspace) &&
|
|
1001
|
+
this.matchesProvisioningTypeFilter(workspace));
|
|
1002
|
+
}
|
|
1003
|
+
matchesProvisioningTypeFilter(workspace) {
|
|
1004
|
+
switch (this.provisioningTypeFilter) {
|
|
1005
|
+
case 'hybrid':
|
|
1006
|
+
return workspace.isHybrid;
|
|
1007
|
+
case 'webex-di':
|
|
1008
|
+
return !workspace.isHybrid && workspace.device.cucmId != null;
|
|
1009
|
+
case 'webex':
|
|
1010
|
+
return !workspace.isHybrid && workspace.device.webexUUID != null;
|
|
1011
|
+
default:
|
|
1012
|
+
return true;
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
matchesLocationFilter(workspace) {
|
|
1016
|
+
if (!this.locationFilter) {
|
|
1017
|
+
return true;
|
|
1018
|
+
}
|
|
1019
|
+
return this.locationFilter === NO_LOCATION_OPTION
|
|
1020
|
+
? hasNoLocation(workspace.location)
|
|
1021
|
+
: workspace.location === this.locationFilter;
|
|
983
1022
|
}
|
|
984
1023
|
get filteredWorkspaces() {
|
|
985
1024
|
const start = this.pageIndex * this.pageSize;
|
|
@@ -1019,6 +1058,10 @@ class WorkspacesComponent {
|
|
|
1019
1058
|
this.locationFilter = location;
|
|
1020
1059
|
this.pageIndex = 0;
|
|
1021
1060
|
}
|
|
1061
|
+
onProvisioningTypeFilterChange(provisioningType) {
|
|
1062
|
+
this.provisioningTypeFilter = provisioningType;
|
|
1063
|
+
this.pageIndex = 0;
|
|
1064
|
+
}
|
|
1022
1065
|
onPageChange({ pageIndex, pageSize }) {
|
|
1023
1066
|
this.pageIndex = pageIndex;
|
|
1024
1067
|
this.pageSize = pageSize;
|
|
@@ -1202,12 +1245,12 @@ class WorkspacesComponent {
|
|
|
1202
1245
|
});
|
|
1203
1246
|
}
|
|
1204
1247
|
}
|
|
1205
|
-
WorkspacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, deps: [{ token: APIService }, { token: ApiWebexService }, { token: WorkspacesService }, { token: WorkspacesMigrationService }, { token: i1.MatDialog }, { token:
|
|
1206
|
-
WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n
|
|
1248
|
+
WorkspacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, deps: [{ token: APIService }, { token: ApiWebexService }, { token: WorkspacesService }, { token: WorkspacesMigrationService }, { token: i1.MatDialog }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
1249
|
+
WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (provisioningTypeChange)=\"onProvisioningTypeFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"], dependencies: [{ kind: "component", type: i1$2.TkLoaderComponent, selector: "tk-loader", inputs: ["diameter", "strokeWidth", "backdrop", "color"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: ["resultCount", "typeOptions", "locationOptions"], outputs: ["searchChange", "typeChange", "locationChange", "provisioningTypeChange", "addWorkspace"] }, { kind: "component", type: WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: ["workspaces", "total", "pageIndex", "pageSize", "pageSizeOptions", "pendingWorkspaceIds", "isLoading"], outputs: ["openWorkspace", "migrateToMT", "enableWebexCalling", "migrateToUCM", "addDevice", "pageChange"] }, { kind: "component", type: WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: ["workspace", "connectionType", "customerId"], outputs: ["back"] }] });
|
|
1207
1250
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, decorators: [{
|
|
1208
1251
|
type: Component,
|
|
1209
|
-
args: [{ selector: 'tk-workspaces', template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n
|
|
1210
|
-
}], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }, { type: WorkspacesService }, { type: WorkspacesMigrationService }, { type: i1.MatDialog }, { type:
|
|
1252
|
+
args: [{ selector: 'tk-workspaces', template: "<tk-loader *ngIf=\"isLoading\"></tk-loader>\r\n\r\n<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (provisioningTypeChange)=\"onProvisioningTypeFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"filteredTotal\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n [isLoading]=\"isLoading\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n [connectionType]=\"selectedConnectionType\"\r\n [customerId]=\"customerId\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"] }]
|
|
1253
|
+
}], ctorParameters: function () { return [{ type: APIService }, { type: ApiWebexService }, { type: WorkspacesService }, { type: WorkspacesMigrationService }, { type: i1.MatDialog }, { type: i2.Location }]; }, propDecorators: { host: [{
|
|
1211
1254
|
type: Input
|
|
1212
1255
|
}], token: [{
|
|
1213
1256
|
type: Input
|
|
@@ -1229,12 +1272,13 @@ WorkspacesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
1229
1272
|
WorkspacesTableComponent,
|
|
1230
1273
|
WorkspaceDetailComponent,
|
|
1231
1274
|
WorkspaceDeviceDetailComponent,
|
|
1232
|
-
WorkspaceConfirmDialogComponent,
|
|
1233
|
-
|
|
1275
|
+
WorkspaceConfirmDialogComponent], imports: [TkLoaderComponent,
|
|
1276
|
+
CommonModule,
|
|
1234
1277
|
HttpClientModule,
|
|
1235
1278
|
FormsModule,
|
|
1236
1279
|
MaterialModule], exports: [WorkspacesComponent] });
|
|
1237
|
-
WorkspacesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, imports: [
|
|
1280
|
+
WorkspacesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, imports: [TkLoaderComponent,
|
|
1281
|
+
CommonModule,
|
|
1238
1282
|
HttpClientModule,
|
|
1239
1283
|
FormsModule,
|
|
1240
1284
|
MaterialModule] });
|
|
@@ -1248,9 +1292,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1248
1292
|
WorkspaceDetailComponent,
|
|
1249
1293
|
WorkspaceDeviceDetailComponent,
|
|
1250
1294
|
WorkspaceConfirmDialogComponent,
|
|
1251
|
-
AppLoaderComponent,
|
|
1252
1295
|
],
|
|
1253
1296
|
imports: [
|
|
1297
|
+
TkLoaderComponent,
|
|
1254
1298
|
CommonModule,
|
|
1255
1299
|
HttpClientModule,
|
|
1256
1300
|
FormsModule,
|