cps-ui-kit 0.165.0 → 17.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +824 -0
- package/esm2022/lib/components/cps-button/cps-button.component.mjs +190 -0
- package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +235 -0
- package/esm2022/lib/components/cps-checkbox/cps-checkbox.component.mjs +149 -0
- package/esm2022/lib/components/cps-chip/cps-chip.component.mjs +94 -0
- package/esm2022/lib/components/cps-datepicker/cps-datepicker.component.mjs +382 -0
- package/esm2022/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +209 -0
- package/esm2022/lib/components/cps-file-upload/cps-file-upload.component.mjs +138 -0
- package/esm2022/lib/components/cps-icon/cps-icon.component.mjs +193 -0
- package/esm2022/lib/components/cps-info-circle/cps-info-circle.component.mjs +61 -0
- package/esm2022/lib/components/cps-input/cps-input.component.mjs +386 -0
- package/{esm2020 → esm2022}/lib/components/cps-loader/cps-loader.component.mjs +5 -5
- package/esm2022/lib/components/cps-menu/cps-menu.component.mjs +552 -0
- package/esm2022/lib/components/cps-paginator/cps-paginator.component.mjs +114 -0
- package/esm2022/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +30 -0
- package/{esm2020 → esm2022}/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-radio-group/cps-radio/cps-radio.component.mjs +7 -7
- package/esm2022/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +55 -0
- package/esm2022/lib/components/cps-radio-group/cps-radio-group.component.mjs +158 -0
- package/esm2022/lib/components/cps-select/cps-select.component.mjs +615 -0
- package/esm2022/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +110 -0
- package/{esm2020 → esm2022}/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +4 -4
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +303 -0
- package/esm2022/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +79 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +408 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +149 -0
- package/esm2022/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +88 -0
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +941 -0
- package/esm2022/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +181 -0
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +220 -0
- package/esm2022/lib/components/cps-tag/cps-tag.component.mjs +136 -0
- package/esm2022/lib/components/cps-textarea/cps-textarea.component.mjs +291 -0
- package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +351 -0
- package/esm2022/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +251 -0
- package/esm2022/lib/components/cps-tree-select/cps-tree-select.component.mjs +87 -0
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +1196 -0
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +43 -0
- package/esm2022/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +354 -0
- package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +619 -0
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +257 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/check-option-selected.pipe.mjs +4 -4
- package/esm2022/lib/pipes/internal/combine-labels.pipe.mjs +25 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/label-by-value.pipe.mjs +4 -4
- package/esm2022/lib/services/cps-dialog/cps-dialog.service.mjs +99 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +470 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/utils/cps-dialog-config.mjs +3 -0
- package/esm2022/lib/services/cps-notification/cps-notification.service.mjs +126 -0
- package/esm2022/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +23 -23
- package/esm2022/lib/utils/colors-utils.mjs +57 -0
- package/esm2022/lib/utils/internal/size-utils.mjs +24 -0
- package/{esm2020 → esm2022}/public-api.mjs +2 -2
- package/{fesm2020 → fesm2022}/cps-ui-kit.mjs +481 -391
- package/fesm2022/cps-ui-kit.mjs.map +1 -0
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +2 -2
- package/lib/components/cps-button/cps-button.component.d.ts +1 -1
- package/lib/components/cps-button-toggle/cps-button-toggle.component.d.ts +2 -2
- package/lib/components/cps-checkbox/cps-checkbox.component.d.ts +2 -2
- package/lib/components/cps-chip/cps-chip.component.d.ts +1 -1
- package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +2 -2
- package/lib/components/cps-expansion-panel/cps-expansion-panel.component.d.ts +1 -1
- package/lib/components/cps-file-upload/cps-file-upload.component.d.ts +1 -1
- package/lib/components/cps-icon/cps-icon.component.d.ts +1 -1
- package/lib/components/cps-info-circle/cps-info-circle.component.d.ts +2 -2
- package/lib/components/cps-input/cps-input.component.d.ts +2 -2
- package/lib/components/cps-loader/cps-loader.component.d.ts +1 -1
- package/lib/components/cps-menu/cps-menu.component.d.ts +1 -1
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +1 -1
- package/lib/components/cps-progress-circular/cps-progress-circular.component.d.ts +1 -1
- package/lib/components/cps-progress-linear/cps-progress-linear.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio/cps-radio.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-group.component.d.ts +2 -2
- package/lib/components/cps-select/cps-select.component.d.ts +2 -2
- package/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab/cps-tab.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.d.ts +1 -1
- package/lib/components/cps-table/cps-table.component.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tag/cps-tag.component.d.ts +1 -1
- package/lib/components/cps-textarea/cps-textarea.component.d.ts +2 -2
- package/lib/components/cps-timepicker/cps-timepicker.component.d.ts +2 -2
- package/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.d.ts +1 -1
- package/lib/components/cps-tree-select/cps-tree-select.component.d.ts +1 -1
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +4 -4
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.d.ts +1 -1
- package/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.d.ts +2 -2
- package/lib/directives/{cps-tooltip.directive.d.ts → cps-tooltip/cps-tooltip.directive.d.ts} +2 -2
- package/lib/services/cps-dialog/cps-dialog.service.d.ts +13 -0
- package/lib/services/cps-dialog/utils/cps-dialog-config.d.ts +1 -1
- package/lib/services/cps-notification/cps-notification.service.d.ts +32 -0
- package/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.d.ts +1 -1
- package/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.d.ts +1 -1
- package/package.json +12 -18
- package/public-api.d.ts +1 -1
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +0 -824
- package/esm2020/lib/components/cps-button/cps-button.component.mjs +0 -190
- package/esm2020/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +0 -235
- package/esm2020/lib/components/cps-checkbox/cps-checkbox.component.mjs +0 -149
- package/esm2020/lib/components/cps-chip/cps-chip.component.mjs +0 -94
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +0 -382
- package/esm2020/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +0 -209
- package/esm2020/lib/components/cps-file-upload/cps-file-upload.component.mjs +0 -138
- package/esm2020/lib/components/cps-icon/cps-icon.component.mjs +0 -193
- package/esm2020/lib/components/cps-info-circle/cps-info-circle.component.mjs +0 -61
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +0 -386
- package/esm2020/lib/components/cps-menu/cps-menu.component.mjs +0 -552
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +0 -113
- package/esm2020/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +0 -30
- package/esm2020/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +0 -55
- package/esm2020/lib/components/cps-radio-group/cps-radio-group.component.mjs +0 -158
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +0 -615
- package/esm2020/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +0 -110
- package/esm2020/lib/components/cps-tab-group/cps-tab-group.component.mjs +0 -299
- package/esm2020/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +0 -79
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +0 -408
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +0 -148
- package/esm2020/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +0 -88
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +0 -940
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +0 -181
- package/esm2020/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +0 -210
- package/esm2020/lib/components/cps-tag/cps-tag.component.mjs +0 -136
- package/esm2020/lib/components/cps-textarea/cps-textarea.component.mjs +0 -291
- package/esm2020/lib/components/cps-timepicker/cps-timepicker.component.mjs +0 -351
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +0 -250
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +0 -87
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +0 -1192
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +0 -43
- package/esm2020/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +0 -334
- package/esm2020/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +0 -616
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +0 -257
- package/esm2020/lib/pipes/internal/combine-labels.pipe.mjs +0 -25
- package/esm2020/lib/services/cps-dialog/cps-dialog.service.mjs +0 -86
- package/esm2020/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +0 -470
- package/esm2020/lib/services/cps-dialog/utils/cps-dialog-config.mjs +0 -3
- package/esm2020/lib/services/cps-notification/cps-notification.service.mjs +0 -94
- package/esm2020/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +0 -91
- package/esm2020/lib/utils/colors-utils.mjs +0 -57
- package/esm2020/lib/utils/internal/size-utils.mjs +0 -24
- package/fesm2015/cps-ui-kit.mjs +0 -12086
- package/fesm2015/cps-ui-kit.mjs.map +0 -1
- package/fesm2020/cps-ui-kit.mjs.map +0 -1
- /package/{esm2020 → esm2022}/cps-ui-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/cps-table/cps-column-filter-types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-dialog/utils/cps-dialog-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/cps-notification-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/internal/cps-notification-data.mjs +0 -0
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChildren } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { RouterModule } from '@angular/router';
|
|
4
|
-
import { CpsMenuComponent } from '../cps-menu/cps-menu.component';
|
|
5
|
-
import { CpsIconComponent } from '../cps-icon/cps-icon.component';
|
|
6
|
-
import { convertSize } from '../../utils/internal/size-utils';
|
|
7
|
-
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/router";
|
|
10
|
-
import * as i2 from "@angular/common";
|
|
11
|
-
/**
|
|
12
|
-
* CpsSidebarMenuComponent is a vertical menu panel component displayed at the edge of the screen.
|
|
13
|
-
* @group Components
|
|
14
|
-
*/
|
|
15
|
-
export class CpsSidebarMenuComponent {
|
|
16
|
-
// eslint-disable-next-line no-useless-constructor
|
|
17
|
-
constructor(_router) {
|
|
18
|
-
this._router = _router;
|
|
19
|
-
/**
|
|
20
|
-
* An array of menu items.
|
|
21
|
-
* @group Props
|
|
22
|
-
*/
|
|
23
|
-
this.items = [];
|
|
24
|
-
/**
|
|
25
|
-
* Indicates current expansion state of the sidebar.
|
|
26
|
-
* @group Props
|
|
27
|
-
*/
|
|
28
|
-
this.isExpanded = true;
|
|
29
|
-
/**
|
|
30
|
-
* Determines whether the menu items should allow activating only exact links.
|
|
31
|
-
* @group Props
|
|
32
|
-
*/
|
|
33
|
-
this.exactRoutes = false;
|
|
34
|
-
/**
|
|
35
|
-
* Height of the sidebar, of type number denoting pixels or string.
|
|
36
|
-
* @group Props
|
|
37
|
-
*/
|
|
38
|
-
this.height = '100%';
|
|
39
|
-
}
|
|
40
|
-
ngOnInit() {
|
|
41
|
-
this.height = convertSize(this.height);
|
|
42
|
-
}
|
|
43
|
-
toggleMenu(event, menu) {
|
|
44
|
-
const isVisible = menu.isVisible();
|
|
45
|
-
this.allMenus?.forEach((m) => m.hide());
|
|
46
|
-
if (!isVisible)
|
|
47
|
-
menu.toggle(event, event.currentTarget, 'tr');
|
|
48
|
-
}
|
|
49
|
-
isActive(item) {
|
|
50
|
-
if (!item.items)
|
|
51
|
-
return false;
|
|
52
|
-
const urls = item.items.filter((i) => i.url).map((i) => i.url);
|
|
53
|
-
if (this.exactRoutes)
|
|
54
|
-
return urls.includes(this._router.url);
|
|
55
|
-
return urls.some((url) => this._router.url.includes(url));
|
|
56
|
-
}
|
|
57
|
-
toggleSidebar() {
|
|
58
|
-
this.isExpanded = !this.isExpanded;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
CpsSidebarMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsSidebarMenuComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
-
CpsSidebarMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsSidebarMenuComponent, isStandalone: true, selector: "cps-sidebar-menu", inputs: { items: "items", isExpanded: "isExpanded", exactRoutes: "exactRoutes", height: "height" }, viewQueries: [{ propertyName: "allMenus", predicate: ["popupMenu"], descendants: true }], ngImport: i0, template: "<div\n class=\"cps-sidebar-menu\"\n [style.height]=\"height\"\n [ngClass]=\"{ 'cps-sidebar-menu-collapsed': !isExpanded }\">\n <ng-container *ngFor=\"let item of items\">\n <a\n *ngIf=\"item.url\"\n class=\"cps-sidebar-menu-item\"\n [routerLink]=\"[item.url]\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: exactRoutes }\"\n [ngClass]=\"{ disabled: item.disabled }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </a>\n <ng-container *ngIf=\"!item.url\">\n <cps-menu\n #popupMenu\n [items]=\"item.items || []\"\n [header]=\"item.title\"\n showTransitionOptions=\"0s\"\n hideTransitionOptions=\"0s\"\n [withArrow]=\"false\">\n </cps-menu>\n <div\n (click)=\"toggleMenu($event, popupMenu)\"\n class=\"cps-sidebar-menu-item menu-trigger\"\n [ngClass]=\"{\n active: isActive(item),\n 'menu-open': popupMenu.isVisible(),\n disabled: item.disabled\n }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"expand-area\" (click)=\"toggleSidebar()\">\n <cps-icon icon=\"menu-shrink\" size=\"fill\"> </cps-icon>\n </div>\n</div>\n", styles: [":host .cps-sidebar-menu{display:inline-flex;flex-direction:column;justify-content:flex-start;align-items:center;box-shadow:0 0 60px #0000001a;width:80px;transition-duration:.2s;overflow:hidden;position:relative}:host .cps-sidebar-menu .expand-area{cursor:pointer;display:flex;justify-content:center;height:24px;position:absolute;bottom:5%;transition-duration:.2s}:host .cps-sidebar-menu .expand-area:hover{color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:80px;text-decoration:none;color:var(--cps-color-text-darkest);border-bottom:1px solid var(--cps-color-line-mid);-webkit-user-select:none;user-select:none}:host .cps-sidebar-menu .cps-sidebar-menu-item .cps-sidebar-menu-item-label{font-weight:600;font-size:11px;line-height:13px;width:80px;color:var(--cps-color-text-darkest);text-align:center}:host .cps-sidebar-menu .cps-sidebar-menu-item:hover:not(.active){background:var(--cps-color-highlight-hover);color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item:hover:not(.active) .cps-sidebar-menu-item-label{color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item:active:not(.active){background:var(--cps-color-highlight-active)}:host .cps-sidebar-menu .cps-sidebar-menu-item.active{background:var(--cps-color-calm);color:#fff}:host .cps-sidebar-menu .cps-sidebar-menu-item.active .cps-sidebar-menu-item-label{color:#fff}:host .cps-sidebar-menu .cps-sidebar-menu-item.menu-open:not(.active){background:var(--cps-color-highlight-active);color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item.menu-open:not(.active) .cps-sidebar-menu-item-label{color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item.menu-trigger{cursor:pointer}:host .cps-sidebar-menu .cps-sidebar-menu-item.disabled{cursor:default;pointer-events:none;color:var(--cps-color-text-light)}:host .cps-sidebar-menu .cps-sidebar-menu-item.disabled .cps-sidebar-menu-item-label{color:var(--cps-color-text-light)}:host .cps-sidebar-menu.cps-sidebar-menu-collapsed{width:40px}:host .cps-sidebar-menu.cps-sidebar-menu-collapsed .expand-area{transform:rotate(180deg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], animations: [
|
|
63
|
-
trigger('onExpand', [
|
|
64
|
-
state('collapsed', style({
|
|
65
|
-
marginTop: '0',
|
|
66
|
-
opacity: '0',
|
|
67
|
-
height: '0',
|
|
68
|
-
visibility: 'hidden'
|
|
69
|
-
})),
|
|
70
|
-
state('expanded', style({
|
|
71
|
-
marginTop: '6px',
|
|
72
|
-
opacity: '1'
|
|
73
|
-
})),
|
|
74
|
-
transition('expanded <=> collapsed', [
|
|
75
|
-
animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')
|
|
76
|
-
])
|
|
77
|
-
])
|
|
78
|
-
] });
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsSidebarMenuComponent, decorators: [{
|
|
80
|
-
type: Component,
|
|
81
|
-
args: [{ selector: 'cps-sidebar-menu', standalone: true, imports: [CommonModule, CpsMenuComponent, CpsIconComponent, RouterModule], animations: [
|
|
82
|
-
trigger('onExpand', [
|
|
83
|
-
state('collapsed', style({
|
|
84
|
-
marginTop: '0',
|
|
85
|
-
opacity: '0',
|
|
86
|
-
height: '0',
|
|
87
|
-
visibility: 'hidden'
|
|
88
|
-
})),
|
|
89
|
-
state('expanded', style({
|
|
90
|
-
marginTop: '6px',
|
|
91
|
-
opacity: '1'
|
|
92
|
-
})),
|
|
93
|
-
transition('expanded <=> collapsed', [
|
|
94
|
-
animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')
|
|
95
|
-
])
|
|
96
|
-
])
|
|
97
|
-
], template: "<div\n class=\"cps-sidebar-menu\"\n [style.height]=\"height\"\n [ngClass]=\"{ 'cps-sidebar-menu-collapsed': !isExpanded }\">\n <ng-container *ngFor=\"let item of items\">\n <a\n *ngIf=\"item.url\"\n class=\"cps-sidebar-menu-item\"\n [routerLink]=\"[item.url]\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: exactRoutes }\"\n [ngClass]=\"{ disabled: item.disabled }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </a>\n <ng-container *ngIf=\"!item.url\">\n <cps-menu\n #popupMenu\n [items]=\"item.items || []\"\n [header]=\"item.title\"\n showTransitionOptions=\"0s\"\n hideTransitionOptions=\"0s\"\n [withArrow]=\"false\">\n </cps-menu>\n <div\n (click)=\"toggleMenu($event, popupMenu)\"\n class=\"cps-sidebar-menu-item menu-trigger\"\n [ngClass]=\"{\n active: isActive(item),\n 'menu-open': popupMenu.isVisible(),\n disabled: item.disabled\n }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"expand-area\" (click)=\"toggleSidebar()\">\n <cps-icon icon=\"menu-shrink\" size=\"fill\"> </cps-icon>\n </div>\n</div>\n", styles: [":host .cps-sidebar-menu{display:inline-flex;flex-direction:column;justify-content:flex-start;align-items:center;box-shadow:0 0 60px #0000001a;width:80px;transition-duration:.2s;overflow:hidden;position:relative}:host .cps-sidebar-menu .expand-area{cursor:pointer;display:flex;justify-content:center;height:24px;position:absolute;bottom:5%;transition-duration:.2s}:host .cps-sidebar-menu .expand-area:hover{color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:80px;text-decoration:none;color:var(--cps-color-text-darkest);border-bottom:1px solid var(--cps-color-line-mid);-webkit-user-select:none;user-select:none}:host .cps-sidebar-menu .cps-sidebar-menu-item .cps-sidebar-menu-item-label{font-weight:600;font-size:11px;line-height:13px;width:80px;color:var(--cps-color-text-darkest);text-align:center}:host .cps-sidebar-menu .cps-sidebar-menu-item:hover:not(.active){background:var(--cps-color-highlight-hover);color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item:hover:not(.active) .cps-sidebar-menu-item-label{color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item:active:not(.active){background:var(--cps-color-highlight-active)}:host .cps-sidebar-menu .cps-sidebar-menu-item.active{background:var(--cps-color-calm);color:#fff}:host .cps-sidebar-menu .cps-sidebar-menu-item.active .cps-sidebar-menu-item-label{color:#fff}:host .cps-sidebar-menu .cps-sidebar-menu-item.menu-open:not(.active){background:var(--cps-color-highlight-active);color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item.menu-open:not(.active) .cps-sidebar-menu-item-label{color:var(--cps-color-calm)}:host .cps-sidebar-menu .cps-sidebar-menu-item.menu-trigger{cursor:pointer}:host .cps-sidebar-menu .cps-sidebar-menu-item.disabled{cursor:default;pointer-events:none;color:var(--cps-color-text-light)}:host .cps-sidebar-menu .cps-sidebar-menu-item.disabled .cps-sidebar-menu-item-label{color:var(--cps-color-text-light)}:host .cps-sidebar-menu.cps-sidebar-menu-collapsed{width:40px}:host .cps-sidebar-menu.cps-sidebar-menu-collapsed .expand-area{transform:rotate(180deg)}\n"] }]
|
|
98
|
-
}], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { items: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}], isExpanded: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], exactRoutes: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], height: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], allMenus: [{
|
|
107
|
-
type: ViewChildren,
|
|
108
|
-
args: ['popupMenu']
|
|
109
|
-
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNpZGViYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtc2lkZWJhci1tZW51L2Nwcy1zaWRlYmFyLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXNpZGViYXItbWVudS9jcHMtc2lkZWJhci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDOzs7O0FBVzdCOzs7R0FHRztBQStCSCxNQUFNLE9BQU8sdUJBQXVCO0lBMkJsQyxrREFBa0Q7SUFDbEQsWUFBb0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUEzQm5DOzs7V0FHRztRQUNNLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBRTFDOzs7V0FHRztRQUNNLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFM0I7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0I7OztX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cUJBQ0g7NkZBT1EsS0FBSztzQkFBYixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRXFCLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ3BzTWVudUNvbXBvbmVudCwgQ3BzTWVudUl0ZW0gfSBmcm9tICcuLi9jcHMtbWVudS9jcHMtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBDcHNTaWRlYmFyTWVudUl0ZW0gPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaXRlbXM/OiBDcHNNZW51SXRlbVtdO1xufTtcblxuLyoqXG4gKiBDcHNTaWRlYmFyTWVudUNvbXBvbmVudCBpcyBhIHZlcnRpY2FsIG1lbnUgcGFuZWwgY29tcG9uZW50IGRpc3BsYXllZCBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLXNpZGViYXItbWVudScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENwc01lbnVDb21wb25lbnQsIENwc0ljb25Db21wb25lbnQsIFJvdXRlck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtc2lkZWJhci1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLXNpZGViYXItbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignb25FeHBhbmQnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBtYXJnaW5Ub3A6ICcwJyxcbiAgICAgICAgICBvcGFjaXR5OiAnMCcsXG4gICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2V4cGFuZGVkJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG1hcmdpblRvcDogJzZweCcsXG4gICAgICAgICAgb3BhY2l0eTogJzEnXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJylcbiAgICAgIF0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNTaWRlYmFyTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBtZW51IGl0ZW1zLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBDcHNTaWRlYmFyTWVudUl0ZW1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgY3VycmVudCBleHBhbnNpb24gc3RhdGUgb2YgdGhlIHNpZGViYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaXNFeHBhbmRlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgbWVudSBpdGVtcyBzaG91bGQgYWxsb3cgYWN0aXZhdGluZyBvbmx5IGV4YWN0IGxpbmtzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGV4YWN0Um91dGVzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhlaWdodCBvZiB0aGUgc2lkZWJhciwgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlciB8IHN0cmluZyA9ICcxMDAlJztcblxuICBAVmlld0NoaWxkcmVuKCdwb3B1cE1lbnUnKSBhbGxNZW51cz86IFF1ZXJ5TGlzdDxDcHNNZW51Q29tcG9uZW50PjtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhlaWdodCA9IGNvbnZlcnRTaXplKHRoaXMuaGVpZ2h0KTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoZXZlbnQ6IGFueSwgbWVudTogQ3BzTWVudUNvbXBvbmVudCkge1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IG1lbnUuaXNWaXNpYmxlKCk7XG4gICAgdGhpcy5hbGxNZW51cz8uZm9yRWFjaCgobSkgPT4gbS5oaWRlKCkpO1xuICAgIGlmICghaXNWaXNpYmxlKSBtZW51LnRvZ2dsZShldmVudCwgZXZlbnQuY3VycmVudFRhcmdldCwgJ3RyJyk7XG4gIH1cblxuICBpc0FjdGl2ZShpdGVtOiBDcHNTaWRlYmFyTWVudUl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0uaXRlbXMpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB1cmxzID0gaXRlbS5pdGVtcy5maWx0ZXIoKGkpID0+IGkudXJsKS5tYXAoKGkpID0+IGkudXJsKSBhcyBzdHJpbmdbXTtcblxuICAgIGlmICh0aGlzLmV4YWN0Um91dGVzKSByZXR1cm4gdXJscy5pbmNsdWRlcyh0aGlzLl9yb3V0ZXIudXJsKTtcbiAgICByZXR1cm4gdXJscy5zb21lKCh1cmwpID0+IHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXModXJsKSk7XG4gIH1cblxuICB0b2dnbGVTaWRlYmFyKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjcHMtc2lkZWJhci1tZW51XCJcbiAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRcIlxuICBbbmdDbGFzc109XCJ7ICdjcHMtc2lkZWJhci1tZW51LWNvbGxhcHNlZCc6ICFpc0V4cGFuZGVkIH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxuICAgIDxhXG4gICAgICAqbmdJZj1cIml0ZW0udXJsXCJcbiAgICAgIGNsYXNzPVwiY3BzLXNpZGViYXItbWVudS1pdGVtXCJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIltpdGVtLnVybF1cIlxuICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogZXhhY3RSb3V0ZXMgfVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpdGVtLmRpc2FibGVkIH1cIj5cbiAgICAgIDxjcHMtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIiBzaXplPVwibm9ybWFsXCI+IDwvY3BzLWljb24+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImNwcy1zaWRlYmFyLW1lbnUtaXRlbS1sYWJlbFwiXG4gICAgICAgIFtAb25FeHBhbmRdPVwiaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS51cmxcIj5cbiAgICAgIDxjcHMtbWVudVxuICAgICAgICAjcG9wdXBNZW51XG4gICAgICAgIFtpdGVtc109XCJpdGVtLml0ZW1zIHx8IFtdXCJcbiAgICAgICAgW2hlYWRlcl09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgc2hvd1RyYW5zaXRpb25PcHRpb25zPVwiMHNcIlxuICAgICAgICBoaWRlVHJhbnNpdGlvbk9wdGlvbnM9XCIwc1wiXG4gICAgICAgIFt3aXRoQXJyb3ddPVwiZmFsc2VcIj5cbiAgICAgIDwvY3BzLW1lbnU+XG4gICAgICA8ZGl2XG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KCRldmVudCwgcG9wdXBNZW51KVwiXG4gICAgICAgIGNsYXNzPVwiY3BzLXNpZGViYXItbWVudS1pdGVtIG1lbnUtdHJpZ2dlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBhY3RpdmU6IGlzQWN0aXZlKGl0ZW0pLFxuICAgICAgICAgICdtZW51LW9wZW4nOiBwb3B1cE1lbnUuaXNWaXNpYmxlKCksXG4gICAgICAgICAgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgfVwiPlxuICAgICAgICA8Y3BzLWljb24gW2ljb25dPVwiaXRlbS5pY29uXCIgc2l6ZT1cIm5vcm1hbFwiPiA8L2Nwcy1pY29uPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiY3BzLXNpZGViYXItbWVudS1pdGVtLWxhYmVsXCJcbiAgICAgICAgICBbQG9uRXhwYW5kXT1cImlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImV4cGFuZC1hcmVhXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGViYXIoKVwiPlxuICAgIDxjcHMtaWNvbiBpY29uPVwibWVudS1zaHJpbmtcIiBzaXplPVwiZmlsbFwiPiA8L2Nwcy1pY29uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { Component, ContentChildren, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
4
|
-
import { CpsIconComponent } from '../cps-icon/cps-icon.component';
|
|
5
|
-
import { CpsTabComponent } from './cps-tab/cps-tab.component';
|
|
6
|
-
import { CpsTooltipDirective } from '../../directives/cps-tooltip.directive';
|
|
7
|
-
import { getCSSColor } from '../../utils/colors-utils';
|
|
8
|
-
import { Subscription, debounceTime, distinctUntilChanged, fromEvent } from 'rxjs';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common";
|
|
11
|
-
/**
|
|
12
|
-
* CpsTabGroupComponent is a navigation component that displays items as tab headers.
|
|
13
|
-
* @group Components
|
|
14
|
-
*/
|
|
15
|
-
export class CpsTabGroupComponent {
|
|
16
|
-
/**
|
|
17
|
-
* Index of the selected tab.
|
|
18
|
-
* @group Props
|
|
19
|
-
*/
|
|
20
|
-
set selectedIndex(value) {
|
|
21
|
-
this._previousTabIndex = this._currentTabIndex;
|
|
22
|
-
this._currentTabIndex = value;
|
|
23
|
-
}
|
|
24
|
-
get selectedIndex() {
|
|
25
|
-
return this._currentTabIndex;
|
|
26
|
-
}
|
|
27
|
-
// eslint-disable-next-line no-useless-constructor
|
|
28
|
-
constructor(cdRef) {
|
|
29
|
-
this.cdRef = cdRef;
|
|
30
|
-
/**
|
|
31
|
-
* Determines whether to apply an alternative 'subtabs' styling.
|
|
32
|
-
* @group Props
|
|
33
|
-
*/
|
|
34
|
-
this.isSubTabs = false;
|
|
35
|
-
/**
|
|
36
|
-
* Horizontal alignment of tabs.
|
|
37
|
-
* @group Props
|
|
38
|
-
*/
|
|
39
|
-
this.alignment = 'left';
|
|
40
|
-
/**
|
|
41
|
-
* Class to apply to the tab content wrapper.
|
|
42
|
-
* @group Props
|
|
43
|
-
*/
|
|
44
|
-
this.contentWrapClass = '';
|
|
45
|
-
/**
|
|
46
|
-
* Class to apply to the tab header.
|
|
47
|
-
* @group Props
|
|
48
|
-
*/
|
|
49
|
-
this.headerClass = '';
|
|
50
|
-
/**
|
|
51
|
-
* Determines whether to stretch tabs to fill the available horizontal space.
|
|
52
|
-
* @group Props
|
|
53
|
-
*/
|
|
54
|
-
this.stretched = false;
|
|
55
|
-
/**
|
|
56
|
-
* Transition options of how content appears, it can be "slide" or "fade".
|
|
57
|
-
* @group Props
|
|
58
|
-
*/
|
|
59
|
-
this.animationType = 'slide';
|
|
60
|
-
/**
|
|
61
|
-
* Background color of navigation buttons.
|
|
62
|
-
* @group Props
|
|
63
|
-
*/
|
|
64
|
-
this.navButtonsBackground = 'inherit';
|
|
65
|
-
/**
|
|
66
|
-
* Background color of tabs.
|
|
67
|
-
* @group Props
|
|
68
|
-
*/
|
|
69
|
-
this.tabsBackground = 'inherit';
|
|
70
|
-
/**
|
|
71
|
-
* Callback to invoke before tab change.
|
|
72
|
-
* @param {CpsTabChangeEvent} any - tab change event.
|
|
73
|
-
* @group Emits
|
|
74
|
-
*/
|
|
75
|
-
this.beforeTabChanged = new EventEmitter();
|
|
76
|
-
/**
|
|
77
|
-
* Callback to invoke after tab change.
|
|
78
|
-
* @param {CpsTabChangeEvent} any - tab change event.
|
|
79
|
-
* @group Emits
|
|
80
|
-
*/
|
|
81
|
-
this.afterTabChanged = new EventEmitter();
|
|
82
|
-
this.backBtnVisible = false;
|
|
83
|
-
this.forwardBtnVisible = false;
|
|
84
|
-
this.animationState = 'fadeIn';
|
|
85
|
-
this.windowResize$ = Subscription.EMPTY;
|
|
86
|
-
this.listScroll$ = Subscription.EMPTY;
|
|
87
|
-
this._currentTabIndex = 0;
|
|
88
|
-
this._previousTabIndex = 0;
|
|
89
|
-
}
|
|
90
|
-
ngOnInit() {
|
|
91
|
-
this.tabsBackground = getCSSColor(this.tabsBackground);
|
|
92
|
-
this.navButtonsBackground = getCSSColor(this.navButtonsBackground);
|
|
93
|
-
this.windowResize$ = fromEvent(window, 'resize')
|
|
94
|
-
.pipe(debounceTime(50), distinctUntilChanged())
|
|
95
|
-
.subscribe(() => this.onResize());
|
|
96
|
-
}
|
|
97
|
-
ngOnChanges(changes) {
|
|
98
|
-
if (changes.selectedIndex && !changes.selectedIndex.firstChange) {
|
|
99
|
-
this.selectTab();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
ngAfterContentInit() {
|
|
103
|
-
this.selectTab(true);
|
|
104
|
-
}
|
|
105
|
-
ngAfterViewInit() {
|
|
106
|
-
this._updateNavBtnsState();
|
|
107
|
-
this.listScroll$ = fromEvent(this.tabsList.nativeElement, 'scroll')
|
|
108
|
-
.pipe(debounceTime(50), distinctUntilChanged())
|
|
109
|
-
.subscribe((event) => this.onScroll(event));
|
|
110
|
-
this.cdRef.detectChanges();
|
|
111
|
-
}
|
|
112
|
-
ngOnDestroy() {
|
|
113
|
-
this.windowResize$?.unsubscribe();
|
|
114
|
-
this.listScroll$?.unsubscribe();
|
|
115
|
-
}
|
|
116
|
-
get selectedTab() {
|
|
117
|
-
return this.tabs.find((t) => t.active);
|
|
118
|
-
}
|
|
119
|
-
onTabClick(index) {
|
|
120
|
-
this.selectedIndex = index;
|
|
121
|
-
this.selectTab();
|
|
122
|
-
}
|
|
123
|
-
selectTab(silent = false) {
|
|
124
|
-
const _tabs = this.tabs.toArray();
|
|
125
|
-
const currentSelectedTab = _tabs && _tabs[this._previousTabIndex];
|
|
126
|
-
currentSelectedTab && (currentSelectedTab.active = false);
|
|
127
|
-
const newSelectedTab = _tabs && _tabs[this._currentTabIndex];
|
|
128
|
-
newSelectedTab && (newSelectedTab.active = true);
|
|
129
|
-
if (this._currentTabIndex === this._previousTabIndex) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
if (!silent) {
|
|
133
|
-
this.beforeTabChanged.emit({
|
|
134
|
-
previousIndex: this._previousTabIndex,
|
|
135
|
-
newIndex: this._currentTabIndex
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
if (this.animationType === 'slide') {
|
|
139
|
-
this.animationState =
|
|
140
|
-
this._currentTabIndex < this._previousTabIndex
|
|
141
|
-
? 'slideLeft'
|
|
142
|
-
: 'slideRight';
|
|
143
|
-
if (!silent) {
|
|
144
|
-
this.afterTabChanged.emit({
|
|
145
|
-
previousIndex: this._previousTabIndex,
|
|
146
|
-
newIndex: this._currentTabIndex
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else if (this.animationType === 'fade') {
|
|
151
|
-
this.animationState = 'fadeOut';
|
|
152
|
-
setTimeout(() => {
|
|
153
|
-
this.animationState = 'fadeIn';
|
|
154
|
-
if (!silent) {
|
|
155
|
-
this.afterTabChanged.emit({
|
|
156
|
-
previousIndex: this._previousTabIndex,
|
|
157
|
-
newIndex: this._currentTabIndex
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}, 100);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
onScroll(event) {
|
|
164
|
-
this._updateNavBtnsState();
|
|
165
|
-
event.preventDefault();
|
|
166
|
-
}
|
|
167
|
-
onResize() {
|
|
168
|
-
this._updateNavBtnsState();
|
|
169
|
-
}
|
|
170
|
-
navBackward() {
|
|
171
|
-
const content = this.tabsList.nativeElement;
|
|
172
|
-
const width = this._getWidth(content) - this._getVisibleButtonWidths();
|
|
173
|
-
const pos = content.scrollLeft - width;
|
|
174
|
-
content.scrollLeft = pos <= 0 ? 0 : pos;
|
|
175
|
-
}
|
|
176
|
-
navForward() {
|
|
177
|
-
const content = this.tabsList.nativeElement;
|
|
178
|
-
const width = this._getWidth(content) - this._getVisibleButtonWidths();
|
|
179
|
-
const pos = content.scrollLeft + width;
|
|
180
|
-
const lastPos = content.scrollWidth - width;
|
|
181
|
-
content.scrollLeft = pos >= lastPos ? lastPos : pos;
|
|
182
|
-
}
|
|
183
|
-
_updateNavBtnsState() {
|
|
184
|
-
const content = this.tabsList.nativeElement;
|
|
185
|
-
const { scrollLeft, scrollWidth } = content;
|
|
186
|
-
const width = this._getWidth(content);
|
|
187
|
-
this.backBtnVisible = scrollLeft === 0;
|
|
188
|
-
this.forwardBtnVisible = Math.abs(scrollLeft - scrollWidth + width) < 2;
|
|
189
|
-
}
|
|
190
|
-
_getVisibleButtonWidths() {
|
|
191
|
-
return [this.backBtn?.nativeElement, this.forwardBtn?.nativeElement].reduce((acc, el) => (el ? acc + this._getWidth(el) : acc), 0);
|
|
192
|
-
}
|
|
193
|
-
_getWidth(el) {
|
|
194
|
-
let width = el.offsetWidth;
|
|
195
|
-
if (!width)
|
|
196
|
-
return width;
|
|
197
|
-
const style = getComputedStyle(el);
|
|
198
|
-
width -=
|
|
199
|
-
parseFloat(style.paddingLeft) +
|
|
200
|
-
parseFloat(style.paddingRight) +
|
|
201
|
-
parseFloat(style.borderLeftWidth) +
|
|
202
|
-
parseFloat(style.borderRightWidth);
|
|
203
|
-
return width;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
CpsTabGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTabGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
207
|
-
CpsTabGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTabGroupComponent, isStandalone: true, selector: "cps-tab-group", inputs: { selectedIndex: "selectedIndex", isSubTabs: "isSubTabs", alignment: "alignment", contentWrapClass: "contentWrapClass", headerClass: "headerClass", stretched: "stretched", animationType: "animationType", navButtonsBackground: "navButtonsBackground", tabsBackground: "tabsBackground" }, outputs: { beforeTabChanged: "beforeTabChanged", afterTabChanged: "afterTabChanged" }, queries: [{ propertyName: "tabs", predicate: CpsTabComponent }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "backBtn", first: true, predicate: ["backBtn"], descendants: true }, { propertyName: "forwardBtn", first: true, predicate: ["forwardBtn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"cps-tabs\"\n [class]=\"headerClass\"\n [ngClass]=\"{\n 'cps-tabs-subtabs': isSubTabs,\n 'cps-tabs-center-aligned': alignment === 'center',\n 'cps-tabs-right-aligned': alignment === 'right',\n 'cps-tabs-stretched': stretched\n }\"\n [ngStyle]=\"{ 'background-color': tabsBackground }\">\n <div\n class=\"nav-btn nav-btn-back\"\n [ngStyle]=\"{ 'background-color': navButtonsBackground }\"\n *ngIf=\"!backBtnVisible\"\n #backBtn\n (click)=\"navBackward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n <ul #tabsList class=\"cps-tabs-list\">\n <ng-container *ngFor=\"let tab of tabs; let tabIndex = index\">\n <li\n *ngIf=\"tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? onTabClick(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\"\n [cpsTooltip]=\"tab.tooltipText\"\n tooltipOpenDelay=\"1000\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [tooltipMaxWidth]=\"tab.tooltipMaxWidth\"\n [tooltipPersistent]=\"tab.tooltipPersistent\"\n [tooltipContentClass]=\"tab.tooltipContentClass\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n <li\n *ngIf=\"!tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? onTabClick(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n </ng-container>\n </ul>\n <div\n class=\"nav-btn nav-btn-forward\"\n [ngStyle]=\"{ 'background-color': navButtonsBackground }\"\n *ngIf=\"!forwardBtnVisible\"\n #forwardBtn\n (click)=\"navForward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n</div>\n<div\n class=\"cps-tab-content-wrap\"\n [class]=\"contentWrapClass\"\n [ngClass]=\"{\n 'cps-tab-content-wrap-subtabs': isSubTabs\n }\">\n <ng-container *ngFor=\"let tab of tabs\">\n <div class=\"cps-tab-content\" *ngIf=\"tab.active\">\n <div\n [@slideInOut]=\"animationState\"\n *ngIf=\"animationType === 'slide'\"\n class=\"cps-tab-content-inner\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n [@fadeInOut]=\"animationState\"\n *ngIf=\"animationType === 'fade'\"\n class=\"cps-tab-content-inner\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n\n<ng-template #tabHeaderTemplate let-tab=\"tab\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\"> </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n <ng-container *ngIf=\"tab.badgeValue\">\n <div\n *ngIf=\"tab.badgeTooltip\"\n class=\"cps-tab-badge\"\n [cpsTooltip]=\"tab.badgeTooltip\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n <div *ngIf=\"!tab.badgeTooltip\" class=\"cps-tab-badge\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n </ng-container>\n</ng-template>\n", styles: [":host{background-color:inherit;margin:0!important;display:flex;flex-direction:column;max-width:100%}:host .cps-tabs{display:flex;position:relative}:host .cps-tabs .nav-btn{display:flex;justify-content:center;align-items:center;width:32px;cursor:pointer;position:absolute;height:100%}:host .cps-tabs .nav-btn:hover ::ng-deep cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host .cps-tabs .nav-btn-back{left:0;box-shadow:2px 0 2px -1px #0003}:host .cps-tabs .nav-btn-back cps-icon{transform:rotate(90deg)}:host .cps-tabs .nav-btn-forward{right:0;box-shadow:-2px 0 2px -1px #0003}:host .cps-tabs .nav-btn-forward cps-icon{transform:rotate(270deg)}:host .cps-tabs .cps-tabs-list{display:flex;list-style:none;padding:0;margin:0;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;overscroll-behavior:contain auto;-ms-overflow-style:none;scrollbar-width:none}:host .cps-tabs .cps-tabs-list .cps-tab{display:inline-flex;align-items:center;justify-content:center;min-width:150px;padding:0 24px;font-family:Source Sans Pro,sans-serif;font-style:normal;font-weight:500;font-size:15px;line-height:20px;color:var(--cps-color-text-dark);opacity:1;cursor:pointer;border-bottom:3px solid transparent;transition:border-bottom .2s}:host .cps-tabs .cps-tabs-list .cps-tab.active:not(.disabled){color:var(--cps-color-calm)}:host .cps-tabs .cps-tabs-list .cps-tab.disabled{cursor:default;color:var(--cps-color-text-light)}:host .cps-tabs .cps-tabs-list .cps-tab .cps-tab-link{text-decoration:none;padding:10px;color:inherit}:host .cps-tabs .cps-tabs-list .cps-tab .cps-tab-badge{min-width:20px;padding:0 3px;height:20px;border-radius:50%;background-color:var(--cps-color-surprise);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center}:host .cps-tabs .cps-tabs-list::-webkit-scrollbar{display:none}:host .cps-tabs.cps-tabs-center-aligned{justify-content:center}:host .cps-tabs.cps-tabs-right-aligned{justify-content:flex-end}:host .cps-tabs.cps-tabs-stretched ul{flex-grow:1}:host .cps-tabs.cps-tabs-stretched ul li{flex-grow:1}:host .cps-tabs:not(.cps-tabs-subtabs){border-bottom:1px solid rgba(0,0,0,.12)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab.active:not(.disabled){border-bottom:3px solid var(--cps-color-surprise)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab.active.disabled{border-bottom:3px solid var(--cps-color-line-dark)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab:hover:not(:active,.active,.disabled){border-bottom:3px solid var(--cps-color-line-light)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab:active:not(.disabled){border-bottom:3px solid var(--cps-color-line-mid)}:host .cps-tabs.cps-tabs-subtabs .cps-tabs-list .cps-tab{height:33px;background-color:#d7d7d759}:host .cps-tabs.cps-tabs-subtabs .cps-tabs-list .cps-tab.active{background-color:#fff}:host .cps-tabs.cps-tabs-subtabs .cps-tabs-list .cps-tab:hover:not(.disabled){color:var(--cps-color-calm)}:host .cps-tab-content-wrap{display:flex;position:relative;min-height:100px;font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-dark);flex:1;border-bottom:none;overflow:hidden}:host .cps-tab-content-wrap .cps-tab-content{display:block;position:relative;overflow-x:hidden;overflow-y:auto;flex-grow:1;flex-basis:100%;inset:0;outline:0}:host .cps-tab-content-wrap .cps-tab-content .cps-tab-content-inner{height:100%;overflow:auto}:host .cps-tab-content-wrap.cps-tab-content-wrap-subtabs{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "directive", type: CpsTooltipDirective, selector: "[cpsTooltip]", inputs: ["cpsTooltip", "tooltipOpenDelay", "tooltipCloseDelay", "tooltipOpenOn", "tooltipPosition", "tooltipPersistent", "tooltipDisabled", "tooltipMaxWidth", "tooltipContentClass"] }], animations: [
|
|
208
|
-
trigger('slideInOut', [
|
|
209
|
-
state('slideLeft', style({ transform: 'translateX(0)' })),
|
|
210
|
-
state('slideRight', style({ transform: 'translateX(0)' })),
|
|
211
|
-
transition('* => slideLeft', [
|
|
212
|
-
style({ transform: 'translateX(-100%)' }),
|
|
213
|
-
animate('200ms ease-in')
|
|
214
|
-
]),
|
|
215
|
-
transition('* => slideRight', [
|
|
216
|
-
style({ transform: 'translateX(100%)' }),
|
|
217
|
-
animate('200ms ease-in')
|
|
218
|
-
])
|
|
219
|
-
]),
|
|
220
|
-
trigger('fadeInOut', [
|
|
221
|
-
state('fadeIn', style({ opacity: 1 })),
|
|
222
|
-
state('fadeOut', style({ opacity: 0 })),
|
|
223
|
-
transition('fadeOut => fadeIn', [
|
|
224
|
-
style({ opacity: 0 }),
|
|
225
|
-
animate('100ms ease-in')
|
|
226
|
-
]),
|
|
227
|
-
transition('fadeIn => fadeOut', [
|
|
228
|
-
animate('0ms ease-out', style({ opacity: 0 }))
|
|
229
|
-
])
|
|
230
|
-
])
|
|
231
|
-
] });
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTabGroupComponent, decorators: [{
|
|
233
|
-
type: Component,
|
|
234
|
-
args: [{ standalone: true, imports: [
|
|
235
|
-
CommonModule,
|
|
236
|
-
CpsIconComponent,
|
|
237
|
-
CpsTabComponent,
|
|
238
|
-
CpsTooltipDirective
|
|
239
|
-
], selector: 'cps-tab-group', animations: [
|
|
240
|
-
trigger('slideInOut', [
|
|
241
|
-
state('slideLeft', style({ transform: 'translateX(0)' })),
|
|
242
|
-
state('slideRight', style({ transform: 'translateX(0)' })),
|
|
243
|
-
transition('* => slideLeft', [
|
|
244
|
-
style({ transform: 'translateX(-100%)' }),
|
|
245
|
-
animate('200ms ease-in')
|
|
246
|
-
]),
|
|
247
|
-
transition('* => slideRight', [
|
|
248
|
-
style({ transform: 'translateX(100%)' }),
|
|
249
|
-
animate('200ms ease-in')
|
|
250
|
-
])
|
|
251
|
-
]),
|
|
252
|
-
trigger('fadeInOut', [
|
|
253
|
-
state('fadeIn', style({ opacity: 1 })),
|
|
254
|
-
state('fadeOut', style({ opacity: 0 })),
|
|
255
|
-
transition('fadeOut => fadeIn', [
|
|
256
|
-
style({ opacity: 0 }),
|
|
257
|
-
animate('100ms ease-in')
|
|
258
|
-
]),
|
|
259
|
-
transition('fadeIn => fadeOut', [
|
|
260
|
-
animate('0ms ease-out', style({ opacity: 0 }))
|
|
261
|
-
])
|
|
262
|
-
])
|
|
263
|
-
], template: "<div\n class=\"cps-tabs\"\n [class]=\"headerClass\"\n [ngClass]=\"{\n 'cps-tabs-subtabs': isSubTabs,\n 'cps-tabs-center-aligned': alignment === 'center',\n 'cps-tabs-right-aligned': alignment === 'right',\n 'cps-tabs-stretched': stretched\n }\"\n [ngStyle]=\"{ 'background-color': tabsBackground }\">\n <div\n class=\"nav-btn nav-btn-back\"\n [ngStyle]=\"{ 'background-color': navButtonsBackground }\"\n *ngIf=\"!backBtnVisible\"\n #backBtn\n (click)=\"navBackward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n <ul #tabsList class=\"cps-tabs-list\">\n <ng-container *ngFor=\"let tab of tabs; let tabIndex = index\">\n <li\n *ngIf=\"tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? onTabClick(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\"\n [cpsTooltip]=\"tab.tooltipText\"\n tooltipOpenDelay=\"1000\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [tooltipMaxWidth]=\"tab.tooltipMaxWidth\"\n [tooltipPersistent]=\"tab.tooltipPersistent\"\n [tooltipContentClass]=\"tab.tooltipContentClass\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n <li\n *ngIf=\"!tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? onTabClick(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n </ng-container>\n </ul>\n <div\n class=\"nav-btn nav-btn-forward\"\n [ngStyle]=\"{ 'background-color': navButtonsBackground }\"\n *ngIf=\"!forwardBtnVisible\"\n #forwardBtn\n (click)=\"navForward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n</div>\n<div\n class=\"cps-tab-content-wrap\"\n [class]=\"contentWrapClass\"\n [ngClass]=\"{\n 'cps-tab-content-wrap-subtabs': isSubTabs\n }\">\n <ng-container *ngFor=\"let tab of tabs\">\n <div class=\"cps-tab-content\" *ngIf=\"tab.active\">\n <div\n [@slideInOut]=\"animationState\"\n *ngIf=\"animationType === 'slide'\"\n class=\"cps-tab-content-inner\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n [@fadeInOut]=\"animationState\"\n *ngIf=\"animationType === 'fade'\"\n class=\"cps-tab-content-inner\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n\n<ng-template #tabHeaderTemplate let-tab=\"tab\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\"> </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n <ng-container *ngIf=\"tab.badgeValue\">\n <div\n *ngIf=\"tab.badgeTooltip\"\n class=\"cps-tab-badge\"\n [cpsTooltip]=\"tab.badgeTooltip\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n <div *ngIf=\"!tab.badgeTooltip\" class=\"cps-tab-badge\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n </ng-container>\n</ng-template>\n", styles: [":host{background-color:inherit;margin:0!important;display:flex;flex-direction:column;max-width:100%}:host .cps-tabs{display:flex;position:relative}:host .cps-tabs .nav-btn{display:flex;justify-content:center;align-items:center;width:32px;cursor:pointer;position:absolute;height:100%}:host .cps-tabs .nav-btn:hover ::ng-deep cps-icon .cps-icon{color:var(--cps-color-calm)!important}:host .cps-tabs .nav-btn-back{left:0;box-shadow:2px 0 2px -1px #0003}:host .cps-tabs .nav-btn-back cps-icon{transform:rotate(90deg)}:host .cps-tabs .nav-btn-forward{right:0;box-shadow:-2px 0 2px -1px #0003}:host .cps-tabs .nav-btn-forward cps-icon{transform:rotate(270deg)}:host .cps-tabs .cps-tabs-list{display:flex;list-style:none;padding:0;margin:0;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;overscroll-behavior:contain auto;-ms-overflow-style:none;scrollbar-width:none}:host .cps-tabs .cps-tabs-list .cps-tab{display:inline-flex;align-items:center;justify-content:center;min-width:150px;padding:0 24px;font-family:Source Sans Pro,sans-serif;font-style:normal;font-weight:500;font-size:15px;line-height:20px;color:var(--cps-color-text-dark);opacity:1;cursor:pointer;border-bottom:3px solid transparent;transition:border-bottom .2s}:host .cps-tabs .cps-tabs-list .cps-tab.active:not(.disabled){color:var(--cps-color-calm)}:host .cps-tabs .cps-tabs-list .cps-tab.disabled{cursor:default;color:var(--cps-color-text-light)}:host .cps-tabs .cps-tabs-list .cps-tab .cps-tab-link{text-decoration:none;padding:10px;color:inherit}:host .cps-tabs .cps-tabs-list .cps-tab .cps-tab-badge{min-width:20px;padding:0 3px;height:20px;border-radius:50%;background-color:var(--cps-color-surprise);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center}:host .cps-tabs .cps-tabs-list::-webkit-scrollbar{display:none}:host .cps-tabs.cps-tabs-center-aligned{justify-content:center}:host .cps-tabs.cps-tabs-right-aligned{justify-content:flex-end}:host .cps-tabs.cps-tabs-stretched ul{flex-grow:1}:host .cps-tabs.cps-tabs-stretched ul li{flex-grow:1}:host .cps-tabs:not(.cps-tabs-subtabs){border-bottom:1px solid rgba(0,0,0,.12)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab.active:not(.disabled){border-bottom:3px solid var(--cps-color-surprise)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab.active.disabled{border-bottom:3px solid var(--cps-color-line-dark)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab:hover:not(:active,.active,.disabled){border-bottom:3px solid var(--cps-color-line-light)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tabs-list .cps-tab:active:not(.disabled){border-bottom:3px solid var(--cps-color-line-mid)}:host .cps-tabs.cps-tabs-subtabs .cps-tabs-list .cps-tab{height:33px;background-color:#d7d7d759}:host .cps-tabs.cps-tabs-subtabs .cps-tabs-list .cps-tab.active{background-color:#fff}:host .cps-tabs.cps-tabs-subtabs .cps-tabs-list .cps-tab:hover:not(.disabled){color:var(--cps-color-calm)}:host .cps-tab-content-wrap{display:flex;position:relative;min-height:100px;font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-dark);flex:1;border-bottom:none;overflow:hidden}:host .cps-tab-content-wrap .cps-tab-content{display:block;position:relative;overflow-x:hidden;overflow-y:auto;flex-grow:1;flex-basis:100%;inset:0;outline:0}:host .cps-tab-content-wrap .cps-tab-content .cps-tab-content-inner{height:100%;overflow:auto}:host .cps-tab-content-wrap.cps-tab-content-wrap-subtabs{background-color:#fff}\n"] }]
|
|
264
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedIndex: [{
|
|
265
|
-
type: Input
|
|
266
|
-
}], isSubTabs: [{
|
|
267
|
-
type: Input
|
|
268
|
-
}], alignment: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], contentWrapClass: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], headerClass: [{
|
|
273
|
-
type: Input
|
|
274
|
-
}], stretched: [{
|
|
275
|
-
type: Input
|
|
276
|
-
}], animationType: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}], navButtonsBackground: [{
|
|
279
|
-
type: Input
|
|
280
|
-
}], tabsBackground: [{
|
|
281
|
-
type: Input
|
|
282
|
-
}], beforeTabChanged: [{
|
|
283
|
-
type: Output
|
|
284
|
-
}], afterTabChanged: [{
|
|
285
|
-
type: Output
|
|
286
|
-
}], tabsList: [{
|
|
287
|
-
type: ViewChild,
|
|
288
|
-
args: ['tabsList']
|
|
289
|
-
}], backBtn: [{
|
|
290
|
-
type: ViewChild,
|
|
291
|
-
args: ['backBtn']
|
|
292
|
-
}], forwardBtn: [{
|
|
293
|
-
type: ViewChild,
|
|
294
|
-
args: ['forwardBtn']
|
|
295
|
-
}], tabs: [{
|
|
296
|
-
type: ContentChildren,
|
|
297
|
-
args: [CpsTabComponent]
|
|
298
|
-
}] } });
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFiLWdyb3VwL2Nwcy10YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYi1ncm91cC9jcHMtdGFiLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixTQUFTLEVBQ1YsTUFBTSxNQUFNLENBQUM7OztBQVVkOzs7R0FHRztBQXNDSCxNQUFNLE9BQU8sb0JBQW9CO0lBRy9COzs7T0FHRztJQUNILElBQWEsYUFBYSxDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJ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Q0FBQzt3QkFDRixPQUFPLENBQUMsV0FBVyxFQUFFOzRCQUNuQixLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN0QyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN2QyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0NBQzlCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDckIsT0FBTyxDQUFDLGVBQWUsQ0FBQzs2QkFDekIsQ0FBQzs0QkFDRixVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0NBQzlCLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQy9DLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDt3R0FTWSxhQUFhO3NCQUF6QixLQUFLO2dCQWFHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU9HLGVBQWU7c0JBQXhCLE1BQU07Z0JBRWdCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDQyxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ssVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUVXLElBQUk7c0JBQXJDLGVBQWU7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc1RhYkNvbXBvbmVudCB9IGZyb20gJy4vY3BzLXRhYi9jcHMtdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jcHMtdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZ2V0Q1NTQ29sb3IgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvcnMtdXRpbHMnO1xuaW1wb3J0IHtcbiAgU3Vic2NyaXB0aW9uLFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmcm9tRXZlbnRcbn0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3BzVGFiQ2hhbmdlRXZlbnQge1xuICBwcmV2aW91c0luZGV4OiBudW1iZXI7XG4gIG5ld0luZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIENwc1RhYnNBbmltYXRpb25UeXBlID0gJ3NsaWRlJyB8ICdmYWRlJztcbmV4cG9ydCB0eXBlIENwc1RhYnNBbGlnbm1lbnRUeXBlID0gJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuXG4vKipcbiAqIENwc1RhYkdyb3VwQ29tcG9uZW50IGlzIGEgbmF2aWdhdGlvbiBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBpdGVtcyBhcyB0YWIgaGVhZGVycy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzVGFiQ29tcG9uZW50LFxuICAgIENwc1Rvb2x0aXBEaXJlY3RpdmVcbiAgXSxcbiAgc2VsZWN0b3I6ICdjcHMtdGFiLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtdGFiLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZUluT3V0JywgW1xuICAgICAgc3RhdGUoJ3NsaWRlTGVmdCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpLFxuICAgICAgc3RhdGUoJ3NsaWRlUmlnaHQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVMZWZ0JywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVSaWdodCcsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ2ZhZGVJbk91dCcsIFtcbiAgICAgIHN0YXRlKCdmYWRlSW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgc3RhdGUoJ2ZhZGVPdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxuICAgICAgdHJhbnNpdGlvbignZmFkZU91dCA9PiBmYWRlSW4nLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMTAwbXMgZWFzZS1pbicpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJ2ZhZGVJbiA9PiBmYWRlT3V0JywgW1xuICAgICAgICBhbmltYXRlKCcwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3BzVGFiR3JvdXBDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBJbmRleCBvZiB0aGUgc2VsZWN0ZWQgdGFiLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wcmV2aW91c1RhYkluZGV4ID0gdGhpcy5fY3VycmVudFRhYkluZGV4O1xuICAgIHRoaXMuX2N1cnJlbnRUYWJJbmRleCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFRhYkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBhcHBseSBhbiBhbHRlcm5hdGl2ZSAnc3VidGFicycgc3R5bGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpc1N1YlRhYnMgPSBmYWxzZTtcblxuICAvKipcbiAgICogSG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgdGFicy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBhbGlnbm1lbnQ6IENwc1RhYnNBbGlnbm1lbnRUeXBlID0gJ2xlZnQnO1xuXG4gIC8qKlxuICAgKiBDbGFzcyB0byBhcHBseSB0byB0aGUgdGFiIGNvbnRlbnQgd3JhcHBlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjb250ZW50V3JhcENsYXNzID0gJyc7XG5cbiAgLyoqXG4gICAqIENsYXNzIHRvIGFwcGx5IHRvIHRoZSB0YWIgaGVhZGVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhlYWRlckNsYXNzID0gJyc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzdHJldGNoIHRhYnMgdG8gZmlsbCB0aGUgYXZhaWxhYmxlIGhvcml6b250YWwgc3BhY2UuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc3RyZXRjaGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiBob3cgY29udGVudCBhcHBlYXJzLCBpdCBjYW4gYmUgXCJzbGlkZVwiIG9yIFwiZmFkZVwiLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGFuaW1hdGlvblR5cGU6IENwc1RhYnNBbmltYXRpb25UeXBlID0gJ3NsaWRlJztcblxuICAvKipcbiAgICogQmFja2dyb3VuZCBjb2xvciBvZiBuYXZpZ2F0aW9uIGJ1dHRvbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbmF2QnV0dG9uc0JhY2tncm91bmQgPSAnaW5oZXJpdCc7XG5cbiAgLyoqXG4gICAqIEJhY2tncm91bmQgY29sb3Igb2YgdGFicy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0YWJzQmFja2dyb3VuZCA9ICdpbmhlcml0JztcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIGJlZm9yZSB0YWIgY2hhbmdlLlxuICAgKiBAcGFyYW0ge0Nwc1RhYkNoYW5nZUV2ZW50fSBhbnkgLSB0YWIgY2hhbmdlIGV2ZW50LlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBiZWZvcmVUYWJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDcHNUYWJDaGFuZ2VFdmVudD4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIGFmdGVyIHRhYiBjaGFuZ2UuXG4gICAqIEBwYXJhbSB7Q3BzVGFiQ2hhbmdlRXZlbnR9IGFueSAtIHRhYiBjaGFuZ2UgZXZlbnQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGFmdGVyVGFiQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3BzVGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGFic0xpc3QnKSB0YWJzTGlzdCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2JhY2tCdG4nKSBiYWNrQnRuPzogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZm9yd2FyZEJ0bicpIGZvcndhcmRCdG4/OiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQ3BzVGFiQ29tcG9uZW50KSB0YWJzITogUXVlcnlMaXN0PENwc1RhYkNvbXBvbmVudD47XG5cbiAgYmFja0J0blZpc2libGUgPSBmYWxzZTtcbiAgZm9yd2FyZEJ0blZpc2libGUgPSBmYWxzZTtcbiAgYW5pbWF0aW9uU3RhdGU6ICdzbGlkZUxlZnQnIHwgJ3NsaWRlUmlnaHQnIHwgJ2ZhZGVJbicgfCAnZmFkZU91dCcgPSAnZmFkZUluJztcblxuICB3aW5kb3dSZXNpemUkOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gIGxpc3RTY3JvbGwkOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgcHJpdmF0ZSBfY3VycmVudFRhYkluZGV4ID0gMDtcbiAgcHJpdmF0ZSBfcHJldmlvdXNUYWJJbmRleCA9IDA7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzQmFja2dyb3VuZCA9IGdldENTU0NvbG9yKHRoaXMudGFic0JhY2tncm91bmQpO1xuICAgIHRoaXMubmF2QnV0dG9uc0JhY2tncm91bmQgPSBnZXRDU1NDb2xvcih0aGlzLm5hdkJ1dHRvbnNCYWNrZ3JvdW5kKTtcblxuICAgIHRoaXMud2luZG93UmVzaXplJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vblJlc2l6ZSgpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZEluZGV4ICYmICFjaGFuZ2VzLnNlbGVjdGVkSW5kZXguZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc2VsZWN0VGFiKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuc2VsZWN0VGFiKHRydWUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX3VwZGF0ZU5hdkJ0bnNTdGF0ZSgpO1xuXG4gICAgdGhpcy5saXN0U2Nyb2xsJCA9IGZyb21FdmVudCh0aGlzLnRhYnNMaXN0Lm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHRoaXMub25TY3JvbGwoZXZlbnQpKTtcblxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy53aW5kb3dSZXNpemUkPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubGlzdFNjcm9sbCQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRUYWIoKTogQ3BzVGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLmZpbmQoKHQpID0+IHQuYWN0aXZlKTtcbiAgfVxuXG4gIG9uVGFiQ2xpY2soaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuc2VsZWN0VGFiKCk7XG4gIH1cblxuICBzZWxlY3RUYWIoc2lsZW50ID0gZmFsc2UpIHtcbiAgICBjb25zdCBfdGFicyA9IHRoaXMudGFicy50b0FycmF5KCk7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGVkVGFiID0gX3RhYnMgJiYgX3RhYnNbdGhpcy5fcHJldmlvdXNUYWJJbmRleF07XG5cbiAgICBjdXJyZW50U2VsZWN0ZWRUYWIgJiYgKGN1cnJlbnRTZWxlY3RlZFRhYi5hY3RpdmUgPSBmYWxzZSk7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRUYWIgPSBfdGFicyAmJiBfdGFic1t0aGlzLl9jdXJyZW50VGFiSW5kZXhdO1xuICAgIG5ld1NlbGVjdGVkVGFiICYmIChuZXdTZWxlY3RlZFRhYi5hY3RpdmUgPSB0cnVlKTtcbiAgICBpZiAodGhpcy5fY3VycmVudFRhYkluZGV4ID09PSB0aGlzLl9wcmV2aW91c1RhYkluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIHRoaXMuYmVmb3JlVGFiQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgcHJldmlvdXNJbmRleDogdGhpcy5fcHJldmlvdXNUYWJJbmRleCxcbiAgICAgICAgbmV3SW5kZXg6IHRoaXMuX2N1cnJlbnRUYWJJbmRleFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uVHlwZSA9PT0gJ3NsaWRlJykge1xuICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9XG4gICAgICAgIHRoaXMuX2N1cnJlbnRUYWJJbmRleCA8IHRoaXMuX3ByZXZpb3VzVGFiSW5kZXhcbiAgICAgICAgICA/ICdzbGlkZUxlZnQnXG4gICAgICAgICAgOiAnc2xpZGVSaWdodCc7XG5cbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIHRoaXMuYWZ0ZXJUYWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHRoaXMuX3ByZXZpb3VzVGFiSW5kZXgsXG4gICAgICAgICAgbmV3SW5kZXg6IHRoaXMuX2N1cnJlbnRUYWJJbmRleFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYW5pbWF0aW9uVHlwZSA9PT0gJ2ZhZGUnKSB7XG4gICAgICB0aGlzLmFuaW1hdGlvblN0YXRlID0gJ2ZhZGVPdXQnO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUgPSAnZmFkZUluJztcbiAgICAgICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgICAgICB0aGlzLmFmdGVyVGFiQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5kZXg6IHRoaXMuX3ByZXZpb3VzVGFiSW5kZXgsXG4gICAgICAgICAgICBuZXdJbmRleDogdGhpcy5fY3VycmVudFRhYkluZGV4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgb25TY3JvbGwoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuX3VwZGF0ZU5hdkJ0bnNTdGF0ZSgpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLl91cGRhdGVOYXZCdG5zU3RhdGUoKTtcbiAgfVxuXG4gIG5hdkJhY2t3YXJkKCkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnRhYnNMaXN0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLl9nZXRXaWR0aChjb250ZW50KSAtIHRoaXMuX2dldFZpc2libGVCdXR0b25XaWR0aHMoKTtcbiAgICBjb25zdCBwb3MgPSBjb250ZW50LnNjcm9sbExlZnQgLSB3aWR0aDtcbiAgICBjb250ZW50LnNjcm9sbExlZnQgPSBwb3MgPD0gMCA/IDAgOiBwb3M7XG4gIH1cblxuICBuYXZGb3J3YXJkKCkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnRhYnNMaXN0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLl9nZXRXaWR0aChjb250ZW50KSAtIHRoaXMuX2dldFZpc2libGVCdXR0b25XaWR0aHMoKTtcbiAgICBjb25zdCBwb3MgPSBjb250ZW50LnNjcm9sbExlZnQgKyB3aWR0aDtcbiAgICBjb25zdCBsYXN0UG9zID0gY29udGVudC5zY3JvbGxXaWR0aCAtIHdpZHRoO1xuICAgIGNvbnRlbnQuc2Nyb2xsTGVmdCA9IHBvcyA+PSBsYXN0UG9zID8gbGFzdFBvcyA6IHBvcztcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU5hdkJ0bnNTdGF0ZSgpIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy50YWJzTGlzdC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGggfSA9IGNvbnRlbnQ7XG5cbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuX2dldFdpZHRoKGNvbnRlbnQpO1xuXG4gICAgdGhpcy5iYWNrQnRuVmlzaWJsZSA9IHNjcm9sbExlZnQgPT09IDA7XG4gICAgdGhpcy5mb3J3YXJkQnRuVmlzaWJsZSA9IE1hdGguYWJzKHNjcm9sbExlZnQgLSBzY3JvbGxXaWR0aCArIHdpZHRoKSA8IDI7XG4gIH1cblxuICBwcml2YXRlIF9nZXRWaXNpYmxlQnV0dG9uV2lkdGhzKCkge1xuICAgIHJldHVybiBbdGhpcy5iYWNrQnRuPy5uYXRpdmVFbGVtZW50LCB0aGlzLmZvcndhcmRCdG4/Lm5hdGl2ZUVsZW1lbnRdLnJlZHVjZShcbiAgICAgIChhY2MsIGVsKSA9PiAoZWwgPyBhY2MgKyB0aGlzLl9nZXRXaWR0aChlbCkgOiBhY2MpLFxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRXaWR0aChlbDogYW55KTogbnVtYmVyIHtcbiAgICBsZXQgd2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICBpZiAoIXdpZHRoKSByZXR1cm4gd2lkdGg7XG5cbiAgICBjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuXG4gICAgd2lkdGggLT1cbiAgICAgIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0xlZnQpICtcbiAgICAgIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ1JpZ2h0KSArXG4gICAgICBwYXJzZUZsb2F0KHN0eWxlLmJvcmRlckxlZnRXaWR0aCkgK1xuICAgICAgcGFyc2VGbG9hdChzdHlsZS5ib3JkZXJSaWdodFdpZHRoKTtcblxuICAgIHJldHVybiB3aWR0aDtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNwcy10YWJzXCJcbiAgW2NsYXNzXT1cImhlYWRlckNsYXNzXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdjcHMtdGFicy1zdWJ0YWJzJzogaXNTdWJUYWJzLFxuICAgICdjcHMtdGFicy1jZW50ZXItYWxpZ25lZCc6IGFsaWdubWVudCA9PT0gJ2NlbnRlcicsXG4gICAgJ2Nwcy10YWJzLXJpZ2h0LWFsaWduZWQnOiBhbGlnbm1lbnQgPT09ICdyaWdodCcsXG4gICAgJ2Nwcy10YWJzLXN0cmV0Y2hlZCc6IHN0cmV0Y2hlZFxuICB9XCJcbiAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IHRhYnNCYWNrZ3JvdW5kIH1cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmF2LWJ0biBuYXYtYnRuLWJhY2tcIlxuICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtY29sb3InOiBuYXZCdXR0b25zQmFja2dyb3VuZCB9XCJcbiAgICAqbmdJZj1cIiFiYWNrQnRuVmlzaWJsZVwiXG4gICAgI2JhY2tCdG5cbiAgICAoY2xpY2spPVwibmF2QmFja3dhcmQoKVwiPlxuICAgIDxjcHMtaWNvbiBpY29uPVwiY2hldnJvbi1kb3duXCIgY29sb3I9XCJ0ZXh0LWRhcmtcIj48L2Nwcy1pY29uPlxuICA8L2Rpdj5cbiAgPHVsICN0YWJzTGlzdCBjbGFzcz1cImNwcy10YWJzLWxpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IHRhYkluZGV4ID0gaW5kZXhcIj5cbiAgICAgIDxsaVxuICAgICAgICAqbmdJZj1cInRhYi50b29sdGlwVGV4dFwiXG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYlwiXG4gICAgICAgIChjbGljayk9XCIhdGFiLmRpc2FibGVkID8gb25UYWJDbGljayh0YWJJbmRleCkgOiAnJ1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0YWIuYWN0aXZlLCBkaXNhYmxlZDogdGFiLmRpc2FibGVkIH1cIlxuICAgICAgICBbY3BzVG9vbHRpcF09XCJ0YWIudG9vbHRpcFRleHRcIlxuICAgICAgICB0b29sdGlwT3BlbkRlbGF5PVwiMTAwMFwiXG4gICAgICAgIHRvb2x0aXBDbG9zZURlbGF5PVwiMFwiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgIFt0b29sdGlwTWF4V2lkdGhdPVwidGFiLnRvb2x0aXBNYXhXaWR0aFwiXG4gICAgICAgIFt0b29sdGlwUGVyc2lzdGVudF09XCJ0YWIudG9vbHRpcFBlcnNpc3RlbnRcIlxuICAgICAgICBbdG9vbHRpcENvbnRlbnRDbGFzc109XCJ0YWIudG9vbHRpcENvbnRlbnRDbGFzc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHRhYkhlYWRlclRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICB0YWI6IHRhYlxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICAgIDxsaVxuICAgICAgICAqbmdJZj1cIiF0YWIudG9vbHRpcFRleHRcIlxuICAgICAgICBjbGFzcz1cImNwcy10YWJcIlxuICAgICAgICAoY2xpY2spPVwiIXRhYi5kaXNhYmxlZCA/IG9uVGFiQ2xpY2sodGFiSW5kZXgpIDogJydcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdGFiLmFjdGl2ZSwgZGlzYWJsZWQ6IHRhYi5kaXNhYmxlZCB9XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgdGFiSGVhZGVyVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgIHRhYjogdGFiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJuYXYtYnRuIG5hdi1idG4tZm9yd2FyZFwiXG4gICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IG5hdkJ1dHRvbnNCYWNrZ3JvdW5kIH1cIlxuICAgICpuZ0lmPVwiIWZvcndhcmRCdG5WaXNpYmxlXCJcbiAgICAjZm9yd2FyZEJ0blxuICAgIChjbGljayk9XCJuYXZGb3J3YXJkKClcIj5cbiAgICA8Y3BzLWljb24gaWNvbj1cImNoZXZyb24tZG93blwiIGNvbG9yPVwidGV4dC1kYXJrXCI+PC9jcHMtaWNvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJjcHMtdGFiLWNvbnRlbnQtd3JhcFwiXG4gIFtjbGFzc109XCJjb250ZW50V3JhcENsYXNzXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdjcHMtdGFiLWNvbnRlbnQtd3JhcC1zdWJ0YWJzJzogaXNTdWJUYWJzXG4gIH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYi1jb250ZW50XCIgKm5nSWY9XCJ0YWIuYWN0aXZlXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIFtAc2xpZGVJbk91dF09XCJhbmltYXRpb25TdGF0ZVwiXG4gICAgICAgICpuZ0lmPVwiYW5pbWF0aW9uVHlwZSA9PT0gJ3NsaWRlJ1wiXG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYi1jb250ZW50LWlubmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBbQGZhZGVJbk91dF09XCJhbmltYXRpb25TdGF0ZVwiXG4gICAgICAgICpuZ0lmPVwiYW5pbWF0aW9uVHlwZSA9PT0gJ2ZhZGUnXCJcbiAgICAgICAgY2xhc3M9XCJjcHMtdGFiLWNvbnRlbnQtaW5uZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWIuY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFiSGVhZGVyVGVtcGxhdGUgbGV0LXRhYj1cInRhYlwiPlxuICA8Y3BzLWljb24gKm5nSWY9XCJ0YWIuaWNvblwiIGNsYXNzPVwiY3BzLXRhYi1pY29uXCIgW2ljb25dPVwidGFiLmljb25cIj4gPC9jcHMtaWNvbj5cbiAgPGEgY2xhc3M9XCJjcHMtdGFiLWxpbmtcIj57eyB0YWIubGFiZWwgfX08L2E+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIuYmFkZ2VWYWx1ZVwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwidGFiLmJhZGdlVG9vbHRpcFwiXG4gICAgICBjbGFzcz1cImNwcy10YWItYmFkZ2VcIlxuICAgICAgW2Nwc1Rvb2x0aXBdPVwidGFiLmJhZGdlVG9vbHRpcFwiPlxuICAgICAgPHNwYW4+e3sgdGFiLmJhZGdlVmFsdWUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiF0YWIuYmFkZ2VUb29sdGlwXCIgY2xhc3M9XCJjcHMtdGFiLWJhZGdlXCI+XG4gICAgICA8c3Bhbj57eyB0YWIuYmFkZ2VWYWx1ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Input, Optional } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "primeng/table";
|
|
5
|
-
import * as i2 from "primeng/treetable";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
export class CpsSortIconComponent {
|
|
8
|
-
constructor(dt, tt, cd) {
|
|
9
|
-
this.dt = dt;
|
|
10
|
-
this.tt = tt;
|
|
11
|
-
this.cd = cd;
|
|
12
|
-
this.field = '';
|
|
13
|
-
this.sortOrder = 0;
|
|
14
|
-
this._tableInstance = dt || tt;
|
|
15
|
-
this.subscription = this._tableInstance.tableService.sortSource$.subscribe(() => {
|
|
16
|
-
this.updateSortState();
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
this.updateSortState();
|
|
21
|
-
}
|
|
22
|
-
onClick(event) {
|
|
23
|
-
event.preventDefault();
|
|
24
|
-
}
|
|
25
|
-
updateSortState() {
|
|
26
|
-
if (this._tableInstance.sortMode === 'single') {
|
|
27
|
-
this.sortOrder = this._tableInstance.isSorted(this.field)
|
|
28
|
-
? this._tableInstance.sortOrder
|
|
29
|
-
: 0;
|
|
30
|
-
}
|
|
31
|
-
else if (this._tableInstance.sortMode === 'multiple') {
|
|
32
|
-
const sortMeta = this._tableInstance.getSortMeta(this.field);
|
|
33
|
-
this.sortOrder = sortMeta ? sortMeta.order : 0;
|
|
34
|
-
}
|
|
35
|
-
this.cd.markForCheck();
|
|
36
|
-
}
|
|
37
|
-
getMultiSortMetaIndex() {
|
|
38
|
-
const multiSortMeta = this._tableInstance._multiSortMeta;
|
|
39
|
-
let index = -1;
|
|
40
|
-
if (multiSortMeta &&
|
|
41
|
-
this._tableInstance.sortMode === 'multiple' &&
|
|
42
|
-
((this.dt && this.dt.showInitialSortBadge) || multiSortMeta.length > 1)) {
|
|
43
|
-
for (let i = 0; i < multiSortMeta.length; i++) {
|
|
44
|
-
const meta = multiSortMeta[i];
|
|
45
|
-
if (meta.field === this.field || meta.field === this.field) {
|
|
46
|
-
index = i;
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return index;
|
|
52
|
-
}
|
|
53
|
-
getBadgeValue() {
|
|
54
|
-
const index = this.getMultiSortMetaIndex();
|
|
55
|
-
return this.dt && this.dt.groupRowsBy && index > -1 ? index : index + 1;
|
|
56
|
-
}
|
|
57
|
-
isMultiSorted() {
|
|
58
|
-
return (this._tableInstance.sortMode === 'multiple' &&
|
|
59
|
-
this.getMultiSortMetaIndex() > -1);
|
|
60
|
-
}
|
|
61
|
-
ngOnDestroy() {
|
|
62
|
-
if (this.subscription) {
|
|
63
|
-
this.subscription.unsubscribe();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
CpsSortIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsSortIconComponent, deps: [{ token: i1.Table, optional: true }, { token: i2.TreeTable, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
-
CpsSortIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsSortIconComponent, isStandalone: true, selector: "cps-sort-icon", inputs: { field: "field" }, ngImport: i0, template: "<div *ngIf=\"sortOrder === 0\" class=\"cps-sortable-column-icon sort-unsorted\">\n <div class=\"sort-unsorted-arrow-up\"></div>\n <div class=\"sort-unsorted-arrow-down\"></div>\n</div>\n<div *ngIf=\"sortOrder === 1\" class=\"cps-sortable-column-icon sort-desc\"></div>\n<div *ngIf=\"sortOrder === -1\" class=\"cps-sortable-column-icon sort-asc\"></div>\n\n<span *ngIf=\"isMultiSorted()\" class=\"cps-sortable-column-badge\">{{\n getBadgeValue()\n}}</span>\n", styles: [":host .cps-sortable-column-icon{display:inline-flex;margin-left:8px}:host .sort-desc{border:4px solid transparent;border-bottom-color:var(--cps-color-calm);margin-bottom:4px}:host .sort-asc{border:4px solid transparent;border-top-color:var(--cps-color-calm);margin-top:4px}:host .sort-unsorted{flex-direction:column;vertical-align:bottom}:host .sort-unsorted .sort-unsorted-arrow-up{display:inline-flex;border:4px solid transparent;border-bottom-color:var(--cps-color-line-dark);margin-bottom:4px;margin-top:-4px}:host .sort-unsorted .sort-unsorted-arrow-down{display:inline-flex;border:4px solid transparent;border-top-color:var(--cps-color-line-dark)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsSortIconComponent, decorators: [{
|
|
70
|
-
type: Component,
|
|
71
|
-
args: [{ selector: 'cps-sort-icon', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"sortOrder === 0\" class=\"cps-sortable-column-icon sort-unsorted\">\n <div class=\"sort-unsorted-arrow-up\"></div>\n <div class=\"sort-unsorted-arrow-down\"></div>\n</div>\n<div *ngIf=\"sortOrder === 1\" class=\"cps-sortable-column-icon sort-desc\"></div>\n<div *ngIf=\"sortOrder === -1\" class=\"cps-sortable-column-icon sort-asc\"></div>\n\n<span *ngIf=\"isMultiSorted()\" class=\"cps-sortable-column-badge\">{{\n getBadgeValue()\n}}</span>\n", styles: [":host .cps-sortable-column-icon{display:inline-flex;margin-left:8px}:host .sort-desc{border:4px solid transparent;border-bottom-color:var(--cps-color-calm);margin-bottom:4px}:host .sort-asc{border:4px solid transparent;border-top-color:var(--cps-color-calm);margin-top:4px}:host .sort-unsorted{flex-direction:column;vertical-align:bottom}:host .sort-unsorted .sort-unsorted-arrow-up{display:inline-flex;border:4px solid transparent;border-bottom-color:var(--cps-color-line-dark);margin-bottom:4px;margin-top:-4px}:host .sort-unsorted .sort-unsorted-arrow-down{display:inline-flex;border:4px solid transparent;border-top-color:var(--cps-color-line-dark)}\n"] }]
|
|
72
|
-
}], ctorParameters: function () { return [{ type: i1.Table, decorators: [{
|
|
73
|
-
type: Optional
|
|
74
|
-
}] }, { type: i2.TreeTable, decorators: [{
|
|
75
|
-
type: Optional
|
|
76
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
|
|
77
|
-
type: Input
|
|
78
|
-
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNvcnQtaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFibGUvY29tcG9uZW50cy9pbnRlcm5hbC9jcHMtc29ydC1pY29uL2Nwcy1zb3J0LWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2NvbXBvbmVudHMvaW50ZXJuYWwvY3BzLXNvcnQtaWNvbi9jcHMtc29ydC1pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBR0wsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDOzs7OztBQWF2QixNQUFNLE9BQU8sb0JBQW9CO0lBUy9CLFlBQ3FCLEVBQVMsRUFDVCxFQUFhLEVBQ3pCLEVBQXFCO1FBRlQsT0FBRSxHQUFGLEVBQUUsQ0FBTztRQUNULE9BQUUsR0FBRixFQUFFLENBQVc7UUFDekIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFYckIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUlwQixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBU1osSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FDeEUsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJ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fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nwcy1zb3J0LWljb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy1zb3J0LWljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtc29ydC1pY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENwc1NvcnRJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBmaWVsZCA9ICcnO1xuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHNvcnRPcmRlciA9IDA7XG5cbiAgX3RhYmxlSW5zdGFuY2U6IFRhYmxlIHwgVHJlZVRhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkdDogVGFibGUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHR0OiBUcmVlVGFibGUsXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLl90YWJsZUluc3RhbmNlID0gZHQgfHwgdHQ7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLl90YWJsZUluc3RhbmNlLnRhYmxlU2VydmljZS5zb3J0U291cmNlJC5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBkYXRlU29ydFN0YXRlKCk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICB1cGRhdGVTb3J0U3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuX3RhYmxlSW5zdGFuY2Uuc29ydE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLnNvcnRPcmRlciA9IHRoaXMuX3RhYmxlSW5zdGFuY2UuaXNTb3J0ZWQodGhpcy5maWVsZClcbiAgICAgICAgPyB0aGlzLl90YWJsZUluc3RhbmNlLnNvcnRPcmRlclxuICAgICAgICA6IDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLl90YWJsZUluc3RhbmNlLnNvcnRNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICBjb25zdCBzb3J0TWV0YSA9IHRoaXMuX3RhYmxlSW5zdGFuY2UuZ2V0U29ydE1ldGEodGhpcy5maWVsZCk7XG4gICAgICB0aGlzLnNvcnRPcmRlciA9IHNvcnRNZXRhID8gc29ydE1ldGEub3JkZXIgOiAwO1xuICAgIH1cbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0TXVsdGlTb3J0TWV0YUluZGV4KCkge1xuICAgIGNvbnN0IG11bHRpU29ydE1ldGEgPSB0aGlzLl90YWJsZUluc3RhbmNlLl9tdWx0aVNvcnRNZXRhO1xuICAgIGxldCBpbmRleCA9IC0xO1xuXG4gICAgaWYgKFxuICAgICAgbXVsdGlTb3J0TWV0YSAmJlxuICAgICAgdGhpcy5fdGFibGVJbnN0YW5jZS5zb3J0TW9kZSA9PT0gJ211bHRpcGxlJyAmJlxuICAgICAgKCh0aGlzLmR0ICYmIHRoaXMuZHQuc2hvd0luaXRpYWxTb3J0QmFkZ2UpIHx8IG11bHRpU29ydE1ldGEubGVuZ3RoID4gMSlcbiAgICApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbXVsdGlTb3J0TWV0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtZXRhID0gbXVsdGlTb3J0TWV0YVtpXTtcbiAgICAgICAgaWYgKG1ldGEuZmllbGQgPT09IHRoaXMuZmllbGQgfHwgbWV0YS5maWVsZCA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGdldEJhZGdlVmFsdWUoKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE11bHRpU29ydE1ldGFJbmRleCgpO1xuICAgIHJldHVybiB0aGlzLmR0ICYmIHRoaXMuZHQuZ3JvdXBSb3dzQnkgJiYgaW5kZXggPiAtMSA/IGluZGV4IDogaW5kZXggKyAxO1xuICB9XG5cbiAgaXNNdWx0aVNvcnRlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fdGFibGVJbnN0YW5jZS5zb3J0TW9kZSA9PT0gJ211bHRpcGxlJyAmJlxuICAgICAgdGhpcy5nZXRNdWx0aVNvcnRNZXRhSW5kZXgoKSA+IC0xXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJzb3J0T3JkZXIgPT09IDBcIiBjbGFzcz1cImNwcy1zb3J0YWJsZS1jb2x1bW4taWNvbiBzb3J0LXVuc29ydGVkXCI+XG4gIDxkaXYgY2xhc3M9XCJzb3J0LXVuc29ydGVkLWFycm93LXVwXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzb3J0LXVuc29ydGVkLWFycm93LWRvd25cIj48L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cInNvcnRPcmRlciA9PT0gMVwiIGNsYXNzPVwiY3BzLXNvcnRhYmxlLWNvbHVtbi1pY29uIHNvcnQtZGVzY1wiPjwvZGl2PlxuPGRpdiAqbmdJZj1cInNvcnRPcmRlciA9PT0gLTFcIiBjbGFzcz1cImNwcy1zb3J0YWJsZS1jb2x1bW4taWNvbiBzb3J0LWFzY1wiPjwvZGl2PlxuXG48c3BhbiAqbmdJZj1cImlzTXVsdGlTb3J0ZWQoKVwiIGNsYXNzPVwiY3BzLXNvcnRhYmxlLWNvbHVtbi1iYWRnZVwiPnt7XG4gIGdldEJhZGdlVmFsdWUoKVxufX08L3NwYW4+XG4iXX0=
|