@colijnit/relation 12.1.3 → 12.1.4
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/README.md +24 -24
- package/bundles/colijnit-relation.umd.js +4649 -4649
- package/bundles/colijnit-relation.umd.js.map +1 -1
- package/colijnit-relation.d.ts +21 -21
- package/esm2015/colijnit-relation.js +21 -21
- package/esm2015/lib/component/base/relation-base.component.js +53 -53
- package/esm2015/lib/component/base/relation-loader.component.js +50 -50
- package/esm2015/lib/component/base/relation-screen-config-base.component.js +16 -16
- package/esm2015/lib/component/relation/relation.component.js +100 -100
- package/esm2015/lib/component/relation/relation.module.js +58 -58
- package/esm2015/lib/component/relation-address/relation-address.component.js +166 -166
- package/esm2015/lib/component/relation-address/relation-address.module.js +24 -24
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.component.js +72 -72
- package/esm2015/lib/component/relation-address-tile/relation-address-tile.module.js +25 -25
- package/esm2015/lib/component/relation-addresses/relation-addresses.component.js +158 -158
- package/esm2015/lib/component/relation-addresses/relation-addresses.module.js +31 -31
- package/esm2015/lib/component/relation-avatar/relation-avatar.component.js +222 -222
- package/esm2015/lib/component/relation-avatar/relation-avatar.module.js +22 -22
- package/esm2015/lib/component/relation-contact-options/relation-contact-option-list.component.js +101 -101
- package/esm2015/lib/component/relation-contact-options/relation-contact-option.component.js +100 -100
- package/esm2015/lib/component/relation-contact-options/relation-contact-options-other-types-popup.component.js +44 -44
- package/esm2015/lib/component/relation-contact-options/relation-contact-options.component.js +170 -170
- package/esm2015/lib/component/relation-contact-options/relation-contact-options.module.js +35 -35
- package/esm2015/lib/component/relation-first-name/relation-first-name.component.js +25 -25
- package/esm2015/lib/component/relation-first-name/relation-first-name.module.js +24 -24
- package/esm2015/lib/component/relation-gender/relation-gender.component.js +45 -45
- package/esm2015/lib/component/relation-gender/relation-gender.module.js +23 -23
- package/esm2015/lib/component/relation-initials/relation-initials.component.js +24 -24
- package/esm2015/lib/component/relation-initials/relation-initials.module.js +24 -24
- package/esm2015/lib/component/relation-language/relation-language.component.js +56 -56
- package/esm2015/lib/component/relation-language/relation-language.module.js +24 -24
- package/esm2015/lib/component/relation-last-name/relation-last-name.component.js +23 -23
- package/esm2015/lib/component/relation-last-name/relation-last-name.module.js +24 -24
- package/esm2015/lib/component/relation-preferences/relation-preferences.component.js +69 -69
- package/esm2015/lib/component/relation-preferences/relation-preferences.module.js +23 -23
- package/esm2015/lib/component/relation-prefix-name/relation-prefix-name.component.js +24 -24
- package/esm2015/lib/component/relation-prefix-name/relation-prefix-name.module.js +24 -24
- package/esm2015/lib/component/relation-title/relation-title.component.js +56 -56
- package/esm2015/lib/component/relation-title/relation-title.module.js +24 -24
- package/esm2015/lib/enum/icon.enum.js +16 -16
- package/esm2015/lib/enum/language-code.enum.js +8 -8
- package/esm2015/lib/enum/relman-cfg-name.enum.js +862 -862
- package/esm2015/lib/enum/relman-contact-options-cfg-names.js +2 -2
- package/esm2015/lib/enum/relman-sub-category.enum.js +13 -13
- package/esm2015/lib/interface/relation-address-cfg-names.interface.js +2 -2
- package/esm2015/lib/model/icon-svg.js +15 -15
- package/esm2015/lib/model/relation-settings-options.js +7 -7
- package/esm2015/lib/model/relation-settings.js +9 -9
- package/esm2015/lib/relation-version.js +10 -10
- package/esm2015/lib/res/dictionary/dictionaries.js +9 -9
- package/esm2015/lib/service/dictionary.service.js +68 -68
- package/esm2015/lib/service/error.service.js +75 -75
- package/esm2015/lib/service/icon-cache.service.js +51 -51
- package/esm2015/lib/service/relation-base.service.js +268 -268
- package/esm2015/lib/service/relation-connector-adapter.service.js +401 -401
- package/esm2015/lib/service/relation-connector.service.js +155 -155
- package/esm2015/lib/service/relation-event.service.js +16 -16
- package/esm2015/lib/service/relation-screen-configuration.service.js +51 -51
- package/esm2015/lib/service/relation-settings.service.js +65 -65
- package/esm2015/lib/service/relation.service.js +42 -42
- package/esm2015/lib/translation/relation-dictionary.service.js +77 -77
- package/esm2015/lib/translation/relation-localize.pipe.js +26 -26
- package/esm2015/lib/translation/relation-translation.module.js +29 -29
- package/esm2015/lib/translation/relation-translation.service.js +17 -17
- package/esm2015/public_api.js +33 -33
- package/fesm2015/colijnit-relation.js +3838 -3838
- package/fesm2015/colijnit-relation.js.map +1 -1
- package/lib/component/base/relation-base.component.d.ts +24 -24
- package/lib/component/base/relation-loader.component.d.ts +12 -12
- package/lib/component/base/relation-screen-config-base.component.d.ts +14 -14
- package/lib/component/relation/relation.component.d.ts +21 -21
- package/lib/component/relation/relation.module.d.ts +2 -2
- package/lib/component/relation/style/_layout.scss +46 -46
- package/lib/component/relation/style/_material-definition.scss +15 -15
- package/lib/component/relation/style/_theme.scss +12 -12
- package/lib/component/relation/style/material.scss +4 -4
- package/lib/component/relation-address/relation-address.component.d.ts +35 -35
- package/lib/component/relation-address/relation-address.module.d.ts +2 -2
- package/lib/component/relation-address/style/_layout.scss +16 -16
- package/lib/component/relation-address/style/_material-definition.scss +5 -5
- package/lib/component/relation-address/style/_theme.scss +5 -5
- package/lib/component/relation-address/style/material.scss +4 -4
- package/lib/component/relation-address-tile/relation-address-tile.component.d.ts +19 -19
- package/lib/component/relation-address-tile/relation-address-tile.module.d.ts +2 -2
- package/lib/component/relation-address-tile/style/_layout.scss +46 -46
- package/lib/component/relation-address-tile/style/_material-definition.scss +18 -18
- package/lib/component/relation-address-tile/style/_theme.scss +19 -19
- package/lib/component/relation-address-tile/style/material.scss +4 -4
- package/lib/component/relation-addresses/relation-addresses.component.d.ts +31 -31
- package/lib/component/relation-addresses/relation-addresses.module.d.ts +2 -2
- package/lib/component/relation-addresses/style/_layout.scss +26 -26
- package/lib/component/relation-addresses/style/_material-definition.scss +12 -12
- package/lib/component/relation-addresses/style/_theme.scss +20 -20
- package/lib/component/relation-addresses/style/material.scss +4 -4
- package/lib/component/relation-avatar/relation-avatar.component.d.ts +47 -47
- package/lib/component/relation-avatar/relation-avatar.module.d.ts +2 -2
- package/lib/component/relation-avatar/style/_layout.scss +44 -44
- package/lib/component/relation-avatar/style/_material-definition.scss +4 -4
- package/lib/component/relation-avatar/style/_theme.scss +9 -9
- package/lib/component/relation-avatar/style/material.scss +4 -4
- package/lib/component/relation-contact-options/relation-contact-option-list.component.d.ts +22 -22
- package/lib/component/relation-contact-options/relation-contact-option.component.d.ts +30 -30
- package/lib/component/relation-contact-options/relation-contact-options-other-types-popup.component.d.ts +22 -22
- package/lib/component/relation-contact-options/relation-contact-options.component.d.ts +43 -43
- package/lib/component/relation-contact-options/relation-contact-options.module.d.ts +2 -2
- package/lib/component/relation-contact-options/style/_layout.scss +153 -153
- package/lib/component/relation-contact-options/style/_material-definition.scss +47 -47
- package/lib/component/relation-contact-options/style/_theme.scss +64 -64
- package/lib/component/relation-contact-options/style/material.scss +4 -4
- package/lib/component/relation-first-name/relation-first-name.component.d.ts +4 -4
- package/lib/component/relation-first-name/relation-first-name.module.d.ts +2 -2
- package/lib/component/relation-first-name/style/_layout.scss +9 -9
- package/lib/component/relation-first-name/style/_material-definition.scss +3 -3
- package/lib/component/relation-first-name/style/_theme.scss +5 -5
- package/lib/component/relation-first-name/style/material.scss +4 -4
- package/lib/component/relation-gender/relation-gender.component.d.ts +7 -7
- package/lib/component/relation-gender/relation-gender.module.d.ts +2 -2
- package/lib/component/relation-gender/style/_layout.scss +8 -8
- package/lib/component/relation-gender/style/_material-definition.scss +4 -4
- package/lib/component/relation-gender/style/_theme.scss +5 -5
- package/lib/component/relation-gender/style/material.scss +4 -4
- package/lib/component/relation-initials/relation-initials.component.d.ts +4 -4
- package/lib/component/relation-initials/relation-initials.module.d.ts +2 -2
- package/lib/component/relation-initials/style/_layout.scss +9 -9
- package/lib/component/relation-initials/style/_material-definition.scss +3 -3
- package/lib/component/relation-initials/style/_theme.scss +5 -5
- package/lib/component/relation-initials/style/material.scss +4 -4
- package/lib/component/relation-language/relation-language.component.d.ts +12 -12
- package/lib/component/relation-language/relation-language.module.d.ts +2 -2
- package/lib/component/relation-language/style/_layout.scss +9 -9
- package/lib/component/relation-language/style/_material-definition.scss +3 -3
- package/lib/component/relation-language/style/_theme.scss +5 -5
- package/lib/component/relation-language/style/material.scss +4 -4
- package/lib/component/relation-last-name/relation-last-name.component.d.ts +4 -4
- package/lib/component/relation-last-name/relation-last-name.module.d.ts +2 -2
- package/lib/component/relation-last-name/style/_layout.scss +9 -9
- package/lib/component/relation-last-name/style/_material-definition.scss +3 -3
- package/lib/component/relation-last-name/style/_theme.scss +5 -5
- package/lib/component/relation-last-name/style/material.scss +4 -4
- package/lib/component/relation-preferences/relation-preferences.component.d.ts +13 -13
- package/lib/component/relation-preferences/relation-preferences.module.d.ts +2 -2
- package/lib/component/relation-preferences/style/_layout.scss +16 -16
- package/lib/component/relation-preferences/style/_material-definition.scss +8 -8
- package/lib/component/relation-preferences/style/_theme.scss +5 -5
- package/lib/component/relation-preferences/style/material.scss +4 -4
- package/lib/component/relation-prefix-name/relation-prefix-name.component.d.ts +4 -4
- package/lib/component/relation-prefix-name/relation-prefix-name.module.d.ts +2 -2
- package/lib/component/relation-prefix-name/style/_layout.scss +9 -9
- package/lib/component/relation-prefix-name/style/_material-definition.scss +3 -3
- package/lib/component/relation-prefix-name/style/_theme.scss +5 -5
- package/lib/component/relation-prefix-name/style/material.scss +4 -4
- package/lib/component/relation-title/relation-title.component.d.ts +13 -13
- package/lib/component/relation-title/relation-title.module.d.ts +2 -2
- package/lib/component/relation-title/style/_layout.scss +9 -9
- package/lib/component/relation-title/style/_material-definition.scss +3 -3
- package/lib/component/relation-title/style/_theme.scss +5 -5
- package/lib/component/relation-title/style/material.scss +4 -4
- package/lib/enum/icon.enum.d.ts +14 -14
- package/lib/enum/language-code.enum.d.ts +6 -6
- package/lib/enum/relman-cfg-name.enum.d.ts +857 -857
- package/lib/enum/relman-contact-options-cfg-names.d.ts +6 -6
- package/lib/enum/relman-sub-category.enum.d.ts +10 -10
- package/lib/interface/relation-address-cfg-names.interface.d.ts +8 -8
- package/lib/model/icon-svg.d.ts +4 -4
- package/lib/model/relation-settings-options.d.ts +4 -4
- package/lib/model/relation-settings.d.ts +5 -5
- package/lib/relation-version.d.ts +6 -6
- package/lib/res/dictionary/dictionaries.d.ts +17184 -17184
- package/lib/service/dictionary.service.d.ts +18 -18
- package/lib/service/error.service.d.ts +11 -11
- package/lib/service/icon-cache.service.d.ts +18 -18
- package/lib/service/relation-base.service.d.ts +64 -64
- package/lib/service/relation-connector-adapter.service.d.ts +66 -66
- package/lib/service/relation-connector.service.d.ts +51 -51
- package/lib/service/relation-event.service.d.ts +6 -6
- package/lib/service/relation-screen-configuration.service.d.ts +13 -13
- package/lib/service/relation-settings.service.d.ts +16 -16
- package/lib/service/relation.service.d.ts +10 -10
- package/lib/style/_mixin.scss +15 -15
- package/lib/style/_variables.scss +15 -15
- package/lib/style/relation-globals.scss +7 -7
- package/lib/translation/relation-dictionary.service.d.ts +19 -19
- package/lib/translation/relation-localize.pipe.d.ts +7 -7
- package/lib/translation/relation-translation.module.d.ts +4 -4
- package/lib/translation/relation-translation.service.d.ts +6 -6
- package/package.json +5 -5
- package/public_api.d.ts +32 -32
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import { Address } from '@colijnit/relationapi/build/model/address.bo';
|
|
4
|
-
import { DictionaryService } from '../../service/dictionary.service';
|
|
5
|
-
import { FormMasterService } from '@colijnit/corecomponents_v12';
|
|
6
|
-
import { RelationService } from '../../service/relation.service';
|
|
7
|
-
import { RelationConnectorService } from '../../service/relation-connector.service';
|
|
8
|
-
import { isNill } from '@colijnit/ioneconnector/build/utils/function/is-nill.function';
|
|
9
|
-
import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
|
|
10
|
-
export class RelationAddressComponent {
|
|
11
|
-
constructor(_dictionary, _relationConnectorService, _formMasterService, relationService) {
|
|
12
|
-
this._dictionary = _dictionary;
|
|
13
|
-
this._relationConnectorService = _relationConnectorService;
|
|
14
|
-
this._formMasterService = _formMasterService;
|
|
15
|
-
this.relationService = relationService;
|
|
16
|
-
this.addressChange = new EventEmitter();
|
|
17
|
-
this.countries = [];
|
|
18
|
-
this.fields = { text: "description", value: "code" };
|
|
19
|
-
this.postalCodeCheckErrorMessage = "";
|
|
20
|
-
this._prevPostalCodeForCheck = "";
|
|
21
|
-
this._address = new Address();
|
|
22
|
-
}
|
|
23
|
-
set address(value) {
|
|
24
|
-
this._address = value;
|
|
25
|
-
this._setSelectedAddress();
|
|
26
|
-
}
|
|
27
|
-
get address() {
|
|
28
|
-
return this._address;
|
|
29
|
-
}
|
|
30
|
-
showClass() {
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
ngOnInit() {
|
|
34
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
this._relationConnectorService.getCountries().then((countries) => {
|
|
36
|
-
this.countries = countries;
|
|
37
|
-
this._setSelectedAddress();
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
checkForPostalCodeCheckError() {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
if (!this.address.postalCode || isNill(this.address.houseNo)) {
|
|
44
|
-
this.postalCodeCheckErrorMessage = "";
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (this._prevPostalCodeForCheck !== this.address.postalCode || this._prevHouseNoForCheck !== this.address.houseNo) {
|
|
48
|
-
this._prevPostalCodeForCheck = this.address.postalCode;
|
|
49
|
-
this._prevHouseNoForCheck = this.address.houseNo;
|
|
50
|
-
const postalCodeResponse = yield this._relationConnectorService.getPostalCodeRetrieval((this.address.postalCode ? this.address.postalCode : ""), StringUtils.ParseString(this.address.houseNo));
|
|
51
|
-
if (postalCodeResponse && postalCodeResponse.isBadAddress) {
|
|
52
|
-
this.postalCodeCheckErrorMessage = this._dictionary.get("UNKNOWN_ADDRESS_CHECK_IT");
|
|
53
|
-
}
|
|
54
|
-
else if (postalCodeResponse.status && postalCodeResponse.status.toLowerCase().indexOf("fout") < 0) {
|
|
55
|
-
this.postalCodeCheckErrorMessage = "";
|
|
56
|
-
this.address.streetName = postalCodeResponse.street;
|
|
57
|
-
this.address.city = postalCodeResponse.city;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
changeHouseNo() {
|
|
63
|
-
if (this.address) {
|
|
64
|
-
this.address.houseNo = Number(this.address.houseNo);
|
|
65
|
-
// this.suggestionRequest.houseNr = this.address.houseNo;
|
|
66
|
-
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
handleCountryChange(country) {
|
|
70
|
-
this.countryModel = country;
|
|
71
|
-
if (this.address) {
|
|
72
|
-
this.address.countryId = this.countryModel.code;
|
|
73
|
-
// this.suggestionRequest.country = country.description;
|
|
74
|
-
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
handlePostalCodeChange() {
|
|
78
|
-
if (this.address) {
|
|
79
|
-
// this.suggestionRequest.postalCode = this.address.postalCode;
|
|
80
|
-
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
handleStreetChange() {
|
|
84
|
-
if (this.address) {
|
|
85
|
-
// this.suggestionRequest.street = this.address.streetName;
|
|
86
|
-
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
handleCityChange() {
|
|
90
|
-
if (this.address) {
|
|
91
|
-
// this.suggestionRequest.city = this.address.city;
|
|
92
|
-
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
_setSelectedAddress() {
|
|
96
|
-
if (!this.address || !this.countries) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
if (!this.address.countryId) {
|
|
100
|
-
this.address.countryId = "NL";
|
|
101
|
-
}
|
|
102
|
-
this.countryModel = this.countries.find(c => c.code === this.address.countryId);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
RelationAddressComponent.decorators = [
|
|
106
|
-
{ type: Component, args: [{
|
|
107
|
-
selector: 'co-relation-address',
|
|
108
|
-
template: `
|
|
109
|
-
<div class="relation-address-data-row">
|
|
110
|
-
<co-input-text
|
|
111
|
-
[(model)]="address.postalCode"
|
|
112
|
-
[placeholder]="'POSTAL_CODE' | reLocalize"
|
|
113
|
-
(blur)="checkForPostalCodeCheckError()"
|
|
114
|
-
(modelChange)="handlePostalCodeChange()"
|
|
115
|
-
required
|
|
116
|
-
></co-input-text>
|
|
117
|
-
<co-input-text class="default-width"
|
|
118
|
-
[(model)]="address.houseNo"
|
|
119
|
-
[placeholder]="'HOUSE_NO' | reLocalize"
|
|
120
|
-
[digitsOnly]="true"
|
|
121
|
-
(blur)="checkForPostalCodeCheckError()"
|
|
122
|
-
(modelChange)="changeHouseNo()"
|
|
123
|
-
required
|
|
124
|
-
></co-input-text>
|
|
125
|
-
<co-input-text
|
|
126
|
-
[(model)]="address.houseNoAddition"
|
|
127
|
-
[placeholder]="'HOUSE_NO_ADDITION' | reLocalize"
|
|
128
|
-
></co-input-text>
|
|
129
|
-
</div>
|
|
130
|
-
<div class="relation-address-data-row">
|
|
131
|
-
<co-input-text
|
|
132
|
-
[(model)]="address.streetName"
|
|
133
|
-
[placeholder]="'STREET' | reLocalize" required
|
|
134
|
-
(modelChange)="handleStreetChange()"></co-input-text>
|
|
135
|
-
<co-input-text
|
|
136
|
-
[(model)]="address.city"
|
|
137
|
-
[placeholder]="'CITY' | reLocalize" required
|
|
138
|
-
(modelChange)="handleCityChange()"></co-input-text>
|
|
139
|
-
</div>
|
|
140
|
-
<div class="relation-address-data-row default single">
|
|
141
|
-
<co-list-of-values
|
|
142
|
-
[model]="countryModel"
|
|
143
|
-
[collection]="countries"
|
|
144
|
-
[displayField]="'description'"
|
|
145
|
-
[label]="'COUNTRY' | reLocalize"
|
|
146
|
-
[required]="true"
|
|
147
|
-
(modelChange)="handleCountryChange($event)"
|
|
148
|
-
></co-list-of-values>
|
|
149
|
-
</div>
|
|
150
|
-
`,
|
|
151
|
-
encapsulation: ViewEncapsulation.None
|
|
152
|
-
},] }
|
|
153
|
-
];
|
|
154
|
-
RelationAddressComponent.ctorParameters = () => [
|
|
155
|
-
{ type: DictionaryService },
|
|
156
|
-
{ type: RelationConnectorService },
|
|
157
|
-
{ type: FormMasterService },
|
|
158
|
-
{ type: RelationService }
|
|
159
|
-
];
|
|
160
|
-
RelationAddressComponent.propDecorators = {
|
|
161
|
-
configNames: [{ type: Input }],
|
|
162
|
-
address: [{ type: Input }],
|
|
163
|
-
addressChange: [{ type: Output }],
|
|
164
|
-
showClass: [{ type: HostBinding, args: ["class.co-relation-address",] }]
|
|
165
|
-
};
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZWxhdGlvbi9zcmMvbGliL2NvbXBvbmVudC9yZWxhdGlvbi1hZGRyZXNzL3JlbGF0aW9uLWFkZHJlc3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFFckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUNyRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFrRDdFLE1BQU0sT0FBTyx3QkFBd0I7SUErQm5DLFlBQ1UsV0FBOEIsRUFDOUIseUJBQW1ELEVBQ25ELGtCQUFxQyxFQUNuQyxlQUFnQztRQUhsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQUNuRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ25DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXBCckMsa0JBQWEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU9uRSxjQUFTLEdBQWMsRUFBRSxDQUFDO1FBQzFCLFdBQU0sR0FBVyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDO1FBR3RELGdDQUEyQixHQUFXLEVBQUUsQ0FBQztRQUN4Qyw0QkFBdUIsR0FBVyxFQUFFLENBQUM7UUFFckMsYUFBUSxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7SUFRMUMsQ0FBQztJQWpDRCxJQUNXLE9BQU8sQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFNTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBbUJLLFFBQVE7O1lBQ1osSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQW9CLEVBQUUsRUFBRTtnQkFDMUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRVksNEJBQTRCOztZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzVELElBQUksQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU87YUFDUjtZQUVELElBQUksSUFBSSxDQUFDLHVCQUF1QixLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDbEgsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ2pELE1BQU0sa0JBQWtCLEdBQXVDLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDakwsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksa0JBQWtCLElBQUksa0JBQWtCLENBQUMsWUFBWSxFQUFFO29CQUN6RCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztpQkFDckY7cUJBQU0sSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLElBQUksa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ25HLElBQUksQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztvQkFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2lCQUM3QzthQUNGO1FBQ0gsQ0FBQztLQUFBO0lBRU0sYUFBYTtRQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEQseURBQXlEO1lBQ3pELCtEQUErRDtTQUNoRTtJQUNILENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxPQUFnQjtRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDaEQsd0RBQXdEO1lBQ3hELCtEQUErRDtTQUNoRTtJQUNILENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLCtEQUErRDtZQUMvRCwrREFBK0Q7U0FDaEU7SUFDSCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQiwyREFBMkQ7WUFDM0QsK0RBQStEO1NBQ2hFO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsbURBQW1EO1lBQ25ELCtEQUErRDtTQUNoRTtJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3BDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7OztZQWhLRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXRETyxpQkFBaUI7WUFHakIsd0JBQXdCO1lBRnhCLGlCQUFpQjtZQUNqQixlQUFlOzs7MEJBc0RwQixLQUFLO3NCQUdMLEtBQUs7NEJBVUwsTUFBTTt3QkFHTixXQUFXLFNBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1JlbGF0aW9uQWRkcmVzc0NmZ05hbWVzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvcmVsYXRpb24tYWRkcmVzcy1jZmctbmFtZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtBZGRyZXNzfSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ibyc7XHJcbmltcG9ydCB7Q291bnRyeX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvY291bnRyeS5ibyc7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHtGb3JtTWFzdGVyU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7UmVsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3JlbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlbGF0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9yZWxhdGlvbi1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7aXNOaWxsfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC91dGlscy9mdW5jdGlvbi9pcy1uaWxsLmZ1bmN0aW9uJztcclxuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdXRpbHMvc3RyaW5nLXV0aWxzJztcclxuaW1wb3J0IHtHZXRQb3N0YWxDb2RlUmV0cmlldmFsT3V0cHV0UGFyYW1zfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9nZXQtcG9zdGFsLWNvZGUtcmV0cmlldmFsLW91dHB1dC1wYXJhbXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1yZWxhdGlvbi1hZGRyZXNzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1kYXRhLXJvd1wiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiYWRkcmVzcy5wb3N0YWxDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQT1NUQUxfQ09ERScgfCByZUxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tGb3JQb3N0YWxDb2RlQ2hlY2tFcnJvcigpXCJcclxuICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVBvc3RhbENvZGVDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgICAgPGNvLWlucHV0LXRleHQgY2xhc3M9XCJkZWZhdWx0LXdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3MuaG91c2VOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0hPVVNFX05PJyB8IHJlTG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2RpZ2l0c09ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGVja0ZvclBvc3RhbENvZGVDaGVja0Vycm9yKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZUhvdXNlTm8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3MuaG91c2VOb0FkZGl0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidIT1VTRV9OT19BRERJVElPTicgfCByZUxvY2FsaXplXCJcclxuICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1kYXRhLXJvd1wiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiYWRkcmVzcy5zdHJlZXROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTVFJFRVQnIHwgcmVMb2NhbGl6ZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVTdHJlZXRDaGFuZ2UoKVwiPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3MuY2l0eVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ0lUWScgfCByZUxvY2FsaXplXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZUNpdHlDaGFuZ2UoKVwiPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1hZGRyZXNzLWRhdGEtcm93IGRlZmF1bHQgc2luZ2xlXCI+XHJcbiAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXNcclxuICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImNvdW50cnlNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cImNvdW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ09VTlRSWScgfCByZUxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlQ291bnRyeUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlbGF0aW9uQWRkcmVzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29uZmlnTmFtZXM6IFJlbGF0aW9uQWRkcmVzc0NmZ05hbWVzO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgYWRkcmVzcyh2YWx1ZTogQWRkcmVzcykge1xyXG4gICAgdGhpcy5fYWRkcmVzcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5fc2V0U2VsZWN0ZWRBZGRyZXNzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFkZHJlc3MoKTogQWRkcmVzcyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkcmVzcztcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhZGRyZXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QWRkcmVzcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFkZHJlc3M+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXJlbGF0aW9uLWFkZHJlc3NcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY291bnRyaWVzOiBDb3VudHJ5W10gPSBbXTtcclxuICBwdWJsaWMgZmllbGRzOiBPYmplY3QgPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJjb2RlXCJ9O1xyXG4gIHB1YmxpYyBjb3VudHJ5TW9kZWw6IENvdW50cnk7XHJcblxyXG4gIHB1YmxpYyBwb3N0YWxDb2RlQ2hlY2tFcnJvck1lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBfcHJldlBvc3RhbENvZGVGb3JDaGVjazogc3RyaW5nID0gXCJcIjtcclxuICBwcml2YXRlIF9wcmV2SG91c2VOb0ZvckNoZWNrOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfYWRkcmVzczogQWRkcmVzcyA9IG5ldyBBZGRyZXNzKCk7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlOiBSZWxhdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyU2VydmljZTogRm9ybU1hc3RlclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgcmVsYXRpb25TZXJ2aWNlOiBSZWxhdGlvblNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fcmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlLmdldENvdW50cmllcygpLnRoZW4oKGNvdW50cmllczogQ291bnRyeVtdKSA9PiB7XHJcbiAgICAgIHRoaXMuY291bnRyaWVzID0gY291bnRyaWVzO1xyXG4gICAgICB0aGlzLl9zZXRTZWxlY3RlZEFkZHJlc3MoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNoZWNrRm9yUG9zdGFsQ29kZUNoZWNrRXJyb3IoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuYWRkcmVzcy5wb3N0YWxDb2RlIHx8IGlzTmlsbCh0aGlzLmFkZHJlc3MuaG91c2VObykpIHtcclxuICAgICAgdGhpcy5wb3N0YWxDb2RlQ2hlY2tFcnJvck1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX3ByZXZQb3N0YWxDb2RlRm9yQ2hlY2sgIT09IHRoaXMuYWRkcmVzcy5wb3N0YWxDb2RlIHx8IHRoaXMuX3ByZXZIb3VzZU5vRm9yQ2hlY2sgIT09IHRoaXMuYWRkcmVzcy5ob3VzZU5vKSB7XHJcbiAgICAgIHRoaXMuX3ByZXZQb3N0YWxDb2RlRm9yQ2hlY2sgPSB0aGlzLmFkZHJlc3MucG9zdGFsQ29kZTtcclxuICAgICAgdGhpcy5fcHJldkhvdXNlTm9Gb3JDaGVjayA9IHRoaXMuYWRkcmVzcy5ob3VzZU5vO1xyXG4gICAgICBjb25zdCBwb3N0YWxDb2RlUmVzcG9uc2U6IEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXMgPSBhd2FpdCB0aGlzLl9yZWxhdGlvbkNvbm5lY3RvclNlcnZpY2UuZ2V0UG9zdGFsQ29kZVJldHJpZXZhbCgodGhpcy5hZGRyZXNzLnBvc3RhbENvZGUgPyB0aGlzLmFkZHJlc3MucG9zdGFsQ29kZSA6IFwiXCIpLFxyXG4gICAgICAgIFN0cmluZ1V0aWxzLlBhcnNlU3RyaW5nKHRoaXMuYWRkcmVzcy5ob3VzZU5vKSk7XHJcbiAgICAgIGlmIChwb3N0YWxDb2RlUmVzcG9uc2UgJiYgcG9zdGFsQ29kZVJlc3BvbnNlLmlzQmFkQWRkcmVzcykge1xyXG4gICAgICAgIHRoaXMucG9zdGFsQ29kZUNoZWNrRXJyb3JNZXNzYWdlID0gdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJVTktOT1dOX0FERFJFU1NfQ0hFQ0tfSVRcIik7XHJcbiAgICAgIH0gZWxzZSBpZiAocG9zdGFsQ29kZVJlc3BvbnNlLnN0YXR1cyAmJiBwb3N0YWxDb2RlUmVzcG9uc2Uuc3RhdHVzLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImZvdXRcIikgPCAwKSB7XHJcbiAgICAgICAgdGhpcy5wb3N0YWxDb2RlQ2hlY2tFcnJvck1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzcy5zdHJlZXROYW1lID0gcG9zdGFsQ29kZVJlc3BvbnNlLnN0cmVldDtcclxuICAgICAgICB0aGlzLmFkZHJlc3MuY2l0eSA9IHBvc3RhbENvZGVSZXNwb25zZS5jaXR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlSG91c2VObygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmFkZHJlc3MpIHtcclxuICAgICAgdGhpcy5hZGRyZXNzLmhvdXNlTm8gPSBOdW1iZXIodGhpcy5hZGRyZXNzLmhvdXNlTm8pO1xyXG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LmhvdXNlTnIgPSB0aGlzLmFkZHJlc3MuaG91c2VObztcclxuICAgICAgLy8gdGhpcy5pbnB1dENoYW5nZUZvclN1Z2dlc3Rpb25zLm5leHQodGhpcy5zdWdnZXN0aW9uUmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ291bnRyeUNoYW5nZShjb3VudHJ5OiBDb3VudHJ5KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvdW50cnlNb2RlbCA9IGNvdW50cnk7XHJcbiAgICBpZiAodGhpcy5hZGRyZXNzKSB7XHJcbiAgICAgIHRoaXMuYWRkcmVzcy5jb3VudHJ5SWQgPSB0aGlzLmNvdW50cnlNb2RlbC5jb2RlO1xyXG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LmNvdW50cnkgPSBjb3VudHJ5LmRlc2NyaXB0aW9uO1xyXG4gICAgICAvLyB0aGlzLmlucHV0Q2hhbmdlRm9yU3VnZ2VzdGlvbnMubmV4dCh0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVQb3N0YWxDb2RlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWRkcmVzcykge1xyXG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LnBvc3RhbENvZGUgPSB0aGlzLmFkZHJlc3MucG9zdGFsQ29kZTtcclxuICAgICAgLy8gdGhpcy5pbnB1dENoYW5nZUZvclN1Z2dlc3Rpb25zLm5leHQodGhpcy5zdWdnZXN0aW9uUmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU3RyZWV0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWRkcmVzcykge1xyXG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LnN0cmVldCA9IHRoaXMuYWRkcmVzcy5zdHJlZXROYW1lO1xyXG4gICAgICAvLyB0aGlzLmlucHV0Q2hhbmdlRm9yU3VnZ2VzdGlvbnMubmV4dCh0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDaXR5Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYWRkcmVzcykge1xyXG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LmNpdHkgPSB0aGlzLmFkZHJlc3MuY2l0eTtcclxuICAgICAgLy8gdGhpcy5pbnB1dENoYW5nZUZvclN1Z2dlc3Rpb25zLm5leHQodGhpcy5zdWdnZXN0aW9uUmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRTZWxlY3RlZEFkZHJlc3MoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWRkcmVzcyB8fCAhdGhpcy5jb3VudHJpZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmFkZHJlc3MuY291bnRyeUlkKSB7XHJcbiAgICAgIHRoaXMuYWRkcmVzcy5jb3VudHJ5SWQgPSBcIk5MXCI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvdW50cnlNb2RlbCA9IHRoaXMuY291bnRyaWVzLmZpbmQoYyA9PiBjLmNvZGUgPT09IHRoaXMuYWRkcmVzcy5jb3VudHJ5SWQpO1xyXG4gIH1cclxufSBcclxuIl19
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { Address } from '@colijnit/relationapi/build/model/address.bo';
|
|
4
|
+
import { DictionaryService } from '../../service/dictionary.service';
|
|
5
|
+
import { FormMasterService } from '@colijnit/corecomponents_v12';
|
|
6
|
+
import { RelationService } from '../../service/relation.service';
|
|
7
|
+
import { RelationConnectorService } from '../../service/relation-connector.service';
|
|
8
|
+
import { isNill } from '@colijnit/ioneconnector/build/utils/function/is-nill.function';
|
|
9
|
+
import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
|
|
10
|
+
export class RelationAddressComponent {
|
|
11
|
+
constructor(_dictionary, _relationConnectorService, _formMasterService, relationService) {
|
|
12
|
+
this._dictionary = _dictionary;
|
|
13
|
+
this._relationConnectorService = _relationConnectorService;
|
|
14
|
+
this._formMasterService = _formMasterService;
|
|
15
|
+
this.relationService = relationService;
|
|
16
|
+
this.addressChange = new EventEmitter();
|
|
17
|
+
this.countries = [];
|
|
18
|
+
this.fields = { text: "description", value: "code" };
|
|
19
|
+
this.postalCodeCheckErrorMessage = "";
|
|
20
|
+
this._prevPostalCodeForCheck = "";
|
|
21
|
+
this._address = new Address();
|
|
22
|
+
}
|
|
23
|
+
set address(value) {
|
|
24
|
+
this._address = value;
|
|
25
|
+
this._setSelectedAddress();
|
|
26
|
+
}
|
|
27
|
+
get address() {
|
|
28
|
+
return this._address;
|
|
29
|
+
}
|
|
30
|
+
showClass() {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
this._relationConnectorService.getCountries().then((countries) => {
|
|
36
|
+
this.countries = countries;
|
|
37
|
+
this._setSelectedAddress();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
checkForPostalCodeCheckError() {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
if (!this.address.postalCode || isNill(this.address.houseNo)) {
|
|
44
|
+
this.postalCodeCheckErrorMessage = "";
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (this._prevPostalCodeForCheck !== this.address.postalCode || this._prevHouseNoForCheck !== this.address.houseNo) {
|
|
48
|
+
this._prevPostalCodeForCheck = this.address.postalCode;
|
|
49
|
+
this._prevHouseNoForCheck = this.address.houseNo;
|
|
50
|
+
const postalCodeResponse = yield this._relationConnectorService.getPostalCodeRetrieval((this.address.postalCode ? this.address.postalCode : ""), StringUtils.ParseString(this.address.houseNo));
|
|
51
|
+
if (postalCodeResponse && postalCodeResponse.isBadAddress) {
|
|
52
|
+
this.postalCodeCheckErrorMessage = this._dictionary.get("UNKNOWN_ADDRESS_CHECK_IT");
|
|
53
|
+
}
|
|
54
|
+
else if (postalCodeResponse.status && postalCodeResponse.status.toLowerCase().indexOf("fout") < 0) {
|
|
55
|
+
this.postalCodeCheckErrorMessage = "";
|
|
56
|
+
this.address.streetName = postalCodeResponse.street;
|
|
57
|
+
this.address.city = postalCodeResponse.city;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
changeHouseNo() {
|
|
63
|
+
if (this.address) {
|
|
64
|
+
this.address.houseNo = Number(this.address.houseNo);
|
|
65
|
+
// this.suggestionRequest.houseNr = this.address.houseNo;
|
|
66
|
+
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
handleCountryChange(country) {
|
|
70
|
+
this.countryModel = country;
|
|
71
|
+
if (this.address) {
|
|
72
|
+
this.address.countryId = this.countryModel.code;
|
|
73
|
+
// this.suggestionRequest.country = country.description;
|
|
74
|
+
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
handlePostalCodeChange() {
|
|
78
|
+
if (this.address) {
|
|
79
|
+
// this.suggestionRequest.postalCode = this.address.postalCode;
|
|
80
|
+
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
handleStreetChange() {
|
|
84
|
+
if (this.address) {
|
|
85
|
+
// this.suggestionRequest.street = this.address.streetName;
|
|
86
|
+
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
handleCityChange() {
|
|
90
|
+
if (this.address) {
|
|
91
|
+
// this.suggestionRequest.city = this.address.city;
|
|
92
|
+
// this.inputChangeForSuggestions.next(this.suggestionRequest);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
_setSelectedAddress() {
|
|
96
|
+
if (!this.address || !this.countries) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (!this.address.countryId) {
|
|
100
|
+
this.address.countryId = "NL";
|
|
101
|
+
}
|
|
102
|
+
this.countryModel = this.countries.find(c => c.code === this.address.countryId);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
RelationAddressComponent.decorators = [
|
|
106
|
+
{ type: Component, args: [{
|
|
107
|
+
selector: 'co-relation-address',
|
|
108
|
+
template: `
|
|
109
|
+
<div class="relation-address-data-row">
|
|
110
|
+
<co-input-text
|
|
111
|
+
[(model)]="address.postalCode"
|
|
112
|
+
[placeholder]="'POSTAL_CODE' | reLocalize"
|
|
113
|
+
(blur)="checkForPostalCodeCheckError()"
|
|
114
|
+
(modelChange)="handlePostalCodeChange()"
|
|
115
|
+
required
|
|
116
|
+
></co-input-text>
|
|
117
|
+
<co-input-text class="default-width"
|
|
118
|
+
[(model)]="address.houseNo"
|
|
119
|
+
[placeholder]="'HOUSE_NO' | reLocalize"
|
|
120
|
+
[digitsOnly]="true"
|
|
121
|
+
(blur)="checkForPostalCodeCheckError()"
|
|
122
|
+
(modelChange)="changeHouseNo()"
|
|
123
|
+
required
|
|
124
|
+
></co-input-text>
|
|
125
|
+
<co-input-text
|
|
126
|
+
[(model)]="address.houseNoAddition"
|
|
127
|
+
[placeholder]="'HOUSE_NO_ADDITION' | reLocalize"
|
|
128
|
+
></co-input-text>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="relation-address-data-row">
|
|
131
|
+
<co-input-text
|
|
132
|
+
[(model)]="address.streetName"
|
|
133
|
+
[placeholder]="'STREET' | reLocalize" required
|
|
134
|
+
(modelChange)="handleStreetChange()"></co-input-text>
|
|
135
|
+
<co-input-text
|
|
136
|
+
[(model)]="address.city"
|
|
137
|
+
[placeholder]="'CITY' | reLocalize" required
|
|
138
|
+
(modelChange)="handleCityChange()"></co-input-text>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="relation-address-data-row default single">
|
|
141
|
+
<co-list-of-values
|
|
142
|
+
[model]="countryModel"
|
|
143
|
+
[collection]="countries"
|
|
144
|
+
[displayField]="'description'"
|
|
145
|
+
[label]="'COUNTRY' | reLocalize"
|
|
146
|
+
[required]="true"
|
|
147
|
+
(modelChange)="handleCountryChange($event)"
|
|
148
|
+
></co-list-of-values>
|
|
149
|
+
</div>
|
|
150
|
+
`,
|
|
151
|
+
encapsulation: ViewEncapsulation.None
|
|
152
|
+
},] }
|
|
153
|
+
];
|
|
154
|
+
RelationAddressComponent.ctorParameters = () => [
|
|
155
|
+
{ type: DictionaryService },
|
|
156
|
+
{ type: RelationConnectorService },
|
|
157
|
+
{ type: FormMasterService },
|
|
158
|
+
{ type: RelationService }
|
|
159
|
+
];
|
|
160
|
+
RelationAddressComponent.propDecorators = {
|
|
161
|
+
configNames: [{ type: Input }],
|
|
162
|
+
address: [{ type: Input }],
|
|
163
|
+
addressChange: [{ type: Output }],
|
|
164
|
+
showClass: [{ type: HostBinding, args: ["class.co-relation-address",] }]
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZWxhdGlvbi9zcmMvbGliL2NvbXBvbmVudC9yZWxhdGlvbi1hZGRyZXNzL3JlbGF0aW9uLWFkZHJlc3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFFckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUNyRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFrRDdFLE1BQU0sT0FBTyx3QkFBd0I7SUErQm5DLFlBQ1UsV0FBOEIsRUFDOUIseUJBQW1ELEVBQ25ELGtCQUFxQyxFQUNuQyxlQUFnQztRQUhsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQUNuRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ25DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXBCckMsa0JBQWEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU9uRSxjQUFTLEdBQWMsRUFBRSxDQUFDO1FBQzFCLFdBQU0sR0FBVyxFQUFDLElBQUksRUFB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QUNqQixlQUFlOzs7MEJBc0RwQixLQUFLO3NCQUdMLEtBQUs7NEJBVUwsTUFBTTt3QkFHTixXQUFXLFNBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZWxhdGlvbkFkZHJlc3NDZmdOYW1lc30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL3JlbGF0aW9uLWFkZHJlc3MtY2ZnLW5hbWVzLmludGVyZmFjZSc7XG5pbXBvcnQge0FkZHJlc3N9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9hZGRyZXNzLmJvJztcbmltcG9ydCB7Q291bnRyeX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvY291bnRyeS5ibyc7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQge0Zvcm1NYXN0ZXJTZXJ2aWNlfSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcbmltcG9ydCB7UmVsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3JlbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtSZWxhdGlvbkNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvcmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtpc05pbGx9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3V0aWxzL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb24nO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdXRpbHMvc3RyaW5nLXV0aWxzJztcbmltcG9ydCB7R2V0UG9zdGFsQ29kZVJldHJpZXZhbE91dHB1dFBhcmFtc30gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZ2V0LXBvc3RhbC1jb2RlLXJldHJpZXZhbC1vdXRwdXQtcGFyYW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY28tcmVsYXRpb24tYWRkcmVzcycsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1kYXRhLXJvd1wiPlxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJhZGRyZXNzLnBvc3RhbENvZGVcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQT1NUQUxfQ09ERScgfCByZUxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cImNoZWNrRm9yUG9zdGFsQ29kZUNoZWNrRXJyb3IoKVwiXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlUG9zdGFsQ29kZUNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8Y28taW5wdXQtdGV4dCBjbGFzcz1cImRlZmF1bHQtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3MuaG91c2VOb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidIT1VTRV9OTycgfCByZUxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGlnaXRzT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGVja0ZvclBvc3RhbENvZGVDaGVja0Vycm9yKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VIb3VzZU5vKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cbiAgICAgICAgICA8Y28taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiYWRkcmVzcy5ob3VzZU5vQWRkaXRpb25cIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidIT1VTRV9OT19BRERJVElPTicgfCByZUxvY2FsaXplXCJcbiAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1kYXRhLXJvd1wiPlxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJhZGRyZXNzLnN0cmVldE5hbWVcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTVFJFRVQnIHwgcmVMb2NhbGl6ZVwiIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlU3RyZWV0Q2hhbmdlKClcIj48L2NvLWlucHV0LXRleHQ+XG4gICAgICAgICAgPGNvLWlucHV0LXRleHRcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3MuY2l0eVwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NJVFknIHwgcmVMb2NhbGl6ZVwiIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlQ2l0eUNoYW5nZSgpXCI+PC9jby1pbnB1dC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1kYXRhLXJvdyBkZWZhdWx0IHNpbmdsZVwiPlxuICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlc1xuICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImNvdW50cnlNb2RlbFwiXG4gICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJjb3VudHJpZXNcIlxuICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGaWVsZF09XCInZGVzY3JpcHRpb24nXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ09VTlRSWScgfCByZUxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVDb3VudHJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgID48L2NvLWxpc3Qtb2YtdmFsdWVzPlxuICAgICAgPC9kaXY+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRpb25BZGRyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpZ05hbWVzOiBSZWxhdGlvbkFkZHJlc3NDZmdOYW1lcztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFkZHJlc3ModmFsdWU6IEFkZHJlc3MpIHtcbiAgICB0aGlzLl9hZGRyZXNzID0gdmFsdWU7XG4gICAgdGhpcy5fc2V0U2VsZWN0ZWRBZGRyZXNzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZHJlc3MoKTogQWRkcmVzcyB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZHJlc3M7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGFkZHJlc3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBZGRyZXNzPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkcmVzcz4oKTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby1yZWxhdGlvbi1hZGRyZXNzXCIpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgY291bnRyaWVzOiBDb3VudHJ5W10gPSBbXTtcbiAgcHVibGljIGZpZWxkczogT2JqZWN0ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcbiAgcHVibGljIGNvdW50cnlNb2RlbDogQ291bnRyeTtcblxuICBwdWJsaWMgcG9zdGFsQ29kZUNoZWNrRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xuICBwcml2YXRlIF9wcmV2UG9zdGFsQ29kZUZvckNoZWNrOiBzdHJpbmcgPSBcIlwiO1xuICBwcml2YXRlIF9wcmV2SG91c2VOb0ZvckNoZWNrOiBudW1iZXI7XG4gIHByaXZhdGUgX2FkZHJlc3M6IEFkZHJlc3MgPSBuZXcgQWRkcmVzcygpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcbiAgICBwcml2YXRlIF9yZWxhdGlvbkNvbm5lY3RvclNlcnZpY2U6IFJlbGF0aW9uQ29ubmVjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyU2VydmljZTogRm9ybU1hc3RlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlbGF0aW9uU2VydmljZTogUmVsYXRpb25TZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fcmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlLmdldENvdW50cmllcygpLnRoZW4oKGNvdW50cmllczogQ291bnRyeVtdKSA9PiB7XG4gICAgICB0aGlzLmNvdW50cmllcyA9IGNvdW50cmllcztcbiAgICAgIHRoaXMuX3NldFNlbGVjdGVkQWRkcmVzcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoZWNrRm9yUG9zdGFsQ29kZUNoZWNrRXJyb3IoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkZHJlc3MucG9zdGFsQ29kZSB8fCBpc05pbGwodGhpcy5hZGRyZXNzLmhvdXNlTm8pKSB7XG4gICAgICB0aGlzLnBvc3RhbENvZGVDaGVja0Vycm9yTWVzc2FnZSA9IFwiXCI7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ByZXZQb3N0YWxDb2RlRm9yQ2hlY2sgIT09IHRoaXMuYWRkcmVzcy5wb3N0YWxDb2RlIHx8IHRoaXMuX3ByZXZIb3VzZU5vRm9yQ2hlY2sgIT09IHRoaXMuYWRkcmVzcy5ob3VzZU5vKSB7XG4gICAgICB0aGlzLl9wcmV2UG9zdGFsQ29kZUZvckNoZWNrID0gdGhpcy5hZGRyZXNzLnBvc3RhbENvZGU7XG4gICAgICB0aGlzLl9wcmV2SG91c2VOb0ZvckNoZWNrID0gdGhpcy5hZGRyZXNzLmhvdXNlTm87XG4gICAgICBjb25zdCBwb3N0YWxDb2RlUmVzcG9uc2U6IEdldFBvc3RhbENvZGVSZXRyaWV2YWxPdXRwdXRQYXJhbXMgPSBhd2FpdCB0aGlzLl9yZWxhdGlvbkNvbm5lY3RvclNlcnZpY2UuZ2V0UG9zdGFsQ29kZVJldHJpZXZhbCgodGhpcy5hZGRyZXNzLnBvc3RhbENvZGUgPyB0aGlzLmFkZHJlc3MucG9zdGFsQ29kZSA6IFwiXCIpLFxuICAgICAgICBTdHJpbmdVdGlscy5QYXJzZVN0cmluZyh0aGlzLmFkZHJlc3MuaG91c2VObykpO1xuICAgICAgaWYgKHBvc3RhbENvZGVSZXNwb25zZSAmJiBwb3N0YWxDb2RlUmVzcG9uc2UuaXNCYWRBZGRyZXNzKSB7XG4gICAgICAgIHRoaXMucG9zdGFsQ29kZUNoZWNrRXJyb3JNZXNzYWdlID0gdGhpcy5fZGljdGlvbmFyeS5nZXQoXCJVTktOT1dOX0FERFJFU1NfQ0hFQ0tfSVRcIik7XG4gICAgICB9IGVsc2UgaWYgKHBvc3RhbENvZGVSZXNwb25zZS5zdGF0dXMgJiYgcG9zdGFsQ29kZVJlc3BvbnNlLnN0YXR1cy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJmb3V0XCIpIDwgMCkge1xuICAgICAgICB0aGlzLnBvc3RhbENvZGVDaGVja0Vycm9yTWVzc2FnZSA9IFwiXCI7XG4gICAgICAgIHRoaXMuYWRkcmVzcy5zdHJlZXROYW1lID0gcG9zdGFsQ29kZVJlc3BvbnNlLnN0cmVldDtcbiAgICAgICAgdGhpcy5hZGRyZXNzLmNpdHkgPSBwb3N0YWxDb2RlUmVzcG9uc2UuY2l0eTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlSG91c2VObygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hZGRyZXNzKSB7XG4gICAgICB0aGlzLmFkZHJlc3MuaG91c2VObyA9IE51bWJlcih0aGlzLmFkZHJlc3MuaG91c2VObyk7XG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LmhvdXNlTnIgPSB0aGlzLmFkZHJlc3MuaG91c2VObztcbiAgICAgIC8vIHRoaXMuaW5wdXRDaGFuZ2VGb3JTdWdnZXN0aW9ucy5uZXh0KHRoaXMuc3VnZ2VzdGlvblJlcXVlc3QpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDb3VudHJ5Q2hhbmdlKGNvdW50cnk6IENvdW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50cnlNb2RlbCA9IGNvdW50cnk7XG4gICAgaWYgKHRoaXMuYWRkcmVzcykge1xuICAgICAgdGhpcy5hZGRyZXNzLmNvdW50cnlJZCA9IHRoaXMuY291bnRyeU1vZGVsLmNvZGU7XG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LmNvdW50cnkgPSBjb3VudHJ5LmRlc2NyaXB0aW9uO1xuICAgICAgLy8gdGhpcy5pbnB1dENoYW5nZUZvclN1Z2dlc3Rpb25zLm5leHQodGhpcy5zdWdnZXN0aW9uUmVxdWVzdCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVBvc3RhbENvZGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWRkcmVzcykge1xuICAgICAgLy8gdGhpcy5zdWdnZXN0aW9uUmVxdWVzdC5wb3N0YWxDb2RlID0gdGhpcy5hZGRyZXNzLnBvc3RhbENvZGU7XG4gICAgICAvLyB0aGlzLmlucHV0Q2hhbmdlRm9yU3VnZ2VzdGlvbnMubmV4dCh0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU3RyZWV0Q2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFkZHJlc3MpIHtcbiAgICAgIC8vIHRoaXMuc3VnZ2VzdGlvblJlcXVlc3Quc3RyZWV0ID0gdGhpcy5hZGRyZXNzLnN0cmVldE5hbWU7XG4gICAgICAvLyB0aGlzLmlucHV0Q2hhbmdlRm9yU3VnZ2VzdGlvbnMubmV4dCh0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2l0eUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hZGRyZXNzKSB7XG4gICAgICAvLyB0aGlzLnN1Z2dlc3Rpb25SZXF1ZXN0LmNpdHkgPSB0aGlzLmFkZHJlc3MuY2l0eTtcbiAgICAgIC8vIHRoaXMuaW5wdXRDaGFuZ2VGb3JTdWdnZXN0aW9ucy5uZXh0KHRoaXMuc3VnZ2VzdGlvblJlcXVlc3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFNlbGVjdGVkQWRkcmVzcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRkcmVzcyB8fCAhdGhpcy5jb3VudHJpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFkZHJlc3MuY291bnRyeUlkKSB7XG4gICAgICB0aGlzLmFkZHJlc3MuY291bnRyeUlkID0gXCJOTFwiO1xuICAgIH1cbiAgICB0aGlzLmNvdW50cnlNb2RlbCA9IHRoaXMuY291bnRyaWVzLmZpbmQoYyA9PiBjLmNvZGUgPT09IHRoaXMuYWRkcmVzcy5jb3VudHJ5SWQpO1xuICB9XG59IFxuIl19
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { RelationAddressComponent } from './relation-address.component';
|
|
4
|
-
import { InputTextModule, ListOfValuesModule } from '@colijnit/corecomponents_v12';
|
|
5
|
-
import { RelationTranslationModule } from '../../translation/relation-translation.module';
|
|
6
|
-
export class RelationAddressModule {
|
|
7
|
-
}
|
|
8
|
-
RelationAddressModule.decorators = [
|
|
9
|
-
{ type: NgModule, args: [{
|
|
10
|
-
imports: [
|
|
11
|
-
CommonModule,
|
|
12
|
-
RelationTranslationModule,
|
|
13
|
-
InputTextModule,
|
|
14
|
-
ListOfValuesModule
|
|
15
|
-
],
|
|
16
|
-
declarations: [
|
|
17
|
-
RelationAddressComponent
|
|
18
|
-
],
|
|
19
|
-
exports: [
|
|
20
|
-
RelationAddressComponent
|
|
21
|
-
]
|
|
22
|
-
},] }
|
|
23
|
-
];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RelationAddressComponent } from './relation-address.component';
|
|
4
|
+
import { InputTextModule, ListOfValuesModule } from '@colijnit/corecomponents_v12';
|
|
5
|
+
import { RelationTranslationModule } from '../../translation/relation-translation.module';
|
|
6
|
+
export class RelationAddressModule {
|
|
7
|
+
}
|
|
8
|
+
RelationAddressModule.decorators = [
|
|
9
|
+
{ type: NgModule, args: [{
|
|
10
|
+
imports: [
|
|
11
|
+
CommonModule,
|
|
12
|
+
RelationTranslationModule,
|
|
13
|
+
InputTextModule,
|
|
14
|
+
ListOfValuesModule
|
|
15
|
+
],
|
|
16
|
+
declarations: [
|
|
17
|
+
RelationAddressComponent
|
|
18
|
+
],
|
|
19
|
+
exports: [
|
|
20
|
+
RelationAddressComponent
|
|
21
|
+
]
|
|
22
|
+
},] }
|
|
23
|
+
];
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYWRkcmVzcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZWxhdGlvbi9zcmMvbGliL2NvbXBvbmVudC9yZWxhdGlvbi1hZGRyZXNzL3JlbGF0aW9uLWFkZHJlc3MubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQWdCeEYsTUFBTSxPQUFPLHFCQUFxQjs7O1lBZGpDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWix5QkFBeUI7b0JBQ3pCLGVBQWU7b0JBQ2Ysa0JBQWtCO2lCQUNuQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osd0JBQXdCO2lCQUN6QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1Asd0JBQXdCO2lCQUN6QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UmVsYXRpb25BZGRyZXNzQ29tcG9uZW50fSBmcm9tICcuL3JlbGF0aW9uLWFkZHJlc3MuY29tcG9uZW50JztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlLCBMaXN0T2ZWYWx1ZXNNb2R1bGV9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xuaW1wb3J0IHtSZWxhdGlvblRyYW5zbGF0aW9uTW9kdWxlfSBmcm9tICcuLi8uLi90cmFuc2xhdGlvbi9yZWxhdGlvbi10cmFuc2xhdGlvbi5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlbGF0aW9uVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgIExpc3RPZlZhbHVlc01vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBSZWxhdGlvbkFkZHJlc3NDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJlbGF0aW9uQWRkcmVzc0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJlbGF0aW9uQWRkcmVzc01vZHVsZSB7XG59XG4iXX0=
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { Icon } from '../../enum/icon.enum';
|
|
3
|
-
import { IconCacheService } from '../../service/icon-cache.service';
|
|
4
|
-
export class RelationAddressTileComponent {
|
|
5
|
-
constructor(iconCacheService) {
|
|
6
|
-
this.iconCacheService = iconCacheService;
|
|
7
|
-
this.icons = Icon;
|
|
8
|
-
this.showClass = true;
|
|
9
|
-
this.readonly = false;
|
|
10
|
-
this.selected = false;
|
|
11
|
-
this.actAsAddTile = false;
|
|
12
|
-
this.selectedChange = new EventEmitter();
|
|
13
|
-
this.addAddressClicked = new EventEmitter();
|
|
14
|
-
this.editAddressClicked = new EventEmitter();
|
|
15
|
-
}
|
|
16
|
-
handleEditAddressClick(event) {
|
|
17
|
-
event.preventDefault();
|
|
18
|
-
event.stopPropagation();
|
|
19
|
-
event.stopImmediatePropagation();
|
|
20
|
-
this.editAddressClicked.next(this.address);
|
|
21
|
-
}
|
|
22
|
-
handleSelectedChange(address) {
|
|
23
|
-
if (!this.readonly) {
|
|
24
|
-
this.selected = true;
|
|
25
|
-
this.selectedChange.emit(address);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
RelationAddressTileComponent.decorators = [
|
|
30
|
-
{ type: Component, args: [{
|
|
31
|
-
selector: "co-relation-address-tile",
|
|
32
|
-
template: `
|
|
33
|
-
<ng-container *ngIf="!actAsAddTile">
|
|
34
|
-
<co-tile-select [selected]="selected" [readonly]="readonly" (selectedChange)="handleSelectedChange(address)">
|
|
35
|
-
<div class="relation-content-wrapper">
|
|
36
|
-
<span class="relation-address-type" [textContent]="address.displayType | reLocalize"></span>
|
|
37
|
-
<span class="relation-address-name" [textContent]="address.addressName"></span>
|
|
38
|
-
<span class="relation-address-address" [textContent]="address.displayAddress"></span>
|
|
39
|
-
<span class="relation-address-postal" [textContent]="address.displayPostal"></span>
|
|
40
|
-
<span class="relation-address-country" [textContent]="address.displayCountry"></span>
|
|
41
|
-
</div>
|
|
42
|
-
<div class="relation-address-edit" (click)="handleEditAddressClick($event)">
|
|
43
|
-
<co-icon class="relation-address-edit-icon" [iconData]="iconCacheService.getIcon(icons.PencilRoundOpen)"></co-icon>
|
|
44
|
-
</div>
|
|
45
|
-
</co-tile-select>
|
|
46
|
-
</ng-container>
|
|
47
|
-
<ng-container *ngIf="actAsAddTile && !readonly">
|
|
48
|
-
<co-tile (click)="addAddressClicked.emit()">
|
|
49
|
-
<div class="relation-content-wrapper">
|
|
50
|
-
<co-icon class="relation-address-icon" [iconData]="iconCacheService.getIcon(icons.PlusSimple)"></co-icon>
|
|
51
|
-
<span [textContent]="'ADDRESS_ADD' | reLocalize"></span>
|
|
52
|
-
</div>
|
|
53
|
-
</co-tile>
|
|
54
|
-
</ng-container>
|
|
55
|
-
`,
|
|
56
|
-
encapsulation: ViewEncapsulation.None
|
|
57
|
-
},] }
|
|
58
|
-
];
|
|
59
|
-
RelationAddressTileComponent.ctorParameters = () => [
|
|
60
|
-
{ type: IconCacheService }
|
|
61
|
-
];
|
|
62
|
-
RelationAddressTileComponent.propDecorators = {
|
|
63
|
-
showClass: [{ type: HostBinding, args: ["class.co-relation-address-tile",] }],
|
|
64
|
-
address: [{ type: Input }],
|
|
65
|
-
readonly: [{ type: Input }],
|
|
66
|
-
selected: [{ type: Input }],
|
|
67
|
-
actAsAddTile: [{ type: Input }],
|
|
68
|
-
selectedChange: [{ type: Output }],
|
|
69
|
-
addAddressClicked: [{ type: Output }],
|
|
70
|
-
editAddressClicked: [{ type: Output }]
|
|
71
|
-
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { Icon } from '../../enum/icon.enum';
|
|
3
|
+
import { IconCacheService } from '../../service/icon-cache.service';
|
|
4
|
+
export class RelationAddressTileComponent {
|
|
5
|
+
constructor(iconCacheService) {
|
|
6
|
+
this.iconCacheService = iconCacheService;
|
|
7
|
+
this.icons = Icon;
|
|
8
|
+
this.showClass = true;
|
|
9
|
+
this.readonly = false;
|
|
10
|
+
this.selected = false;
|
|
11
|
+
this.actAsAddTile = false;
|
|
12
|
+
this.selectedChange = new EventEmitter();
|
|
13
|
+
this.addAddressClicked = new EventEmitter();
|
|
14
|
+
this.editAddressClicked = new EventEmitter();
|
|
15
|
+
}
|
|
16
|
+
handleEditAddressClick(event) {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
event.stopPropagation();
|
|
19
|
+
event.stopImmediatePropagation();
|
|
20
|
+
this.editAddressClicked.next(this.address);
|
|
21
|
+
}
|
|
22
|
+
handleSelectedChange(address) {
|
|
23
|
+
if (!this.readonly) {
|
|
24
|
+
this.selected = true;
|
|
25
|
+
this.selectedChange.emit(address);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
RelationAddressTileComponent.decorators = [
|
|
30
|
+
{ type: Component, args: [{
|
|
31
|
+
selector: "co-relation-address-tile",
|
|
32
|
+
template: `
|
|
33
|
+
<ng-container *ngIf="!actAsAddTile">
|
|
34
|
+
<co-tile-select [selected]="selected" [readonly]="readonly" (selectedChange)="handleSelectedChange(address)">
|
|
35
|
+
<div class="relation-content-wrapper">
|
|
36
|
+
<span class="relation-address-type" [textContent]="address.displayType | reLocalize"></span>
|
|
37
|
+
<span class="relation-address-name" [textContent]="address.addressName"></span>
|
|
38
|
+
<span class="relation-address-address" [textContent]="address.displayAddress"></span>
|
|
39
|
+
<span class="relation-address-postal" [textContent]="address.displayPostal"></span>
|
|
40
|
+
<span class="relation-address-country" [textContent]="address.displayCountry"></span>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="relation-address-edit" (click)="handleEditAddressClick($event)">
|
|
43
|
+
<co-icon class="relation-address-edit-icon" [iconData]="iconCacheService.getIcon(icons.PencilRoundOpen)"></co-icon>
|
|
44
|
+
</div>
|
|
45
|
+
</co-tile-select>
|
|
46
|
+
</ng-container>
|
|
47
|
+
<ng-container *ngIf="actAsAddTile && !readonly">
|
|
48
|
+
<co-tile (click)="addAddressClicked.emit()">
|
|
49
|
+
<div class="relation-content-wrapper">
|
|
50
|
+
<co-icon class="relation-address-icon" [iconData]="iconCacheService.getIcon(icons.PlusSimple)"></co-icon>
|
|
51
|
+
<span [textContent]="'ADDRESS_ADD' | reLocalize"></span>
|
|
52
|
+
</div>
|
|
53
|
+
</co-tile>
|
|
54
|
+
</ng-container>
|
|
55
|
+
`,
|
|
56
|
+
encapsulation: ViewEncapsulation.None
|
|
57
|
+
},] }
|
|
58
|
+
];
|
|
59
|
+
RelationAddressTileComponent.ctorParameters = () => [
|
|
60
|
+
{ type: IconCacheService }
|
|
61
|
+
];
|
|
62
|
+
RelationAddressTileComponent.propDecorators = {
|
|
63
|
+
showClass: [{ type: HostBinding, args: ["class.co-relation-address-tile",] }],
|
|
64
|
+
address: [{ type: Input }],
|
|
65
|
+
readonly: [{ type: Input }],
|
|
66
|
+
selected: [{ type: Input }],
|
|
67
|
+
actAsAddTile: [{ type: Input }],
|
|
68
|
+
selectedChange: [{ type: Output }],
|
|
69
|
+
addAddressClicked: [{ type: Output }],
|
|
70
|
+
editAddressClicked: [{ type: Output }]
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYWRkcmVzcy10aWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlbGF0aW9uL3NyYy9saWIvY29tcG9uZW50L3JlbGF0aW9uLWFkZHJlc3MtdGlsZS9yZWxhdGlvbi1hZGRyZXNzLXRpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQThCbEUsTUFBTSxPQUFPLDRCQUE0QjtJQTJCdkMsWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUExQnJDLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBR25DLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFNMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRzlCLG1CQUFjLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFHcEUsc0JBQWlCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHakUsdUJBQWtCLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFHL0UsQ0FBQztJQUVNLHNCQUFzQixDQUFDLEtBQWlCO1FBQzdDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLG9CQUFvQixDQUFDLE9BQWdCO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQzs7O1lBdEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUE3Qk8sZ0JBQWdCOzs7d0JBaUNyQixXQUFXLFNBQUMsZ0NBQWdDO3NCQUc1QyxLQUFLO3VCQUdMLEtBQUs7dUJBR0wsS0FBSzsyQkFHTCxLQUFLOzZCQUdMLE1BQU07Z0NBR04sTUFBTTtpQ0FHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWRkcmVzc30gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2FkZHJlc3MuYm8nO1xuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvLXJlbGF0aW9uLWFkZHJlc3MtdGlsZVwiLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3RBc0FkZFRpbGVcIj5cbiAgICAgICAgICA8Y28tdGlsZS1zZWxlY3QgW3NlbGVjdGVkXT1cInNlbGVjdGVkXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkQ2hhbmdlKGFkZHJlc3MpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1jb250ZW50LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy10eXBlXCIgW3RleHRDb250ZW50XT1cImFkZHJlc3MuZGlzcGxheVR5cGUgfCByZUxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGlvbi1hZGRyZXNzLW5hbWVcIiBbdGV4dENvbnRlbnRdPVwiYWRkcmVzcy5hZGRyZXNzTmFtZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1hZGRyZXNzXCIgW3RleHRDb250ZW50XT1cImFkZHJlc3MuZGlzcGxheUFkZHJlc3NcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aW9uLWFkZHJlc3MtcG9zdGFsXCIgW3RleHRDb250ZW50XT1cImFkZHJlc3MuZGlzcGxheVBvc3RhbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1jb3VudHJ5XCIgW3RleHRDb250ZW50XT1cImFkZHJlc3MuZGlzcGxheUNvdW50cnlcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1lZGl0XCIgKGNsaWNrKT1cImhhbmRsZUVkaXRBZGRyZXNzQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJyZWxhdGlvbi1hZGRyZXNzLWVkaXQtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUGVuY2lsUm91bmRPcGVuKVwiPjwvY28taWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9jby10aWxlLXNlbGVjdD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdEFzQWRkVGlsZSAmJiAhcmVhZG9ubHlcIj5cbiAgICAgICAgICA8Y28tdGlsZSAoY2xpY2spPVwiYWRkQWRkcmVzc0NsaWNrZWQuZW1pdCgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGlvbi1jb250ZW50LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwicmVsYXRpb24tYWRkcmVzcy1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QbHVzU2ltcGxlKVwiPjwvY28taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInQUREUkVTU19BREQnIHwgcmVMb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9jby10aWxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRpb25BZGRyZXNzVGlsZUNvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXJlbGF0aW9uLWFkZHJlc3MtdGlsZVwiKVxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYWRkcmVzczogQWRkcmVzcztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYWN0QXNBZGRUaWxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZENoYW5nZTogRXZlbnRFbWl0dGVyPEFkZHJlc3M+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRyZXNzPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWRkQWRkcmVzc0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGVkaXRBZGRyZXNzQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEFkZHJlc3M+ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRyZXNzPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRWRpdEFkZHJlc3NDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5lZGl0QWRkcmVzc0NsaWNrZWQubmV4dCh0aGlzLmFkZHJlc3MpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNlbGVjdGVkQ2hhbmdlKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KGFkZHJlc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
|