@symphony-talent/component-library 4.232.0 → 4.233.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/esm2020/lib/atoms/contextual-menu/contextual-menu.component.mjs +2 -2
- package/esm2020/lib/atoms/grid/framework/custom-detail-with-grid/custom-detail-with-grid.component.mjs +57 -3
- package/esm2020/lib/atoms/pill/pill.component.mjs +2 -2
- package/esm2020/lib/pages/modals/notification-modal/notification-modal.component.mjs +2 -2
- package/esm2020/projects/component-library/lib/atoms/contextual-menu/contextual-menu.component.mjs +2 -2
- package/esm2020/projects/component-library/lib/atoms/grid/framework/custom-detail-with-grid/custom-detail-with-grid.component.mjs +57 -3
- package/esm2020/projects/component-library/lib/atoms/pill/pill.component.mjs +2 -2
- package/esm2020/projects/component-library/lib/pages/modals/notification-modal/notification-modal.component.mjs +2 -2
- package/fesm2015/symphony-talent-component-library-projects-component-library.mjs +71 -11
- package/fesm2015/symphony-talent-component-library-projects-component-library.mjs.map +1 -1
- package/fesm2015/symphony-talent-component-library.mjs +71 -11
- package/fesm2015/symphony-talent-component-library.mjs.map +1 -1
- package/fesm2020/symphony-talent-component-library-projects-component-library.mjs +62 -8
- package/fesm2020/symphony-talent-component-library-projects-component-library.mjs.map +1 -1
- package/fesm2020/symphony-talent-component-library.mjs +62 -8
- package/fesm2020/symphony-talent-component-library.mjs.map +1 -1
- package/lib/atoms/grid/framework/custom-detail-with-grid/custom-detail-with-grid.component.d.ts +16 -1
- package/package.json +1 -1
- package/projects/component-library/lib/atoms/grid/framework/custom-detail-with-grid/custom-detail-with-grid.component.d.ts +16 -1
|
@@ -59,10 +59,10 @@ export class ContextualMenuComponent {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
ContextualMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ContextualMenuComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
-
ContextualMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: ContextualMenuComponent, selector: "symphony-contextual-menu", inputs: { model: "model" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.open": "this.isDropdownOpen" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"], directives: [{ type: i1.BsDropdownDirective, selector: "[bsDropdown],[dropdown]", inputs: ["autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen", "placement", "triggers", "container", "dropup"], outputs: ["onShown", "onHidden", "isOpenChange"], exportAs: ["bs-dropdown"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { type: i1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "trimId": i3.TrimIdPipe } });
|
|
62
|
+
ContextualMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: ContextualMenuComponent, selector: "symphony-contextual-menu", inputs: { model: "model" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.open": "this.isDropdownOpen" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px;padding-top:10px!important;padding-bottom:10px!important}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"], directives: [{ type: i1.BsDropdownDirective, selector: "[bsDropdown],[dropdown]", inputs: ["autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen", "placement", "triggers", "container", "dropup"], outputs: ["onShown", "onHidden", "isOpenChange"], exportAs: ["bs-dropdown"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { type: i1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "trimId": i3.TrimIdPipe } });
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ContextualMenuComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
65
|
-
args: [{ selector: 'symphony-contextual-menu', template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"] }]
|
|
65
|
+
args: [{ selector: 'symphony-contextual-menu', template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px;padding-top:10px!important;padding-bottom:10px!important}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"] }]
|
|
66
66
|
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
67
67
|
type: Inject,
|
|
68
68
|
args: [DOCUMENT]
|
|
@@ -9,6 +9,7 @@ export class CustomDetailWithGridComponent {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
this.defaultNotesCharacterLimit = 500;
|
|
11
11
|
this.resizeTimeoutId = null;
|
|
12
|
+
this.nestedDetailGridInfoId = null;
|
|
12
13
|
this.detailRendererParams = {};
|
|
13
14
|
this.title = 'Detail Records';
|
|
14
15
|
this.notesTitle = 'Internal Session Notes';
|
|
@@ -26,6 +27,10 @@ export class CustomDetailWithGridComponent {
|
|
|
26
27
|
this.nestedSuppressRowClickSelection = true;
|
|
27
28
|
this.nestedSuppressContextMenu = true;
|
|
28
29
|
this.nestedSuppressAutoSizeColumns = false;
|
|
30
|
+
this.nestedRowModelType = 'clientSide';
|
|
31
|
+
this.nestedDatasource = null;
|
|
32
|
+
this.nestedPageSize = 20;
|
|
33
|
+
this.nestedCacheBlockSize = 20;
|
|
29
34
|
this.nestedColumnDefs = [];
|
|
30
35
|
this.nestedDefaultColDef = {
|
|
31
36
|
flex: 1,
|
|
@@ -61,6 +66,11 @@ export class CustomDetailWithGridComponent {
|
|
|
61
66
|
this.detailRendererParams?.nestedSuppressContextMenu !== false;
|
|
62
67
|
this.nestedSuppressAutoSizeColumns =
|
|
63
68
|
this.detailRendererParams?.nestedSuppressAutoSizeColumns === true;
|
|
69
|
+
this.nestedRowModelType = this.detailRendererParams?.nestedRowModelType || 'clientSide';
|
|
70
|
+
this.nestedPageSize = this.detailRendererParams?.nestedPageSize || 20;
|
|
71
|
+
this.nestedCacheBlockSize =
|
|
72
|
+
this.detailRendererParams?.nestedCacheBlockSize || this.nestedPageSize;
|
|
73
|
+
this.nestedDatasource = this.resolveNestedDatasource(params);
|
|
64
74
|
this.nestedFrameworkComponents = this.getNestedFrameworkComponents();
|
|
65
75
|
this.nestedDefaultColDef = {
|
|
66
76
|
flex: 1,
|
|
@@ -74,11 +84,25 @@ export class CustomDetailWithGridComponent {
|
|
|
74
84
|
}
|
|
75
85
|
refresh(params) {
|
|
76
86
|
this.agInit(params);
|
|
87
|
+
this.applyNestedDatasource();
|
|
88
|
+
if (this.nestedRowModelType !== 'serverSide') {
|
|
89
|
+
this.nestedGridApi?.setRowData?.(this.nestedRowData);
|
|
90
|
+
}
|
|
77
91
|
this.resizeNestedGridColumns();
|
|
78
92
|
return true;
|
|
79
93
|
}
|
|
80
94
|
onNestedGridReady(gridReadyEvent) {
|
|
81
95
|
this.nestedGridApi = gridReadyEvent.api;
|
|
96
|
+
this.registerNestedDetailGrid(gridReadyEvent);
|
|
97
|
+
this.applyNestedDatasource();
|
|
98
|
+
if (this.detailRendererParams?.onNestedGridReady) {
|
|
99
|
+
this.detailRendererParams.onNestedGridReady(gridReadyEvent, this.params);
|
|
100
|
+
}
|
|
101
|
+
this.resizeNestedGridColumns();
|
|
102
|
+
}
|
|
103
|
+
setNestedRowData(rowData) {
|
|
104
|
+
this.nestedRowData = rowData || [];
|
|
105
|
+
this.nestedGridApi?.setRowData?.(this.nestedRowData);
|
|
82
106
|
this.resizeNestedGridColumns();
|
|
83
107
|
}
|
|
84
108
|
onWindowResize() {
|
|
@@ -143,11 +167,41 @@ export class CustomDetailWithGridComponent {
|
|
|
143
167
|
...(this.detailRendererParams?.nestedFrameworkComponents || {})
|
|
144
168
|
};
|
|
145
169
|
}
|
|
170
|
+
resolveNestedDatasource(params) {
|
|
171
|
+
if (this.detailRendererParams?.nestedDatasourceFactory) {
|
|
172
|
+
return this.detailRendererParams.nestedDatasourceFactory(params?.data, params);
|
|
173
|
+
}
|
|
174
|
+
return this.detailRendererParams?.nestedDatasource || null;
|
|
175
|
+
}
|
|
176
|
+
applyNestedDatasource() {
|
|
177
|
+
if (this.nestedRowModelType === 'serverSide' &&
|
|
178
|
+
this.nestedDatasource &&
|
|
179
|
+
this.nestedGridApi) {
|
|
180
|
+
this.nestedGridApi.setServerSideDatasource(this.nestedDatasource);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
registerNestedDetailGrid(gridReadyEvent) {
|
|
184
|
+
const parentNodeId = this.params?.node?.id;
|
|
185
|
+
const addDetailGridInfo = this.params?.api?.addDetailGridInfo;
|
|
186
|
+
if (!parentNodeId || !addDetailGridInfo) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
this.nestedDetailGridInfoId = `detail_${parentNodeId}`;
|
|
190
|
+
addDetailGridInfo.call(this.params.api, this.nestedDetailGridInfoId, {
|
|
191
|
+
id: this.nestedDetailGridInfoId,
|
|
192
|
+
api: gridReadyEvent.api,
|
|
193
|
+
columnApi: gridReadyEvent.columnApi,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
146
196
|
destroy() {
|
|
147
197
|
if (this.resizeTimeoutId !== null) {
|
|
148
198
|
clearTimeout(this.resizeTimeoutId);
|
|
149
199
|
this.resizeTimeoutId = null;
|
|
150
200
|
}
|
|
201
|
+
if (this.nestedDetailGridInfoId && this.params?.api?.removeDetailGridInfo) {
|
|
202
|
+
this.params.api.removeDetailGridInfo(this.nestedDetailGridInfoId);
|
|
203
|
+
this.nestedDetailGridInfoId = null;
|
|
204
|
+
}
|
|
151
205
|
}
|
|
152
206
|
resizeNestedGridColumns() {
|
|
153
207
|
if (this.nestedSuppressAutoSizeColumns || !this.nestedGridApi) {
|
|
@@ -163,12 +217,12 @@ export class CustomDetailWithGridComponent {
|
|
|
163
217
|
}
|
|
164
218
|
}
|
|
165
219
|
CustomDetailWithGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: CustomDetailWithGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
-
CustomDetailWithGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: CustomDetailWithGridComponent, selector: "symphony-custom-detail-with-grid", host: { listeners: { "window:resize": "onWindowResize()" } }, ngImport: i0, template: "<div class=\"custom-detail-with-grid\">\n <div class=\"custom-detail-with-grid__header\">\n <div class=\"custom-detail-with-grid__header-top sfx-mb-10\">\n <h4 class=\"sfx-m-0\">{{ title }}</h4>\n <symphony-button-v2\n *ngIf=\"showActionButton\"\n [text]=\"actionButtonText\"\n (clicked)=\"onViewAllClick()\"\n ></symphony-button-v2>\n </div>\n\n <div *ngIf=\"shouldShowNotesSection\" class=\"custom-detail-with-grid__notes sfx-mb-15\">\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-title sfx-d-block sfx-font-bold sfx-mb-5\"\n [text]=\"notesTitle\"\n ></symphony-paragraph>\n\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-description sfx-d-block\"\n [text]=\"displayedNotesDescription\"\n ></symphony-paragraph>\n\n <button\n *ngIf=\"shouldShowNotesToggle\"\n type=\"button\"\n class=\"custom-detail-with-grid__notes-toggle\"\n (click)=\"toggleNotesExpansion()\"\n >\n {{ isNotesExpanded ? 'See Less' : 'See More' }}\n </button>\n </div>\n </div>\n\n <div class=\"custom-detail-with-grid__grid\">\n <ag-grid-angular\n class=\"ag-theme-alpine sfx-lib-gird-dropdown custom-detail-with-grid__nested-grid\"\n [columnDefs]=\"nestedColumnDefs\"\n [defaultColDef]=\"nestedDefaultColDef\"\n [frameworkComponents]=\"nestedFrameworkComponents\"\n [rowHeight]=\"nestedRowHeight\"\n [rowData]=\"nestedRowData\"\n [suppressRowClickSelection]=\"nestedSuppressRowClickSelection\"\n [suppressContextMenu]=\"nestedSuppressContextMenu\"\n [rowSelection]=\"nestedRowSelection\"\n (gridReady)=\"onNestedGridReady($event)\"\n ></ag-grid-angular>\n </div>\n</div>\n", styles: ["symphony-custom-detail-with-grid{display:block;height:100%;width:100%}symphony-custom-detail-with-grid .custom-detail-with-grid{display:flex;flex-direction:column;height:100%;width:100%;padding:20px}symphony-custom-detail-with-grid .custom-detail-with-grid__header{display:flex;flex-direction:column}symphony-custom-detail-with-grid .custom-detail-with-grid__header-top{align-items:center;display:flex;justify-content:space-between}symphony-custom-detail-with-grid .custom-detail-with-grid__notes{background-color:#f0f4ff;border:1px solid #d1e0ff;border-radius:8px;padding:16px}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-title{color:#324158}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-description{white-space:normal}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-toggle{background:none;border:0;color:#0091fb;cursor:pointer;display:block;line-height:20px;margin-top:8px;padding:0;text-align:left;font-size:13px}symphony-custom-detail-with-grid .custom-detail-with-grid__grid{display:block;flex:1;min-height:180px;overflow:hidden;width:100%;border-radius:10px}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid{display:block;height:100%;width:100%;background:#fff}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-cell,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-header-cell{padding-left:5px!important}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options.open .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options.open .btn-group button.dropdown-toggle.btn:hover,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}\n"], components: [{ type: i1.ButtonV2Component, selector: "symphony-button-v2" }, { type: i2.ParagraphComponent, selector: "symphony-paragraph", inputs: ["text", "isSecondary", "isFontBold", "fontSize", "fontWeight"] }, { type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["alignedGrids", "rowData", "columnDefs", "excelStyles", "pinnedTopRowData", "pinnedBottomRowData", "chartThemes", "components", "frameworkComponents", "rowStyle", "context", "autoGroupColumnDef", "localeText", "icons", "datasource", "serverSideDatasource", "viewportDatasource", "groupRowRendererParams", "aggFuncs", "fullWidthCellRendererParams", "defaultColGroupDef", "defaultColDef", "defaultExportParams", "columnTypes", "rowClassRules", "detailGridOptions", "detailCellRendererParams", "loadingCellRendererParams", "loadingOverlayComponentParams", "noRowsOverlayComponentParams", "popupParent", "colResizeDefault", "reduxStore", "statusBar", "sideBar", "chartThemeOverrides", "customChartThemes", "sortingOrder", "rowClass", "rowSelection", "overlayLoadingTemplate", "overlayNoRowsTemplate", "quickFilterText", "rowModelType", "editType", "domLayout", "clipboardDeliminator", "rowGroupPanelShow", "multiSortKey", "pivotColumnGroupTotals", "pivotRowTotals", "pivotPanelShow", "fillHandleDirection", "rowHeight", "detailRowHeight", "rowBuffer", "colWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "groupDefaultExpanded", "minColWidth", "maxColWidth", "viewportRowModelPageSize", "viewportRowModelBufferSize", "autoSizePadding", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "tooltipShowDelay", "cacheOverflowSize", "paginationPageSize", "cacheBlockSize", "infiniteInitialRowCount", "scrollbarWidth", "batchUpdateWaitMillis", "asyncTransactionWaitMillis", "blockLoadDebounceMillis", "keepDetailRowsCount", "undoRedoCellEditingLimit", "cellFlashDelay", "cellFadeDelay", "localeTextFunc", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "dateComponent", "dateComponentFramework", "groupRowRenderer", "groupRowRendererFramework", "isExternalFilterPresent", "getRowHeight", "doesExternalFilterPass", "getRowClass", "getRowStyle", "getRowClassRules", "traverseNode", "getContextMenuItems", "getMainMenuItems", "processRowPostCreate", "processCellForClipboard", "groupRowAggNodes", "getRowNodeId", "isFullWidthCell", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "processSecondaryColDef", "processSecondaryColGroupDef", "getBusinessKeyForNode", "sendToClipboard", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getDetailRowData", "processCellFromClipboard", "getDocument", "postProcessPopup", "getChildCount", "getDataPath", "loadingCellRenderer", "loadingCellRendererFramework", "loadingOverlayComponent", "loadingOverlayComponentFramework", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "detailCellRenderer", "detailCellRendererFramework", "defaultGroupSortComparator", "isRowMaster", "isRowSelectable", "postSort", "processHeaderForClipboard", "paginationNumberFormatter", "processDataFromClipboard", "getServerSideGroupKey", "isServerSideGroup", "suppressKeyboardEvent", "createChartContainer", "processChartOptions", "getChartToolbarItems", "fillOperation", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowClickSelection", "suppressCellSelection", "suppressHorizontalScroll", "alwaysShowVerticalScroll", "debug", "enableBrowserTooltips", "enableCellExpressions", "angularCompileRows", "angularCompileFilters", "groupSuppressAutoColumn", "groupSelectsChildren", "groupIncludeFooter", "groupIncludeTotalFooter", "groupUseEntireRow", "groupSuppressBlankHeader", "suppressMenuHide", "suppressRowDeselection", "unSortIcon", "suppressMultiSort", "singleClickEdit", "suppressLoadingOverlay", "suppressNoRowsOverlay", "suppressAutoSize", "skipHeaderOnAutoSize", "suppressParentsInRowNodes", "suppressColumnMoveAnimation", "suppressMovableColumns", "suppressFieldDotNotation", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "suppressClearOnFillReduction", "deltaSort", "suppressTouch", "suppressAsyncEvents", "allowContextMenuWithControlKey", "suppressContextMenu", "rememberGroupStateWhenNewData", "enableCellChangeFlash", "suppressDragLeaveHidesColumns", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "suppressCopyRowsToClipboard", "copyHeadersToClipboard", "pivotMode", "suppressAggFuncInHeader", "suppressColumnVirtualisation", "suppressAggAtRootLevel", "suppressFocusAfterRefresh", "functionsPassive", "functionsReadOnly", "animateRows", "groupSelectsFiltered", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "enableRtl", "suppressClickEdit", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "enableMultiRowDragging", "enableGroupEdit", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "suppressPaginationPanel", "floatingFilter", "groupHideOpenParents", "groupMultiAutoColumn", "pagination", "stopEditingWhenGridLosesFocus", "paginationAutoPageSize", "suppressScrollOnNewData", "purgeClosedRowNodes", "cacheQuickFilter", "deltaRowDataMode", "ensureDomOrder", "accentedSort", "suppressChangeDetection", "valueCache", "valueCacheNeverExpires", "aggregateOnlyChangedColumns", "suppressAnimationFrame", "suppressExcelExport", "suppressCsvExport", "treeData", "masterDetail", "suppressMultiRangeSelection", "enterMovesDownAfterEdit", "enterMovesDown", "suppressPropertyNamesCheck", "rowMultiSelectWithClick", "suppressEnterpriseResetOnNewColumns", "enableOldSetFilterModel", "suppressRowHoverHighlight", "suppressRowTransform", "suppressClipboardPaste", "suppressLastEmptyLineOnPaste", "serverSideSortingAlwaysResets", "reactNext", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "enableCharts", "deltaColumnMode", "suppressMaintainUnsortedOrder", "enableCellTextSelection", "suppressBrowserResizeObserver", "suppressMaxRenderedRowRestriction", "excludeChildrenWhenTreeDataFiltering", "tooltipMouseTrack", "keepDetailRows", "paginateChildRows", "preventDefaultOnContextMenu", "undoRedoCellEditing", "allowDragFromColumnsToolPanel", "immutableData", "immutableColumns", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "applyColumnDefOrder", "debounceVerticalScrollbar", "detailRowAutoHeight", "gridOptions", "modules"], outputs: ["columnEverythingChanged", "newColumnsLoaded", "columnPivotModeChanged", "columnRowGroupChanged", "expandOrCollapseAll", "columnPivotChanged", "gridColumnsChanged", "columnValueChanged", "columnMoved", "columnVisible", "columnPinned", "columnGroupOpened", "columnResized", "displayedColumnsChanged", "virtualColumnsChanged", "rowGroupOpened", "rowDataChanged", "rowDataUpdated", "pinnedRowDataChanged", "rangeSelectionChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "toolPanelVisibleChanged", "modelUpdated", "pasteStart", "pasteEnd", "fillStart", "fillEnd", "cellClicked", "cellDoubleClicked", "cellMouseDown", "cellContextMenu", "cellValueChanged", "rowValueChanged", "cellFocused", "rowSelected", "selectionChanged", "cellKeyDown", "cellKeyPress", "cellMouseOver", "cellMouseOut", "filterChanged", "filterModified", "filterOpened", "sortChanged", "virtualRowRemoved", "rowClicked", "rowDoubleClicked", "gridReady", "gridSizeChanged", "viewportChanged", "scrollbarWidthChanged", "firstDataRendered", "dragStarted", "dragStopped", "checkboxChanged", "rowEditingStarted", "rowEditingStopped", "cellEditingStarted", "cellEditingStopped", "bodyScroll", "animationQueueEmpty", "heightScaleChanged", "paginationChanged", "componentStateChanged", "bodyHeightChanged", "displayedColumnsWidthChanged", "scrollVisibilityChanged", "columnHoverChanged", "flashCells", "paginationPixelOffsetChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "popupToFront", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest", "keyboardFocus", "mouseFocus"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
220
|
+
CustomDetailWithGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: CustomDetailWithGridComponent, selector: "symphony-custom-detail-with-grid", host: { listeners: { "window:resize": "onWindowResize()" } }, ngImport: i0, template: "<div class=\"custom-detail-with-grid\">\n <div class=\"custom-detail-with-grid__header\">\n <div class=\"custom-detail-with-grid__header-top sfx-mb-10\">\n <h4 class=\"sfx-m-0\">{{ title }}</h4>\n <symphony-button-v2\n *ngIf=\"showActionButton\"\n [text]=\"actionButtonText\"\n (clicked)=\"onViewAllClick()\"\n ></symphony-button-v2>\n </div>\n\n <div *ngIf=\"shouldShowNotesSection\" class=\"custom-detail-with-grid__notes sfx-mb-15\">\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-title sfx-d-block sfx-font-bold sfx-mb-5\"\n [text]=\"notesTitle\"\n ></symphony-paragraph>\n\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-description sfx-d-block\"\n [text]=\"displayedNotesDescription\"\n ></symphony-paragraph>\n\n <button\n *ngIf=\"shouldShowNotesToggle\"\n type=\"button\"\n class=\"custom-detail-with-grid__notes-toggle\"\n (click)=\"toggleNotesExpansion()\"\n >\n {{ isNotesExpanded ? 'See Less' : 'See More' }}\n </button>\n </div>\n </div>\n\n <div class=\"custom-detail-with-grid__grid\">\n <ag-grid-angular\n class=\"ag-theme-alpine sfx-lib-gird-dropdown custom-detail-with-grid__nested-grid\"\n [columnDefs]=\"nestedColumnDefs\"\n [defaultColDef]=\"nestedDefaultColDef\"\n [frameworkComponents]=\"nestedFrameworkComponents\"\n [rowHeight]=\"nestedRowHeight\"\n [rowModelType]=\"nestedRowModelType\"\n [paginationPageSize]=\"nestedPageSize\"\n [cacheBlockSize]=\"nestedCacheBlockSize\"\n [maxConcurrentDatasourceRequests]=\"1\"\n [serverSideSortingAlwaysResets]=\"true\"\n [rowData]=\"nestedRowData\"\n [suppressRowClickSelection]=\"nestedSuppressRowClickSelection\"\n [suppressContextMenu]=\"nestedSuppressContextMenu\"\n [rowSelection]=\"nestedRowSelection\"\n (gridReady)=\"onNestedGridReady($event)\"\n ></ag-grid-angular>\n </div>\n</div>\n", styles: ["symphony-custom-detail-with-grid{display:block;height:100%;width:100%}symphony-custom-detail-with-grid .custom-detail-with-grid{display:flex;flex-direction:column;height:100%;width:100%;padding:20px}symphony-custom-detail-with-grid .custom-detail-with-grid__header{display:flex;flex-direction:column}symphony-custom-detail-with-grid .custom-detail-with-grid__header-top{align-items:center;display:flex;justify-content:space-between}symphony-custom-detail-with-grid .custom-detail-with-grid__notes{background-color:#f0f4ff;border:1px solid #d1e0ff;border-radius:8px;padding:16px}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-title{color:#324158}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-description{white-space:normal}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-toggle{background:none;border:0;color:#0091fb;cursor:pointer;display:block;line-height:20px;margin-top:8px;padding:0;text-align:left;font-size:13px}symphony-custom-detail-with-grid .custom-detail-with-grid__grid{display:block;flex:1;min-height:180px;overflow:hidden;width:100%;border-radius:10px}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid{display:block;height:100%;width:100%;background:#fff}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-cell,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-header-cell{padding-left:5px!important}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options.open .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options.open .btn-group button.dropdown-toggle.btn:hover,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}\n"], components: [{ type: i1.ButtonV2Component, selector: "symphony-button-v2" }, { type: i2.ParagraphComponent, selector: "symphony-paragraph", inputs: ["text", "isSecondary", "isFontBold", "fontSize", "fontWeight"] }, { type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["alignedGrids", "rowData", "columnDefs", "excelStyles", "pinnedTopRowData", "pinnedBottomRowData", "chartThemes", "components", "frameworkComponents", "rowStyle", "context", "autoGroupColumnDef", "localeText", "icons", "datasource", "serverSideDatasource", "viewportDatasource", "groupRowRendererParams", "aggFuncs", "fullWidthCellRendererParams", "defaultColGroupDef", "defaultColDef", "defaultExportParams", "columnTypes", "rowClassRules", "detailGridOptions", "detailCellRendererParams", "loadingCellRendererParams", "loadingOverlayComponentParams", "noRowsOverlayComponentParams", "popupParent", "colResizeDefault", "reduxStore", "statusBar", "sideBar", "chartThemeOverrides", "customChartThemes", "sortingOrder", "rowClass", "rowSelection", "overlayLoadingTemplate", "overlayNoRowsTemplate", "quickFilterText", "rowModelType", "editType", "domLayout", "clipboardDeliminator", "rowGroupPanelShow", "multiSortKey", "pivotColumnGroupTotals", "pivotRowTotals", "pivotPanelShow", "fillHandleDirection", "rowHeight", "detailRowHeight", "rowBuffer", "colWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "groupDefaultExpanded", "minColWidth", "maxColWidth", "viewportRowModelPageSize", "viewportRowModelBufferSize", "autoSizePadding", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "tooltipShowDelay", "cacheOverflowSize", "paginationPageSize", "cacheBlockSize", "infiniteInitialRowCount", "scrollbarWidth", "batchUpdateWaitMillis", "asyncTransactionWaitMillis", "blockLoadDebounceMillis", "keepDetailRowsCount", "undoRedoCellEditingLimit", "cellFlashDelay", "cellFadeDelay", "localeTextFunc", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "dateComponent", "dateComponentFramework", "groupRowRenderer", "groupRowRendererFramework", "isExternalFilterPresent", "getRowHeight", "doesExternalFilterPass", "getRowClass", "getRowStyle", "getRowClassRules", "traverseNode", "getContextMenuItems", "getMainMenuItems", "processRowPostCreate", "processCellForClipboard", "groupRowAggNodes", "getRowNodeId", "isFullWidthCell", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "processSecondaryColDef", "processSecondaryColGroupDef", "getBusinessKeyForNode", "sendToClipboard", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getDetailRowData", "processCellFromClipboard", "getDocument", "postProcessPopup", "getChildCount", "getDataPath", "loadingCellRenderer", "loadingCellRendererFramework", "loadingOverlayComponent", "loadingOverlayComponentFramework", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "detailCellRenderer", "detailCellRendererFramework", "defaultGroupSortComparator", "isRowMaster", "isRowSelectable", "postSort", "processHeaderForClipboard", "paginationNumberFormatter", "processDataFromClipboard", "getServerSideGroupKey", "isServerSideGroup", "suppressKeyboardEvent", "createChartContainer", "processChartOptions", "getChartToolbarItems", "fillOperation", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowClickSelection", "suppressCellSelection", "suppressHorizontalScroll", "alwaysShowVerticalScroll", "debug", "enableBrowserTooltips", "enableCellExpressions", "angularCompileRows", "angularCompileFilters", "groupSuppressAutoColumn", "groupSelectsChildren", "groupIncludeFooter", "groupIncludeTotalFooter", "groupUseEntireRow", "groupSuppressBlankHeader", "suppressMenuHide", "suppressRowDeselection", "unSortIcon", "suppressMultiSort", "singleClickEdit", "suppressLoadingOverlay", "suppressNoRowsOverlay", "suppressAutoSize", "skipHeaderOnAutoSize", "suppressParentsInRowNodes", "suppressColumnMoveAnimation", "suppressMovableColumns", "suppressFieldDotNotation", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "suppressClearOnFillReduction", "deltaSort", "suppressTouch", "suppressAsyncEvents", "allowContextMenuWithControlKey", "suppressContextMenu", "rememberGroupStateWhenNewData", "enableCellChangeFlash", "suppressDragLeaveHidesColumns", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "suppressCopyRowsToClipboard", "copyHeadersToClipboard", "pivotMode", "suppressAggFuncInHeader", "suppressColumnVirtualisation", "suppressAggAtRootLevel", "suppressFocusAfterRefresh", "functionsPassive", "functionsReadOnly", "animateRows", "groupSelectsFiltered", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "enableRtl", "suppressClickEdit", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "enableMultiRowDragging", "enableGroupEdit", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "suppressPaginationPanel", "floatingFilter", "groupHideOpenParents", "groupMultiAutoColumn", "pagination", "stopEditingWhenGridLosesFocus", "paginationAutoPageSize", "suppressScrollOnNewData", "purgeClosedRowNodes", "cacheQuickFilter", "deltaRowDataMode", "ensureDomOrder", "accentedSort", "suppressChangeDetection", "valueCache", "valueCacheNeverExpires", "aggregateOnlyChangedColumns", "suppressAnimationFrame", "suppressExcelExport", "suppressCsvExport", "treeData", "masterDetail", "suppressMultiRangeSelection", "enterMovesDownAfterEdit", "enterMovesDown", "suppressPropertyNamesCheck", "rowMultiSelectWithClick", "suppressEnterpriseResetOnNewColumns", "enableOldSetFilterModel", "suppressRowHoverHighlight", "suppressRowTransform", "suppressClipboardPaste", "suppressLastEmptyLineOnPaste", "serverSideSortingAlwaysResets", "reactNext", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "enableCharts", "deltaColumnMode", "suppressMaintainUnsortedOrder", "enableCellTextSelection", "suppressBrowserResizeObserver", "suppressMaxRenderedRowRestriction", "excludeChildrenWhenTreeDataFiltering", "tooltipMouseTrack", "keepDetailRows", "paginateChildRows", "preventDefaultOnContextMenu", "undoRedoCellEditing", "allowDragFromColumnsToolPanel", "immutableData", "immutableColumns", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "applyColumnDefOrder", "debounceVerticalScrollbar", "detailRowAutoHeight", "gridOptions", "modules"], outputs: ["columnEverythingChanged", "newColumnsLoaded", "columnPivotModeChanged", "columnRowGroupChanged", "expandOrCollapseAll", "columnPivotChanged", "gridColumnsChanged", "columnValueChanged", "columnMoved", "columnVisible", "columnPinned", "columnGroupOpened", "columnResized", "displayedColumnsChanged", "virtualColumnsChanged", "rowGroupOpened", "rowDataChanged", "rowDataUpdated", "pinnedRowDataChanged", "rangeSelectionChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "toolPanelVisibleChanged", "modelUpdated", "pasteStart", "pasteEnd", "fillStart", "fillEnd", "cellClicked", "cellDoubleClicked", "cellMouseDown", "cellContextMenu", "cellValueChanged", "rowValueChanged", "cellFocused", "rowSelected", "selectionChanged", "cellKeyDown", "cellKeyPress", "cellMouseOver", "cellMouseOut", "filterChanged", "filterModified", "filterOpened", "sortChanged", "virtualRowRemoved", "rowClicked", "rowDoubleClicked", "gridReady", "gridSizeChanged", "viewportChanged", "scrollbarWidthChanged", "firstDataRendered", "dragStarted", "dragStopped", "checkboxChanged", "rowEditingStarted", "rowEditingStopped", "cellEditingStarted", "cellEditingStopped", "bodyScroll", "animationQueueEmpty", "heightScaleChanged", "paginationChanged", "componentStateChanged", "bodyHeightChanged", "displayedColumnsWidthChanged", "scrollVisibilityChanged", "columnHoverChanged", "flashCells", "paginationPixelOffsetChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "popupToFront", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest", "keyboardFocus", "mouseFocus"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
167
221
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: CustomDetailWithGridComponent, decorators: [{
|
|
168
222
|
type: Component,
|
|
169
|
-
args: [{ selector: 'symphony-custom-detail-with-grid', encapsulation: ViewEncapsulation.None, template: "<div class=\"custom-detail-with-grid\">\n <div class=\"custom-detail-with-grid__header\">\n <div class=\"custom-detail-with-grid__header-top sfx-mb-10\">\n <h4 class=\"sfx-m-0\">{{ title }}</h4>\n <symphony-button-v2\n *ngIf=\"showActionButton\"\n [text]=\"actionButtonText\"\n (clicked)=\"onViewAllClick()\"\n ></symphony-button-v2>\n </div>\n\n <div *ngIf=\"shouldShowNotesSection\" class=\"custom-detail-with-grid__notes sfx-mb-15\">\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-title sfx-d-block sfx-font-bold sfx-mb-5\"\n [text]=\"notesTitle\"\n ></symphony-paragraph>\n\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-description sfx-d-block\"\n [text]=\"displayedNotesDescription\"\n ></symphony-paragraph>\n\n <button\n *ngIf=\"shouldShowNotesToggle\"\n type=\"button\"\n class=\"custom-detail-with-grid__notes-toggle\"\n (click)=\"toggleNotesExpansion()\"\n >\n {{ isNotesExpanded ? 'See Less' : 'See More' }}\n </button>\n </div>\n </div>\n\n <div class=\"custom-detail-with-grid__grid\">\n <ag-grid-angular\n class=\"ag-theme-alpine sfx-lib-gird-dropdown custom-detail-with-grid__nested-grid\"\n [columnDefs]=\"nestedColumnDefs\"\n [defaultColDef]=\"nestedDefaultColDef\"\n [frameworkComponents]=\"nestedFrameworkComponents\"\n [rowHeight]=\"nestedRowHeight\"\n [rowData]=\"nestedRowData\"\n [suppressRowClickSelection]=\"nestedSuppressRowClickSelection\"\n [suppressContextMenu]=\"nestedSuppressContextMenu\"\n [rowSelection]=\"nestedRowSelection\"\n (gridReady)=\"onNestedGridReady($event)\"\n ></ag-grid-angular>\n </div>\n</div>\n", styles: ["symphony-custom-detail-with-grid{display:block;height:100%;width:100%}symphony-custom-detail-with-grid .custom-detail-with-grid{display:flex;flex-direction:column;height:100%;width:100%;padding:20px}symphony-custom-detail-with-grid .custom-detail-with-grid__header{display:flex;flex-direction:column}symphony-custom-detail-with-grid .custom-detail-with-grid__header-top{align-items:center;display:flex;justify-content:space-between}symphony-custom-detail-with-grid .custom-detail-with-grid__notes{background-color:#f0f4ff;border:1px solid #d1e0ff;border-radius:8px;padding:16px}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-title{color:#324158}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-description{white-space:normal}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-toggle{background:none;border:0;color:#0091fb;cursor:pointer;display:block;line-height:20px;margin-top:8px;padding:0;text-align:left;font-size:13px}symphony-custom-detail-with-grid .custom-detail-with-grid__grid{display:block;flex:1;min-height:180px;overflow:hidden;width:100%;border-radius:10px}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid{display:block;height:100%;width:100%;background:#fff}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-cell,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-header-cell{padding-left:5px!important}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options.open .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options.open .btn-group button.dropdown-toggle.btn:hover,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}\n"] }]
|
|
223
|
+
args: [{ selector: 'symphony-custom-detail-with-grid', encapsulation: ViewEncapsulation.None, template: "<div class=\"custom-detail-with-grid\">\n <div class=\"custom-detail-with-grid__header\">\n <div class=\"custom-detail-with-grid__header-top sfx-mb-10\">\n <h4 class=\"sfx-m-0\">{{ title }}</h4>\n <symphony-button-v2\n *ngIf=\"showActionButton\"\n [text]=\"actionButtonText\"\n (clicked)=\"onViewAllClick()\"\n ></symphony-button-v2>\n </div>\n\n <div *ngIf=\"shouldShowNotesSection\" class=\"custom-detail-with-grid__notes sfx-mb-15\">\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-title sfx-d-block sfx-font-bold sfx-mb-5\"\n [text]=\"notesTitle\"\n ></symphony-paragraph>\n\n <symphony-paragraph\n class=\"custom-detail-with-grid__notes-description sfx-d-block\"\n [text]=\"displayedNotesDescription\"\n ></symphony-paragraph>\n\n <button\n *ngIf=\"shouldShowNotesToggle\"\n type=\"button\"\n class=\"custom-detail-with-grid__notes-toggle\"\n (click)=\"toggleNotesExpansion()\"\n >\n {{ isNotesExpanded ? 'See Less' : 'See More' }}\n </button>\n </div>\n </div>\n\n <div class=\"custom-detail-with-grid__grid\">\n <ag-grid-angular\n class=\"ag-theme-alpine sfx-lib-gird-dropdown custom-detail-with-grid__nested-grid\"\n [columnDefs]=\"nestedColumnDefs\"\n [defaultColDef]=\"nestedDefaultColDef\"\n [frameworkComponents]=\"nestedFrameworkComponents\"\n [rowHeight]=\"nestedRowHeight\"\n [rowModelType]=\"nestedRowModelType\"\n [paginationPageSize]=\"nestedPageSize\"\n [cacheBlockSize]=\"nestedCacheBlockSize\"\n [maxConcurrentDatasourceRequests]=\"1\"\n [serverSideSortingAlwaysResets]=\"true\"\n [rowData]=\"nestedRowData\"\n [suppressRowClickSelection]=\"nestedSuppressRowClickSelection\"\n [suppressContextMenu]=\"nestedSuppressContextMenu\"\n [rowSelection]=\"nestedRowSelection\"\n (gridReady)=\"onNestedGridReady($event)\"\n ></ag-grid-angular>\n </div>\n</div>\n", styles: ["symphony-custom-detail-with-grid{display:block;height:100%;width:100%}symphony-custom-detail-with-grid .custom-detail-with-grid{display:flex;flex-direction:column;height:100%;width:100%;padding:20px}symphony-custom-detail-with-grid .custom-detail-with-grid__header{display:flex;flex-direction:column}symphony-custom-detail-with-grid .custom-detail-with-grid__header-top{align-items:center;display:flex;justify-content:space-between}symphony-custom-detail-with-grid .custom-detail-with-grid__notes{background-color:#f0f4ff;border:1px solid #d1e0ff;border-radius:8px;padding:16px}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-title{color:#324158}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-description{white-space:normal}symphony-custom-detail-with-grid .custom-detail-with-grid__notes-toggle{background:none;border:0;color:#0091fb;cursor:pointer;display:block;line-height:20px;margin-top:8px;padding:0;text-align:left;font-size:13px}symphony-custom-detail-with-grid .custom-detail-with-grid__grid{display:block;flex:1;min-height:180px;overflow:hidden;width:100%;border-radius:10px}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid{display:block;height:100%;width:100%;background:#fff}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-cell,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid.ag-theme-alpine .ag-header-cell{padding-left:5px!important}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .more-options.open .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group.open button.dropdown-toggle.btn,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options.open .btn-group button.dropdown-toggle.btn:hover,symphony-custom-detail-with-grid .custom-detail-with-grid__nested-grid .ag-row.ag-row-hover .more-options .btn-group button.dropdown-toggle.btn:hover{background:#f1f2f5!important;color:#334860}\n"] }]
|
|
170
224
|
}], propDecorators: { onWindowResize: [{
|
|
171
225
|
type: HostListener,
|
|
172
226
|
args: ['window:resize']
|
|
173
227
|
}] } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRldGFpbC13aXRoLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9hdG9tcy9ncmlkL2ZyYW1ld29yay9jdXN0b20tZGV0YWlsLXdpdGgtZ3JpZC9jdXN0b20tZGV0YWlsLXdpdGgtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2F0b21zL2dyaWQvZnJhbWV3b3JrL2N1c3RvbS1kZXRhaWwtd2l0aC1ncmlkL2N1c3RvbS1kZXRhaWwtd2l0aC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUzNFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNFQUFzRSxDQUFDOzs7Ozs7QUE0QnpILE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPbUIsK0JBQTBCLEdBQUcsR0FBRyxDQUFDO1FBQzFDLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUV2Qyx5QkFBb0IsR0FBK0IsRUFBRSxDQUFDO1FBRXRELFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QixlQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFDdEMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLHdCQUFtQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUN0RCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQiw4QkFBeUIsR0FBd0I7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RSxrQ0FBa0MsaUJBRzdCLGlCQUFpQixDQUFDLElBQUk7OEJBbUZyQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sRGVmLFxuICBHcmlkQXBpLFxuICBHcmlkUmVhZHlFdmVudCxcbiAgSUNlbGxSZW5kZXJlcixcbiAgSUNlbGxSZW5kZXJlclBhcmFtc1xufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vZXZlbnQtc2V0dGluZ3MtbW9yZS1vcHRpb25zL2V2ZW50LXNldHRpbmdzLW1vcmUtb3B0aW9ucy5tb2RlbCc7XG5pbXBvcnQgeyBFdmVudFNldHRpbmdzTW9yZU9wdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi9ldmVudC1zZXR0aW5ncy1tb3JlLW9wdGlvbnMvZXZlbnQtc2V0dGluZ3MtbW9yZS1vcHRpb25zLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRGV0YWlsV2l0aEdyaWRQYXJhbXMge1xuICB0aXRsZT86IHN0cmluZztcbiAgbm90ZXNUaXRsZT86IHN0cmluZztcbiAgbm90ZXNEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbm90ZXNDaGFyYWN0ZXJMaW1pdD86IG51bWJlcjtcbiAgYWN0aW9uQnV0dG9uVGV4dD86IHN0cmluZztcbiAgc2hvd0FjdGlvbkJ1dHRvbj86IGJvb2xlYW47XG4gIHNob3dOb3Rlcz86IGJvb2xlYW47XG4gIG5lc3RlZENvbHVtbkRlZnM/OiBDb2xEZWZbXTtcbiAgbmVzdGVkRGVmYXVsdENvbERlZj86IENvbERlZjtcbiAgbmVzdGVkRnJhbWV3b3JrQ29tcG9uZW50cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG5lc3RlZFJvd0hlaWdodD86IG51bWJlcjtcbiAgbmVzdGVkUm93U2VsZWN0aW9uPzogJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuICBuZXN0ZWRTdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uPzogYm9vbGVhbjtcbiAgbmVzdGVkU3VwcHJlc3NDb250ZXh0TWVudT86IGJvb2xlYW47XG4gIG5lc3RlZFN1cHByZXNzQXV0b1NpemVDb2x1bW5zPzogYm9vbGVhbjtcbn1cblxudHlwZSBDdXN0b21EZXRhaWxSZW5kZXJlclBhcmFtcyA9IElDZWxsUmVuZGVyZXJQYXJhbXMgJiBDdXN0b21EZXRhaWxXaXRoR3JpZFBhcmFtcztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3ltcGhvbnktY3VzdG9tLWRldGFpbC13aXRoLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWRldGFpbC13aXRoLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tZGV0YWlsLXdpdGgtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbURldGFpbFdpdGhHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgSUNlbGxSZW5kZXJlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE5vdGVzQ2hhcmFjdGVyTGltaXQgPSA1MDA7XG4gIHByaXZhdGUgcmVzaXplVGltZW91dElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcztcbiAgcHVibGljIGRldGFpbFJlbmRlcmVyUGFyYW1zOiBDdXN0b21EZXRhaWxXaXRoR3JpZFBhcmFtcyA9IHt9O1xuICBwdWJsaWMgbmVzdGVkR3JpZEFwaTogR3JpZEFwaTtcbiAgcHVibGljIHRpdGxlID0gJ0RldGFpbCBSZWNvcmRzJztcbiAgcHVibGljIG5vdGVzVGl0bGUgPSAnSW50ZXJuYWwgU2Vzc2lvbiBOb3Rlcyc7XG4gIHB1YmxpYyBub3Rlc0Rlc2NyaXB0aW9uID0gJyc7XG4gIHB1YmxpYyBub3Rlc0NoYXJhY3RlckxpbWl0ID0gdGhpcy5kZWZhdWx0Tm90ZXNDaGFyYWN0ZXJMaW1pdDtcbiAgcHVibGljIGlzTm90ZXNFeHBhbmRlZCA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aW9uQnV0dG9uVGV4dCA9ICdJbnZpdGUgQ29udGFjdHMnO1xuICBwdWJsaWMgc2hvd0FjdGlvbkJ1dHRvbiA9IHRydWU7XG4gIHB1YmxpYyBzaG93Tm90ZXMgPSB0cnVlO1xuICBwdWJsaWMgbmVzdGVkUm93SGVpZ2h0ID0gODA7XG4gIHB1YmxpYyBuZXN0ZWRGcmFtZXdvcmtDb21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgIG1vcmVBY3Rpb25zOiBFdmVudFNldHRpbmdzTW9yZU9wdGlvbnNDb21wb25lbnRcbiAgfTtcbiAgcHVibGljIG5lc3RlZFJvd1NlbGVjdGlvbjogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ211bHRpcGxlJztcbiAgcHVibGljIG5lc3RlZFN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSB0cnVlO1xuICBwdWJsaWMgbmVzdGVkU3VwcHJlc3NDb250ZXh0TWVudSA9IHRydWU7XG4gIHB1YmxpYyBuZXN0ZWRTdXBwcmVzc0F1dG9TaXplQ29sdW1ucyA9IGZhbHNlO1xuICBwdWJsaWMgbmVzdGVkQ29sdW1uRGVmczogQ29sRGVmW10gPSBbXTtcbiAgcHVibGljIG5lc3RlZERlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcbiAgICBmbGV4OiAxLFxuICAgIHN1cHByZXNzTWVudTogdHJ1ZSxcbiAgICBzdXBwcmVzc01vdmFibGU6IHRydWUsXG4gICAgd3JhcFRleHQ6IHRydWUsXG4gIH07XG4gIHB1YmxpYyBuZXN0ZWRSb3dEYXRhOiBhbnlbXSA9IFtdO1xuXG4gIGFnSW5pdChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zID0gcGFyYW1zIGFzIEN1c3RvbURldGFpbFdpdGhHcmlkUGFyYW1zO1xuICAgIHRoaXMudGl0bGUgPSBwYXJhbXM/LmRhdGE/LmRldGFpbFRpdGxlIHx8IHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/LnRpdGxlIHx8ICdEZXRhaWwgUmVjb3Jkcyc7XG4gICAgdGhpcy5ub3Rlc1RpdGxlID1cbiAgICAgIHBhcmFtcz8uZGF0YT8uZGV0YWlsTm90ZXNUaXRsZSB8fFxuICAgICAgdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubm90ZXNUaXRsZSB8fFxuICAgICAgJ0ludGVybmFsIFNlc3Npb24gTm90ZXMnO1xuICAgIHRoaXMubm90ZXNEZXNjcmlwdGlvbiA9XG4gICAgICBwYXJhbXM/LmRhdGE/LmRldGFpbE5vdGVzRGVzY3JpcHRpb24gfHxcbiAgICAgIHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/Lm5vdGVzRGVzY3JpcHRpb24gfHxcbiAgICAgICcnO1xuICAgIHRoaXMubm90ZXNDaGFyYWN0ZXJMaW1pdCA9XG4gICAgICB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5ub3Rlc0NoYXJhY3RlckxpbWl0IHx8IHRoaXMuZGVmYXVsdE5vdGVzQ2hhcmFjdGVyTGltaXQ7XG4gICAgdGhpcy5hY3Rpb25CdXR0b25UZXh0ID0gdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8uYWN0aW9uQnV0dG9uVGV4dCB8fCAnSW52aXRlIENvbnRhY3RzJztcbiAgICB0aGlzLnNob3dBY3Rpb25CdXR0b24gPSB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5zaG93QWN0aW9uQnV0dG9uICE9PSBmYWxzZTtcbiAgICB0aGlzLnNob3dOb3RlcyA9IHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/LnNob3dOb3RlcyAhPT0gZmFsc2U7XG4gICAgdGhpcy5pc05vdGVzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5lc3RlZFJvd0hlaWdodCA9IHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/Lm5lc3RlZFJvd0hlaWdodCB8fCA4MDtcbiAgICB0aGlzLm5lc3RlZFJvd1NlbGVjdGlvbiA9IHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/Lm5lc3RlZFJvd1NlbGVjdGlvbiB8fCAnbXVsdGlwbGUnO1xuICAgIHRoaXMubmVzdGVkU3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiA9XG4gICAgICB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRTdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uICE9PSBmYWxzZTtcbiAgICB0aGlzLm5lc3RlZFN1cHByZXNzQ29udGV4dE1lbnUgPVxuICAgICAgdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkU3VwcHJlc3NDb250ZXh0TWVudSAhPT0gZmFsc2U7XG4gICAgdGhpcy5uZXN0ZWRTdXBwcmVzc0F1dG9TaXplQ29sdW1ucyA9XG4gICAgICB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRTdXBwcmVzc0F1dG9TaXplQ29sdW1ucyA9PT0gdHJ1ZTtcbiAgICB0aGlzLm5lc3RlZEZyYW1ld29ya0NvbXBvbmVudHMgPSB0aGlzLmdldE5lc3RlZEZyYW1ld29ya0NvbXBvbmVudHMoKTtcbiAgICB0aGlzLm5lc3RlZERlZmF1bHRDb2xEZWYgPSB7XG4gICAgICBmbGV4OiAxLFxuICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxuICAgICAgc3VwcHJlc3NNb3ZhYmxlOiB0cnVlLFxuICAgICAgd3JhcFRleHQ6IHRydWUsXG4gICAgICAuLi4odGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkRGVmYXVsdENvbERlZiB8fCB7fSlcbiAgICB9O1xuICAgIHRoaXMubmVzdGVkUm93RGF0YSA9IHBhcmFtcz8uZGF0YT8uZGV0YWlsUm93RGF0YSB8fCBbXTtcbiAgICB0aGlzLm5lc3RlZENvbHVtbkRlZnMgPSB0aGlzLmdldE5lc3RlZENvbHVtbkRlZnMocGFyYW1zKTtcbiAgfVxuXG4gIHJlZnJlc2gocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKTogYm9vbGVhbiB7XG4gICAgdGhpcy5hZ0luaXQocGFyYW1zKTtcbiAgICB0aGlzLnJlc2l6ZU5lc3RlZEdyaWRDb2x1bW5zKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbk5lc3RlZEdyaWRSZWFkeShncmlkUmVhZHlFdmVudDogR3JpZFJlYWR5RXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm5lc3RlZEdyaWRBcGkgPSBncmlkUmVhZHlFdmVudC5hcGk7XG4gICAgdGhpcy5yZXNpemVOZXN0ZWRHcmlkQ29sdW1ucygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5lc3RlZFN1cHByZXNzQXV0b1NpemVDb2x1bW5zIHx8ICF0aGlzLm5lc3RlZEdyaWRBcGkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0SWQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXRJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNpemVUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5lc3RlZEdyaWRBcGk/LnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICAgIHRoaXMucmVzaXplVGltZW91dElkID0gbnVsbDtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgb25WaWV3QWxsQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd0FjdGlvbkJ1dHRvbiAmJiB0aGlzLnBhcmFtcz8uY29udGV4dD8uY29tcG9uZW50UGFyZW50Py5vbkRldGFpbEFjdGlvbkNsaWNrKSB7XG4gICAgICB0aGlzLnBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5vbkRldGFpbEFjdGlvbkNsaWNrKHRoaXMucGFyYW1zLmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIG9uTmVzdGVkTW9yZU9wdGlvbnNDbGljayhhY3Rpb246IENvbnRleHR1YWxNZW51QWN0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYXJhbXM/LmNvbnRleHQ/LmNvbXBvbmVudFBhcmVudD8ub25OZXN0ZWREZXRhaWxBY3Rpb25DbGljaykge1xuICAgICAgdGhpcy5wYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQub25OZXN0ZWREZXRhaWxBY3Rpb25DbGljayh7XG4gICAgICAgIHBhcmVudFJvdzogdGhpcy5wYXJhbXMuZGF0YSxcbiAgICAgICAgYWN0aW9uXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVOb3Rlc0V4cGFuc2lvbigpOiB2b2lkIHtcbiAgICB0aGlzLmlzTm90ZXNFeHBhbmRlZCA9ICF0aGlzLmlzTm90ZXNFeHBhbmRlZDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5ZWROb3Rlc0Rlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFNob3dOb3Rlc1RvZ2dsZSB8fCB0aGlzLmlzTm90ZXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMubm90ZXNEZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dGhpcy5ub3Rlc0Rlc2NyaXB0aW9uLnNsaWNlKDAsIHRoaXMubm90ZXNDaGFyYWN0ZXJMaW1pdCl9Li4uYDtcbiAgfVxuXG4gIGdldCBzaG91bGRTaG93Tm90ZXNUb2dnbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm5vdGVzRGVzY3JpcHRpb24/Lmxlbmd0aCB8fCAwKSA+IHRoaXMubm90ZXNDaGFyYWN0ZXJMaW1pdDtcbiAgfVxuXG4gIGdldCBzaG91bGRTaG93Tm90ZXNTZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dOb3RlcyAmJiAhIXRoaXMuZGlzcGxheWVkTm90ZXNEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmVzdGVkQ29sdW1uRGVmcyhwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiBDb2xEZWZbXSB7XG4gICAgY29uc3QgZGV0YWlsUmVuZGVyZXJQYXJhbXMgPSBwYXJhbXMgYXMgQ3VzdG9tRGV0YWlsUmVuZGVyZXJQYXJhbXM7XG4gICAgY29uc3QgY29sdW1uRGVmcyA9IHBhcmFtcz8uZGF0YT8uZGV0YWlsQ29sdW1uRGVmcyB8fCBkZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkQ29sdW1uRGVmcyB8fCBbXTtcblxuICAgIHJldHVybiBjb2x1bW5EZWZzLm1hcCgoY29sdW1uRGVmOiBDb2xEZWYpID0+IHtcbiAgICAgIGlmIChjb2x1bW5EZWY/LmNlbGxSZW5kZXJlciAhPT0gJ21vcmVBY3Rpb25zJykge1xuICAgICAgICByZXR1cm4gY29sdW1uRGVmO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb2x1bW5EZWYsXG4gICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogKGNlbGxSZW5kZXJlclBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcykgPT4gKHtcbiAgICAgICAgICBtb3JlT3B0aW9uczogY2VsbFJlbmRlcmVyUGFyYW1zPy5kYXRhPy5tb3JlT3B0aW9ucyxcbiAgICAgICAgICBpdGVtQ2xpY2s6IChhY3Rpb246IENvbnRleHR1YWxNZW51QWN0aW9uTW9kZWwpID0+IHRoaXMub25OZXN0ZWRNb3JlT3B0aW9uc0NsaWNrKGFjdGlvbilcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldE5lc3RlZEZyYW1ld29ya0NvbXBvbmVudHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vcmVBY3Rpb25zOiBFdmVudFNldHRpbmdzTW9yZU9wdGlvbnNDb21wb25lbnQsXG4gICAgICAuLi4odGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkRnJhbWV3b3JrQ29tcG9uZW50cyB8fCB7fSlcbiAgICB9O1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0SWQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXRJZCk7XG4gICAgICB0aGlzLnJlc2l6ZVRpbWVvdXRJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNpemVOZXN0ZWRHcmlkQ29sdW1ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZXN0ZWRTdXBwcmVzc0F1dG9TaXplQ29sdW1ucyB8fCAhdGhpcy5uZXN0ZWRHcmlkQXBpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzaXplVGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0SWQpO1xuICAgIH1cblxuICAgIHRoaXMucmVzaXplVGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5uZXN0ZWRHcmlkQXBpPy5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgICB0aGlzLnJlc2l6ZVRpbWVvdXRJZCA9IG51bGw7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjdXN0b20tZGV0YWlsLXdpdGgtZ3JpZFwiPlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRldGFpbC13aXRoLWdyaWRfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tZGV0YWlsLXdpdGgtZ3JpZF9faGVhZGVyLXRvcCBzZngtbWItMTBcIj5cbiAgICAgIDxoNCBjbGFzcz1cInNmeC1tLTBcIj57eyB0aXRsZSB9fTwvaDQ+XG4gICAgICA8c3ltcGhvbnktYnV0dG9uLXYyXG4gICAgICAgICpuZ0lmPVwic2hvd0FjdGlvbkJ1dHRvblwiXG4gICAgICAgIFt0ZXh0XT1cImFjdGlvbkJ1dHRvblRleHRcIlxuICAgICAgICAoY2xpY2tlZCk9XCJvblZpZXdBbGxDbGljaygpXCJcbiAgICAgID48L3N5bXBob255LWJ1dHRvbi12Mj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG91bGRTaG93Tm90ZXNTZWN0aW9uXCIgY2xhc3M9XCJjdXN0b20tZGV0YWlsLXdpdGgtZ3JpZF9fbm90ZXMgc2Z4LW1iLTE1XCI+XG4gICAgICA8c3ltcGhvbnktcGFyYWdyYXBoXG4gICAgICAgIGNsYXNzPVwiY3VzdG9tLWRldGFpbC13aXRoLWdyaWRfX25vdGVzLXRpdGxlIHNmeC1kLWJsb2NrIHNmeC1mb250LWJvbGQgc2Z4LW1iLTVcIlxuICAgICAgICBbdGV4dF09XCJub3Rlc1RpdGxlXCJcbiAgICAgID48L3N5bXBob255LXBhcmFncmFwaD5cblxuICAgICAgPHN5bXBob255LXBhcmFncmFwaFxuICAgICAgICBjbGFzcz1cImN1c3RvbS1kZXRhaWwtd2l0aC1ncmlkX19ub3Rlcy1kZXNjcmlwdGlvbiBzZngtZC1ibG9ja1wiXG4gICAgICAgIFt0ZXh0XT1cImRpc3BsYXllZE5vdGVzRGVzY3JpcHRpb25cIlxuICAgICAgPjwvc3ltcGhvbnktcGFyYWdyYXBoPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvdWxkU2hvd05vdGVzVG9nZ2xlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiY3VzdG9tLWRldGFpbC13aXRoLWdyaWRfX25vdGVzLXRvZ2dsZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVOb3Rlc0V4cGFuc2lvbigpXCJcbiAgICAgID5cbiAgICAgICAge3sgaXNOb3Rlc0V4cGFuZGVkID8gJ1NlZSBMZXNzJyA6ICdTZWUgTW9yZScgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRldGFpbC13aXRoLWdyaWRfX2dyaWRcIj5cbiAgICA8YWctZ3JpZC1hbmd1bGFyXG4gICAgICBjbGFzcz1cImFnLXRoZW1lLWFscGluZSBzZngtbGliLWdpcmQtZHJvcGRvd24gY3VzdG9tLWRldGFpbC13aXRoLWdyaWRfX25lc3RlZC1ncmlkXCJcbiAgICAgIFtjb2x1bW5EZWZzXT1cIm5lc3RlZENvbHVtbkRlZnNcIlxuICAgICAgW2RlZmF1bHRDb2xEZWZdPVwibmVzdGVkRGVmYXVsdENvbERlZlwiXG4gICAgICBbZnJhbWV3b3JrQ29tcG9uZW50c109XCJuZXN0ZWRGcmFtZXdvcmtDb21wb25lbnRzXCJcbiAgICAgIFtyb3dIZWlnaHRdPVwibmVzdGVkUm93SGVpZ2h0XCJcbiAgICAgIFtyb3dEYXRhXT1cIm5lc3RlZFJvd0RhdGFcIlxuICAgICAgW3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25dPVwibmVzdGVkU3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvblwiXG4gICAgICBbc3VwcHJlc3NDb250ZXh0TWVudV09XCJuZXN0ZWRTdXBwcmVzc0NvbnRleHRNZW51XCJcbiAgICAgIFtyb3dTZWxlY3Rpb25dPVwibmVzdGVkUm93U2VsZWN0aW9uXCJcbiAgICAgIChncmlkUmVhZHkpPVwib25OZXN0ZWRHcmlkUmVhZHkoJGV2ZW50KVwiXG4gICAgPjwvYWctZ3JpZC1hbmd1bGFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRldGFpbC13aXRoLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9hdG9tcy9ncmlkL2ZyYW1ld29yay9jdXN0b20tZGV0YWlsLXdpdGgtZ3JpZC9jdXN0b20tZGV0YWlsLXdpdGgtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2F0b21zL2dyaWQvZnJhbWV3b3JrL2N1c3RvbS1kZXRhaWwtd2l0aC1ncmlkL2N1c3RvbS1kZXRhaWwtd2l0aC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNFQUFzRSxDQUFDOzs7Ozs7QUF3Q3pILE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPbUIsK0JBQTBCLEdBQUcsR0FBRyxDQUFDO1FBQzFDLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUN0QywyQkFBc0IsR0FBa0IsSUFBSSxDQUFDO1FBRTlDLHlCQUFvQixHQUErQixFQUFFLENBQUM7UUFFdEQsVUFBSyxHQUFHLGdCQUFnQixDQUFDO1FBQ3pCLGVBQVUsR0FBRyx3QkFBd0IsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1FBQ3RELG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLGlCQUFpQixDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcs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VUFBVSxDQUFDLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzswSEF0UFUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsc0lDbEQxQyxzK0RBcURBOzJGREhhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSxrQ0FBa0MsaUJBRzdCLGlCQUFpQixDQUFDLElBQUk7OEJBNEdyQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sRGVmLFxuICBHcmlkQXBpLFxuICBHcmlkUmVhZHlFdmVudCxcbiAgSUNlbGxSZW5kZXJlcixcbiAgSUNlbGxSZW5kZXJlclBhcmFtcyxcbiAgSVNlcnZlclNpZGVEYXRhc291cmNlXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IENvbnRleHR1YWxNZW51QWN0aW9uTW9kZWwgfSBmcm9tICcuLi9ldmVudC1zZXR0aW5ncy1tb3JlLW9wdGlvbnMvZXZlbnQtc2V0dGluZ3MtbW9yZS1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IEV2ZW50U2V0dGluZ3NNb3JlT3B0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2V2ZW50LXNldHRpbmdzLW1vcmUtb3B0aW9ucy9ldmVudC1zZXR0aW5ncy1tb3JlLW9wdGlvbnMuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21EZXRhaWxXaXRoR3JpZFBhcmFtcyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBub3Rlc1RpdGxlPzogc3RyaW5nO1xuICBub3Rlc0Rlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBub3Rlc0NoYXJhY3RlckxpbWl0PzogbnVtYmVyO1xuICBhY3Rpb25CdXR0b25UZXh0Pzogc3RyaW5nO1xuICBzaG93QWN0aW9uQnV0dG9uPzogYm9vbGVhbjtcbiAgc2hvd05vdGVzPzogYm9vbGVhbjtcbiAgbmVzdGVkQ29sdW1uRGVmcz86IENvbERlZltdO1xuICBuZXN0ZWREZWZhdWx0Q29sRGVmPzogQ29sRGVmO1xuICBuZXN0ZWRGcmFtZXdvcmtDb21wb25lbnRzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbmVzdGVkUm93SGVpZ2h0PzogbnVtYmVyO1xuICBuZXN0ZWRSb3dTZWxlY3Rpb24/OiAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XG4gIG5lc3RlZFN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24/OiBib29sZWFuO1xuICBuZXN0ZWRTdXBwcmVzc0NvbnRleHRNZW51PzogYm9vbGVhbjtcbiAgbmVzdGVkU3VwcHJlc3NBdXRvU2l6ZUNvbHVtbnM/OiBib29sZWFuO1xuICBuZXN0ZWRSb3dNb2RlbFR5cGU/OiBzdHJpbmc7XG4gIG5lc3RlZERhdGFzb3VyY2U/OiBJU2VydmVyU2lkZURhdGFzb3VyY2U7XG4gIG5lc3RlZERhdGFzb3VyY2VGYWN0b3J5PzogKFxuICAgIHBhcmVudFJvdzogYW55LFxuICAgIHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtc1xuICApID0+IElTZXJ2ZXJTaWRlRGF0YXNvdXJjZTtcbiAgbmVzdGVkUGFnZVNpemU/OiBudW1iZXI7XG4gIG5lc3RlZENhY2hlQmxvY2tTaXplPzogbnVtYmVyO1xuICBvbk5lc3RlZEdyaWRSZWFkeT86IChcbiAgICBncmlkUmVhZHlFdmVudDogR3JpZFJlYWR5RXZlbnQsXG4gICAgcGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zXG4gICkgPT4gdm9pZDtcbn1cblxudHlwZSBDdXN0b21EZXRhaWxSZW5kZXJlclBhcmFtcyA9IElDZWxsUmVuZGVyZXJQYXJhbXMgJiBDdXN0b21EZXRhaWxXaXRoR3JpZFBhcmFtcztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3ltcGhvbnktY3VzdG9tLWRldGFpbC13aXRoLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWRldGFpbC13aXRoLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tZGV0YWlsLXdpdGgtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbURldGFpbFdpdGhHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgSUNlbGxSZW5kZXJlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE5vdGVzQ2hhcmFjdGVyTGltaXQgPSA1MDA7XG4gIHByaXZhdGUgcmVzaXplVGltZW91dElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBuZXN0ZWREZXRhaWxHcmlkSW5mb0lkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcztcbiAgcHVibGljIGRldGFpbFJlbmRlcmVyUGFyYW1zOiBDdXN0b21EZXRhaWxXaXRoR3JpZFBhcmFtcyA9IHt9O1xuICBwdWJsaWMgbmVzdGVkR3JpZEFwaTogR3JpZEFwaTtcbiAgcHVibGljIHRpdGxlID0gJ0RldGFpbCBSZWNvcmRzJztcbiAgcHVibGljIG5vdGVzVGl0bGUgPSAnSW50ZXJuYWwgU2Vzc2lvbiBOb3Rlcyc7XG4gIHB1YmxpYyBub3Rlc0Rlc2NyaXB0aW9uID0gJyc7XG4gIHB1YmxpYyBub3Rlc0NoYXJhY3RlckxpbWl0ID0gdGhpcy5kZWZhdWx0Tm90ZXNDaGFyYWN0ZXJMaW1pdDtcbiAgcHVibGljIGlzTm90ZXNFeHBhbmRlZCA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aW9uQnV0dG9uVGV4dCA9ICdJbnZpdGUgQ29udGFjdHMnO1xuICBwdWJsaWMgc2hvd0FjdGlvbkJ1dHRvbiA9IHRydWU7XG4gIHB1YmxpYyBzaG93Tm90ZXMgPSB0cnVlO1xuICBwdWJsaWMgbmVzdGVkUm93SGVpZ2h0ID0gODA7XG4gIHB1YmxpYyBuZXN0ZWRGcmFtZXdvcmtDb21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgIG1vcmVBY3Rpb25zOiBFdmVudFNldHRpbmdzTW9yZU9wdGlvbnNDb21wb25lbnRcbiAgfTtcbiAgcHVibGljIG5lc3RlZFJvd1NlbGVjdGlvbjogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ211bHRpcGxlJztcbiAgcHVibGljIG5lc3RlZFN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSB0cnVlO1xuICBwdWJsaWMgbmVzdGVkU3VwcHJlc3NDb250ZXh0TWVudSA9IHRydWU7XG4gIHB1YmxpYyBuZXN0ZWRTdXBwcmVzc0F1dG9TaXplQ29sdW1ucyA9IGZhbHNlO1xuICBwdWJsaWMgbmVzdGVkUm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xuICBwdWJsaWMgbmVzdGVkRGF0YXNvdXJjZTogSVNlcnZlclNpZGVEYXRhc291cmNlIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBuZXN0ZWRQYWdlU2l6ZSA9IDIwO1xuICBwdWJsaWMgbmVzdGVkQ2FjaGVCbG9ja1NpemUgPSAyMDtcbiAgcHVibGljIG5lc3RlZENvbHVtbkRlZnM6IENvbERlZltdID0gW107XG4gIHB1YmxpYyBuZXN0ZWREZWZhdWx0Q29sRGVmOiBDb2xEZWYgPSB7XG4gICAgZmxleDogMSxcbiAgICBzdXBwcmVzc01lbnU6IHRydWUsXG4gICAgc3VwcHJlc3NNb3ZhYmxlOiB0cnVlLFxuICAgIHdyYXBUZXh0OiB0cnVlLFxuICB9O1xuICBwdWJsaWMgbmVzdGVkUm93RGF0YTogYW55W10gPSBbXTtcblxuICBhZ0luaXQocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcyA9IHBhcmFtcyBhcyBDdXN0b21EZXRhaWxXaXRoR3JpZFBhcmFtcztcbiAgICB0aGlzLnRpdGxlID0gcGFyYW1zPy5kYXRhPy5kZXRhaWxUaXRsZSB8fCB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy50aXRsZSB8fCAnRGV0YWlsIFJlY29yZHMnO1xuICAgIHRoaXMubm90ZXNUaXRsZSA9XG4gICAgICBwYXJhbXM/LmRhdGE/LmRldGFpbE5vdGVzVGl0bGUgfHxcbiAgICAgIHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/Lm5vdGVzVGl0bGUgfHxcbiAgICAgICdJbnRlcm5hbCBTZXNzaW9uIE5vdGVzJztcbiAgICB0aGlzLm5vdGVzRGVzY3JpcHRpb24gPVxuICAgICAgcGFyYW1zPy5kYXRhPy5kZXRhaWxOb3Rlc0Rlc2NyaXB0aW9uIHx8XG4gICAgICB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5ub3Rlc0Rlc2NyaXB0aW9uIHx8XG4gICAgICAnJztcbiAgICB0aGlzLm5vdGVzQ2hhcmFjdGVyTGltaXQgPVxuICAgICAgdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubm90ZXNDaGFyYWN0ZXJMaW1pdCB8fCB0aGlzLmRlZmF1bHROb3Rlc0NoYXJhY3RlckxpbWl0O1xuICAgIHRoaXMuYWN0aW9uQnV0dG9uVGV4dCA9IHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/LmFjdGlvbkJ1dHRvblRleHQgfHwgJ0ludml0ZSBDb250YWN0cyc7XG4gICAgdGhpcy5zaG93QWN0aW9uQnV0dG9uID0gdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8uc2hvd0FjdGlvbkJ1dHRvbiAhPT0gZmFsc2U7XG4gICAgdGhpcy5zaG93Tm90ZXMgPSB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5zaG93Tm90ZXMgIT09IGZhbHNlO1xuICAgIHRoaXMuaXNOb3Rlc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5uZXN0ZWRSb3dIZWlnaHQgPSB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRSb3dIZWlnaHQgfHwgODA7XG4gICAgdGhpcy5uZXN0ZWRSb3dTZWxlY3Rpb24gPSB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRSb3dTZWxlY3Rpb24gfHwgJ211bHRpcGxlJztcbiAgICB0aGlzLm5lc3RlZFN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPVxuICAgICAgdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkU3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbiAhPT0gZmFsc2U7XG4gICAgdGhpcy5uZXN0ZWRTdXBwcmVzc0NvbnRleHRNZW51ID1cbiAgICAgIHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/Lm5lc3RlZFN1cHByZXNzQ29udGV4dE1lbnUgIT09IGZhbHNlO1xuICAgIHRoaXMubmVzdGVkU3VwcHJlc3NBdXRvU2l6ZUNvbHVtbnMgPVxuICAgICAgdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkU3VwcHJlc3NBdXRvU2l6ZUNvbHVtbnMgPT09IHRydWU7XG4gICAgdGhpcy5uZXN0ZWRSb3dNb2RlbFR5cGUgPSB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRSb3dNb2RlbFR5cGUgfHwgJ2NsaWVudFNpZGUnO1xuICAgIHRoaXMubmVzdGVkUGFnZVNpemUgPSB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRQYWdlU2l6ZSB8fCAyMDtcbiAgICB0aGlzLm5lc3RlZENhY2hlQmxvY2tTaXplID1cbiAgICAgIHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXM/Lm5lc3RlZENhY2hlQmxvY2tTaXplIHx8IHRoaXMubmVzdGVkUGFnZVNpemU7XG4gICAgdGhpcy5uZXN0ZWREYXRhc291cmNlID0gdGhpcy5yZXNvbHZlTmVzdGVkRGF0YXNvdXJjZShwYXJhbXMpO1xuICAgIHRoaXMubmVzdGVkRnJhbWV3b3JrQ29tcG9uZW50cyA9IHRoaXMuZ2V0TmVzdGVkRnJhbWV3b3JrQ29tcG9uZW50cygpO1xuICAgIHRoaXMubmVzdGVkRGVmYXVsdENvbERlZiA9IHtcbiAgICAgIGZsZXg6IDEsXG4gICAgICBzdXBwcmVzc01lbnU6IHRydWUsXG4gICAgICBzdXBwcmVzc01vdmFibGU6IHRydWUsXG4gICAgICB3cmFwVGV4dDogdHJ1ZSxcbiAgICAgIC4uLih0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWREZWZhdWx0Q29sRGVmIHx8IHt9KVxuICAgIH07XG4gICAgdGhpcy5uZXN0ZWRSb3dEYXRhID0gcGFyYW1zPy5kYXRhPy5kZXRhaWxSb3dEYXRhIHx8IFtdO1xuICAgIHRoaXMubmVzdGVkQ29sdW1uRGVmcyA9IHRoaXMuZ2V0TmVzdGVkQ29sdW1uRGVmcyhwYXJhbXMpO1xuICB9XG5cbiAgcmVmcmVzaChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiBib29sZWFuIHtcbiAgICB0aGlzLmFnSW5pdChwYXJhbXMpO1xuICAgIHRoaXMuYXBwbHlOZXN0ZWREYXRhc291cmNlKCk7XG4gICAgaWYgKHRoaXMubmVzdGVkUm93TW9kZWxUeXBlICE9PSAnc2VydmVyU2lkZScpIHtcbiAgICAgIHRoaXMubmVzdGVkR3JpZEFwaT8uc2V0Um93RGF0YT8uKHRoaXMubmVzdGVkUm93RGF0YSk7XG4gICAgfVxuICAgIHRoaXMucmVzaXplTmVzdGVkR3JpZENvbHVtbnMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9uTmVzdGVkR3JpZFJlYWR5KGdyaWRSZWFkeUV2ZW50OiBHcmlkUmVhZHlFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubmVzdGVkR3JpZEFwaSA9IGdyaWRSZWFkeUV2ZW50LmFwaTtcbiAgICB0aGlzLnJlZ2lzdGVyTmVzdGVkRGV0YWlsR3JpZChncmlkUmVhZHlFdmVudCk7XG4gICAgdGhpcy5hcHBseU5lc3RlZERhdGFzb3VyY2UoKTtcbiAgICBpZiAodGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ub25OZXN0ZWRHcmlkUmVhZHkpIHtcbiAgICAgIHRoaXMuZGV0YWlsUmVuZGVyZXJQYXJhbXMub25OZXN0ZWRHcmlkUmVhZHkoZ3JpZFJlYWR5RXZlbnQsIHRoaXMucGFyYW1zKTtcbiAgICB9XG4gICAgdGhpcy5yZXNpemVOZXN0ZWRHcmlkQ29sdW1ucygpO1xuICB9XG5cbiAgc2V0TmVzdGVkUm93RGF0YShyb3dEYXRhOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMubmVzdGVkUm93RGF0YSA9IHJvd0RhdGEgfHwgW107XG4gICAgdGhpcy5uZXN0ZWRHcmlkQXBpPy5zZXRSb3dEYXRhPy4odGhpcy5uZXN0ZWRSb3dEYXRhKTtcbiAgICB0aGlzLnJlc2l6ZU5lc3RlZEdyaWRDb2x1bW5zKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmVzdGVkU3VwcHJlc3NBdXRvU2l6ZUNvbHVtbnMgfHwgIXRoaXMubmVzdGVkR3JpZEFwaSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXRJZCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dElkKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc2l6ZVRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmVzdGVkR3JpZEFwaT8uc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgICAgdGhpcy5yZXNpemVUaW1lb3V0SWQgPSBudWxsO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBvblZpZXdBbGxDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG93QWN0aW9uQnV0dG9uICYmIHRoaXMucGFyYW1zPy5jb250ZXh0Py5jb21wb25lbnRQYXJlbnQ/Lm9uRGV0YWlsQWN0aW9uQ2xpY2spIHtcbiAgICAgIHRoaXMucGFyYW1zLmNvbnRleHQuY29tcG9uZW50UGFyZW50Lm9uRGV0YWlsQWN0aW9uQ2xpY2sodGhpcy5wYXJhbXMuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgb25OZXN0ZWRNb3JlT3B0aW9uc0NsaWNrKGFjdGlvbjogQ29udGV4dHVhbE1lbnVBY3Rpb25Nb2RlbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhcmFtcz8uY29udGV4dD8uY29tcG9uZW50UGFyZW50Py5vbk5lc3RlZERldGFpbEFjdGlvbkNsaWNrKSB7XG4gICAgICB0aGlzLnBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5vbk5lc3RlZERldGFpbEFjdGlvbkNsaWNrKHtcbiAgICAgICAgcGFyZW50Um93OiB0aGlzLnBhcmFtcy5kYXRhLFxuICAgICAgICBhY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZU5vdGVzRXhwYW5zaW9uKCk6IHZvaWQge1xuICAgIHRoaXMuaXNOb3Rlc0V4cGFuZGVkID0gIXRoaXMuaXNOb3Rlc0V4cGFuZGVkO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXllZE5vdGVzRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkU2hvd05vdGVzVG9nZ2xlIHx8IHRoaXMuaXNOb3Rlc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3Rlc0Rlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0aGlzLm5vdGVzRGVzY3JpcHRpb24uc2xpY2UoMCwgdGhpcy5ub3Rlc0NoYXJhY3RlckxpbWl0KX0uLi5gO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dOb3Rlc1RvZ2dsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMubm90ZXNEZXNjcmlwdGlvbj8ubGVuZ3RoIHx8IDApID4gdGhpcy5ub3Rlc0NoYXJhY3RlckxpbWl0O1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dOb3Rlc1NlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd05vdGVzICYmICEhdGhpcy5kaXNwbGF5ZWROb3Rlc0Rlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXN0ZWRDb2x1bW5EZWZzKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IENvbERlZltdIHtcbiAgICBjb25zdCBkZXRhaWxSZW5kZXJlclBhcmFtcyA9IHBhcmFtcyBhcyBDdXN0b21EZXRhaWxSZW5kZXJlclBhcmFtcztcbiAgICBjb25zdCBjb2x1bW5EZWZzID0gcGFyYW1zPy5kYXRhPy5kZXRhaWxDb2x1bW5EZWZzIHx8IGRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRDb2x1bW5EZWZzIHx8IFtdO1xuXG4gICAgcmV0dXJuIGNvbHVtbkRlZnMubWFwKChjb2x1bW5EZWY6IENvbERlZikgPT4ge1xuICAgICAgaWYgKGNvbHVtbkRlZj8uY2VsbFJlbmRlcmVyICE9PSAnbW9yZUFjdGlvbnMnKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5EZWY7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbkRlZixcbiAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiAoY2VsbFJlbmRlcmVyUGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKSA9PiAoe1xuICAgICAgICAgIG1vcmVPcHRpb25zOiBjZWxsUmVuZGVyZXJQYXJhbXM/LmRhdGE/Lm1vcmVPcHRpb25zLFxuICAgICAgICAgIGl0ZW1DbGljazogKGFjdGlvbjogQ29udGV4dHVhbE1lbnVBY3Rpb25Nb2RlbCkgPT4gdGhpcy5vbk5lc3RlZE1vcmVPcHRpb25zQ2xpY2soYWN0aW9uKVxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmVzdGVkRnJhbWV3b3JrQ29tcG9uZW50cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbW9yZUFjdGlvbnM6IEV2ZW50U2V0dGluZ3NNb3JlT3B0aW9uc0NvbXBvbmVudCxcbiAgICAgIC4uLih0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zPy5uZXN0ZWRGcmFtZXdvcmtDb21wb25lbnRzIHx8IHt9KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVOZXN0ZWREYXRhc291cmNlKFxuICAgIHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtc1xuICApOiBJU2VydmVyU2lkZURhdGFzb3VyY2UgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkRGF0YXNvdXJjZUZhY3RvcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRldGFpbFJlbmRlcmVyUGFyYW1zLm5lc3RlZERhdGFzb3VyY2VGYWN0b3J5KFxuICAgICAgICBwYXJhbXM/LmRhdGEsXG4gICAgICAgIHBhcmFtc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZXRhaWxSZW5kZXJlclBhcmFtcz8ubmVzdGVkRGF0YXNvdXJjZSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU5lc3RlZERhdGFzb3VyY2UoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5uZXN0ZWRSb3dNb2RlbFR5cGUgPT09ICdzZXJ2ZXJTaWRlJyAmJlxuICAgICAgdGhpcy5uZXN0ZWREYXRhc291cmNlICYmXG4gICAgICB0aGlzLm5lc3RlZEdyaWRBcGlcbiAgICApIHtcbiAgICAgIHRoaXMubmVzdGVkR3JpZEFwaS5zZXRTZXJ2ZXJTaWRlRGF0YXNvdXJjZSh0aGlzLm5lc3RlZERhdGFzb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJOZXN0ZWREZXRhaWxHcmlkKGdyaWRSZWFkeUV2ZW50OiBHcmlkUmVhZHlFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmVudE5vZGVJZCA9IHRoaXMucGFyYW1zPy5ub2RlPy5pZDtcbiAgICBjb25zdCBhZGREZXRhaWxHcmlkSW5mbyA9IHRoaXMucGFyYW1zPy5hcGk/LmFkZERldGFpbEdyaWRJbmZvO1xuXG4gICAgaWYgKCFwYXJlbnROb2RlSWQgfHwgIWFkZERldGFpbEdyaWRJbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5uZXN0ZWREZXRhaWxHcmlkSW5mb0lkID0gYGRldGFpbF8ke3BhcmVudE5vZGVJZH1gO1xuICAgIGFkZERldGFpbEdyaWRJbmZvLmNhbGwodGhpcy5wYXJhbXMuYXBpLCB0aGlzLm5lc3RlZERldGFpbEdyaWRJbmZvSWQsIHtcbiAgICAgIGlkOiB0aGlzLm5lc3RlZERldGFpbEdyaWRJbmZvSWQsXG4gICAgICBhcGk6IGdyaWRSZWFkeUV2ZW50LmFwaSxcbiAgICAgIGNvbHVtbkFwaTogZ3JpZFJlYWR5RXZlbnQuY29sdW1uQXBpLFxuICAgIH0pO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0SWQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXRJZCk7XG4gICAgICB0aGlzLnJlc2l6ZVRpbWVvdXRJZCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVzdGVkRGV0YWlsR3JpZEluZm9JZCAmJiB0aGlzLnBhcmFtcz8uYXBpPy5yZW1vdmVEZXRhaWxHcmlkSW5mbykge1xuICAgICAgdGhpcy5wYXJhbXMuYXBpLnJlbW92ZURldGFpbEdyaWRJbmZvKHRoaXMubmVzdGVkRGV0YWlsR3JpZEluZm9JZCk7XG4gICAgICB0aGlzLm5lc3RlZERldGFpbEdyaWRJbmZvSWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzaXplTmVzdGVkR3JpZENvbHVtbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmVzdGVkU3VwcHJlc3NBdXRvU2l6ZUNvbHVtbnMgfHwgIXRoaXMubmVzdGVkR3JpZEFwaSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXRJZCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dElkKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc2l6ZVRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmVzdGVkR3JpZEFwaT8uc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgICAgdGhpcy5yZXNpemVUaW1lb3V0SWQgPSBudWxsO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3VzdG9tLWRldGFpbC13aXRoLWdyaWRcIj5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbS1kZXRhaWwtd2l0aC1ncmlkX19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRldGFpbC13aXRoLWdyaWRfX2hlYWRlci10b3Agc2Z4LW1iLTEwXCI+XG4gICAgICA8aDQgY2xhc3M9XCJzZngtbS0wXCI+e3sgdGl0bGUgfX08L2g0PlxuICAgICAgPHN5bXBob255LWJ1dHRvbi12MlxuICAgICAgICAqbmdJZj1cInNob3dBY3Rpb25CdXR0b25cIlxuICAgICAgICBbdGV4dF09XCJhY3Rpb25CdXR0b25UZXh0XCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25WaWV3QWxsQ2xpY2soKVwiXG4gICAgICA+PC9zeW1waG9ueS1idXR0b24tdjI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvdWxkU2hvd05vdGVzU2VjdGlvblwiIGNsYXNzPVwiY3VzdG9tLWRldGFpbC13aXRoLWdyaWRfX25vdGVzIHNmeC1tYi0xNVwiPlxuICAgICAgPHN5bXBob255LXBhcmFncmFwaFxuICAgICAgICBjbGFzcz1cImN1c3RvbS1kZXRhaWwtd2l0aC1ncmlkX19ub3Rlcy10aXRsZSBzZngtZC1ibG9jayBzZngtZm9udC1ib2xkIHNmeC1tYi01XCJcbiAgICAgICAgW3RleHRdPVwibm90ZXNUaXRsZVwiXG4gICAgICA+PC9zeW1waG9ueS1wYXJhZ3JhcGg+XG5cbiAgICAgIDxzeW1waG9ueS1wYXJhZ3JhcGhcbiAgICAgICAgY2xhc3M9XCJjdXN0b20tZGV0YWlsLXdpdGgtZ3JpZF9fbm90ZXMtZGVzY3JpcHRpb24gc2Z4LWQtYmxvY2tcIlxuICAgICAgICBbdGV4dF09XCJkaXNwbGF5ZWROb3Rlc0Rlc2NyaXB0aW9uXCJcbiAgICAgID48L3N5bXBob255LXBhcmFncmFwaD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3VsZFNob3dOb3Rlc1RvZ2dsZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImN1c3RvbS1kZXRhaWwtd2l0aC1ncmlkX19ub3Rlcy10b2dnbGVcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTm90ZXNFeHBhbnNpb24oKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGlzTm90ZXNFeHBhbmRlZCA/ICdTZWUgTGVzcycgOiAnU2VlIE1vcmUnIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbS1kZXRhaWwtd2l0aC1ncmlkX19ncmlkXCI+XG4gICAgPGFnLWdyaWQtYW5ndWxhclxuICAgICAgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgc2Z4LWxpYi1naXJkLWRyb3Bkb3duIGN1c3RvbS1kZXRhaWwtd2l0aC1ncmlkX19uZXN0ZWQtZ3JpZFwiXG4gICAgICBbY29sdW1uRGVmc109XCJuZXN0ZWRDb2x1bW5EZWZzXCJcbiAgICAgIFtkZWZhdWx0Q29sRGVmXT1cIm5lc3RlZERlZmF1bHRDb2xEZWZcIlxuICAgICAgW2ZyYW1ld29ya0NvbXBvbmVudHNdPVwibmVzdGVkRnJhbWV3b3JrQ29tcG9uZW50c1wiXG4gICAgICBbcm93SGVpZ2h0XT1cIm5lc3RlZFJvd0hlaWdodFwiXG4gICAgICBbcm93TW9kZWxUeXBlXT1cIm5lc3RlZFJvd01vZGVsVHlwZVwiXG4gICAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cIm5lc3RlZFBhZ2VTaXplXCJcbiAgICAgIFtjYWNoZUJsb2NrU2l6ZV09XCJuZXN0ZWRDYWNoZUJsb2NrU2l6ZVwiXG4gICAgICBbbWF4Q29uY3VycmVudERhdGFzb3VyY2VSZXF1ZXN0c109XCIxXCJcbiAgICAgIFtzZXJ2ZXJTaWRlU29ydGluZ0Fsd2F5c1Jlc2V0c109XCJ0cnVlXCJcbiAgICAgIFtyb3dEYXRhXT1cIm5lc3RlZFJvd0RhdGFcIlxuICAgICAgW3N1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb25dPVwibmVzdGVkU3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvblwiXG4gICAgICBbc3VwcHJlc3NDb250ZXh0TWVudV09XCJuZXN0ZWRTdXBwcmVzc0NvbnRleHRNZW51XCJcbiAgICAgIFtyb3dTZWxlY3Rpb25dPVwibmVzdGVkUm93U2VsZWN0aW9uXCJcbiAgICAgIChncmlkUmVhZHkpPVwib25OZXN0ZWRHcmlkUmVhZHkoJGV2ZW50KVwiXG4gICAgPjwvYWctZ3JpZC1hbmd1bGFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -11,10 +11,10 @@ export class PillComponent {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
PillComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
-
PillComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: PillComponent, selector: "symphony-pill", inputs: { pillLabel: "pillLabel", isInverse: "isInverse", hasClose: "hasClose", tooltipLabel: "tooltipLabel" }, outputs: { removePill: "removePill" }, ngImport: i0, template: "<span *ngIf=\"tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n tooltip=\"{{tooltipLabel}}\"\n placement=\"top\"\n containerClass=\"sfx-info-tooltip pill-tooltip\"\n [adaptivePosition]=\"false\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>\n\n<span *ngIf=\"!tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>", styles: [".sfx-pill-item{font-family:
|
|
14
|
+
PillComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: PillComponent, selector: "symphony-pill", inputs: { pillLabel: "pillLabel", isInverse: "isInverse", hasClose: "hasClose", tooltipLabel: "tooltipLabel" }, outputs: { removePill: "removePill" }, ngImport: i0, template: "<span *ngIf=\"tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n tooltip=\"{{tooltipLabel}}\"\n placement=\"top\"\n containerClass=\"sfx-info-tooltip pill-tooltip\"\n [adaptivePosition]=\"false\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>\n\n<span *ngIf=\"!tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>", styles: [".sfx-pill-item{font-family:runda,sans-serif;background-color:#f1f1f1;color:#000;padding:10px 20px;border-radius:25px;text-align:center;font-weight:600;margin-right:10px;margin-top:10px;position:relative}.sfx-pill-item:hover,.sfx-pill-item.inverse-pill{background-color:#000;color:#fff}.sfx-pill-item.has-close{padding:10px 20px 10px 38px}.sfx-pill-item i{font-size:18px;position:absolute;left:14px;top:11px;transform:rotate(45deg)}.sfx-d-inline-block{display:inline-block}.sfx-cursor-pointer{cursor:pointer}.sfx-info-tooltip{min-width:100px}.sfx-info-tooltip.pill-tooltip{min-width:80px;opacity:1;top:-5px!important}.sfx-info-tooltip.pill-tooltip .tooltip-inner{border-radius:10px;box-shadow:0 0 20px rgba(0,0,0,.2);font-weight:600}.sfx-info-tooltip.pill-tooltip .tooltip-arrow.arrow{border-top-color:#fff}.sfx-info-tooltip .tooltip-inner{background-color:#fff;padding:8px 15px;border-radius:0;max-width:160px;font-size:13px;color:#000}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["containerClass", "tooltipAnimation", "tooltipFadeDuration", "isOpen", "tooltipHtml", "tooltip", "tooltipPlacement", "placement", "tooltipIsOpen", "tooltipEnable", "isDisabled", "tooltipAppendToBody", "container", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "delay", "tooltipTrigger", "triggers", "adaptivePosition"], outputs: ["tooltipChange", "tooltipStateChanged", "onShown", "onHidden"], exportAs: ["bs-tooltip"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PillComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
|
-
args: [{ selector: 'symphony-pill', encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n tooltip=\"{{tooltipLabel}}\"\n placement=\"top\"\n containerClass=\"sfx-info-tooltip pill-tooltip\"\n [adaptivePosition]=\"false\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>\n\n<span *ngIf=\"!tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>", styles: [".sfx-pill-item{font-family:
|
|
17
|
+
args: [{ selector: 'symphony-pill', encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n tooltip=\"{{tooltipLabel}}\"\n placement=\"top\"\n containerClass=\"sfx-info-tooltip pill-tooltip\"\n [adaptivePosition]=\"false\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>\n\n<span *ngIf=\"!tooltipLabel\"\n class=\"sfx-d-inline-block sfx-pill-item\"\n [ngClass]=\"{'inverse-pill': isInverse }\"\n [ngClass]=\"{'has-close': hasClose }\"\n >\n <i *ngIf=\"hasClose\" (click)=\"onRemoveClick()\"\n class=\"si-add sfx-cursor-pointer\"\n ></i>\n {{ pillLabel }}\n</span>", styles: [".sfx-pill-item{font-family:runda,sans-serif;background-color:#f1f1f1;color:#000;padding:10px 20px;border-radius:25px;text-align:center;font-weight:600;margin-right:10px;margin-top:10px;position:relative}.sfx-pill-item:hover,.sfx-pill-item.inverse-pill{background-color:#000;color:#fff}.sfx-pill-item.has-close{padding:10px 20px 10px 38px}.sfx-pill-item i{font-size:18px;position:absolute;left:14px;top:11px;transform:rotate(45deg)}.sfx-d-inline-block{display:inline-block}.sfx-cursor-pointer{cursor:pointer}.sfx-info-tooltip{min-width:100px}.sfx-info-tooltip.pill-tooltip{min-width:80px;opacity:1;top:-5px!important}.sfx-info-tooltip.pill-tooltip .tooltip-inner{border-radius:10px;box-shadow:0 0 20px rgba(0,0,0,.2);font-weight:600}.sfx-info-tooltip.pill-tooltip .tooltip-arrow.arrow{border-top-color:#fff}.sfx-info-tooltip .tooltip-inner{background-color:#fff;padding:8px 15px;border-radius:0;max-width:160px;font-size:13px;color:#000}\n"] }]
|
|
18
18
|
}], ctorParameters: function () { return []; }, propDecorators: { pillLabel: [{
|
|
19
19
|
type: Input
|
|
20
20
|
}], isInverse: [{
|
|
@@ -26,10 +26,10 @@ export class NotificationModalComponent {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
NotificationModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: NotificationModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
NotificationModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: NotificationModalComponent, selector: "symphony-notification-modal", inputs: { model: "model" }, outputs: { closeButtonClicked: "closeButtonClicked", primaryButtonClicked: "primaryButtonClicked", secondaryButtonClicked: "secondaryButtonClicked" }, ngImport: i0, template: "<div class=\"sfx sfx-modal notification-modal\">\n <section class=\"modal-body notification-modal__body sfx-p-30\">\n <symphony-icon\n class=\"notification-modal__close-button\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCloseButtonClick()\"\n ></symphony-icon>\n\n <div *ngIf=\"model?.icon && model.icon !== ''\" class=\"notification-modal__icon\">\n <symphony-icon\n [icon]=\"model.icon\"\n [size]=\"model?.iconSize || '60px'\"\n [iconColor]=\"model?.iconColor || '#16b783'\"\n ></symphony-icon>\n </div>\n\n <symphony-h3\n *ngIf=\"model?.heading\"\n class=\"notification-modal__heading\"\n [text]=\"model.heading\"\n ></symphony-h3>\n\n <symphony-paragraph *ngIf=\"model?.bodyText\" class=\"notification-modal__message\">\n <span *ngIf=\"model?.candidateCount !== undefined\" class=\"notification-modal__count\">\n {{ model.candidateCount }}\n </span>\n <span>\n {{ model.bodyText }}\n </span>\n </symphony-paragraph>\n\n <section\n *ngIf=\"model?.summaryTitle || model?.summaryItems?.length || hasCandidateCards\"\n class=\"notification-modal__summary\"\n >\n <symphony-paragraph *ngIf=\"model?.summaryTitle\" class=\"notification-modal__summary-title\">\n {{ model.summaryTitle }}\n <span\n *ngIf=\"model?.candidateCount !== undefined\"\n class=\"notification-modal__count notification-modal__count--summary\"\n >\n ({{ model.candidateCount }})\n </span>\n </symphony-paragraph>\n\n <div *ngIf=\"hasCandidateCards\" class=\"notification-modal__candidate-cards\">\n <symphony-candidate-card\n *ngFor=\"let candidateCard of model?.candidateCards\"\n [model]=\"candidateCard\"\n ></symphony-candidate-card>\n </div>\n\n <ng-container *ngIf=\"!hasCandidateCards\">\n <div *ngFor=\"let item of model?.summaryItems\" class=\"notification-modal__summary-row\">\n <symphony-paragraph class=\"notification-modal__summary-label\">{{ item.label }}</symphony-paragraph>\n <symphony-paragraph class=\"notification-modal__summary-value\">{{ item.value }}</symphony-paragraph>\n </div>\n </ng-container>\n\n <ng-content select=\"[notification-modal-body]\"></ng-content>\n </section>\n\n <div\n *ngIf=\"model?.secondaryButtonText || model?.primaryButtonText\"\n class=\"notification-modal__actions\"\n >\n <symphony-button-v2\n *ngIf=\"model?.secondaryButtonText\"\n class=\"notification-modal__button notification-modal__button--secondary\"\n [text]=\"model.secondaryButtonText\"\n [disabled]=\"model.secondaryButtonDisabled\"\n [isSecondary]=\"true\"\n (clicked)=\"onSecondaryButtonClick()\"\n ></symphony-button-v2>\n\n <symphony-button-v2\n *ngIf=\"model?.primaryButtonText\"\n class=\"notification-modal__button notification-modal__button--primary\"\n [text]=\"model.primaryButtonText\"\n [disabled]=\"model.primaryButtonDisabled\"\n (clicked)=\"onPrimaryButtonClick($event)\"\n ></symphony-button-v2>\n </div>\n </section>\n</div>\n", styles: [".notification-modal__body{padding:40px 30px;position:relative;text-align:center}.notification-modal__close-button{position:absolute;right:30px;top:30px;cursor:pointer}.notification-modal__icon{display:inline-flex;margin-bottom:10px}.notification-modal__heading{display:block;margin-bottom:10px}.notification-modal__message{display:block;margin-bottom:20px}.notification-modal__message p.body-copy-primary,.notification-modal__message p.body-copy-secondary{color:#5b6d80;font-size:16px}.notification-modal__summary{background:#f9fafb;border:1px solid #dce2ea;border-radius:10px;margin-bottom:30px;padding:30px 20px 25px;text-align:left}.notification-modal__summary-title{display:block;margin-bottom:15px}.notification-modal__summary-title p.body-copy-primary,.notification-modal__summary-title p.body-copy-secondary{font-size:18px}.notification-modal__candidate-cards{display:flex;flex-direction:column;gap:15px}.notification-modal__summary-row{display:grid;grid-gap:5px;gap:5px;grid-template-columns:150px repeat(1,minmax(220px,1fr));padding:5px 0}.notification-modal__summary-label p.body-copy-primary,.notification-modal__summary-label p.body-copy-secondary{color:#6a768a}.notification-modal__actions{display:flex;gap:15px;justify-content:center}.notification-modal__button{flex:1 1 0}.notification-modal__button button{min-width:0;width:100%}\n"], components: [{ type: i1.IconComponent, selector: "symphony-icon", inputs: ["icon", "isSecondary", "size", "iconColor"], outputs: ["clicked"] }, { type: i2.H3Component, selector: "symphony-h3", inputs: ["text", "isSecondary"] }, { type: i3.ParagraphComponent, selector: "symphony-paragraph", inputs: ["text", "isSecondary", "isFontBold", "fontSize", "fontWeight"] }, { type: i4.CandidateCardComponent, selector: "symphony-candidate-card", inputs: ["model"] }, { type: i5.ButtonV2Component, selector: "symphony-button-v2" }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
29
|
+
NotificationModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: NotificationModalComponent, selector: "symphony-notification-modal", inputs: { model: "model" }, outputs: { closeButtonClicked: "closeButtonClicked", primaryButtonClicked: "primaryButtonClicked", secondaryButtonClicked: "secondaryButtonClicked" }, ngImport: i0, template: "<div class=\"sfx sfx-modal notification-modal\">\n <section class=\"modal-body notification-modal__body sfx-p-30\">\n <symphony-icon\n class=\"notification-modal__close-button\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCloseButtonClick()\"\n ></symphony-icon>\n\n <div *ngIf=\"model?.icon && model.icon !== ''\" class=\"notification-modal__icon\">\n <symphony-icon\n [icon]=\"model.icon\"\n [size]=\"model?.iconSize || '60px'\"\n [iconColor]=\"model?.iconColor || '#16b783'\"\n ></symphony-icon>\n </div>\n\n <symphony-h3\n *ngIf=\"model?.heading\"\n class=\"notification-modal__heading\"\n [text]=\"model.heading\"\n ></symphony-h3>\n\n <symphony-paragraph *ngIf=\"model?.bodyText\" class=\"notification-modal__message\">\n <span *ngIf=\"model?.candidateCount !== undefined\" class=\"notification-modal__count\">\n {{ model.candidateCount }}\n </span>\n <span>\n {{ model.bodyText }}\n </span>\n </symphony-paragraph>\n\n <section\n *ngIf=\"model?.summaryTitle || model?.summaryItems?.length || hasCandidateCards\"\n class=\"notification-modal__summary\"\n >\n <symphony-paragraph *ngIf=\"model?.summaryTitle\" class=\"notification-modal__summary-title\">\n {{ model.summaryTitle }}\n <span\n *ngIf=\"model?.candidateCount !== undefined\"\n class=\"notification-modal__count notification-modal__count--summary\"\n >\n ({{ model.candidateCount }})\n </span>\n </symphony-paragraph>\n\n <div *ngIf=\"hasCandidateCards\" class=\"notification-modal__candidate-cards\">\n <symphony-candidate-card\n *ngFor=\"let candidateCard of model?.candidateCards\"\n [model]=\"candidateCard\"\n ></symphony-candidate-card>\n </div>\n\n <ng-container *ngIf=\"!hasCandidateCards\">\n <div *ngFor=\"let item of model?.summaryItems\" class=\"notification-modal__summary-row\">\n <symphony-paragraph class=\"notification-modal__summary-label\">{{ item.label }}</symphony-paragraph>\n <symphony-paragraph class=\"notification-modal__summary-value\">{{ item.value }}</symphony-paragraph>\n </div>\n </ng-container>\n\n <ng-content select=\"[notification-modal-body]\"></ng-content>\n </section>\n\n <div\n *ngIf=\"model?.secondaryButtonText || model?.primaryButtonText\"\n class=\"notification-modal__actions\"\n >\n <symphony-button-v2\n *ngIf=\"model?.secondaryButtonText\"\n class=\"notification-modal__button notification-modal__button--secondary\"\n [text]=\"model.secondaryButtonText\"\n [disabled]=\"model.secondaryButtonDisabled\"\n [isSecondary]=\"true\"\n (clicked)=\"onSecondaryButtonClick()\"\n ></symphony-button-v2>\n\n <symphony-button-v2\n *ngIf=\"model?.primaryButtonText\"\n class=\"notification-modal__button notification-modal__button--primary\"\n [text]=\"model.primaryButtonText\"\n [disabled]=\"model.primaryButtonDisabled\"\n (clicked)=\"onPrimaryButtonClick($event)\"\n ></symphony-button-v2>\n </div>\n </section>\n</div>\n", styles: [".notification-modal__body{padding:40px 30px;position:relative;text-align:center}.notification-modal__close-button{position:absolute;right:30px;top:30px;cursor:pointer}.notification-modal__icon{display:inline-flex;margin-bottom:10px}.notification-modal__heading{display:block;margin-bottom:10px}.notification-modal__message{display:block;margin-bottom:20px}.notification-modal__message p.body-copy-primary,.notification-modal__message p.body-copy-secondary{color:#5b6d80;font-size:16px}.notification-modal__summary{background:#f9fafb;border:1px solid #dce2ea;border-radius:10px;margin-bottom:30px;padding:30px 20px 25px;text-align:left}.notification-modal__summary-title{display:block;margin-bottom:15px}.notification-modal__summary-title p.body-copy-primary,.notification-modal__summary-title p.body-copy-secondary{font-size:18px}.notification-modal__candidate-cards{display:flex;flex-direction:column;gap:15px;max-height:320px;overflow-y:auto}.notification-modal__summary-row{display:grid;grid-gap:5px;gap:5px;grid-template-columns:150px repeat(1,minmax(220px,1fr));padding:5px 0}.notification-modal__summary-label p.body-copy-primary,.notification-modal__summary-label p.body-copy-secondary{color:#6a768a}.notification-modal__actions{display:flex;gap:15px;justify-content:center}.notification-modal__button{flex:1 1 0}.notification-modal__button button{min-width:0;width:100%}\n"], components: [{ type: i1.IconComponent, selector: "symphony-icon", inputs: ["icon", "isSecondary", "size", "iconColor"], outputs: ["clicked"] }, { type: i2.H3Component, selector: "symphony-h3", inputs: ["text", "isSecondary"] }, { type: i3.ParagraphComponent, selector: "symphony-paragraph", inputs: ["text", "isSecondary", "isFontBold", "fontSize", "fontWeight"] }, { type: i4.CandidateCardComponent, selector: "symphony-candidate-card", inputs: ["model"] }, { type: i5.ButtonV2Component, selector: "symphony-button-v2" }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
30
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: NotificationModalComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
|
-
args: [{ selector: 'symphony-notification-modal', encapsulation: ViewEncapsulation.None, template: "<div class=\"sfx sfx-modal notification-modal\">\n <section class=\"modal-body notification-modal__body sfx-p-30\">\n <symphony-icon\n class=\"notification-modal__close-button\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCloseButtonClick()\"\n ></symphony-icon>\n\n <div *ngIf=\"model?.icon && model.icon !== ''\" class=\"notification-modal__icon\">\n <symphony-icon\n [icon]=\"model.icon\"\n [size]=\"model?.iconSize || '60px'\"\n [iconColor]=\"model?.iconColor || '#16b783'\"\n ></symphony-icon>\n </div>\n\n <symphony-h3\n *ngIf=\"model?.heading\"\n class=\"notification-modal__heading\"\n [text]=\"model.heading\"\n ></symphony-h3>\n\n <symphony-paragraph *ngIf=\"model?.bodyText\" class=\"notification-modal__message\">\n <span *ngIf=\"model?.candidateCount !== undefined\" class=\"notification-modal__count\">\n {{ model.candidateCount }}\n </span>\n <span>\n {{ model.bodyText }}\n </span>\n </symphony-paragraph>\n\n <section\n *ngIf=\"model?.summaryTitle || model?.summaryItems?.length || hasCandidateCards\"\n class=\"notification-modal__summary\"\n >\n <symphony-paragraph *ngIf=\"model?.summaryTitle\" class=\"notification-modal__summary-title\">\n {{ model.summaryTitle }}\n <span\n *ngIf=\"model?.candidateCount !== undefined\"\n class=\"notification-modal__count notification-modal__count--summary\"\n >\n ({{ model.candidateCount }})\n </span>\n </symphony-paragraph>\n\n <div *ngIf=\"hasCandidateCards\" class=\"notification-modal__candidate-cards\">\n <symphony-candidate-card\n *ngFor=\"let candidateCard of model?.candidateCards\"\n [model]=\"candidateCard\"\n ></symphony-candidate-card>\n </div>\n\n <ng-container *ngIf=\"!hasCandidateCards\">\n <div *ngFor=\"let item of model?.summaryItems\" class=\"notification-modal__summary-row\">\n <symphony-paragraph class=\"notification-modal__summary-label\">{{ item.label }}</symphony-paragraph>\n <symphony-paragraph class=\"notification-modal__summary-value\">{{ item.value }}</symphony-paragraph>\n </div>\n </ng-container>\n\n <ng-content select=\"[notification-modal-body]\"></ng-content>\n </section>\n\n <div\n *ngIf=\"model?.secondaryButtonText || model?.primaryButtonText\"\n class=\"notification-modal__actions\"\n >\n <symphony-button-v2\n *ngIf=\"model?.secondaryButtonText\"\n class=\"notification-modal__button notification-modal__button--secondary\"\n [text]=\"model.secondaryButtonText\"\n [disabled]=\"model.secondaryButtonDisabled\"\n [isSecondary]=\"true\"\n (clicked)=\"onSecondaryButtonClick()\"\n ></symphony-button-v2>\n\n <symphony-button-v2\n *ngIf=\"model?.primaryButtonText\"\n class=\"notification-modal__button notification-modal__button--primary\"\n [text]=\"model.primaryButtonText\"\n [disabled]=\"model.primaryButtonDisabled\"\n (clicked)=\"onPrimaryButtonClick($event)\"\n ></symphony-button-v2>\n </div>\n </section>\n</div>\n", styles: [".notification-modal__body{padding:40px 30px;position:relative;text-align:center}.notification-modal__close-button{position:absolute;right:30px;top:30px;cursor:pointer}.notification-modal__icon{display:inline-flex;margin-bottom:10px}.notification-modal__heading{display:block;margin-bottom:10px}.notification-modal__message{display:block;margin-bottom:20px}.notification-modal__message p.body-copy-primary,.notification-modal__message p.body-copy-secondary{color:#5b6d80;font-size:16px}.notification-modal__summary{background:#f9fafb;border:1px solid #dce2ea;border-radius:10px;margin-bottom:30px;padding:30px 20px 25px;text-align:left}.notification-modal__summary-title{display:block;margin-bottom:15px}.notification-modal__summary-title p.body-copy-primary,.notification-modal__summary-title p.body-copy-secondary{font-size:18px}.notification-modal__candidate-cards{display:flex;flex-direction:column;gap:15px}.notification-modal__summary-row{display:grid;grid-gap:5px;gap:5px;grid-template-columns:150px repeat(1,minmax(220px,1fr));padding:5px 0}.notification-modal__summary-label p.body-copy-primary,.notification-modal__summary-label p.body-copy-secondary{color:#6a768a}.notification-modal__actions{display:flex;gap:15px;justify-content:center}.notification-modal__button{flex:1 1 0}.notification-modal__button button{min-width:0;width:100%}\n"] }]
|
|
32
|
+
args: [{ selector: 'symphony-notification-modal', encapsulation: ViewEncapsulation.None, template: "<div class=\"sfx sfx-modal notification-modal\">\n <section class=\"modal-body notification-modal__body sfx-p-30\">\n <symphony-icon\n class=\"notification-modal__close-button\"\n [icon]=\"'si-close-modal'\"\n (clicked)=\"onCloseButtonClick()\"\n ></symphony-icon>\n\n <div *ngIf=\"model?.icon && model.icon !== ''\" class=\"notification-modal__icon\">\n <symphony-icon\n [icon]=\"model.icon\"\n [size]=\"model?.iconSize || '60px'\"\n [iconColor]=\"model?.iconColor || '#16b783'\"\n ></symphony-icon>\n </div>\n\n <symphony-h3\n *ngIf=\"model?.heading\"\n class=\"notification-modal__heading\"\n [text]=\"model.heading\"\n ></symphony-h3>\n\n <symphony-paragraph *ngIf=\"model?.bodyText\" class=\"notification-modal__message\">\n <span *ngIf=\"model?.candidateCount !== undefined\" class=\"notification-modal__count\">\n {{ model.candidateCount }}\n </span>\n <span>\n {{ model.bodyText }}\n </span>\n </symphony-paragraph>\n\n <section\n *ngIf=\"model?.summaryTitle || model?.summaryItems?.length || hasCandidateCards\"\n class=\"notification-modal__summary\"\n >\n <symphony-paragraph *ngIf=\"model?.summaryTitle\" class=\"notification-modal__summary-title\">\n {{ model.summaryTitle }}\n <span\n *ngIf=\"model?.candidateCount !== undefined\"\n class=\"notification-modal__count notification-modal__count--summary\"\n >\n ({{ model.candidateCount }})\n </span>\n </symphony-paragraph>\n\n <div *ngIf=\"hasCandidateCards\" class=\"notification-modal__candidate-cards\">\n <symphony-candidate-card\n *ngFor=\"let candidateCard of model?.candidateCards\"\n [model]=\"candidateCard\"\n ></symphony-candidate-card>\n </div>\n\n <ng-container *ngIf=\"!hasCandidateCards\">\n <div *ngFor=\"let item of model?.summaryItems\" class=\"notification-modal__summary-row\">\n <symphony-paragraph class=\"notification-modal__summary-label\">{{ item.label }}</symphony-paragraph>\n <symphony-paragraph class=\"notification-modal__summary-value\">{{ item.value }}</symphony-paragraph>\n </div>\n </ng-container>\n\n <ng-content select=\"[notification-modal-body]\"></ng-content>\n </section>\n\n <div\n *ngIf=\"model?.secondaryButtonText || model?.primaryButtonText\"\n class=\"notification-modal__actions\"\n >\n <symphony-button-v2\n *ngIf=\"model?.secondaryButtonText\"\n class=\"notification-modal__button notification-modal__button--secondary\"\n [text]=\"model.secondaryButtonText\"\n [disabled]=\"model.secondaryButtonDisabled\"\n [isSecondary]=\"true\"\n (clicked)=\"onSecondaryButtonClick()\"\n ></symphony-button-v2>\n\n <symphony-button-v2\n *ngIf=\"model?.primaryButtonText\"\n class=\"notification-modal__button notification-modal__button--primary\"\n [text]=\"model.primaryButtonText\"\n [disabled]=\"model.primaryButtonDisabled\"\n (clicked)=\"onPrimaryButtonClick($event)\"\n ></symphony-button-v2>\n </div>\n </section>\n</div>\n", styles: [".notification-modal__body{padding:40px 30px;position:relative;text-align:center}.notification-modal__close-button{position:absolute;right:30px;top:30px;cursor:pointer}.notification-modal__icon{display:inline-flex;margin-bottom:10px}.notification-modal__heading{display:block;margin-bottom:10px}.notification-modal__message{display:block;margin-bottom:20px}.notification-modal__message p.body-copy-primary,.notification-modal__message p.body-copy-secondary{color:#5b6d80;font-size:16px}.notification-modal__summary{background:#f9fafb;border:1px solid #dce2ea;border-radius:10px;margin-bottom:30px;padding:30px 20px 25px;text-align:left}.notification-modal__summary-title{display:block;margin-bottom:15px}.notification-modal__summary-title p.body-copy-primary,.notification-modal__summary-title p.body-copy-secondary{font-size:18px}.notification-modal__candidate-cards{display:flex;flex-direction:column;gap:15px;max-height:320px;overflow-y:auto}.notification-modal__summary-row{display:grid;grid-gap:5px;gap:5px;grid-template-columns:150px repeat(1,minmax(220px,1fr));padding:5px 0}.notification-modal__summary-label p.body-copy-primary,.notification-modal__summary-label p.body-copy-secondary{color:#6a768a}.notification-modal__actions{display:flex;gap:15px;justify-content:center}.notification-modal__button{flex:1 1 0}.notification-modal__button button{min-width:0;width:100%}\n"] }]
|
|
33
33
|
}], propDecorators: { model: [{
|
|
34
34
|
type: Input
|
|
35
35
|
}], closeButtonClicked: [{
|
package/esm2020/projects/component-library/lib/atoms/contextual-menu/contextual-menu.component.mjs
CHANGED
|
@@ -59,10 +59,10 @@ export class ContextualMenuComponent {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
ContextualMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ContextualMenuComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
-
ContextualMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: ContextualMenuComponent, selector: "symphony-contextual-menu", inputs: { model: "model" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.open": "this.isDropdownOpen" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"], directives: [{ type: i1.BsDropdownDirective, selector: "[bsDropdown],[dropdown]", inputs: ["autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen", "placement", "triggers", "container", "dropup"], outputs: ["onShown", "onHidden", "isOpenChange"], exportAs: ["bs-dropdown"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { type: i1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "trimId": i3.TrimIdPipe } });
|
|
62
|
+
ContextualMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: ContextualMenuComponent, selector: "symphony-contextual-menu", inputs: { model: "model" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.open": "this.isDropdownOpen" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px;padding-top:10px!important;padding-bottom:10px!important}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"], directives: [{ type: i1.BsDropdownDirective, selector: "[bsDropdown],[dropdown]", inputs: ["autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen", "placement", "triggers", "container", "dropup"], outputs: ["onShown", "onHidden", "isOpenChange"], exportAs: ["bs-dropdown"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { type: i1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "trimId": i3.TrimIdPipe } });
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ContextualMenuComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
65
|
-
args: [{ selector: 'symphony-contextual-menu', template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"] }]
|
|
65
|
+
args: [{ selector: 'symphony-contextual-menu', template: "<div\n class=\"btn-group\"\n [ngClass]=\"{ 'is-inverse': model.isInverse }\"\n dropdown\n #dropdown=\"bs-dropdown\"\n [container]=\"dropdownContainer\"\n (isOpenChange)=\"onDropdownOpenChange($event)\"\n>\n <button\n id=\"button-basic\"\n dropdownToggle\n type=\"button\"\n class=\"btn dropdown-toggle\"\n [ngClass]=\"{\n 'has-border': model.hasBorder\n }\"\n aria-controls=\"dropdown-basic\"\n aria-label=\"more-actions-menu\"\n >\n <i class=\"si-more-options\"></i>\n </button>\n <ul\n id=\"dropdown-basic\"\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{\n 'contextual-menu__dropdown-menu': model.appendToBody\n }\"\n role=\"menu\"\n aria-labelledby=\"button-basic\"\n >\n <li role=\"menuitem\" *ngFor=\"let item of model.items\">\n <a\n class=\"dropdown-item\"\n href=\"#\" id=\"dropdown-item-{{item | trimId}}\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n >{{ item }}</a\n >\n </li>\n </ul>\n</div>\n", styles: [".btn-group .has-border{border-radius:50%;border:2px solid #000;height:40px;width:40px;padding:9px 0;cursor:pointer;text-align:center}.btn-group button.dropdown-toggle.btn{display:flex;align-items:center;justify-content:center;background:#ffffff;padding:0;font-size:18px;line-height:26px;box-shadow:none;width:40px;height:40px;min-height:40px;border-radius:50%!important;color:#000}.btn-group button.dropdown-toggle.btn:hover{background:#000000;color:#fff!important}.btn-group button.dropdown-toggle.btn .si-more-options{font-size:18px}.btn-group .dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit}.btn-group .dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.btn-group .dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.btn-group .dropdown-menu li a.not-allowed{cursor:not-allowed}.btn-group .dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn{background:#000;color:#fff}.btn-group.is-inverse button.dropdown-toggle.btn:hover{background:#fff;color:#000!important}.contextual-menu__dropdown-menu{min-width:240px;margin-top:10px;border:none;border-radius:10px;padding-top:20px;padding-bottom:20px;right:-10px;left:auto;box-shadow:0 0 30px rgba(0,0,0,.2);max-height:none;overflow:inherit;right:-30px;padding-top:10px!important;padding-bottom:10px!important}.contextual-menu__dropdown-menu li a.dropdown-item{padding:0 20px;line-height:40px;color:#000;font-weight:500}.contextual-menu__dropdown-menu li a.dropdown-item:hover{background:#E4E7EF;color:#000}.contextual-menu__dropdown-menu li a.not-allowed{cursor:not-allowed}.contextual-menu__dropdown-menu:before{content:\"\\e252\";font-family:Glyphicons Halflings!important;font-size:14px;transform:rotate(180deg);display:inline-block;position:absolute;top:-13px;right:23px;color:#fff}.btn-group.open button.dropdown-toggle.btn{background:#000000;color:#fff}\n"] }]
|
|
66
66
|
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
67
67
|
type: Inject,
|
|
68
68
|
args: [DOCUMENT]
|