@gravitee/ui-particles-angular 4.13.0 → 5.0.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/{esm2015/gravitee-ui-particles-angular.js → esm2020/gravitee-ui-particles-angular.mjs} +0 -0
- package/{esm2015/lib/gio-avatar/gio-avatar.component.js → esm2020/lib/gio-avatar/gio-avatar.component.mjs} +5 -9
- package/{esm2015/lib/gio-avatar/gio-avatar.module.js → esm2020/lib/gio-avatar/gio-avatar.module.mjs} +5 -6
- package/{esm2015/lib/gio-avatar/index.js → esm2020/lib/gio-avatar/index.mjs} +0 -0
- package/esm2020/lib/gio-banner/gio-banner.component.mjs +101 -0
- package/{esm2015/lib/gio-banner/gio-banner.module.js → esm2020/lib/gio-banner/gio-banner.module.mjs} +5 -12
- package/{esm2015/lib/gio-breadcrumb/gio-breadcrumb-item.directive.js → esm2020/lib/gio-breadcrumb/gio-breadcrumb-item.directive.mjs} +3 -3
- package/esm2020/lib/gio-breadcrumb/gio-breadcrumb.component.mjs +32 -0
- package/{esm2015/lib/gio-breadcrumb/gio-breadcrumb.module.js → esm2020/lib/gio-breadcrumb/gio-breadcrumb.module.mjs} +5 -6
- package/{esm2015/lib/gio-breadcrumb/index.js → esm2020/lib/gio-breadcrumb/index.mjs} +0 -0
- package/esm2020/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component.mjs +55 -0
- package/esm2020/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.harness.mjs +40 -0
- package/{esm2015/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.module.js → esm2020/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.module.mjs} +5 -6
- package/esm2020/lib/gio-confirm-dialog/gio-confirm-dialog.component.mjs +40 -0
- package/esm2020/lib/gio-confirm-dialog/gio-confirm-dialog.harness.mjs +34 -0
- package/{esm2015/lib/gio-confirm-dialog/gio-confirm-dialog.module.js → esm2020/lib/gio-confirm-dialog/gio-confirm-dialog.module.mjs} +5 -6
- package/esm2020/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.mjs +29 -0
- package/esm2020/lib/gio-form-file-picker/gio-form-file-picker-empty/gio-form-file-picker-empty.component.mjs +27 -0
- package/esm2020/lib/gio-form-file-picker/gio-form-file-picker-label/gio-form-file-picker-label.component.mjs +26 -0
- package/esm2020/lib/gio-form-file-picker/gio-form-file-picker.component.harness.mjs +95 -0
- package/esm2020/lib/gio-form-file-picker/gio-form-file-picker.component.mjs +167 -0
- package/{esm2015/lib/gio-form-file-picker/gio-form-file-picker.model.js → esm2020/lib/gio-form-file-picker/gio-form-file-picker.model.mjs} +0 -0
- package/{esm2015/lib/gio-form-file-picker/gio-form-file-picker.module.js → esm2020/lib/gio-form-file-picker/gio-form-file-picker.module.mjs} +4 -4
- package/{esm2015/lib/gio-form-file-picker/index.js → esm2020/lib/gio-form-file-picker/index.mjs} +0 -0
- package/esm2020/lib/gio-form-headers/gio-form-headers.component.mjs +233 -0
- package/esm2020/lib/gio-form-headers/gio-form-headers.harness.mjs +65 -0
- package/{esm2015/lib/gio-form-headers/gio-form-headers.module.js → esm2020/lib/gio-form-headers/gio-form-headers.module.mjs} +5 -6
- package/esm2020/lib/gio-form-tags-input/gio-form-tags-input.component.mjs +243 -0
- package/esm2020/lib/gio-form-tags-input/gio-form-tags-input.harness.mjs +67 -0
- package/{esm2015/lib/gio-form-tags-input/gio-form-tags-input.module.js → esm2020/lib/gio-form-tags-input/gio-form-tags-input.module.mjs} +5 -6
- package/{esm2015/lib/gio-icons/gio-icons.module.js → esm2020/lib/gio-icons/gio-icons.module.mjs} +5 -6
- package/esm2020/lib/gio-menu/gio-menu-footer/gio-menu-footer.component.mjs +26 -0
- package/esm2020/lib/gio-menu/gio-menu-header/gio-menu-header.component.mjs +26 -0
- package/{esm2015/lib/gio-menu/gio-menu-item/gio-menu-item.component.js → esm2020/lib/gio-menu/gio-menu-item/gio-menu-item.component.mjs} +5 -9
- package/esm2020/lib/gio-menu/gio-menu-list/gio-menu-list.component.mjs +26 -0
- package/esm2020/lib/gio-menu/gio-menu-selector/gio-menu-selector.component.mjs +53 -0
- package/esm2020/lib/gio-menu/gio-menu-selector/gio-menu-selector.harness.mjs +41 -0
- package/esm2020/lib/gio-menu/gio-menu.component.mjs +50 -0
- package/{esm2015/lib/gio-menu/gio-menu.module.js → esm2020/lib/gio-menu/gio-menu.module.mjs} +4 -4
- package/{esm2015/lib/gio-menu/gio-menu.service.js → esm2020/lib/gio-menu/gio-menu.service.mjs} +3 -3
- package/{esm2015/lib/gio-menu/index.js → esm2020/lib/gio-menu/index.mjs} +0 -0
- package/esm2020/lib/gio-save-bar/gio-save-bar.component.mjs +129 -0
- package/esm2020/lib/gio-save-bar/gio-save-bar.harness.mjs +49 -0
- package/{esm2015/lib/gio-save-bar/gio-save-bar.module.js → esm2020/lib/gio-save-bar/gio-save-bar.module.mjs} +5 -6
- package/esm2020/lib/gio-submenu/gio-submenu-group/gio-submenu-group.component.mjs +31 -0
- package/esm2020/lib/gio-submenu/gio-submenu-item/gio-submenu-item.component.mjs +42 -0
- package/{esm2015/lib/gio-submenu/gio-submenu.component.js → esm2020/lib/gio-submenu/gio-submenu.component.mjs} +9 -13
- package/{esm2015/lib/gio-submenu/gio-submenu.module.js → esm2020/lib/gio-submenu/gio-submenu.module.mjs} +4 -4
- package/{esm2015/lib/gio-submenu/index.js → esm2020/lib/gio-submenu/index.mjs} +0 -0
- package/esm2020/lib/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.mjs +35 -0
- package/esm2020/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.mjs +35 -0
- package/{esm2015/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.module.js → esm2020/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.module.mjs} +4 -4
- package/esm2020/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.component.mjs +26 -0
- package/{esm2015/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.module.js → esm2020/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.module.mjs} +4 -4
- package/esm2020/lib/gio-top-bar/gio-top-bar.component.mjs +34 -0
- package/{esm2015/lib/gio-top-bar/gio-top-bar.module.js → esm2020/lib/gio-top-bar/gio-top-bar.module.mjs} +4 -4
- package/{esm2015/lib/gio-top-bar/index.js → esm2020/lib/gio-top-bar/index.mjs} +0 -0
- package/{esm2015/lib/public-api.js → esm2020/lib/public-api.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{gravitee-ui-particles-angular.js → gravitee-ui-particles-angular.mjs} +223 -413
- package/fesm2015/gravitee-ui-particles-angular.mjs.map +1 -0
- package/fesm2020/gravitee-ui-particles-angular.mjs +2754 -0
- package/fesm2020/gravitee-ui-particles-angular.mjs.map +1 -0
- package/package.json +25 -12
- package/bundles/gravitee-ui-particles-angular.umd.js +0 -3727
- package/bundles/gravitee-ui-particles-angular.umd.js.map +0 -1
- package/esm2015/lib/gio-banner/gio-banner.component.js +0 -121
- package/esm2015/lib/gio-breadcrumb/gio-breadcrumb.component.js +0 -36
- package/esm2015/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.component.js +0 -60
- package/esm2015/lib/gio-confirm-and-validate-dialog/gio-confirm-and-validate-dialog.harness.js +0 -45
- package/esm2015/lib/gio-confirm-dialog/gio-confirm-dialog.component.js +0 -45
- package/esm2015/lib/gio-confirm-dialog/gio-confirm-dialog.harness.js +0 -39
- package/esm2015/lib/gio-form-file-picker/gio-form-file-picker-add-button/gio-form-file-picker-add-button.component.js +0 -34
- package/esm2015/lib/gio-form-file-picker/gio-form-file-picker-empty/gio-form-file-picker-empty.component.js +0 -31
- package/esm2015/lib/gio-form-file-picker/gio-form-file-picker-label/gio-form-file-picker-label.component.js +0 -31
- package/esm2015/lib/gio-form-file-picker/gio-form-file-picker.component.harness.js +0 -114
- package/esm2015/lib/gio-form-file-picker/gio-form-file-picker.component.js +0 -177
- package/esm2015/lib/gio-form-headers/gio-form-headers.component.js +0 -237
- package/esm2015/lib/gio-form-headers/gio-form-headers.harness.js +0 -76
- package/esm2015/lib/gio-form-tags-input/gio-form-tags-input.component.js +0 -255
- package/esm2015/lib/gio-form-tags-input/gio-form-tags-input.harness.js +0 -78
- package/esm2015/lib/gio-menu/gio-menu-footer/gio-menu-footer.component.js +0 -30
- package/esm2015/lib/gio-menu/gio-menu-header/gio-menu-header.component.js +0 -30
- package/esm2015/lib/gio-menu/gio-menu-list/gio-menu-list.component.js +0 -30
- package/esm2015/lib/gio-menu/gio-menu-selector/gio-menu-selector.component.js +0 -57
- package/esm2015/lib/gio-menu/gio-menu-selector/gio-menu-selector.harness.js +0 -48
- package/esm2015/lib/gio-menu/gio-menu.component.js +0 -55
- package/esm2015/lib/gio-save-bar/gio-save-bar.component.js +0 -135
- package/esm2015/lib/gio-save-bar/gio-save-bar.harness.js +0 -60
- package/esm2015/lib/gio-submenu/gio-submenu-group/gio-submenu-group.component.js +0 -35
- package/esm2015/lib/gio-submenu/gio-submenu-item/gio-submenu-item.component.js +0 -47
- package/esm2015/lib/gio-top-bar/gio-top-bar-content/gio-top-bar-content.component.js +0 -39
- package/esm2015/lib/gio-top-bar/gio-top-bar-link/gio-top-bar-link.component.js +0 -39
- package/esm2015/lib/gio-top-bar/gio-top-bar-menu/gio-top-bar-menu.component.js +0 -30
- package/esm2015/lib/gio-top-bar/gio-top-bar.component.js +0 -38
- package/fesm2015/gravitee-ui-particles-angular.js.map +0 -1
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, HostBinding } from '@angular/core';
|
|
2
|
-
import { FormArray, FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { dropRight, isEmpty } from 'lodash';
|
|
4
|
-
import { map, startWith, tap } from 'rxjs/operators';
|
|
5
|
-
import { of } from 'rxjs';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/cdk/a11y";
|
|
8
|
-
import * as i2 from "@angular/material/form-field";
|
|
9
|
-
import * as i3 from "@angular/material/autocomplete";
|
|
10
|
-
import * as i4 from "@angular/material/core";
|
|
11
|
-
import * as i5 from "@angular/material/button";
|
|
12
|
-
import * as i6 from "@angular/material/icon";
|
|
13
|
-
import * as i7 from "@angular/forms";
|
|
14
|
-
import * as i8 from "@angular/common";
|
|
15
|
-
import * as i9 from "@angular/material/input";
|
|
16
|
-
import * as i10 from "@angular/cdk/text-field";
|
|
17
|
-
const HEADER_NAMES = [
|
|
18
|
-
'Accept',
|
|
19
|
-
'Accept-Charset',
|
|
20
|
-
'Accept-Encoding',
|
|
21
|
-
'Accept-Language',
|
|
22
|
-
'Accept-Ranges',
|
|
23
|
-
'Access-Control-Allow-Credentials',
|
|
24
|
-
'Access-Control-Allow-Headers',
|
|
25
|
-
'Access-Control-Allow-Methods',
|
|
26
|
-
'Access-Control-Allow-Origin',
|
|
27
|
-
'Access-Control-Expose-Headers',
|
|
28
|
-
'Access-Control-Max-Age',
|
|
29
|
-
'Access-Control-Request-Headers',
|
|
30
|
-
'Access-Control-Request-Method',
|
|
31
|
-
'Age',
|
|
32
|
-
'Allow',
|
|
33
|
-
'Authorization',
|
|
34
|
-
'Cache-Control',
|
|
35
|
-
'Connection',
|
|
36
|
-
'Content-Disposition',
|
|
37
|
-
'Content-Encoding',
|
|
38
|
-
'Content-ID',
|
|
39
|
-
'Content-Language',
|
|
40
|
-
'Content-Length',
|
|
41
|
-
'Content-Location',
|
|
42
|
-
'Content-MD5',
|
|
43
|
-
'Content-Range',
|
|
44
|
-
'Content-Type',
|
|
45
|
-
'Cookie',
|
|
46
|
-
'Date',
|
|
47
|
-
'ETag',
|
|
48
|
-
'Expires',
|
|
49
|
-
'Expect',
|
|
50
|
-
'Forwarded',
|
|
51
|
-
'From',
|
|
52
|
-
'Host',
|
|
53
|
-
'If-Match',
|
|
54
|
-
'If-Modified-Since',
|
|
55
|
-
'If-None-Match',
|
|
56
|
-
'If-Unmodified-Since',
|
|
57
|
-
'Keep-Alive',
|
|
58
|
-
'Last-Modified',
|
|
59
|
-
'Location',
|
|
60
|
-
'Link',
|
|
61
|
-
'Max-Forwards',
|
|
62
|
-
'MIME-Version',
|
|
63
|
-
'Origin',
|
|
64
|
-
'Pragma',
|
|
65
|
-
'Proxy-Authenticate',
|
|
66
|
-
'Proxy-Authorization',
|
|
67
|
-
'Proxy-Connection',
|
|
68
|
-
'Range',
|
|
69
|
-
'Referer',
|
|
70
|
-
'Retry-After',
|
|
71
|
-
'Server',
|
|
72
|
-
'Set-Cookie',
|
|
73
|
-
'Set-Cookie2',
|
|
74
|
-
'TE',
|
|
75
|
-
'Trailer',
|
|
76
|
-
'Transfer-Encoding',
|
|
77
|
-
'Upgrade',
|
|
78
|
-
'User-Agent',
|
|
79
|
-
'Vary',
|
|
80
|
-
'Via',
|
|
81
|
-
'Warning',
|
|
82
|
-
'WWW-Authenticate',
|
|
83
|
-
'X-Forwarded-For',
|
|
84
|
-
'X-Forwarded-Proto',
|
|
85
|
-
'X-Forwarded-Server',
|
|
86
|
-
'X-Forwarded-Host',
|
|
87
|
-
'X-Forwarded-Port',
|
|
88
|
-
'X-Forwarded-Prefix',
|
|
89
|
-
];
|
|
90
|
-
export class GioFormHeadersComponent {
|
|
91
|
-
constructor(fm, elRef) {
|
|
92
|
-
this.fm = fm;
|
|
93
|
-
this.elRef = elRef;
|
|
94
|
-
this.headersFormArray = new FormArray([
|
|
95
|
-
new FormGroup({
|
|
96
|
-
key: new FormControl(''),
|
|
97
|
-
value: new FormControl(''),
|
|
98
|
-
}),
|
|
99
|
-
]);
|
|
100
|
-
this.disabled = false;
|
|
101
|
-
this.headers = [];
|
|
102
|
-
this._onChange = () => ({});
|
|
103
|
-
this._onTouched = () => ({});
|
|
104
|
-
this.filteredHeaderNames = [];
|
|
105
|
-
this.mainForm = new FormGroup({
|
|
106
|
-
headers: this.headersFormArray,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
// From ControlValueAccessor interface
|
|
110
|
-
writeValue(value) {
|
|
111
|
-
if (!value) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
this.headers = value !== null && value !== void 0 ? value : [];
|
|
115
|
-
this.initHeadersForm();
|
|
116
|
-
}
|
|
117
|
-
// From ControlValueAccessor interface
|
|
118
|
-
registerOnChange(fn) {
|
|
119
|
-
this._onChange = fn;
|
|
120
|
-
}
|
|
121
|
-
// From ControlValueAccessor interface
|
|
122
|
-
registerOnTouched(fn) {
|
|
123
|
-
this._onTouched = fn;
|
|
124
|
-
}
|
|
125
|
-
// From ControlValueAccessor interface
|
|
126
|
-
setDisabledState(isDisabled) {
|
|
127
|
-
if (isDisabled === this.disabled) {
|
|
128
|
-
// do nothing if the disabled state is not changed
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
this.disabled = isDisabled;
|
|
132
|
-
if (isDisabled) {
|
|
133
|
-
this.headersFormArray.disable({ emitEvent: false });
|
|
134
|
-
this.removeLastHeader();
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
this.headersFormArray.enable({ emitEvent: false });
|
|
138
|
-
this.addEmptyHeader();
|
|
139
|
-
}
|
|
140
|
-
ngOnInit() {
|
|
141
|
-
var _a;
|
|
142
|
-
// When user start to complete last header add new empty one a the end
|
|
143
|
-
(_a = this.headersFormArray) === null || _a === void 0 ? void 0 : _a.valueChanges.pipe(tap(headers => headers.length > 0 && this._onChange(removeLastEmptyHeader(headers))), tap((headers) => {
|
|
144
|
-
if (headers.length > 0 && (headers[headers.length - 1].key !== '' || headers[headers.length - 1].value !== '')) {
|
|
145
|
-
this.addEmptyHeader();
|
|
146
|
-
}
|
|
147
|
-
})).subscribe();
|
|
148
|
-
this.fm.monitor(this.elRef.nativeElement, true).subscribe(() => {
|
|
149
|
-
this._onTouched();
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
initHeadersForm() {
|
|
153
|
-
// Clear all previous headers
|
|
154
|
-
this.headersFormArray.clear();
|
|
155
|
-
// Populate headers array from headers
|
|
156
|
-
this.headers.forEach(({ key, value }, headerIndex) => {
|
|
157
|
-
this.headersFormArray.push(new FormGroup({
|
|
158
|
-
key: this.initKeyFormControl(key, headerIndex),
|
|
159
|
-
value: new FormControl({ value, disabled: this.disabled }),
|
|
160
|
-
}), {
|
|
161
|
-
emitEvent: false,
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
// add one empty header a the end
|
|
165
|
-
this.addEmptyHeader();
|
|
166
|
-
}
|
|
167
|
-
getFilteredHeaderNames(headerIndex, header) {
|
|
168
|
-
if (!this.filteredHeaderNames[headerIndex]) {
|
|
169
|
-
return this.filteredHeaderNames[headerIndex];
|
|
170
|
-
}
|
|
171
|
-
if (header.key != null && header.key != '') {
|
|
172
|
-
this.filteredHeaderNames[headerIndex] = of(header.key).pipe(map(value => this._filter(value)));
|
|
173
|
-
return this.filteredHeaderNames[headerIndex];
|
|
174
|
-
}
|
|
175
|
-
return of(HEADER_NAMES);
|
|
176
|
-
}
|
|
177
|
-
initKeyFormControl(key, headerIndex) {
|
|
178
|
-
const control = new FormControl({ value: key, disabled: this.disabled });
|
|
179
|
-
const filteredKeys = control.valueChanges.pipe(startWith(''), map(value => this._filter(value)));
|
|
180
|
-
this.filteredHeaderNames.splice(headerIndex, 0, filteredKeys);
|
|
181
|
-
return control;
|
|
182
|
-
}
|
|
183
|
-
onDeleteHeader(headerIndex) {
|
|
184
|
-
this._onTouched();
|
|
185
|
-
this.headersFormArray.removeAt(headerIndex);
|
|
186
|
-
}
|
|
187
|
-
addEmptyHeader() {
|
|
188
|
-
if (this.disabled) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
this.headersFormArray.push(new FormGroup({
|
|
192
|
-
key: this.initKeyFormControl('', this.headersFormArray.length),
|
|
193
|
-
value: new FormControl(''),
|
|
194
|
-
}), { emitEvent: false });
|
|
195
|
-
}
|
|
196
|
-
removeLastHeader() {
|
|
197
|
-
this.headersFormArray.removeAt(this.headersFormArray.length - 1, { emitEvent: false });
|
|
198
|
-
}
|
|
199
|
-
_filter(value) {
|
|
200
|
-
const filterValue = value.toLowerCase();
|
|
201
|
-
return HEADER_NAMES.filter(option => option.toLowerCase().includes(filterValue));
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
GioFormHeadersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: GioFormHeadersComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
205
|
-
GioFormHeadersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: GioFormHeadersComponent, selector: "gio-form-headers", host: { properties: { "class.disabled": "this.disabled" } }, providers: [
|
|
206
|
-
{
|
|
207
|
-
provide: NG_VALUE_ACCESSOR,
|
|
208
|
-
useExisting: forwardRef(() => GioFormHeadersComponent),
|
|
209
|
-
multi: true,
|
|
210
|
-
},
|
|
211
|
-
], 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<table class=\"gio-form-headers__table gio-table-light\" [formGroup]=\"mainForm\">\n <thead>\n <tr>\n <th>KEY</th>\n <th>VALUE</th>\n </tr>\n </thead>\n <tbody formArrayName=\"headers\">\n <tr\n *ngFor=\"let control of headersFormArray.controls; index as headerIndex\"\n class=\"gio-form-headers__table__header-row\"\n [formGroupName]=\"headerIndex\"\n >\n <td class=\"gio-form-headers__table__header-row__td-key\">\n <mat-form-field class=\"gio-form-headers__table__header-row__td-key__field\" [floatLabel]=\"'never'\">\n <textarea\n formControlName=\"key\"\n matInput\n placeholder=\"Name...\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n [matAutocomplete]=\"headerNamesAutocomplete\"\n ></textarea>\n </mat-form-field>\n <mat-autocomplete #headerNamesAutocomplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let headerName of getFilteredHeaderNames(headerIndex, control.value) | async\" [value]=\"headerName\">{{\n headerName\n }}</mat-option>\n </mat-autocomplete>\n </td>\n <td class=\"gio-form-headers__table__header-row__td-value\">\n <mat-form-field class=\"gio-form-headers__table__header-row__td-value__field\" [floatLabel]=\"'never'\">\n <textarea formControlName=\"value\" matInput placeholder=\"Value...\" cdkTextareaAutosize cdkAutosizeMinRows=\"1\"></textarea>\n </mat-form-field>\n <button\n class=\"gio-form-headers__table__header-row__td-value__button\"\n *ngIf=\"headersFormArray.controls.length - 1 !== headerIndex\"\n mat-icon-button\n aria-label=\"Delete\"\n (click)=\"onDeleteHeader(headerIndex)\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{display:block;overflow:hidden}.gio-form-headers__table{width:100%}.gio-form-headers__table__header-row__td-key,.gio-form-headers__table__header-row__td-value{position:relative;width:50%}.gio-form-headers__table__header-row__td-key__field,.gio-form-headers__table__header-row__td-value__field{display:flex;overflow:hidden;width:100%;max-height:32px;flex-direction:column;justify-content:center;padding-bottom:0}.gio-form-headers__table__header-row__td-key__field *,.gio-form-headers__table__header-row__td-value__field *{top:0;overflow:hidden;max-height:32px}.gio-form-headers__table__header-row__td-key__field:focus-within,.gio-form-headers__table__header-row__td-value__field:focus-within{z-index:100;height:auto;background-color:#fff}.gio-form-headers__table__header-row__td-key__field:focus-within *,.gio-form-headers__table__header-row__td-value__field:focus-within *{max-height:none}.gio-form-headers__table__header-row__td-key__button,.gio-form-headers__table__header-row__td-value__button{position:absolute;top:3px;right:3px;display:none}.gio-form-headers__table__header-row__td-remove{width:32px;height:32px;padding:0}.gio-form-headers__table__header-row:hover .gio-form-headers__table__header-row__td-value__button{z-index:110;display:block;background-color:#fff;opacity:.9}::ng-deep gio-form-headers .gio-form-headers__table__header-row .mat-form-field-infix{width:inherit}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i5.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: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.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: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i10.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i8.AsyncPipe } });
|
|
212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: GioFormHeadersComponent, decorators: [{
|
|
213
|
-
type: Component,
|
|
214
|
-
args: [{
|
|
215
|
-
selector: 'gio-form-headers',
|
|
216
|
-
templateUrl: './gio-form-headers.component.html',
|
|
217
|
-
styleUrls: ['./gio-form-headers.component.scss'],
|
|
218
|
-
providers: [
|
|
219
|
-
{
|
|
220
|
-
provide: NG_VALUE_ACCESSOR,
|
|
221
|
-
useExisting: forwardRef(() => GioFormHeadersComponent),
|
|
222
|
-
multi: true,
|
|
223
|
-
},
|
|
224
|
-
],
|
|
225
|
-
}]
|
|
226
|
-
}], ctorParameters: function () { return [{ type: i1.FocusMonitor }, { type: i0.ElementRef }]; }, propDecorators: { disabled: [{
|
|
227
|
-
type: HostBinding,
|
|
228
|
-
args: ['class.disabled']
|
|
229
|
-
}] } });
|
|
230
|
-
const removeLastEmptyHeader = (headers) => {
|
|
231
|
-
const lastHeader = headers[headers.length - 1];
|
|
232
|
-
if (lastHeader && isEmpty(lastHeader.key) && isEmpty(lastHeader.value)) {
|
|
233
|
-
return dropRight(headers);
|
|
234
|
-
}
|
|
235
|
-
return headers;
|
|
236
|
-
};
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0taGVhZGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWhlYWRlcnMvZ2lvLWZvcm0taGVhZGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1mb3JtLWhlYWRlcnMvZ2lvLWZvcm0taGVhZGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFFLFNBQVMsRUFBYyxVQUFVLEVBQUUsV0FBVyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBd0IsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFHdEMsTUFBTSxZQUFZLEdBQUc7SUFDbkIsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixrQ0FBa0M7SUFDbEMsOEJBQThCO0lBQzlCLDhCQUE4QjtJQUM5Qiw2QkFBNkI7SUFDN0IsK0JBQStCO0lBQy9CLHdCQUF3QjtJQUN4QixnQ0FBZ0M7SUFDaEMsK0JBQStCO0lBQy9CLEtBQUs7SUFDTCxPQUFPO0lBQ1AsZUFBZTtJQUNmLGVBQWU7SUFDZixZQUFZO0lBQ1oscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osa0JBQWtCO0lBQ2xC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QUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQzs7cUhBckpVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLHdHQVJ2QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO1lBQ3RELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiwwQkM1R0gsZ2lGQWdFQTs0RkQ4Q2EsdUJBQXVCO2tCQVpuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO29CQUNoRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7NEJBQ3RELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzRIQVdRLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyxnQkFBZ0I7O0FBK0kvQixNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBaUIsRUFBRSxFQUFFO0lBQ2xELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRS9DLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN0RSxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUMzQjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkcm9wUmlnaHQsIGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEhlYWRlciA9IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfTtcbmNvbnN0IEhFQURFUl9OQU1FUyA9IFtcbiAgJ0FjY2VwdCcsXG4gICdBY2NlcHQtQ2hhcnNldCcsXG4gICdBY2NlcHQtRW5jb2RpbmcnLFxuICAnQWNjZXB0LUxhbmd1YWdlJyxcbiAgJ0FjY2VwdC1SYW5nZXMnLFxuICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMnLFxuICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsXG4gICdBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycycsXG4gICdBY2Nlc3MtQ29udHJvbC1NYXgtQWdlJyxcbiAgJ0FjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycycsXG4gICdBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LU1ldGhvZCcsXG4gICdBZ2UnLFxuICAnQWxsb3cnLFxuICAnQXV0aG9yaXphdGlvbicsXG4gICdDYWNoZS1Db250cm9sJyxcbiAgJ0Nvbm5lY3Rpb24nLFxuICAnQ29udGVudC1EaXNwb3NpdGlvbicsXG4gICdDb250ZW50LUVuY29kaW5nJyxcbiAgJ0NvbnRlbnQtSUQnLFxuICAnQ29udGVudC1MYW5ndWFnZScsXG4gICdDb250ZW50LUxlbmd0aCcsXG4gICdDb250ZW50LUxvY2F0aW9uJyxcbiAgJ0NvbnRlbnQtTUQ1JyxcbiAgJ0NvbnRlbnQtUmFuZ2UnLFxuICAnQ29udGVudC1UeXBlJyxcbiAgJ0Nvb2tpZScsXG4gICdEYXRlJyxcbiAgJ0VUYWcnLFxuICAnRXhwaXJlcycsXG4gICdFeHBlY3QnLFxuICAnRm9yd2FyZGVkJyxcbiAgJ0Zyb20nLFxuICAnSG9zdCcsXG4gICdJZi1NYXRjaCcsXG4gICdJZi1Nb2RpZmllZC1TaW5jZScsXG4gICdJZi1Ob25lLU1hdGNoJyxcbiAgJ0lmLVVubW9kaWZpZWQtU2luY2UnLFxuICAnS2VlcC1BbGl2ZScsXG4gICdMYXN0LU1vZGlmaWVkJyxcbiAgJ0xvY2F0aW9uJyxcbiAgJ0xpbmsnLFxuICAnTWF4LUZvcndhcmRzJyxcbiAgJ01JTUUtVmVyc2lvbicsXG4gICdPcmlnaW4nLFxuICAnUHJhZ21hJyxcbiAgJ1Byb3h5LUF1dGhlbnRpY2F0ZScsXG4gICdQcm94eS1BdXRob3JpemF0aW9uJyxcbiAgJ1Byb3h5LUNvbm5lY3Rpb24nLFxuICAnUmFuZ2UnLFxuICAnUmVmZXJlcicsXG4gICdSZXRyeS1BZnRlcicsXG4gICdTZXJ2ZXInLFxuICAnU2V0LUNvb2tpZScsXG4gICdTZXQtQ29va2llMicsXG4gICdURScsXG4gICdUcmFpbGVyJyxcbiAgJ1RyYW5zZmVyLUVuY29kaW5nJyxcbiAgJ1VwZ3JhZGUnLFxuICAnVXNlci1BZ2VudCcsXG4gICdWYXJ5JyxcbiAgJ1ZpYScsXG4gICdXYXJuaW5nJyxcbiAgJ1dXVy1BdXRoZW50aWNhdGUnLFxuICAnWC1Gb3J3YXJkZWQtRm9yJyxcbiAgJ1gtRm9yd2FyZGVkLVByb3RvJyxcbiAgJ1gtRm9yd2FyZGVkLVNlcnZlcicsXG4gICdYLUZvcndhcmRlZC1Ib3N0JyxcbiAgJ1gtRm9yd2FyZGVkLVBvcnQnLFxuICAnWC1Gb3J3YXJkZWQtUHJlZml4Jyxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1mb3JtLWhlYWRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLWZvcm0taGVhZGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1mb3JtLWhlYWRlcnMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHaW9Gb3JtSGVhZGVyc0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Gb3JtSGVhZGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwdWJsaWMgbWFpbkZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIGhlYWRlcnNGb3JtQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtcbiAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGtleTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIHZhbHVlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgIH0pLFxuICBdKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJylcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBoZWFkZXJzOiBIZWFkZXJbXSA9IFtdO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAoX2hlYWRlcnM6IEhlYWRlcltdIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcblxuICBwcml2YXRlIGZpbHRlcmVkSGVhZGVyTmFtZXM6IE9ic2VydmFibGU8c3RyaW5nW10+W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZtOiBGb2N1c01vbml0b3IsIHByaXZhdGUgcmVhZG9ubHkgZWxSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLm1haW5Gb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnNGb3JtQXJyYXksXG4gICAgfSk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogSGVhZGVyW10gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZGVycyA9IHZhbHVlID8/IFtdO1xuICAgIHRoaXMuaW5pdEhlYWRlcnNGb3JtKCk7XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGhlYWRlcnM6IEhlYWRlcltdIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNEaXNhYmxlZCA9PT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgLy8gZG8gbm90aGluZyBpZiB0aGUgZGlzYWJsZWQgc3RhdGUgaXMgbm90IGNoYW5nZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5yZW1vdmVMYXN0SGVhZGVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMuYWRkRW1wdHlIZWFkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXaGVuIHVzZXIgc3RhcnQgdG8gY29tcGxldGUgbGFzdCBoZWFkZXIgYWRkIG5ldyBlbXB0eSBvbmUgYSB0aGUgZW5kXG4gICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5Py52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoaGVhZGVycyA9PiBoZWFkZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5fb25DaGFuZ2UocmVtb3ZlTGFzdEVtcHR5SGVhZGVyKGhlYWRlcnMpKSksXG4gICAgICAgIHRhcCgoaGVhZGVyczogSGVhZGVyW10pID0+IHtcbiAgICAgICAgICBpZiAoaGVhZGVycy5sZW5ndGggPiAwICYmIChoZWFkZXJzW2hlYWRlcnMubGVuZ3RoIC0gMV0ua2V5ICE9PSAnJyB8fCBoZWFkZXJzW2hlYWRlcnMubGVuZ3RoIC0gMV0udmFsdWUgIT09ICcnKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUhlYWRlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmZtLm1vbml0b3IodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEhlYWRlcnNGb3JtKCk6IHZvaWQge1xuICAgIC8vIENsZWFyIGFsbCBwcmV2aW91cyBoZWFkZXJzXG4gICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5LmNsZWFyKCk7XG5cbiAgICAvLyBQb3B1bGF0ZSBoZWFkZXJzIGFycmF5IGZyb20gaGVhZGVyc1xuICAgIHRoaXMuaGVhZGVycy5mb3JFYWNoKCh7IGtleSwgdmFsdWUgfSwgaGVhZGVySW5kZXgpID0+IHtcbiAgICAgIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5wdXNoKFxuICAgICAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgICBrZXk6IHRoaXMuaW5pdEtleUZvcm1Db250cm9sKGtleSwgaGVhZGVySW5kZXgpLFxuICAgICAgICAgIHZhbHVlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSksXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBhZGQgb25lIGVtcHR5IGhlYWRlciBhIHRoZSBlbmRcbiAgICB0aGlzLmFkZEVtcHR5SGVhZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsdGVyZWRIZWFkZXJOYW1lcyhoZWFkZXJJbmRleDogbnVtYmVyLCBoZWFkZXI6IEhlYWRlcik6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICBpZiAoIXRoaXMuZmlsdGVyZWRIZWFkZXJOYW1lc1toZWFkZXJJbmRleF0pIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSGVhZGVyTmFtZXNbaGVhZGVySW5kZXhdO1xuICAgIH1cbiAgICBpZiAoaGVhZGVyLmtleSAhPSBudWxsICYmIGhlYWRlci5rZXkgIT0gJycpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRIZWFkZXJOYW1lc1toZWFkZXJJbmRleF0gPSBvZihoZWFkZXIua2V5KS5waXBlKG1hcCh2YWx1ZSA9PiB0aGlzLl9maWx0ZXIodmFsdWUpKSk7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEhlYWRlck5hbWVzW2hlYWRlckluZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKEhFQURFUl9OQU1FUyk7XG4gIH1cblxuICBwcml2YXRlIGluaXRLZXlGb3JtQ29udHJvbChrZXk6IHN0cmluZywgaGVhZGVySW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZToga2V5LCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9KTtcbiAgICBjb25zdCBmaWx0ZXJlZEtleXMgPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLl9maWx0ZXIodmFsdWUpKSxcbiAgICApO1xuICAgIHRoaXMuZmlsdGVyZWRIZWFkZXJOYW1lcy5zcGxpY2UoaGVhZGVySW5kZXgsIDAsIGZpbHRlcmVkS2V5cyk7XG4gICAgcmV0dXJuIGNvbnRyb2w7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVIZWFkZXIoaGVhZGVySW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5yZW1vdmVBdChoZWFkZXJJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEVtcHR5SGVhZGVyKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5oZWFkZXJzRm9ybUFycmF5LnB1c2goXG4gICAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAga2V5OiB0aGlzLmluaXRLZXlGb3JtQ29udHJvbCgnJywgdGhpcy5oZWFkZXJzRm9ybUFycmF5Lmxlbmd0aCksXG4gICAgICAgIHZhbHVlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgfSksXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMYXN0SGVhZGVyKCkge1xuICAgIHRoaXMuaGVhZGVyc0Zvcm1BcnJheS5yZW1vdmVBdCh0aGlzLmhlYWRlcnNGb3JtQXJyYXkubGVuZ3RoIC0gMSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBIRUFERVJfTkFNRVMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpO1xuICB9XG59XG5cbmNvbnN0IHJlbW92ZUxhc3RFbXB0eUhlYWRlciA9IChoZWFkZXJzOiBIZWFkZXJbXSkgPT4ge1xuICBjb25zdCBsYXN0SGVhZGVyID0gaGVhZGVyc1toZWFkZXJzLmxlbmd0aCAtIDFdO1xuXG4gIGlmIChsYXN0SGVhZGVyICYmIGlzRW1wdHkobGFzdEhlYWRlci5rZXkpICYmIGlzRW1wdHkobGFzdEhlYWRlci52YWx1ZSkpIHtcbiAgICByZXR1cm4gZHJvcFJpZ2h0KGhlYWRlcnMpO1xuICB9XG4gIHJldHVybiBoZWFkZXJzO1xufTtcbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuPHRhYmxlIGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGUgZ2lvLXRhYmxlLWxpZ2h0XCIgW2Zvcm1Hcm91cF09XCJtYWluRm9ybVwiPlxuICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgPHRoPktFWTwvdGg+XG4gICAgICA8dGg+VkFMVUU8L3RoPlxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keSBmb3JtQXJyYXlOYW1lPVwiaGVhZGVyc1wiPlxuICAgIDx0clxuICAgICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2YgaGVhZGVyc0Zvcm1BcnJheS5jb250cm9sczsgaW5kZXggYXMgaGVhZGVySW5kZXhcIlxuICAgICAgY2xhc3M9XCJnaW8tZm9ybS1oZWFkZXJzX190YWJsZV9faGVhZGVyLXJvd1wiXG4gICAgICBbZm9ybUdyb3VwTmFtZV09XCJoZWFkZXJJbmRleFwiXG4gICAgPlxuICAgICAgPHRkIGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGVfX2hlYWRlci1yb3dfX3RkLWtleVwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJnaW8tZm9ybS1oZWFkZXJzX190YWJsZV9faGVhZGVyLXJvd19fdGQta2V5X19maWVsZFwiIFtmbG9hdExhYmVsXT1cIiduZXZlcidcIj5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lLi4uXCJcbiAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjFcIlxuICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJoZWFkZXJOYW1lc0F1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNoZWFkZXJOYW1lc0F1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBoZWFkZXJOYW1lIG9mIGdldEZpbHRlcmVkSGVhZGVyTmFtZXMoaGVhZGVySW5kZXgsIGNvbnRyb2wudmFsdWUpIHwgYXN5bmNcIiBbdmFsdWVdPVwiaGVhZGVyTmFtZVwiPnt7XG4gICAgICAgICAgICBoZWFkZXJOYW1lXG4gICAgICAgICAgfX08L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQgY2xhc3M9XCJnaW8tZm9ybS1oZWFkZXJzX190YWJsZV9faGVhZGVyLXJvd19fdGQtdmFsdWVcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGVfX2hlYWRlci1yb3dfX3RkLXZhbHVlX19maWVsZFwiIFtmbG9hdExhYmVsXT1cIiduZXZlcidcIj5cbiAgICAgICAgICA8dGV4dGFyZWEgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlZhbHVlLi4uXCIgY2RrVGV4dGFyZWFBdXRvc2l6ZSBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiZ2lvLWZvcm0taGVhZGVyc19fdGFibGVfX2hlYWRlci1yb3dfX3RkLXZhbHVlX19idXR0b25cIlxuICAgICAgICAgICpuZ0lmPVwiaGVhZGVyc0Zvcm1BcnJheS5jb250cm9scy5sZW5ndGggLSAxICE9PSBoZWFkZXJJbmRleFwiXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlSGVhZGVyKGhlYWRlckluZGV4KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpjYW5jZWxcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { __awaiter } from "tslib";
|
|
17
|
-
import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';
|
|
18
|
-
import { MatButtonHarness } from '@angular/material/button/testing';
|
|
19
|
-
import { MatInputHarness } from '@angular/material/input/testing';
|
|
20
|
-
import { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';
|
|
21
|
-
export class GioFormHeadersHarness extends ComponentHarness {
|
|
22
|
-
constructor() {
|
|
23
|
-
super(...arguments);
|
|
24
|
-
this.getHeaderRowsElement = this.locatorForAll('tr.gio-form-headers__table__header-row');
|
|
25
|
-
this.getHeaderRowInputKey = (rowIndex) => this.locatorFor(MatInputHarness.with({ ancestor: `[ng-reflect-name="${rowIndex}"]`, selector: '[formControlName=key]' }));
|
|
26
|
-
this.getHeaderRowInputKeyAutocomplete = (rowIndex) => this.locatorFor(MatAutocompleteHarness.with({ ancestor: `tr[ng-reflect-name="${rowIndex}"]`, selector: '.mat-autocomplete-trigger' }));
|
|
27
|
-
this.getHeaderRowInputValue = (rowIndex) => this.locatorFor(MatInputHarness.with({ ancestor: `tr[ng-reflect-name="${rowIndex}"]`, selector: '[formControlName=value]' }));
|
|
28
|
-
this.getHeaderRowRemoveButton = (rowIndex) => this.locatorForOptional(MatButtonHarness.with({ ancestor: `tr[ng-reflect-name="${rowIndex}"]`, selector: '[aria-label="Delete"]' }));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Gets a `HarnessPredicate` that can be used to search for a `GioFormColorInputHarness` that meets
|
|
32
|
-
* certain criteria.
|
|
33
|
-
*
|
|
34
|
-
* @param options Options for filtering which input instances are considered a match.
|
|
35
|
-
* @return a `HarnessPredicate` configured with the given options.
|
|
36
|
-
*/
|
|
37
|
-
static with(options = {}) {
|
|
38
|
-
return new HarnessPredicate(GioFormHeadersHarness, options);
|
|
39
|
-
}
|
|
40
|
-
getHeaderRows() {
|
|
41
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
const rows = yield this.getHeaderRowsElement();
|
|
43
|
-
return Promise.all(rows.map((_, rowIndex) => __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
return ({
|
|
45
|
-
keyInput: yield this.getHeaderRowInputKey(rowIndex)(),
|
|
46
|
-
keyAutocomplete: yield this.getHeaderRowInputKeyAutocomplete(rowIndex)(),
|
|
47
|
-
valueInput: yield this.getHeaderRowInputValue(rowIndex)(),
|
|
48
|
-
removeButton: yield this.getHeaderRowRemoveButton(rowIndex)(),
|
|
49
|
-
});
|
|
50
|
-
})));
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
getLastHeaderRow() {
|
|
54
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
const rows = yield this.getHeaderRowsElement();
|
|
56
|
-
return {
|
|
57
|
-
keyInput: yield this.getHeaderRowInputKey(rows.length - 1)(),
|
|
58
|
-
valueInput: yield this.getHeaderRowInputValue(rows.length - 1)(),
|
|
59
|
-
};
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
addHeader({ key, value }) {
|
|
63
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
const { keyInput, valueInput } = yield this.getLastHeaderRow();
|
|
65
|
-
yield keyInput.setValue(key);
|
|
66
|
-
yield valueInput.setValue(value);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
isDisabled() {
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
return (yield this.host()).hasClass('disabled');
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
GioFormHeadersHarness.hostSelector = 'gio-form-headers';
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLWZvcm0taGVhZGVycy5oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tZm9ybS1oZWFkZXJzL2dpby1mb3JtLWhlYWRlcnMuaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRzs7QUFFSCxPQUFPLEVBQXNDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhGLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBZ0I7SUFBM0Q7O1FBY1UseUJBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBRXBGLHlCQUFvQixHQUFHLENBQUMsUUFBZ0IsRUFBbUMsRUFBRSxDQUNuRixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwSCxxQ0FBZ0MsR0FBRyxDQUFDLFFBQWdCLEVBQTBDLEVBQUUsQ0FDdEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqSSwyQkFBc0IsR0FBRyxDQUFDLFFBQWdCLEVBQW1DLEVBQUUsQ0FDckYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixRQUFRLElBQUksRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEgsNkJBQXdCLEdBQUcsQ0FBQyxRQUFnQixFQUEyQyxFQUFFLENBQy9GLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQztJQXlDekksQ0FBQztJQWhFQzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQThCLEVBQUU7UUFDakQsT0FBTyxJQUFJLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFnQlksYUFBYTs7WUFReEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUUvQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQUMsT0FBQSxDQUFDO29CQUMvQixRQUFRLEVBQUUsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3JELGVBQWUsRUFBRSxNQUFNLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDeEUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUN6RCxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLEVBQUU7aUJBQzlELENBQUMsQ0FBQTtjQUFBLENBQUMsQ0FDSixDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRVksZ0JBQWdCOztZQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBRS9DLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQzVELFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO2FBQ2pFLENBQUM7UUFDSixDQUFDO0tBQUE7SUFFWSxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFrQzs7WUFDbkUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRS9ELE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztLQUFBO0lBRVksVUFBVTs7WUFDckIsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7S0FBQTs7QUFqRWEsa0NBQVksR0FBRyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEFzeW5jRmFjdG9yeUZuLCBCYXNlSGFybmVzc0ZpbHRlcnMsIENvbXBvbmVudEhhcm5lc3MsIEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRCdXR0b25IYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0SW5wdXRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL3Rlc3RpbmcnO1xuXG5leHBvcnQgY2xhc3MgR2lvRm9ybUhlYWRlcnNIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ2dpby1mb3JtLWhlYWRlcnMnO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhIGBHaW9Gb3JtQ29sb3JJbnB1dEhhcm5lc3NgIHRoYXQgbWVldHNcbiAgICogY2VydGFpbiBjcml0ZXJpYS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZmlsdGVyaW5nIHdoaWNoIGlucHV0IGluc3RhbmNlcyBhcmUgY29uc2lkZXJlZCBhIG1hdGNoLlxuICAgKiBAcmV0dXJuIGEgYEhhcm5lc3NQcmVkaWNhdGVgIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZ2l2ZW4gb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aChvcHRpb25zOiBCYXNlSGFybmVzc0ZpbHRlcnMgPSB7fSk6IEhhcm5lc3NQcmVkaWNhdGU8R2lvRm9ybUhlYWRlcnNIYXJuZXNzPiB7XG4gICAgcmV0dXJuIG5ldyBIYXJuZXNzUHJlZGljYXRlKEdpb0Zvcm1IZWFkZXJzSGFybmVzcywgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlYWRlclJvd3NFbGVtZW50ID0gdGhpcy5sb2NhdG9yRm9yQWxsKCd0ci5naW8tZm9ybS1oZWFkZXJzX190YWJsZV9faGVhZGVyLXJvdycpO1xuXG4gIHByaXZhdGUgZ2V0SGVhZGVyUm93SW5wdXRLZXkgPSAocm93SW5kZXg6IG51bWJlcik6IEFzeW5jRmFjdG9yeUZuPE1hdElucHV0SGFybmVzcz4gPT5cbiAgICB0aGlzLmxvY2F0b3JGb3IoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBhbmNlc3RvcjogYFtuZy1yZWZsZWN0LW5hbWU9XCIke3Jvd0luZGV4fVwiXWAsIHNlbGVjdG9yOiAnW2Zvcm1Db250cm9sTmFtZT1rZXldJyB9KSk7XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXJSb3dJbnB1dEtleUF1dG9jb21wbGV0ZSA9IChyb3dJbmRleDogbnVtYmVyKTogQXN5bmNGYWN0b3J5Rm48TWF0QXV0b2NvbXBsZXRlSGFybmVzcz4gPT5cbiAgICB0aGlzLmxvY2F0b3JGb3IoTWF0QXV0b2NvbXBsZXRlSGFybmVzcy53aXRoKHsgYW5jZXN0b3I6IGB0cltuZy1yZWZsZWN0LW5hbWU9XCIke3Jvd0luZGV4fVwiXWAsIHNlbGVjdG9yOiAnLm1hdC1hdXRvY29tcGxldGUtdHJpZ2dlcicgfSkpO1xuXG4gIHByaXZhdGUgZ2V0SGVhZGVyUm93SW5wdXRWYWx1ZSA9IChyb3dJbmRleDogbnVtYmVyKTogQXN5bmNGYWN0b3J5Rm48TWF0SW5wdXRIYXJuZXNzPiA9PlxuICAgIHRoaXMubG9jYXRvckZvcihNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBgdHJbbmctcmVmbGVjdC1uYW1lPVwiJHtyb3dJbmRleH1cIl1gLCBzZWxlY3RvcjogJ1tmb3JtQ29udHJvbE5hbWU9dmFsdWVdJyB9KSk7XG5cbiAgcHJpdmF0ZSBnZXRIZWFkZXJSb3dSZW1vdmVCdXR0b24gPSAocm93SW5kZXg6IG51bWJlcik6IEFzeW5jRmFjdG9yeUZuPE1hdEJ1dHRvbkhhcm5lc3MgfCBudWxsPiA9PlxuICAgIHRoaXMubG9jYXRvckZvck9wdGlvbmFsKE1hdEJ1dHRvbkhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBgdHJbbmctcmVmbGVjdC1uYW1lPVwiJHtyb3dJbmRleH1cIl1gLCBzZWxlY3RvcjogJ1thcmlhLWxhYmVsPVwiRGVsZXRlXCJdJyB9KSk7XG5cbiAgcHVibGljIGFzeW5jIGdldEhlYWRlclJvd3MoKTogUHJvbWlzZTxcbiAgICB7XG4gICAgICBrZXlJbnB1dDogTWF0SW5wdXRIYXJuZXNzO1xuICAgICAga2V5QXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVIYXJuZXNzO1xuICAgICAgdmFsdWVJbnB1dDogTWF0SW5wdXRIYXJuZXNzO1xuICAgICAgcmVtb3ZlQnV0dG9uOiBNYXRCdXR0b25IYXJuZXNzIHwgbnVsbDtcbiAgICB9W11cbiAgPiB7XG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IHRoaXMuZ2V0SGVhZGVyUm93c0VsZW1lbnQoKTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIHJvd3MubWFwKGFzeW5jIChfLCByb3dJbmRleCkgPT4gKHtcbiAgICAgICAga2V5SW5wdXQ6IGF3YWl0IHRoaXMuZ2V0SGVhZGVyUm93SW5wdXRLZXkocm93SW5kZXgpKCksXG4gICAgICAgIGtleUF1dG9jb21wbGV0ZTogYXdhaXQgdGhpcy5nZXRIZWFkZXJSb3dJbnB1dEtleUF1dG9jb21wbGV0ZShyb3dJbmRleCkoKSxcbiAgICAgICAgdmFsdWVJbnB1dDogYXdhaXQgdGhpcy5nZXRIZWFkZXJSb3dJbnB1dFZhbHVlKHJvd0luZGV4KSgpLFxuICAgICAgICByZW1vdmVCdXR0b246IGF3YWl0IHRoaXMuZ2V0SGVhZGVyUm93UmVtb3ZlQnV0dG9uKHJvd0luZGV4KSgpLFxuICAgICAgfSkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TGFzdEhlYWRlclJvdygpOiBQcm9taXNlPHsga2V5SW5wdXQ6IE1hdElucHV0SGFybmVzczsgdmFsdWVJbnB1dDogTWF0SW5wdXRIYXJuZXNzIH0+IHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5nZXRIZWFkZXJSb3dzRWxlbWVudCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtleUlucHV0OiBhd2FpdCB0aGlzLmdldEhlYWRlclJvd0lucHV0S2V5KHJvd3MubGVuZ3RoIC0gMSkoKSxcbiAgICAgIHZhbHVlSW5wdXQ6IGF3YWl0IHRoaXMuZ2V0SGVhZGVyUm93SW5wdXRWYWx1ZShyb3dzLmxlbmd0aCAtIDEpKCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRIZWFkZXIoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsga2V5SW5wdXQsIHZhbHVlSW5wdXQgfSA9IGF3YWl0IHRoaXMuZ2V0TGFzdEhlYWRlclJvdygpO1xuXG4gICAgYXdhaXQga2V5SW5wdXQuc2V0VmFsdWUoa2V5KTtcbiAgICBhd2FpdCB2YWx1ZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpc0Rpc2FibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5ob3N0KCkpLmhhc0NsYXNzKCdkaXNhYmxlZCcpO1xuICB9XG59XG4iXX0=
|