@gravitee/ui-policy-studio-angular 7.3.0 → 7.4.0-apim-1550-save-output-0e51cd9
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/components/flow-details/gio-ps-flow-details.component.mjs +45 -8
- package/esm2020/lib/components/flow-form-dialog/gio-ps-flow-form-dialog.component.mjs +87 -0
- package/esm2020/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +53 -14
- package/esm2020/lib/gio-policy-studio.component.mjs +54 -5
- package/esm2020/lib/gio-policy-studio.module.mjs +49 -7
- package/esm2020/lib/models/SaveOutput.mjs +2 -0
- package/esm2020/lib/models/index.mjs +3 -2
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs +279 -51
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs +286 -49
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +10 -1
- package/lib/components/flow-form-dialog/gio-ps-flow-form-dialog.component.d.ts +20 -0
- package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +8 -2
- package/lib/gio-policy-studio.component.d.ts +10 -3
- package/lib/gio-policy-studio.module.d.ts +11 -5
- package/lib/models/SaveOutput.d.ts +6 -0
- package/lib/models/index.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Component, Inject, EventEmitter, Input, Output, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/material/button';
|
|
4
4
|
import { MatButtonModule } from '@angular/material/button';
|
|
5
5
|
import { GioIconsModule } from '@gravitee/ui-particles-angular';
|
|
6
|
-
import * as
|
|
6
|
+
import * as i5$1 from '@angular/common';
|
|
7
7
|
import { CommonModule } from '@angular/common';
|
|
8
|
-
import * as
|
|
8
|
+
import * as i4$1 from '@angular/material/tooltip';
|
|
9
9
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
10
|
+
import * as i1 from '@angular/material/dialog';
|
|
11
|
+
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
12
|
+
import * as i4 from '@angular/material/form-field';
|
|
13
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
14
|
+
import * as i9 from '@angular/material/input';
|
|
15
|
+
import { MatInputModule } from '@angular/material/input';
|
|
16
|
+
import * as i5 from '@angular/material/select';
|
|
17
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
18
|
+
import * as i8 from '@angular/forms';
|
|
19
|
+
import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
20
|
+
import { cloneDeep, uniqueId, capitalize, flatten, omit } from 'lodash';
|
|
21
|
+
import * as i3 from '@angular/material/icon';
|
|
22
|
+
import * as i6 from '@angular/material/core';
|
|
23
|
+
import { tap } from 'rxjs/operators';
|
|
12
24
|
|
|
13
25
|
/*
|
|
14
26
|
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
@@ -58,6 +70,136 @@ import * as i1 from '@angular/material/icon';
|
|
|
58
70
|
* limitations under the License.
|
|
59
71
|
*/
|
|
60
72
|
|
|
73
|
+
/*
|
|
74
|
+
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
75
|
+
*
|
|
76
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
77
|
+
* you may not use this file except in compliance with the License.
|
|
78
|
+
* You may obtain a copy of the License at
|
|
79
|
+
*
|
|
80
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
81
|
+
*
|
|
82
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
83
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
84
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
85
|
+
* See the License for the specific language governing permissions and
|
|
86
|
+
* limitations under the License.
|
|
87
|
+
*/
|
|
88
|
+
class GioPolicyStudioFlowFormDialogComponent {
|
|
89
|
+
constructor(dialogRef, flowDialogData) {
|
|
90
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
91
|
+
this.dialogRef = dialogRef;
|
|
92
|
+
this.entrypoints = [];
|
|
93
|
+
this.mode = 'create';
|
|
94
|
+
this.entrypoints = (_a = flowDialogData === null || flowDialogData === void 0 ? void 0 : flowDialogData.entrypoints) !== null && _a !== void 0 ? _a : [];
|
|
95
|
+
this.existingFlow = cloneDeep(flowDialogData === null || flowDialogData === void 0 ? void 0 : flowDialogData.flow);
|
|
96
|
+
this.mode = this.existingFlow ? 'edit' : 'create';
|
|
97
|
+
const channelSelector = (_c = (_b = flowDialogData === null || flowDialogData === void 0 ? void 0 : flowDialogData.flow) === null || _b === void 0 ? void 0 : _b.selectors) === null || _c === void 0 ? void 0 : _c.find(s => s.type === 'CHANNEL');
|
|
98
|
+
const conditionSelector = (_e = (_d = flowDialogData === null || flowDialogData === void 0 ? void 0 : flowDialogData.flow) === null || _d === void 0 ? void 0 : _d.selectors) === null || _e === void 0 ? void 0 : _e.find(s => s.type === 'CONDITION');
|
|
99
|
+
this.flowFormGroup = new FormGroup({
|
|
100
|
+
name: new FormControl((_g = (_f = flowDialogData === null || flowDialogData === void 0 ? void 0 : flowDialogData.flow) === null || _f === void 0 ? void 0 : _f.name) !== null && _g !== void 0 ? _g : ''),
|
|
101
|
+
channelOperator: new FormControl((_h = channelSelector === null || channelSelector === void 0 ? void 0 : channelSelector.channelOperator) !== null && _h !== void 0 ? _h : ''),
|
|
102
|
+
channel: new FormControl((_j = channelSelector === null || channelSelector === void 0 ? void 0 : channelSelector.channel) !== null && _j !== void 0 ? _j : ''),
|
|
103
|
+
operations: new FormControl((_k = channelSelector === null || channelSelector === void 0 ? void 0 : channelSelector.operations) !== null && _k !== void 0 ? _k : []),
|
|
104
|
+
entrypoints: new FormControl((_l = channelSelector === null || channelSelector === void 0 ? void 0 : channelSelector.entrypoints) !== null && _l !== void 0 ? _l : []),
|
|
105
|
+
condition: new FormControl((_m = conditionSelector === null || conditionSelector === void 0 ? void 0 : conditionSelector.condition) !== null && _m !== void 0 ? _m : ''),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
onSubmit() {
|
|
109
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
110
|
+
const chanelSelectorToSave = {
|
|
111
|
+
type: 'CHANNEL',
|
|
112
|
+
channel: (_b = (_a = this.flowFormGroup) === null || _a === void 0 ? void 0 : _a.get('channel')) === null || _b === void 0 ? void 0 : _b.value,
|
|
113
|
+
channelOperator: (_d = (_c = this.flowFormGroup) === null || _c === void 0 ? void 0 : _c.get('channelOperator')) === null || _d === void 0 ? void 0 : _d.value,
|
|
114
|
+
operations: (_f = (_e = this.flowFormGroup) === null || _e === void 0 ? void 0 : _e.get('operations')) === null || _f === void 0 ? void 0 : _f.value,
|
|
115
|
+
entrypoints: (_h = (_g = this.flowFormGroup) === null || _g === void 0 ? void 0 : _g.get('entrypoints')) === null || _h === void 0 ? void 0 : _h.value,
|
|
116
|
+
};
|
|
117
|
+
const conditionValue = (_k = (_j = this.flowFormGroup) === null || _j === void 0 ? void 0 : _j.get('condition')) === null || _k === void 0 ? void 0 : _k.value;
|
|
118
|
+
const conditionSelectorToSave = conditionValue
|
|
119
|
+
? {
|
|
120
|
+
type: 'CONDITION',
|
|
121
|
+
condition: conditionValue,
|
|
122
|
+
}
|
|
123
|
+
: undefined;
|
|
124
|
+
const flowToSave = Object.assign(Object.assign({
|
|
125
|
+
// New id for new flow
|
|
126
|
+
_id: uniqueId('flow_') }, this.existingFlow), { name: (_m = (_l = this.flowFormGroup) === null || _l === void 0 ? void 0 : _l.get('name')) === null || _m === void 0 ? void 0 : _m.value, selectors: conditionSelectorToSave ? [chanelSelectorToSave, conditionSelectorToSave] : [chanelSelectorToSave], enabled: true });
|
|
127
|
+
this.dialogRef.close(Object.assign({}, flowToSave));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
GioPolicyStudioFlowFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
+
GioPolicyStudioFlowFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowFormDialogComponent, selector: "gio-ps-flow-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint\">{{ entrypoint }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowFormDialogComponent, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{ selector: 'gio-ps-flow-form-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint\">{{ entrypoint }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
135
|
+
}], ctorParameters: function () {
|
|
136
|
+
return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
137
|
+
type: Inject,
|
|
138
|
+
args: [MAT_DIALOG_DATA]
|
|
139
|
+
}] }];
|
|
140
|
+
} });
|
|
141
|
+
|
|
142
|
+
/*
|
|
143
|
+
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
144
|
+
*
|
|
145
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
146
|
+
* you may not use this file except in compliance with the License.
|
|
147
|
+
* You may obtain a copy of the License at
|
|
148
|
+
*
|
|
149
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
150
|
+
*
|
|
151
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
152
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
153
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
154
|
+
* See the License for the specific language governing permissions and
|
|
155
|
+
* limitations under the License.
|
|
156
|
+
*/
|
|
157
|
+
class GioPolicyStudioDetailsComponent {
|
|
158
|
+
constructor(matDialog) {
|
|
159
|
+
this.matDialog = matDialog;
|
|
160
|
+
this.flow = undefined;
|
|
161
|
+
this.entrypoints = [];
|
|
162
|
+
this.flowChange = new EventEmitter();
|
|
163
|
+
this.deleteFlow = new EventEmitter();
|
|
164
|
+
}
|
|
165
|
+
onEditFlow() {
|
|
166
|
+
this.matDialog
|
|
167
|
+
.open(GioPolicyStudioFlowFormDialogComponent, {
|
|
168
|
+
data: {
|
|
169
|
+
flow: this.flow,
|
|
170
|
+
entrypoints: this.entrypoints,
|
|
171
|
+
},
|
|
172
|
+
role: 'alertdialog',
|
|
173
|
+
id: 'gioPsFlowFormDialog',
|
|
174
|
+
})
|
|
175
|
+
.afterClosed()
|
|
176
|
+
.pipe(tap(createdOrEdited => {
|
|
177
|
+
if (!createdOrEdited) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
this.flowChange.emit(createdOrEdited);
|
|
181
|
+
}))
|
|
182
|
+
.subscribe();
|
|
183
|
+
}
|
|
184
|
+
onDeleteFlow() {
|
|
185
|
+
this.deleteFlow.emit(this.flow);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
GioPolicyStudioDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
189
|
+
GioPolicyStudioDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { flow: "flow", entrypoints: "entrypoints" }, outputs: { flowChange: "flowChange", deleteFlow: "deleteFlow" }, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n\n <div class=\"content\">\n \uD83D\uDEA7 Work in progress \uD83D\uDEA7 <br />\n {{ flow | json }}\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [".emptyFlows{display:flex;width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;margin-bottom:16px}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "json": i5$1.JsonPipe } });
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{ selector: 'gio-ps-flow-details', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n\n <div class=\"content\">\n \uD83D\uDEA7 Work in progress \uD83D\uDEA7 <br />\n {{ flow | json }}\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [".emptyFlows{display:flex;width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;margin-bottom:16px}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}\n"] }]
|
|
193
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { flow: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], entrypoints: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], flowChange: [{
|
|
198
|
+
type: Output
|
|
199
|
+
}], deleteFlow: [{
|
|
200
|
+
type: Output
|
|
201
|
+
}] } });
|
|
202
|
+
|
|
61
203
|
/*
|
|
62
204
|
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
63
205
|
*
|
|
@@ -74,15 +216,18 @@ import * as i1 from '@angular/material/icon';
|
|
|
74
216
|
* limitations under the License.
|
|
75
217
|
*/
|
|
76
218
|
class GioPolicyStudioFlowsMenuComponent {
|
|
77
|
-
constructor() {
|
|
219
|
+
constructor(matDialog) {
|
|
220
|
+
this.matDialog = matDialog;
|
|
78
221
|
this.flowsGroups = [];
|
|
79
222
|
this.selectedFlow = undefined;
|
|
223
|
+
this.entrypoints = [];
|
|
80
224
|
this.selectedFlowChange = new EventEmitter();
|
|
81
|
-
this.
|
|
225
|
+
this.flowsGroupsChange = new EventEmitter();
|
|
226
|
+
this.flowsGroupsVMSelected = [];
|
|
82
227
|
}
|
|
83
228
|
ngOnChanges(changes) {
|
|
84
229
|
if (changes.flowsGroups || changes.selectedFlow) {
|
|
85
|
-
this.
|
|
230
|
+
this.flowsGroupsVMSelected = this.flowsGroups.map(flowGroup => {
|
|
86
231
|
return Object.assign(Object.assign({}, flowGroup), { flows: flowGroup.flows.map(flow => {
|
|
87
232
|
var _a, _b, _c, _d, _e, _f;
|
|
88
233
|
const badges = [];
|
|
@@ -93,10 +238,12 @@ class GioPolicyStudioFlowsMenuComponent {
|
|
|
93
238
|
PUBLISH: 'PUB',
|
|
94
239
|
SUBSCRIBE: 'SUB',
|
|
95
240
|
};
|
|
96
|
-
const operationBadges = (_b = channelSelector.operations)
|
|
241
|
+
const operationBadges = ((_b = channelSelector.operations) !== null && _b !== void 0 ? _b : [])
|
|
242
|
+
.map(operation => ({
|
|
97
243
|
label: operationToBadge[operation],
|
|
98
244
|
class: 'gio-badge-neutral',
|
|
99
|
-
}))
|
|
245
|
+
}))
|
|
246
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
100
247
|
operationBadges && badges.push(...operationBadges);
|
|
101
248
|
pathOrChannelLabel = `${channelSelector.channel}${channelSelector.channelOperator === 'STARTS_WITH' ? '**' : ''}`;
|
|
102
249
|
}
|
|
@@ -130,47 +277,48 @@ class GioPolicyStudioFlowsMenuComponent {
|
|
|
130
277
|
selectFlow(flow) {
|
|
131
278
|
this.selectedFlowChange.emit(flow);
|
|
132
279
|
}
|
|
280
|
+
onAddFlow(flowGroup) {
|
|
281
|
+
this.matDialog
|
|
282
|
+
.open(GioPolicyStudioFlowFormDialogComponent, {
|
|
283
|
+
data: {
|
|
284
|
+
flow: undefined,
|
|
285
|
+
entrypoints: this.entrypoints,
|
|
286
|
+
},
|
|
287
|
+
role: 'alertdialog',
|
|
288
|
+
id: 'gioPsFlowFormDialog',
|
|
289
|
+
})
|
|
290
|
+
.afterClosed()
|
|
291
|
+
.pipe(tap(createdOrEdited => {
|
|
292
|
+
if (!createdOrEdited) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const editedFlowsGroups = cloneDeep(this.flowsGroups);
|
|
296
|
+
const flowsGroupToEdit = editedFlowsGroups.find(fg => fg._id === flowGroup._id);
|
|
297
|
+
if (!flowsGroupToEdit) {
|
|
298
|
+
throw new Error(`Flow group ${flowGroup._id} not found`);
|
|
299
|
+
}
|
|
300
|
+
flowsGroupToEdit.flows.push(createdOrEdited);
|
|
301
|
+
this.flowsGroupsChange.emit(editedFlowsGroups);
|
|
302
|
+
this.selectedFlowChange.emit(createdOrEdited);
|
|
303
|
+
}))
|
|
304
|
+
.subscribe();
|
|
305
|
+
}
|
|
133
306
|
}
|
|
134
|
-
GioPolicyStudioFlowsMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowsMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
135
|
-
GioPolicyStudioFlowsMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: { flowsGroups: "flowsGroups", selectedFlow: "selectedFlow" }, outputs: { selectedFlowChange: "selectedFlowChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button mat-stroked-button mat-icon-button><mat-icon svgIcon=\"gio:settings\"></mat-icon></button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let
|
|
307
|
+
GioPolicyStudioFlowsMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowsMenuComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
308
|
+
GioPolicyStudioFlowsMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: { flowsGroups: "flowsGroups", selectedFlow: "selectedFlow", entrypoints: "entrypoints" }, outputs: { selectedFlowChange: "selectedFlowChange", flowsGroupsChange: "flowsGroupsChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button mat-stroked-button mat-icon-button><mat-icon svgIcon=\"gio:settings\"></mat-icon></button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let flowsGroup of flowsGroupsVMSelected\" class=\"list__flowsGroup\">\n <div class=\"list__flowsGroup__header\">\n <div class=\"list__flowsGroup__header__label\">\n <mat-icon *ngIf=\"flowsGroup.icon\" [svgIcon]=\"flowsGroup.icon\"></mat-icon>\n <span>{{ flowsGroup.name }}</span>\n </div>\n <div class=\"list__flowsGroup__header__addBtn\">\n <button mat-icon-button (click)=\"onAddFlow(flowsGroup)\"><mat-icon svgIcon=\"gio:plus\" matTooltip=\"New flow\"></mat-icon></button>\n </div>\n </div>\n\n <div\n *ngFor=\"let flow of flowsGroup.flows\"\n class=\"list__flowsGroup__flow\"\n [class.selected]=\"flow.selected\"\n (click)=\"selectFlow(flow)\"\n (mouseout)=\"flow.mouseOver = false\"\n (mouseover)=\"flow.mouseOver = true\"\n >\n <div *ngIf=\"flow.name\" class=\"list__flowsGroup__flow__name\" [attr.title]=\"flow.name\">\n {{ flow.name }}\n </div>\n <div class=\"list__flowsGroup__flow__infos\">\n <div class=\"list__flowsGroup__flow__infos__badges\">\n <span *ngFor=\"let badge of flow.badges\" class=\"list__flowsGroup__flow__infos__badges__badge\" [ngClass]=\"badge.class\">{{\n badge.label\n }}</span>\n </div>\n <div class=\"list__flowsGroup__flow__infos__pathOrChannelLabel\">{{ flow.pathOrChannelLabel }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;max-height:100%;flex-direction:column;padding-top:16px}.header{display:flex;align-items:center;padding:0 16px;margin-bottom:16px}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{margin-left:8px}.list{padding:0 16px;overflow-y:overlay}.list__flowsGroup{display:flex;flex-direction:column;padding-bottom:8px;gap:8px}.list__flowsGroup__header{display:flex;align-items:center;padding:8px 8px 8px 10px;border-radius:8px;background-color:#cdc5f7}.list__flowsGroup__header__label{font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;gap:8px}.list__flowsGroup__header__label>mat-icon{width:22px;height:22px;flex:0 0 auto}.list__flowsGroup__header__label>span{display:-webkit-box;overflow:hidden;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-line-clamp:2}.list__flowsGroup__header__addBtn{margin-left:8px}.list__flowsGroup__flow{display:flex;height:68px;flex-direction:column;justify-content:center;padding:7px;border:1px solid #d3d5dc;border-radius:8px;gap:8px}.list__flowsGroup__flow:hover,.list__flowsGroup__flow.selected{padding:6px;border:2px solid #876fec;cursor:pointer}.list__flowsGroup__flow__name{overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.list__flowsGroup__flow__infos{display:flex;align-items:center}.list__flowsGroup__flow__infos__badges{flex:0 0 auto}.list__flowsGroup__flow__infos__badges__badge{width:auto}.list__flowsGroup__flow__infos__pathOrChannelLabel{flex:1 1 auto}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
136
309
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowsMenuComponent, decorators: [{
|
|
137
310
|
type: Component,
|
|
138
|
-
args: [{ selector: 'gio-ps-flows-menu', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button mat-stroked-button mat-icon-button><mat-icon svgIcon=\"gio:settings\"></mat-icon></button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let
|
|
139
|
-
}], propDecorators: { flowsGroups: [{
|
|
311
|
+
args: [{ selector: 'gio-ps-flows-menu', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button mat-stroked-button mat-icon-button><mat-icon svgIcon=\"gio:settings\"></mat-icon></button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let flowsGroup of flowsGroupsVMSelected\" class=\"list__flowsGroup\">\n <div class=\"list__flowsGroup__header\">\n <div class=\"list__flowsGroup__header__label\">\n <mat-icon *ngIf=\"flowsGroup.icon\" [svgIcon]=\"flowsGroup.icon\"></mat-icon>\n <span>{{ flowsGroup.name }}</span>\n </div>\n <div class=\"list__flowsGroup__header__addBtn\">\n <button mat-icon-button (click)=\"onAddFlow(flowsGroup)\"><mat-icon svgIcon=\"gio:plus\" matTooltip=\"New flow\"></mat-icon></button>\n </div>\n </div>\n\n <div\n *ngFor=\"let flow of flowsGroup.flows\"\n class=\"list__flowsGroup__flow\"\n [class.selected]=\"flow.selected\"\n (click)=\"selectFlow(flow)\"\n (mouseout)=\"flow.mouseOver = false\"\n (mouseover)=\"flow.mouseOver = true\"\n >\n <div *ngIf=\"flow.name\" class=\"list__flowsGroup__flow__name\" [attr.title]=\"flow.name\">\n {{ flow.name }}\n </div>\n <div class=\"list__flowsGroup__flow__infos\">\n <div class=\"list__flowsGroup__flow__infos__badges\">\n <span *ngFor=\"let badge of flow.badges\" class=\"list__flowsGroup__flow__infos__badges__badge\" [ngClass]=\"badge.class\">{{\n badge.label\n }}</span>\n </div>\n <div class=\"list__flowsGroup__flow__infos__pathOrChannelLabel\">{{ flow.pathOrChannelLabel }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;max-height:100%;flex-direction:column;padding-top:16px}.header{display:flex;align-items:center;padding:0 16px;margin-bottom:16px}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{margin-left:8px}.list{padding:0 16px;overflow-y:overlay}.list__flowsGroup{display:flex;flex-direction:column;padding-bottom:8px;gap:8px}.list__flowsGroup__header{display:flex;align-items:center;padding:8px 8px 8px 10px;border-radius:8px;background-color:#cdc5f7}.list__flowsGroup__header__label{font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;gap:8px}.list__flowsGroup__header__label>mat-icon{width:22px;height:22px;flex:0 0 auto}.list__flowsGroup__header__label>span{display:-webkit-box;overflow:hidden;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-line-clamp:2}.list__flowsGroup__header__addBtn{margin-left:8px}.list__flowsGroup__flow{display:flex;height:68px;flex-direction:column;justify-content:center;padding:7px;border:1px solid #d3d5dc;border-radius:8px;gap:8px}.list__flowsGroup__flow:hover,.list__flowsGroup__flow.selected{padding:6px;border:2px solid #876fec;cursor:pointer}.list__flowsGroup__flow__name{overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.list__flowsGroup__flow__infos{display:flex;align-items:center}.list__flowsGroup__flow__infos__badges{flex:0 0 auto}.list__flowsGroup__flow__infos__badges__badge{width:auto}.list__flowsGroup__flow__infos__pathOrChannelLabel{flex:1 1 auto}\n"] }]
|
|
312
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { flowsGroups: [{
|
|
140
313
|
type: Input
|
|
141
314
|
}], selectedFlow: [{
|
|
142
315
|
type: Input
|
|
316
|
+
}], entrypoints: [{
|
|
317
|
+
type: Input
|
|
143
318
|
}], selectedFlowChange: [{
|
|
144
319
|
type: Output
|
|
145
|
-
}]
|
|
146
|
-
|
|
147
|
-
/*
|
|
148
|
-
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
149
|
-
*
|
|
150
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
151
|
-
* you may not use this file except in compliance with the License.
|
|
152
|
-
* You may obtain a copy of the License at
|
|
153
|
-
*
|
|
154
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
155
|
-
*
|
|
156
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
157
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
158
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
159
|
-
* See the License for the specific language governing permissions and
|
|
160
|
-
* limitations under the License.
|
|
161
|
-
*/
|
|
162
|
-
class GioPolicyStudioDetailsComponent {
|
|
163
|
-
constructor() {
|
|
164
|
-
this.flow = undefined;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
GioPolicyStudioDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
-
GioPolicyStudioDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { flow: "flow" }, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"mat-h4\">Flow details</div>\n </div>\n\n <div class=\"content\">\n \uD83D\uDEA7 Work in progress \uD83D\uDEA7 <br />\n {{ flow | json }}\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [".emptyFlows{display:flex;width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "json": i4.JsonPipe } });
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
|
|
170
|
-
type: Component,
|
|
171
|
-
args: [{ selector: 'gio-ps-flow-details', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"mat-h4\">Flow details</div>\n </div>\n\n <div class=\"content\">\n \uD83D\uDEA7 Work in progress \uD83D\uDEA7 <br />\n {{ flow | json }}\n </div>\n</ng-container>\n\n<ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n</ng-template>\n", styles: [".emptyFlows{display:flex;width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}\n"] }]
|
|
172
|
-
}], propDecorators: { flow: [{
|
|
173
|
-
type: Input
|
|
320
|
+
}], flowsGroupsChange: [{
|
|
321
|
+
type: Output
|
|
174
322
|
}] } });
|
|
175
323
|
|
|
176
324
|
/*
|
|
@@ -200,31 +348,59 @@ class GioPolicyStudioComponent {
|
|
|
200
348
|
this.endpointsInfo = [];
|
|
201
349
|
this.commonFlows = [];
|
|
202
350
|
this.plans = [];
|
|
351
|
+
this.save = new EventEmitter();
|
|
203
352
|
this.connectorsTooltip = '';
|
|
204
353
|
this.selectedFlow = undefined;
|
|
205
354
|
this.flowsGroups = [];
|
|
355
|
+
this.entrypointsType = [];
|
|
356
|
+
this.enableSaveButton = false;
|
|
206
357
|
}
|
|
207
358
|
ngOnChanges(changes) {
|
|
208
|
-
var _a, _b, _c, _d;
|
|
359
|
+
var _a, _b, _c, _d, _e;
|
|
209
360
|
if (changes.entrypointsInfo || changes.endpointsInfo) {
|
|
210
361
|
this.connectorsTooltip = `Entrypoints: ${((_a = this.entrypointsInfo) !== null && _a !== void 0 ? _a : []).map(e => capitalize(e.type)).join(', ')}\nEndpoints: ${((_b = this.endpointsInfo) !== null && _b !== void 0 ? _b : [])
|
|
211
362
|
.map(e => capitalize(e.type))
|
|
212
363
|
.join(', ')}`;
|
|
364
|
+
this.entrypointsType = ((_c = this.entrypointsInfo) !== null && _c !== void 0 ? _c : []).map(e => e.type);
|
|
213
365
|
}
|
|
214
366
|
if (changes.commonFlows || changes.plans) {
|
|
367
|
+
this.enableSaveButton = false;
|
|
215
368
|
this.flowsGroups = getFlowsGroups(this.commonFlows, this.plans);
|
|
216
369
|
// Select first flow by default on first load
|
|
217
|
-
if (((
|
|
370
|
+
if (((_d = changes.commonFlows) === null || _d === void 0 ? void 0 : _d.isFirstChange()) || ((_e = changes.plans) === null || _e === void 0 ? void 0 : _e.isFirstChange())) {
|
|
218
371
|
this.selectedFlow = this.flowsGroups[0].flows[0];
|
|
219
372
|
}
|
|
220
373
|
}
|
|
221
374
|
}
|
|
375
|
+
onFlowsGroupsChange(flowsGroups) {
|
|
376
|
+
this.flowsGroups = flowsGroups;
|
|
377
|
+
this.enableSaveButton = true;
|
|
378
|
+
}
|
|
379
|
+
onSelectedFlowChange(flow) {
|
|
380
|
+
this.flowsGroups = this.flowsGroups.map(flowGroup => (Object.assign(Object.assign({}, flowGroup), { flows: flowGroup.flows.map(f => (f._id === flow._id ? flow : f)) })));
|
|
381
|
+
this.selectedFlow = flow;
|
|
382
|
+
this.enableSaveButton = true;
|
|
383
|
+
}
|
|
384
|
+
onDeleteSelectedFlow(flow) {
|
|
385
|
+
var _a, _b;
|
|
386
|
+
// Define next selected flow and remove flow from flowsGroups
|
|
387
|
+
const allFLowsId = flatten(this.flowsGroups.map(flowGroup => flowGroup.flows)).map(f => f._id);
|
|
388
|
+
const flowToDeleteIndex = allFLowsId.indexOf(flow._id);
|
|
389
|
+
const nextSelectedFlow = (_a = allFLowsId[flowToDeleteIndex + 1]) !== null && _a !== void 0 ? _a : allFLowsId[flowToDeleteIndex - 1];
|
|
390
|
+
this.flowsGroups = this.flowsGroups.map(flowGroup => (Object.assign(Object.assign({}, flowGroup), { flows: flowGroup.flows.filter(f => f._id !== flow._id) })));
|
|
391
|
+
this.selectedFlow = (_b = this.flowsGroups
|
|
392
|
+
.find(flowGroup => flowGroup.flows.some(f => f._id === nextSelectedFlow))) === null || _b === void 0 ? void 0 : _b.flows.find(f => f._id === nextSelectedFlow);
|
|
393
|
+
this.enableSaveButton = true;
|
|
394
|
+
}
|
|
395
|
+
onSave() {
|
|
396
|
+
this.save.emit(getSaveOutput(this.flowsGroups));
|
|
397
|
+
}
|
|
222
398
|
}
|
|
223
399
|
GioPolicyStudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
224
|
-
GioPolicyStudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioComponent, selector: "gio-policy-studio", inputs: { apiType: "apiType", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", commonFlows: "commonFlows", plans: "plans" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n\n <div class=\"header__btn\">\n <button mat-stroked-button color=\"primary\">Save</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu
|
|
400
|
+
GioPolicyStudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioComponent, selector: "gio-policy-studio", inputs: { apiType: "apiType", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", commonFlows: "commonFlows", plans: "plans" }, outputs: { save: "save" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n\n <div class=\"header__btn\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"!enableSaveButton\" (click)=\"onSave()\">Save</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu\n [flowsGroups]=\"flowsGroups\"\n [entrypoints]=\"entrypointsType\"\n (flowsGroupsChange)=\"onFlowsGroupsChange($event)\"\n [(selectedFlow)]=\"selectedFlow\"\n ></gio-ps-flows-menu>\n </div>\n\n <div class=\"wrapper__flowDetails\">\n <gio-ps-flow-details\n [flow]=\"selectedFlow\"\n [entrypoints]=\"entrypointsType\"\n (flowChange)=\"onSelectedFlowChange($event)\"\n (deleteFlow)=\"onDeleteSelectedFlow($event)\"\n ></gio-ps-flow-details>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column;padding:8px;background-color:#fff}::ng-deep .gio-policy-studio__tooltip-line-break{white-space:pre-line}.header{display:flex;align-items:center;padding-bottom:16px}.header__apiInfo{flex:1 1 auto}.wrapper{display:flex;min-height:0;flex:1 1 auto;flex-direction:row;gap:16px}.wrapper__flowsMenu{max-width:400px;flex:0 1 400px;border:1px solid #d3d5dc;border-radius:8px}.wrapper__flowDetails{flex:1 1 auto;padding:16px;border:1px solid #d3d5dc;border-radius:8px}\n"], components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: ["flowsGroups", "selectedFlow", "entrypoints"], outputs: ["selectedFlowChange", "flowsGroupsChange"] }, { type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: ["flow", "entrypoints"], outputs: ["flowChange", "deleteFlow"] }], directives: [{ type: i4$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "titlecase": i5$1.TitleCasePipe } });
|
|
225
401
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioComponent, decorators: [{
|
|
226
402
|
type: Component,
|
|
227
|
-
args: [{ selector: 'gio-policy-studio', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n\n <div class=\"header__btn\">\n <button mat-stroked-button color=\"primary\">Save</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu
|
|
403
|
+
args: [{ selector: 'gio-policy-studio', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n\n <div class=\"header__btn\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"!enableSaveButton\" (click)=\"onSave()\">Save</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu\n [flowsGroups]=\"flowsGroups\"\n [entrypoints]=\"entrypointsType\"\n (flowsGroupsChange)=\"onFlowsGroupsChange($event)\"\n [(selectedFlow)]=\"selectedFlow\"\n ></gio-ps-flows-menu>\n </div>\n\n <div class=\"wrapper__flowDetails\">\n <gio-ps-flow-details\n [flow]=\"selectedFlow\"\n [entrypoints]=\"entrypointsType\"\n (flowChange)=\"onSelectedFlowChange($event)\"\n (deleteFlow)=\"onDeleteSelectedFlow($event)\"\n ></gio-ps-flow-details>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column;padding:8px;background-color:#fff}::ng-deep .gio-policy-studio__tooltip-line-break{white-space:pre-line}.header{display:flex;align-items:center;padding-bottom:16px}.header__apiInfo{flex:1 1 auto}.wrapper{display:flex;min-height:0;flex:1 1 auto;flex-direction:row;gap:16px}.wrapper__flowsMenu{max-width:400px;flex:0 1 400px;border:1px solid #d3d5dc;border-radius:8px}.wrapper__flowDetails{flex:1 1 auto;padding:16px;border:1px solid #d3d5dc;border-radius:8px}\n"] }]
|
|
228
404
|
}], propDecorators: { apiType: [{
|
|
229
405
|
type: Input
|
|
230
406
|
}], entrypointsInfo: [{
|
|
@@ -235,6 +411,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
235
411
|
type: Input
|
|
236
412
|
}], plans: [{
|
|
237
413
|
type: Input
|
|
414
|
+
}], save: [{
|
|
415
|
+
type: Output
|
|
238
416
|
}] } });
|
|
239
417
|
const getFlowsGroups = (commonFlows = [], plans = []) => {
|
|
240
418
|
const commFlowsGroup = {
|
|
@@ -252,6 +430,20 @@ const getFlowsGroups = (commonFlows = [], plans = []) => {
|
|
|
252
430
|
commFlowsGroup,
|
|
253
431
|
];
|
|
254
432
|
};
|
|
433
|
+
const getSaveOutput = (flowsGroups) => {
|
|
434
|
+
var _a, _b;
|
|
435
|
+
const commonFlows = ((_b = (_a = flowsGroups.find(fg => fg._id === 'flowsGroup_commonFlow')) === null || _a === void 0 ? void 0 : _a.flows) !== null && _b !== void 0 ? _b : []).map(flow => omit(flow, ['_id']));
|
|
436
|
+
const plans = flowsGroups
|
|
437
|
+
.filter(fg => fg._id !== 'flowsGroup_commonFlow')
|
|
438
|
+
.map(fg => ({
|
|
439
|
+
name: fg.name,
|
|
440
|
+
flows: fg.flows.map(flow => omit(flow, ['_id'])),
|
|
441
|
+
}));
|
|
442
|
+
return {
|
|
443
|
+
commonFlows: commonFlows,
|
|
444
|
+
plans,
|
|
445
|
+
};
|
|
446
|
+
};
|
|
255
447
|
|
|
256
448
|
/*
|
|
257
449
|
* Copyright (C) 2022 The Gravitee team (http://gravitee.io)
|
|
@@ -271,13 +463,49 @@ const getFlowsGroups = (commonFlows = [], plans = []) => {
|
|
|
271
463
|
class GioPolicyStudioModule {
|
|
272
464
|
}
|
|
273
465
|
GioPolicyStudioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
274
|
-
GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, declarations: [GioPolicyStudioComponent,
|
|
275
|
-
|
|
466
|
+
GioPolicyStudioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, declarations: [GioPolicyStudioComponent,
|
|
467
|
+
GioPolicyStudioFlowsMenuComponent,
|
|
468
|
+
GioPolicyStudioDetailsComponent,
|
|
469
|
+
GioPolicyStudioFlowFormDialogComponent], imports: [CommonModule,
|
|
470
|
+
ReactiveFormsModule,
|
|
471
|
+
MatButtonModule,
|
|
472
|
+
MatTooltipModule,
|
|
473
|
+
MatFormFieldModule,
|
|
474
|
+
MatInputModule,
|
|
475
|
+
MatSelectModule,
|
|
476
|
+
MatDialogModule,
|
|
477
|
+
GioIconsModule], exports: [GioPolicyStudioComponent] });
|
|
478
|
+
GioPolicyStudioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, imports: [[
|
|
479
|
+
CommonModule,
|
|
480
|
+
ReactiveFormsModule,
|
|
481
|
+
MatButtonModule,
|
|
482
|
+
MatTooltipModule,
|
|
483
|
+
MatFormFieldModule,
|
|
484
|
+
MatInputModule,
|
|
485
|
+
MatSelectModule,
|
|
486
|
+
MatDialogModule,
|
|
487
|
+
GioIconsModule,
|
|
488
|
+
]] });
|
|
276
489
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioModule, decorators: [{
|
|
277
490
|
type: NgModule,
|
|
278
491
|
args: [{
|
|
279
|
-
declarations: [
|
|
280
|
-
|
|
492
|
+
declarations: [
|
|
493
|
+
GioPolicyStudioComponent,
|
|
494
|
+
GioPolicyStudioFlowsMenuComponent,
|
|
495
|
+
GioPolicyStudioDetailsComponent,
|
|
496
|
+
GioPolicyStudioFlowFormDialogComponent,
|
|
497
|
+
],
|
|
498
|
+
imports: [
|
|
499
|
+
CommonModule,
|
|
500
|
+
ReactiveFormsModule,
|
|
501
|
+
MatButtonModule,
|
|
502
|
+
MatTooltipModule,
|
|
503
|
+
MatFormFieldModule,
|
|
504
|
+
MatInputModule,
|
|
505
|
+
MatSelectModule,
|
|
506
|
+
MatDialogModule,
|
|
507
|
+
GioIconsModule,
|
|
508
|
+
],
|
|
281
509
|
exports: [GioPolicyStudioComponent],
|
|
282
510
|
}]
|
|
283
511
|
}] });
|