@skyux/phone-field 5.7.2 → 6.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/index.mjs +8 -0
- package/esm2020/lib/modules/phone-field/phone-field-adapter.service.mjs +64 -0
- package/esm2020/lib/modules/phone-field/phone-field-input.directive.mjs +280 -0
- package/esm2020/lib/modules/phone-field/phone-field.component.mjs +332 -0
- package/esm2020/lib/modules/phone-field/phone-field.module.mjs +50 -0
- package/esm2020/lib/modules/phone-field/types/country.mjs +2 -0
- package/esm2020/lib/modules/phone-field/types/number-return-format.mjs +2 -0
- package/esm2020/lib/modules/shared/sky-phone-field-resources.module.mjs +60 -0
- package/esm2020/skyux-phone-field.mjs +5 -0
- package/esm2020/testing/phonefield/phone-field-fixture.mjs +160 -0
- package/esm2020/testing/phonefield/phone-field-testing.module.mjs +27 -0
- package/esm2020/testing/public-api.mjs +3 -0
- package/esm2020/testing/skyux-phone-field-testing.mjs +5 -0
- package/fesm2015/{skyux-phone-field-testing.js → skyux-phone-field-testing.mjs} +5 -5
- package/fesm2015/skyux-phone-field-testing.mjs.map +1 -0
- package/fesm2015/skyux-phone-field.mjs +771 -0
- package/fesm2015/skyux-phone-field.mjs.map +1 -0
- package/fesm2020/skyux-phone-field-testing.mjs +194 -0
- package/fesm2020/skyux-phone-field-testing.mjs.map +1 -0
- package/{fesm2015/skyux-phone-field.js → fesm2020/skyux-phone-field.mjs} +22 -30
- package/fesm2020/skyux-phone-field.mjs.map +1 -0
- package/package.json +42 -18
- package/testing/package.json +5 -5
- package/bundles/skyux-phone-field-testing.umd.js +0 -658
- package/bundles/skyux-phone-field.umd.js +0 -1162
- package/esm2015/index.js +0 -8
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/modules/phone-field/phone-field-adapter.service.js +0 -64
- package/esm2015/lib/modules/phone-field/phone-field-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/phone-field/phone-field-input.directive.js +0 -280
- package/esm2015/lib/modules/phone-field/phone-field-input.directive.js.map +0 -1
- package/esm2015/lib/modules/phone-field/phone-field.component.js +0 -340
- package/esm2015/lib/modules/phone-field/phone-field.component.js.map +0 -1
- package/esm2015/lib/modules/phone-field/phone-field.module.js +0 -50
- package/esm2015/lib/modules/phone-field/phone-field.module.js.map +0 -1
- package/esm2015/lib/modules/phone-field/types/country.js +0 -2
- package/esm2015/lib/modules/phone-field/types/country.js.map +0 -1
- package/esm2015/lib/modules/phone-field/types/number-return-format.js +0 -2
- package/esm2015/lib/modules/phone-field/types/number-return-format.js.map +0 -1
- package/esm2015/lib/modules/shared/sky-phone-field-resources.module.js +0 -60
- package/esm2015/lib/modules/shared/sky-phone-field-resources.module.js.map +0 -1
- package/esm2015/skyux-phone-field.js +0 -5
- package/esm2015/skyux-phone-field.js.map +0 -1
- package/esm2015/testing/phonefield/phone-field-fixture.js +0 -185
- package/esm2015/testing/phonefield/phone-field-fixture.js.map +0 -1
- package/esm2015/testing/phonefield/phone-field-testing.module.js +0 -27
- package/esm2015/testing/phonefield/phone-field-testing.module.js.map +0 -1
- package/esm2015/testing/public-api.js +0 -3
- package/esm2015/testing/public-api.js.map +0 -1
- package/esm2015/testing/skyux-phone-field-testing.js +0 -5
- package/esm2015/testing/skyux-phone-field-testing.js.map +0 -1
- package/fesm2015/skyux-phone-field-testing.js.map +0 -1
- package/fesm2015/skyux-phone-field.js.map +0 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { SkyI18nModule } from '@skyux/i18n';
|
|
5
|
+
import { SkyIconModule } from '@skyux/indicators';
|
|
6
|
+
import { SkyCountryFieldModule } from '@skyux/lookup';
|
|
7
|
+
import { SkyThemeModule } from '@skyux/theme';
|
|
8
|
+
import { SkyPhoneFieldResourcesModule } from '../shared/sky-phone-field-resources.module';
|
|
9
|
+
import { SkyPhoneFieldInputDirective } from './phone-field-input.directive';
|
|
10
|
+
import { SkyPhoneFieldComponent } from './phone-field.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class SkyPhoneFieldModule {
|
|
13
|
+
}
|
|
14
|
+
SkyPhoneFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
SkyPhoneFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldModule, declarations: [SkyPhoneFieldComponent, SkyPhoneFieldInputDirective], imports: [CommonModule,
|
|
16
|
+
FormsModule,
|
|
17
|
+
ReactiveFormsModule,
|
|
18
|
+
SkyCountryFieldModule,
|
|
19
|
+
SkyI18nModule,
|
|
20
|
+
SkyIconModule,
|
|
21
|
+
SkyPhoneFieldResourcesModule,
|
|
22
|
+
SkyThemeModule], exports: [SkyPhoneFieldComponent, SkyPhoneFieldInputDirective] });
|
|
23
|
+
SkyPhoneFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldModule, imports: [[
|
|
24
|
+
CommonModule,
|
|
25
|
+
FormsModule,
|
|
26
|
+
ReactiveFormsModule,
|
|
27
|
+
SkyCountryFieldModule,
|
|
28
|
+
SkyI18nModule,
|
|
29
|
+
SkyIconModule,
|
|
30
|
+
SkyPhoneFieldResourcesModule,
|
|
31
|
+
SkyThemeModule,
|
|
32
|
+
]] });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldModule, decorators: [{
|
|
34
|
+
type: NgModule,
|
|
35
|
+
args: [{
|
|
36
|
+
declarations: [SkyPhoneFieldComponent, SkyPhoneFieldInputDirective],
|
|
37
|
+
imports: [
|
|
38
|
+
CommonModule,
|
|
39
|
+
FormsModule,
|
|
40
|
+
ReactiveFormsModule,
|
|
41
|
+
SkyCountryFieldModule,
|
|
42
|
+
SkyI18nModule,
|
|
43
|
+
SkyIconModule,
|
|
44
|
+
SkyPhoneFieldResourcesModule,
|
|
45
|
+
SkyThemeModule,
|
|
46
|
+
],
|
|
47
|
+
exports: [SkyPhoneFieldComponent, SkyPhoneFieldInputDirective],
|
|
48
|
+
}]
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bob25lLWZpZWxkL3NyYy9saWIvbW9kdWxlcy9waG9uZS1maWVsZC9waG9uZS1maWVsZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTFGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWdCakUsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQWJmLHNCQUFzQixFQUFFLDJCQUEyQixhQUVoRSxZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsYUFBYTtRQUNiLGFBQWE7UUFDYiw0QkFBNEI7UUFDNUIsY0FBYyxhQUVOLHNCQUFzQixFQUFFLDJCQUEyQjtpSEFFbEQsbUJBQW1CLFlBWnJCO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGFBQWE7WUFDYixhQUFhO1lBQ2IsNEJBQTRCO1lBQzVCLGNBQWM7U0FDZjsyRkFHVSxtQkFBbUI7a0JBZC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsMkJBQTJCLENBQUM7b0JBQ25FLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYiw0QkFBNEI7d0JBQzVCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsMkJBQTJCLENBQUM7aUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5Q291bnRyeUZpZWxkTW9kdWxlIH0gZnJvbSAnQHNreXV4L2xvb2t1cCc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreVBob25lRmllbGRSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LXBob25lLWZpZWxkLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lQaG9uZUZpZWxkSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL3Bob25lLWZpZWxkLWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTa3lQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9waG9uZS1maWVsZC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lQaG9uZUZpZWxkQ29tcG9uZW50LCBTa3lQaG9uZUZpZWxkSW5wdXREaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgU2t5Q291bnRyeUZpZWxkTW9kdWxlLFxuICAgIFNreUkxOG5Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lQaG9uZUZpZWxkUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbU2t5UGhvbmVGaWVsZENvbXBvbmVudCwgU2t5UGhvbmVGaWVsZElucHV0RGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UGhvbmVGaWVsZE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9waG9uZS1maWVsZC9zcmMvbGliL21vZHVsZXMvcGhvbmUtZmllbGQvdHlwZXMvY291bnRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTa3lQaG9uZUZpZWxkQ291bnRyeSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGNvdW50cnknc1xuICAgKiBbSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbiBBbHBoYSAyXShodHRwczovL3d3dy5uYXRpb25zb25saW5lLm9yZy9vbmV3b3JsZC9jb3VudHJ5X2NvZGVfbGlzdC5odG0pXG4gICAqIGNvdW50cnkgY29kZS5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBpc28yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGNvdW50cnkncyBpbnRlcm5hdGlvbmFsIGRpYWwgY29kZS5cbiAgICovXG4gIGRpYWxDb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgcGxhY2Vob2xkZXIgdmFsdWUgdG8gZGVtb25zdHJhdGUgdGhlIGNvdW50cnkncyBudW1iZXIgZm9ybWF0LiBUaGlzXG4gICAqIHZhbHVlIGlzIGB1bmRlZmluZWRgIHVudGlsIGEgY291bnRyeSBpcyBzZWxlY3RlZCB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxuICAgKi9cbiAgZXhhbXBsZU51bWJlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgY291bnRyeS5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8vIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3QgZG9jdW1lbnQgdGhlc2UgcHJvcGVydGllcyBhcyB0aGV5IGFyZSBpbnRlcm5hbCB1c2UgcHJvcGVydGllc1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcmlvcml0eT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgYXJlYUNvZGVzPzogc3RyaW5nW107XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXJldHVybi1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGhvbmUtZmllbGQvc3JjL2xpYi9tb2R1bGVzL3Bob25lLWZpZWxkL3R5cGVzL251bWJlci1yZXR1cm4tZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBmb3IgdmFsaWRhdGVkIHBob25lIG51bWJlcnMuIGBkZWZhdWx0YCByZXR1cm5zIHRoZSBuYXRpb25hbCBmb3JtYXQgZm9yIHRoZVxuICogZGVmYXVsdCBjb3VudHJ5LCBgbmF0aW9uYWxgIHJldHVybnMgdGhlIG5hdGlvbmFsIGZvcm1hdCBmb3IgYWxsIGNvdW50cmllcywgYW5kIGBpbnRlcm5hdGlvbmFsYFxuICogcmV0dXJucyB0aGUgaW50ZXJuYXRpb25hbCBmb3JtYXQgZm9yIGFsbCBjb3VudHJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFNreVBob25lRmllbGROdW1iZXJSZXR1cm5Gb3JtYXQgPVxuICB8ICdkZWZhdWx0J1xuICB8ICdpbnRlcm5hdGlvbmFsJ1xuICB8ICduYXRpb25hbCc7XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
3
|
+
* The contents of this file were automatically generated by
|
|
4
|
+
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-phone-field' schematic.
|
|
5
|
+
* To update this file, simply rerun the command.
|
|
6
|
+
*/
|
|
7
|
+
import { NgModule } from '@angular/core';
|
|
8
|
+
import { SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule, getLibStringForLocale, } from '@skyux/i18n';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
const RESOURCES = {
|
|
11
|
+
'EN-US': {
|
|
12
|
+
skyux_phone_field_default_label: { message: 'Phone number' },
|
|
13
|
+
skyux_phone_field_country_search_dismiss: {
|
|
14
|
+
message: 'Dismiss country search',
|
|
15
|
+
},
|
|
16
|
+
skyux_phone_field_country_search_label: {
|
|
17
|
+
message: 'Dismiss country search',
|
|
18
|
+
},
|
|
19
|
+
skyux_phone_field_country_search_placeholder: {
|
|
20
|
+
message: 'Search for a country',
|
|
21
|
+
},
|
|
22
|
+
skyux_phone_field_country_select_label: { message: 'Choose country.' },
|
|
23
|
+
skyux_phone_field_country_selected_label: {
|
|
24
|
+
message: '{0} is currently selected.',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
export class SkyPhoneFieldResourcesProvider {
|
|
29
|
+
getString(localeInfo, name) {
|
|
30
|
+
return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Import into any component library module that needs to use resource strings.
|
|
35
|
+
*/
|
|
36
|
+
export class SkyPhoneFieldResourcesModule {
|
|
37
|
+
}
|
|
38
|
+
SkyPhoneFieldResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
39
|
+
SkyPhoneFieldResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldResourcesModule, exports: [SkyI18nModule] });
|
|
40
|
+
SkyPhoneFieldResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldResourcesModule, providers: [
|
|
41
|
+
{
|
|
42
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
43
|
+
useClass: SkyPhoneFieldResourcesProvider,
|
|
44
|
+
multi: true,
|
|
45
|
+
},
|
|
46
|
+
], imports: [SkyI18nModule] });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldResourcesModule, decorators: [{
|
|
48
|
+
type: NgModule,
|
|
49
|
+
args: [{
|
|
50
|
+
exports: [SkyI18nModule],
|
|
51
|
+
providers: [
|
|
52
|
+
{
|
|
53
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
54
|
+
useClass: SkyPhoneFieldResourcesProvider,
|
|
55
|
+
multi: true,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
}]
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LXBob25lLWZpZWxkLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGhvbmUtZmllbGQvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9za3ktcGhvbmUtZmllbGQtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1AsK0JBQStCLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO1FBQzVELHdDQUF3QyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSx3QkFBd0I7U0FDbEM7UUFDRCxzQ0FBc0MsRUFBRTtZQUN0QyxPQUFPLEVBQUUsd0JBQXdCO1NBQ2xDO1FBQ0QsNENBQTRDLEVBQUU7WUFDNUMsT0FBTyxFQUFFLHNCQUFzQjtTQUNoQztRQUNELHNDQUFzQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFO1FBQ3RFLHdDQUF3QyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSw0QkFBNEI7U0FDdEM7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLE9BQU8sOEJBQThCO0lBQ2xDLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyw0QkFBNEI7O3lIQUE1Qiw0QkFBNEI7MEhBQTVCLDRCQUE0QixZQVQ3QixhQUFhOzBIQVNaLDRCQUE0QixhQVI1QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxRQUFRLEVBQUUsOEJBQThCO1lBQ3hDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixZQVBTLGFBQWE7MkZBU1osNEJBQTRCO2tCQVZ4QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSw4QkFBOEI7NEJBQ3hDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktcGhvbmUtZmllbGQnIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNLWV9MSUJfUkVTT1VSQ0VTX1BST1ZJREVSUyxcbiAgU2t5QXBwTG9jYWxlSW5mbyxcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNQcm92aWRlcixcbiAgZ2V0TGliU3RyaW5nRm9yTG9jYWxlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogeyBbbG9jYWxlOiBzdHJpbmddOiBTa3lMaWJSZXNvdXJjZXMgfSA9IHtcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X3Bob25lX2ZpZWxkX2RlZmF1bHRfbGFiZWw6IHsgbWVzc2FnZTogJ1Bob25lIG51bWJlcicgfSxcbiAgICBza3l1eF9waG9uZV9maWVsZF9jb3VudHJ5X3NlYXJjaF9kaXNtaXNzOiB7XG4gICAgICBtZXNzYWdlOiAnRGlzbWlzcyBjb3VudHJ5IHNlYXJjaCcsXG4gICAgfSxcbiAgICBza3l1eF9waG9uZV9maWVsZF9jb3VudHJ5X3NlYXJjaF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ0Rpc21pc3MgY291bnRyeSBzZWFyY2gnLFxuICAgIH0sXG4gICAgc2t5dXhfcGhvbmVfZmllbGRfY291bnRyeV9zZWFyY2hfcGxhY2Vob2xkZXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdTZWFyY2ggZm9yIGEgY291bnRyeScsXG4gICAgfSxcbiAgICBza3l1eF9waG9uZV9maWVsZF9jb3VudHJ5X3NlbGVjdF9sYWJlbDogeyBtZXNzYWdlOiAnQ2hvb3NlIGNvdW50cnkuJyB9LFxuICAgIHNreXV4X3Bob25lX2ZpZWxkX2NvdW50cnlfc2VsZWN0ZWRfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICd7MH0gaXMgY3VycmVudGx5IHNlbGVjdGVkLicsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTa3lQaG9uZUZpZWxkUmVzb3VyY2VzUHJvdmlkZXIgaW1wbGVtZW50cyBTa3lMaWJSZXNvdXJjZXNQcm92aWRlciB7XG4gIHB1YmxpYyBnZXRTdHJpbmcoXG4gICAgbG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbyxcbiAgICBuYW1lOiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0TGliU3RyaW5nRm9yTG9jYWxlKFJFU09VUkNFUywgbG9jYWxlSW5mby5sb2NhbGUsIG5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogSW1wb3J0IGludG8gYW55IGNvbXBvbmVudCBsaWJyYXJ5IG1vZHVsZSB0aGF0IG5lZWRzIHRvIHVzZSByZXNvdXJjZSBzdHJpbmdzLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbU2t5STE4bk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNLWV9MSUJfUkVTT1VSQ0VTX1BST1ZJREVSUyxcbiAgICAgIHVzZUNsYXNzOiBTa3lQaG9uZUZpZWxkUmVzb3VyY2VzUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQaG9uZUZpZWxkUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtcGhvbmUtZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGhvbmUtZmllbGQvc3JjL3NreXV4LXBob25lLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { By } from '@angular/platform-browser';
|
|
2
|
+
import { SkyAppTestUtility } from '@skyux-sdk/testing';
|
|
3
|
+
import { SkyCountryFieldFixture } from '@skyux/lookup/testing';
|
|
4
|
+
/**
|
|
5
|
+
* Provides information for and interaction with a SKY UX phone field component.
|
|
6
|
+
* By using the fixture API, a test insulates itself against updates to the internals
|
|
7
|
+
* of a component, such as changing its DOM structure.
|
|
8
|
+
*/
|
|
9
|
+
export class SkyPhoneFieldFixture {
|
|
10
|
+
constructor(fixture, skyTestId) {
|
|
11
|
+
this.fixture = fixture;
|
|
12
|
+
this.skyTestId = skyTestId;
|
|
13
|
+
this._debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-phone-field');
|
|
14
|
+
// The country selector needs extra time to initialize.
|
|
15
|
+
// Consumers shouldn't need to work around this so we do an extra detect here
|
|
16
|
+
fixture.detectChanges();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The value of the input field for the phone field.
|
|
20
|
+
*/
|
|
21
|
+
get inputText() {
|
|
22
|
+
return this.phoneFieldInput.value;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Blurs the phone field input and returns a promise that indicates when the action is complete.
|
|
26
|
+
*/
|
|
27
|
+
async blur() {
|
|
28
|
+
SkyAppTestUtility.fireDomEvent(this.phoneFieldInput, 'blur');
|
|
29
|
+
this.fixture.detectChanges();
|
|
30
|
+
return this.fixture.whenStable();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the selected country iso2 code.
|
|
34
|
+
*/
|
|
35
|
+
async getSelectedCountryIso2() {
|
|
36
|
+
// Wait for the country field to initialize.
|
|
37
|
+
await this.fixture.whenStable();
|
|
38
|
+
return this.countryFlagButtonContainer.getAttribute('data-sky-test-iso2');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Returns the selected country name.
|
|
42
|
+
*/
|
|
43
|
+
async getSelectedCountryName() {
|
|
44
|
+
// Wait for the country field to initialize.
|
|
45
|
+
await this.fixture.whenStable();
|
|
46
|
+
return this.countryFlagButtonContainer.getAttribute('data-sky-test-name');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Sets the value of the input field for the phone field.
|
|
50
|
+
*/
|
|
51
|
+
async setInputText(inputText) {
|
|
52
|
+
const inputEl = this.phoneFieldInput;
|
|
53
|
+
inputEl.value = inputText;
|
|
54
|
+
SkyAppTestUtility.fireDomEvent(inputEl, 'input');
|
|
55
|
+
this.fixture.detectChanges();
|
|
56
|
+
SkyAppTestUtility.fireDomEvent(inputEl, 'change');
|
|
57
|
+
this.fixture.detectChanges();
|
|
58
|
+
return this.fixture.whenStable();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Opens the country selector, peforms a search, but makes no selection.
|
|
62
|
+
* @param searchText The name of the country to select.
|
|
63
|
+
* @returns The list of country names matching the search text.
|
|
64
|
+
*/
|
|
65
|
+
async searchCountry(searchText) {
|
|
66
|
+
await this.openCountrySelection();
|
|
67
|
+
const countryFixture = await this.getCountryFixture();
|
|
68
|
+
const results = await countryFixture.search(searchText);
|
|
69
|
+
await this.waitForCountrySelection();
|
|
70
|
+
return results;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Opens the country selector, performs a search, and selects the first result (if any).
|
|
74
|
+
* @param searchText The name of the country to select.
|
|
75
|
+
*/
|
|
76
|
+
async selectCountry(searchText) {
|
|
77
|
+
await this.openCountrySelection();
|
|
78
|
+
const countryFixture = await this.getCountryFixture();
|
|
79
|
+
await countryFixture.searchAndSelectFirstResult(searchText);
|
|
80
|
+
return this.waitForCountrySelection();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Gets a boolean promise indicating if the phone field is disabled.
|
|
84
|
+
*/
|
|
85
|
+
async isDisabled() {
|
|
86
|
+
const disabled = this.phoneFieldInput.getAttribute('disabled');
|
|
87
|
+
return this.coerceBooleanProperty(await disabled);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Gets a boolean promise indicating if the phone field is valid.
|
|
91
|
+
*/
|
|
92
|
+
async isValid() {
|
|
93
|
+
if (!(await this.hasFormControl())) {
|
|
94
|
+
throw new Error(`Form control not found.`);
|
|
95
|
+
}
|
|
96
|
+
return this.phoneFieldInput.classList.contains('ng-valid');
|
|
97
|
+
}
|
|
98
|
+
get countryElement() {
|
|
99
|
+
return this._debugEl.query(By.css('sky-country-field')).nativeElement;
|
|
100
|
+
}
|
|
101
|
+
get countryFlagButtonContainer() {
|
|
102
|
+
return this._debugEl.query(By.css('.sky-phone-field-country-btn'))
|
|
103
|
+
.nativeElement;
|
|
104
|
+
}
|
|
105
|
+
get countryFlagButton() {
|
|
106
|
+
return this._debugEl.query(By.css('.sky-phone-field-country-btn .sky-btn'))
|
|
107
|
+
.nativeElement;
|
|
108
|
+
}
|
|
109
|
+
get phoneFieldInput() {
|
|
110
|
+
return this._debugEl.query(By.css('input[skyPhoneFieldInput]'))
|
|
111
|
+
.nativeElement;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The country-field can take a really long time to initialize. Since we can't perform an await
|
|
115
|
+
* in our constructor, it's safest to do a lazy load of the country field to avoid any race
|
|
116
|
+
* conditions where a test tries to access the sky-country-field element too quickly.
|
|
117
|
+
*/
|
|
118
|
+
async getCountryFixture() {
|
|
119
|
+
if (this._countryFixture === undefined) {
|
|
120
|
+
// tag the country field with a sky test id
|
|
121
|
+
const countrySkyTestId = `${this.skyTestId}-country`;
|
|
122
|
+
this.setSkyTestId(this.countryElement, countrySkyTestId);
|
|
123
|
+
// initialize the country fixture
|
|
124
|
+
this._countryFixture = new SkyCountryFieldFixture(this.fixture, countrySkyTestId);
|
|
125
|
+
this.fixture.detectChanges();
|
|
126
|
+
await this.fixture.whenStable();
|
|
127
|
+
}
|
|
128
|
+
return this._countryFixture;
|
|
129
|
+
}
|
|
130
|
+
async openCountrySelection() {
|
|
131
|
+
this.countryFlagButton.click();
|
|
132
|
+
return this.waitForCountrySelection();
|
|
133
|
+
}
|
|
134
|
+
setSkyTestId(element, skyTestId) {
|
|
135
|
+
element.setAttribute('data-sky-id', skyTestId);
|
|
136
|
+
}
|
|
137
|
+
async waitForCountrySelection() {
|
|
138
|
+
// any country selection needs extra time to complete
|
|
139
|
+
this.fixture.detectChanges();
|
|
140
|
+
await this.fixture.whenStable();
|
|
141
|
+
this.fixture.detectChanges();
|
|
142
|
+
return this.fixture.whenStable();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Checks whether the form-field control has set up a form control.
|
|
146
|
+
*/
|
|
147
|
+
async hasFormControl() {
|
|
148
|
+
// If no form "NgControl" is bound to the form-field control, the form-field
|
|
149
|
+
// is not able to forward any control status classes. Therefore if either the
|
|
150
|
+
// "ng-touched" or "ng-untouched" class is set, we know that it has a form control.
|
|
151
|
+
const isTouched = this.phoneFieldInput.classList.contains('ng-touched');
|
|
152
|
+
const isUntouched = this.phoneFieldInput.classList.contains('ng-untouched');
|
|
153
|
+
return isTouched || isUntouched;
|
|
154
|
+
}
|
|
155
|
+
coerceBooleanProperty(value) {
|
|
156
|
+
// tslint:disable-next-line: no-null-keyword
|
|
157
|
+
return value != null && `${value}` !== 'false';
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZmllbGQtZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9waG9uZS1maWVsZC90ZXN0aW5nL3NyYy9waG9uZWZpZWxkL3Bob25lLWZpZWxkLWZpeHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9EOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBZS9CLFlBQ1UsT0FBOEIsRUFDOUIsU0FBaUI7UUFEakIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUV6QixJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixDQUN2RCxPQUFPLEVBQ1AsU0FBUyxFQUNULGlCQUFpQixDQUNsQixDQUFDO1FBRUYsdURBQXVEO1FBQ3ZELDZFQUE2RTtRQUM3RSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQTNCRDs7T0FFRztJQUNILElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUF3QkQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsNENBQTRDO1FBQzVDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsc0JBQXNCO1FBQ2pDLDRDQUE0QztRQUM1QyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFpQjtRQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRTFCLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU3QixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFrQjtRQUMzQyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRWxDLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhELE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDckMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBa0I7UUFDM0MsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVsQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RELE1BQU0sY0FBYyxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTVELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTztRQUNsQixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQVksMEJBQTBCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2FBQy9ELGFBQWEsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBWSxpQkFBaUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7YUFDeEUsYUFBYSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFZLGVBQWU7UUFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7YUFDNUQsYUFBYSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLGlCQUFpQjtRQUM3QixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ3RDLDJDQUEyQztZQUMzQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsVUFBVSxDQUFDO1lBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXpELGlDQUFpQztZQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksc0JBQXNCLENBQy9DLElBQUksQ0FBQyxPQUFPLEVBQ1osZ0JBQWdCLENBQ2pCLENBQUM7WUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNqQztRQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRU8sS0FBSyxDQUFDLG9CQUFvQjtRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQW9CLEVBQUUsU0FBaUI7UUFDMUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLEtBQUssQ0FBQyx1QkFBdUI7UUFDbkMscURBQXFEO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxjQUFjO1FBQzFCLDRFQUE0RTtRQUM1RSw2RUFBNkU7UUFDN0UsbUZBQW1GO1FBQ25GLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUUsT0FBTyxTQUFTLElBQUksV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUFVO1FBQ3RDLDRDQUE0QztRQUM1QyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUM7SUFDakQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTa3lBcHBUZXN0VXRpbGl0eSB9IGZyb20gJ0Bza3l1eC1zZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb3VudHJ5RmllbGRGaXh0dXJlIH0gZnJvbSAnQHNreXV4L2xvb2t1cC90ZXN0aW5nJztcblxuLyoqXG4gKiBQcm92aWRlcyBpbmZvcm1hdGlvbiBmb3IgYW5kIGludGVyYWN0aW9uIHdpdGggYSBTS1kgVVggcGhvbmUgZmllbGQgY29tcG9uZW50LlxuICogQnkgdXNpbmcgdGhlIGZpeHR1cmUgQVBJLCBhIHRlc3QgaW5zdWxhdGVzIGl0c2VsZiBhZ2FpbnN0IHVwZGF0ZXMgdG8gdGhlIGludGVybmFsc1xuICogb2YgYSBjb21wb25lbnQsIHN1Y2ggYXMgY2hhbmdpbmcgaXRzIERPTSBzdHJ1Y3R1cmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lQaG9uZUZpZWxkRml4dHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkIGZvciB0aGUgcGhvbmUgZmllbGQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlucHV0VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBob25lRmllbGRJbnB1dC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIGxhenkgbG9hZGVkIGFuZCBzaG91bGQgYmUgYWNjZXNzZWQgdmlhIHRoZSBwcml2YXRlIGNvdW50cnlGaXh0dXJlIHByb3BlcnR5LlxuICAgKi9cbiAgcHJpdmF0ZSBfY291bnRyeUZpeHR1cmU6IFNreUNvdW50cnlGaWVsZEZpeHR1cmU7XG5cbiAgcHJpdmF0ZSBfZGVidWdFbDogRGVidWdFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+LFxuICAgIHByaXZhdGUgc2t5VGVzdElkOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5fZGVidWdFbCA9IFNreUFwcFRlc3RVdGlsaXR5LmdldERlYnVnRWxlbWVudEJ5VGVzdElkKFxuICAgICAgZml4dHVyZSxcbiAgICAgIHNreVRlc3RJZCxcbiAgICAgICdza3ktcGhvbmUtZmllbGQnXG4gICAgKTtcblxuICAgIC8vIFRoZSBjb3VudHJ5IHNlbGVjdG9yIG5lZWRzIGV4dHJhIHRpbWUgdG8gaW5pdGlhbGl6ZS5cbiAgICAvLyBDb25zdW1lcnMgc2hvdWxkbid0IG5lZWQgdG8gd29yayBhcm91bmQgdGhpcyBzbyB3ZSBkbyBhbiBleHRyYSBkZXRlY3QgaGVyZVxuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJsdXJzIHRoZSBwaG9uZSBmaWVsZCBpbnB1dCBhbmQgcmV0dXJucyBhIHByb21pc2UgdGhhdCBpbmRpY2F0ZXMgd2hlbiB0aGUgYWN0aW9uIGlzIGNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJsdXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgU2t5QXBwVGVzdFV0aWxpdHkuZmlyZURvbUV2ZW50KHRoaXMucGhvbmVGaWVsZElucHV0LCAnYmx1cicpO1xuICAgIHRoaXMuZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2VsZWN0ZWQgY291bnRyeSBpc28yIGNvZGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0ZWRDb3VudHJ5SXNvMigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIFdhaXQgZm9yIHRoZSBjb3VudHJ5IGZpZWxkIHRvIGluaXRpYWxpemUuXG4gICAgYXdhaXQgdGhpcy5maXh0dXJlLndoZW5TdGFibGUoKTtcbiAgICByZXR1cm4gdGhpcy5jb3VudHJ5RmxhZ0J1dHRvbkNvbnRhaW5lci5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2t5LXRlc3QtaXNvMicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNlbGVjdGVkIGNvdW50cnkgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTZWxlY3RlZENvdW50cnlOYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gV2FpdCBmb3IgdGhlIGNvdW50cnkgZmllbGQgdG8gaW5pdGlhbGl6ZS5cbiAgICBhd2FpdCB0aGlzLmZpeHR1cmUud2hlblN0YWJsZSgpO1xuICAgIHJldHVybiB0aGlzLmNvdW50cnlGbGFnQnV0dG9uQ29udGFpbmVyLmdldEF0dHJpYnV0ZSgnZGF0YS1za3ktdGVzdC1uYW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkIGZvciB0aGUgcGhvbmUgZmllbGQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0SW5wdXRUZXh0KGlucHV0VGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMucGhvbmVGaWVsZElucHV0O1xuICAgIGlucHV0RWwudmFsdWUgPSBpbnB1dFRleHQ7XG5cbiAgICBTa3lBcHBUZXN0VXRpbGl0eS5maXJlRG9tRXZlbnQoaW5wdXRFbCwgJ2lucHV0Jyk7XG4gICAgdGhpcy5maXh0dXJlLmRldGVjdENoYW5nZXMoKTtcblxuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChpbnB1dEVsLCAnY2hhbmdlJyk7XG5cbiAgICB0aGlzLmZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUud2hlblN0YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBjb3VudHJ5IHNlbGVjdG9yLCBwZWZvcm1zIGEgc2VhcmNoLCBidXQgbWFrZXMgbm8gc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0gc2VhcmNoVGV4dCBUaGUgbmFtZSBvZiB0aGUgY291bnRyeSB0byBzZWxlY3QuXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGNvdW50cnkgbmFtZXMgbWF0Y2hpbmcgdGhlIHNlYXJjaCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlYXJjaENvdW50cnkoc2VhcmNoVGV4dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGF3YWl0IHRoaXMub3BlbkNvdW50cnlTZWxlY3Rpb24oKTtcblxuICAgIGNvbnN0IGNvdW50cnlGaXh0dXJlID0gYXdhaXQgdGhpcy5nZXRDb3VudHJ5Rml4dHVyZSgpO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjb3VudHJ5Rml4dHVyZS5zZWFyY2goc2VhcmNoVGV4dCk7XG5cbiAgICBhd2FpdCB0aGlzLndhaXRGb3JDb3VudHJ5U2VsZWN0aW9uKCk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGNvdW50cnkgc2VsZWN0b3IsIHBlcmZvcm1zIGEgc2VhcmNoLCBhbmQgc2VsZWN0cyB0aGUgZmlyc3QgcmVzdWx0IChpZiBhbnkpLlxuICAgKiBAcGFyYW0gc2VhcmNoVGV4dCBUaGUgbmFtZSBvZiB0aGUgY291bnRyeSB0byBzZWxlY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VsZWN0Q291bnRyeShzZWFyY2hUZXh0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9wZW5Db3VudHJ5U2VsZWN0aW9uKCk7XG5cbiAgICBjb25zdCBjb3VudHJ5Rml4dHVyZSA9IGF3YWl0IHRoaXMuZ2V0Q291bnRyeUZpeHR1cmUoKTtcbiAgICBhd2FpdCBjb3VudHJ5Rml4dHVyZS5zZWFyY2hBbmRTZWxlY3RGaXJzdFJlc3VsdChzZWFyY2hUZXh0KTtcblxuICAgIHJldHVybiB0aGlzLndhaXRGb3JDb3VudHJ5U2VsZWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGJvb2xlYW4gcHJvbWlzZSBpbmRpY2F0aW5nIGlmIHRoZSBwaG9uZSBmaWVsZCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0Rpc2FibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5waG9uZUZpZWxkSW5wdXQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgIHJldHVybiB0aGlzLmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShhd2FpdCBkaXNhYmxlZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGJvb2xlYW4gcHJvbWlzZSBpbmRpY2F0aW5nIGlmIHRoZSBwaG9uZSBmaWVsZCBpcyB2YWxpZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc1ZhbGlkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghKGF3YWl0IHRoaXMuaGFzRm9ybUNvbnRyb2woKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm9ybSBjb250cm9sIG5vdCBmb3VuZC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGhvbmVGaWVsZElucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNvdW50cnlFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnc2t5LWNvdW50cnktZmllbGQnKSkubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNvdW50cnlGbGFnQnV0dG9uQ29udGFpbmVyKCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnLnNreS1waG9uZS1maWVsZC1jb3VudHJ5LWJ0bicpKVxuICAgICAgLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBjb3VudHJ5RmxhZ0J1dHRvbigpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZGVidWdFbC5xdWVyeShCeS5jc3MoJy5za3ktcGhvbmUtZmllbGQtY291bnRyeS1idG4gLnNreS1idG4nKSlcbiAgICAgIC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcGhvbmVGaWVsZElucHV0KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnaW5wdXRbc2t5UGhvbmVGaWVsZElucHV0XScpKVxuICAgICAgLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvdW50cnktZmllbGQgY2FuIHRha2UgYSByZWFsbHkgbG9uZyB0aW1lIHRvIGluaXRpYWxpemUuIFNpbmNlIHdlIGNhbid0IHBlcmZvcm0gYW4gYXdhaXRcbiAgICogaW4gb3VyIGNvbnN0cnVjdG9yLCBpdCdzIHNhZmVzdCB0byBkbyBhIGxhenkgbG9hZCBvZiB0aGUgY291bnRyeSBmaWVsZCB0byBhdm9pZCBhbnkgcmFjZVxuICAgKiBjb25kaXRpb25zIHdoZXJlIGEgdGVzdCB0cmllcyB0byBhY2Nlc3MgdGhlIHNreS1jb3VudHJ5LWZpZWxkIGVsZW1lbnQgdG9vIHF1aWNrbHkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldENvdW50cnlGaXh0dXJlKCk6IFByb21pc2U8U2t5Q291bnRyeUZpZWxkRml4dHVyZT4ge1xuICAgIGlmICh0aGlzLl9jb3VudHJ5Rml4dHVyZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyB0YWcgdGhlIGNvdW50cnkgZmllbGQgd2l0aCBhIHNreSB0ZXN0IGlkXG4gICAgICBjb25zdCBjb3VudHJ5U2t5VGVzdElkID0gYCR7dGhpcy5za3lUZXN0SWR9LWNvdW50cnlgO1xuICAgICAgdGhpcy5zZXRTa3lUZXN0SWQodGhpcy5jb3VudHJ5RWxlbWVudCwgY291bnRyeVNreVRlc3RJZCk7XG5cbiAgICAgIC8vIGluaXRpYWxpemUgdGhlIGNvdW50cnkgZml4dHVyZVxuICAgICAgdGhpcy5fY291bnRyeUZpeHR1cmUgPSBuZXcgU2t5Q291bnRyeUZpZWxkRml4dHVyZShcbiAgICAgICAgdGhpcy5maXh0dXJlLFxuICAgICAgICBjb3VudHJ5U2t5VGVzdElkXG4gICAgICApO1xuXG4gICAgICB0aGlzLmZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgYXdhaXQgdGhpcy5maXh0dXJlLndoZW5TdGFibGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY291bnRyeUZpeHR1cmU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9wZW5Db3VudHJ5U2VsZWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY291bnRyeUZsYWdCdXR0b24uY2xpY2soKTtcbiAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ291bnRyeVNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTa3lUZXN0SWQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHNreVRlc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2t5LWlkJywgc2t5VGVzdElkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckNvdW50cnlTZWxlY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gYW55IGNvdW50cnkgc2VsZWN0aW9uIG5lZWRzIGV4dHJhIHRpbWUgdG8gY29tcGxldGVcbiAgICB0aGlzLmZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGF3YWl0IHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG5cbiAgICB0aGlzLmZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiB0aGlzLmZpeHR1cmUud2hlblN0YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBmb3JtLWZpZWxkIGNvbnRyb2wgaGFzIHNldCB1cCBhIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaGFzRm9ybUNvbnRyb2woKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gSWYgbm8gZm9ybSBcIk5nQ29udHJvbFwiIGlzIGJvdW5kIHRvIHRoZSBmb3JtLWZpZWxkIGNvbnRyb2wsIHRoZSBmb3JtLWZpZWxkXG4gICAgLy8gaXMgbm90IGFibGUgdG8gZm9yd2FyZCBhbnkgY29udHJvbCBzdGF0dXMgY2xhc3Nlcy4gVGhlcmVmb3JlIGlmIGVpdGhlciB0aGVcbiAgICAvLyBcIm5nLXRvdWNoZWRcIiBvciBcIm5nLXVudG91Y2hlZFwiIGNsYXNzIGlzIHNldCwgd2Uga25vdyB0aGF0IGl0IGhhcyBhIGZvcm0gY29udHJvbC5cbiAgICBjb25zdCBpc1RvdWNoZWQgPSB0aGlzLnBob25lRmllbGRJbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKTtcbiAgICBjb25zdCBpc1VudG91Y2hlZCA9IHRoaXMucGhvbmVGaWVsZElucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJyk7XG4gICAgcmV0dXJuIGlzVG91Y2hlZCB8fCBpc1VudG91Y2hlZDtcbiAgfVxuXG4gIHByaXZhdGUgY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW51bGwta2V5d29yZFxuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGAke3ZhbHVlfWAgIT09ICdmYWxzZSc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
|
3
|
+
import { SkyPhoneFieldModule } from '@skyux/phone-field';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class SkyPhoneFieldTestingModule {
|
|
6
|
+
}
|
|
7
|
+
SkyPhoneFieldTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
SkyPhoneFieldTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, exports: [SkyPhoneFieldModule,
|
|
9
|
+
// The noop animations module needs to be loaded last to avoid
|
|
10
|
+
// subsequent modules adding animations and overriding this.
|
|
11
|
+
NoopAnimationsModule] });
|
|
12
|
+
SkyPhoneFieldTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, imports: [SkyPhoneFieldModule,
|
|
13
|
+
// The noop animations module needs to be loaded last to avoid
|
|
14
|
+
// subsequent modules adding animations and overriding this.
|
|
15
|
+
NoopAnimationsModule] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
exports: [
|
|
20
|
+
SkyPhoneFieldModule,
|
|
21
|
+
// The noop animations module needs to be loaded last to avoid
|
|
22
|
+
// subsequent modules adding animations and overriding this.
|
|
23
|
+
NoopAnimationsModule,
|
|
24
|
+
],
|
|
25
|
+
}]
|
|
26
|
+
}] });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtZmllbGQtdGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGhvbmUtZmllbGQvdGVzdGluZy9zcmMvcGhvbmVmaWVsZC9waG9uZS1maWVsZC10ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVd6RCxNQUFNLE9BQU8sMEJBQTBCOzt1SEFBMUIsMEJBQTBCO3dIQUExQiwwQkFBMEIsWUFQbkMsbUJBQW1CO1FBRW5CLDhEQUE4RDtRQUM5RCw0REFBNEQ7UUFDNUQsb0JBQW9CO3dIQUdYLDBCQUEwQixZQVBuQyxtQkFBbUI7UUFFbkIsOERBQThEO1FBQzlELDREQUE0RDtRQUM1RCxvQkFBb0I7MkZBR1gsMEJBQTBCO2tCQVR0QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7d0JBRW5CLDhEQUE4RDt3QkFDOUQsNERBQTREO3dCQUM1RCxvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vb3BBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IFNreVBob25lRmllbGRNb2R1bGUgfSBmcm9tICdAc2t5dXgvcGhvbmUtZmllbGQnO1xuXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbXG4gICAgU2t5UGhvbmVGaWVsZE1vZHVsZSxcblxuICAgIC8vIFRoZSBub29wIGFuaW1hdGlvbnMgbW9kdWxlIG5lZWRzIHRvIGJlIGxvYWRlZCBsYXN0IHRvIGF2b2lkXG4gICAgLy8gc3Vic2VxdWVudCBtb2R1bGVzIGFkZGluZyBhbmltYXRpb25zIGFuZCBvdmVycmlkaW5nIHRoaXMuXG4gICAgTm9vcEFuaW1hdGlvbnNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVBob25lRmllbGRUZXN0aW5nTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './phonefield/phone-field-testing.module';
|
|
2
|
+
export * from './phonefield/phone-field-fixture';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9waG9uZS1maWVsZC90ZXN0aW5nL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGhvbmVmaWVsZC9waG9uZS1maWVsZC10ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Bob25lZmllbGQvcGhvbmUtZmllbGQtZml4dHVyZSc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtcGhvbmUtZmllbGQtdGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9waG9uZS1maWVsZC90ZXN0aW5nL3NyYy9za3l1eC1waG9uZS1maWVsZC10ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -9,16 +9,16 @@ import { SkyCountryFieldFixture } from '@skyux/lookup/testing';
|
|
|
9
9
|
|
|
10
10
|
class SkyPhoneFieldTestingModule {
|
|
11
11
|
}
|
|
12
|
-
SkyPhoneFieldTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13
|
-
SkyPhoneFieldTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
12
|
+
SkyPhoneFieldTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
SkyPhoneFieldTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, exports: [SkyPhoneFieldModule,
|
|
14
14
|
// The noop animations module needs to be loaded last to avoid
|
|
15
15
|
// subsequent modules adding animations and overriding this.
|
|
16
16
|
NoopAnimationsModule] });
|
|
17
|
-
SkyPhoneFieldTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
17
|
+
SkyPhoneFieldTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, imports: [SkyPhoneFieldModule,
|
|
18
18
|
// The noop animations module needs to be loaded last to avoid
|
|
19
19
|
// subsequent modules adding animations and overriding this.
|
|
20
20
|
NoopAnimationsModule] });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyPhoneFieldTestingModule, decorators: [{
|
|
22
22
|
type: NgModule,
|
|
23
23
|
args: [{
|
|
24
24
|
exports: [
|
|
@@ -216,4 +216,4 @@ class SkyPhoneFieldFixture {
|
|
|
216
216
|
*/
|
|
217
217
|
|
|
218
218
|
export { SkyPhoneFieldFixture, SkyPhoneFieldTestingModule };
|
|
219
|
-
//# sourceMappingURL=skyux-phone-field-testing.
|
|
219
|
+
//# sourceMappingURL=skyux-phone-field-testing.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skyux-phone-field-testing.mjs","sources":["../../../../../libs/components/phone-field/testing/src/phonefield/phone-field-testing.module.ts","../../../../../libs/components/phone-field/testing/src/phonefield/phone-field-fixture.ts","../../../../../libs/components/phone-field/testing/src/skyux-phone-field-testing.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { SkyPhoneFieldModule } from '@skyux/phone-field';\n\n@NgModule({\n exports: [\n SkyPhoneFieldModule,\n\n // The noop animations module needs to be loaded last to avoid\n // subsequent modules adding animations and overriding this.\n NoopAnimationsModule,\n ],\n})\nexport class SkyPhoneFieldTestingModule {}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\nimport { SkyCountryFieldFixture } from '@skyux/lookup/testing';\n\n/**\n * Provides information for and interaction with a SKY UX phone field component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n */\nexport class SkyPhoneFieldFixture {\n /**\n * The value of the input field for the phone field.\n */\n public get inputText(): string {\n return this.phoneFieldInput.value;\n }\n\n /**\n * This property is lazy loaded and should be accessed via the private countryFixture property.\n */\n private _countryFixture: SkyCountryFieldFixture;\n\n private _debugEl: DebugElement;\n\n constructor(\n private fixture: ComponentFixture<any>,\n private skyTestId: string\n ) {\n this._debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-phone-field'\n );\n\n // The country selector needs extra time to initialize.\n // Consumers shouldn't need to work around this so we do an extra detect here\n fixture.detectChanges();\n }\n\n /**\n * Blurs the phone field input and returns a promise that indicates when the action is complete.\n */\n public async blur(): Promise<void> {\n SkyAppTestUtility.fireDomEvent(this.phoneFieldInput, 'blur');\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Returns the selected country iso2 code.\n */\n public async getSelectedCountryIso2(): Promise<string> {\n // Wait for the country field to initialize.\n await this.fixture.whenStable();\n return this.countryFlagButtonContainer.getAttribute('data-sky-test-iso2');\n }\n\n /**\n * Returns the selected country name.\n */\n public async getSelectedCountryName(): Promise<string> {\n // Wait for the country field to initialize.\n await this.fixture.whenStable();\n return this.countryFlagButtonContainer.getAttribute('data-sky-test-name');\n }\n\n /**\n * Sets the value of the input field for the phone field.\n */\n public async setInputText(inputText: string): Promise<void> {\n const inputEl = this.phoneFieldInput;\n inputEl.value = inputText;\n\n SkyAppTestUtility.fireDomEvent(inputEl, 'input');\n this.fixture.detectChanges();\n\n SkyAppTestUtility.fireDomEvent(inputEl, 'change');\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Opens the country selector, peforms a search, but makes no selection.\n * @param searchText The name of the country to select.\n * @returns The list of country names matching the search text.\n */\n public async searchCountry(searchText: string): Promise<string[]> {\n await this.openCountrySelection();\n\n const countryFixture = await this.getCountryFixture();\n const results = await countryFixture.search(searchText);\n\n await this.waitForCountrySelection();\n return results;\n }\n\n /**\n * Opens the country selector, performs a search, and selects the first result (if any).\n * @param searchText The name of the country to select.\n */\n public async selectCountry(searchText: string): Promise<void> {\n await this.openCountrySelection();\n\n const countryFixture = await this.getCountryFixture();\n await countryFixture.searchAndSelectFirstResult(searchText);\n\n return this.waitForCountrySelection();\n }\n\n /**\n * Gets a boolean promise indicating if the phone field is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = this.phoneFieldInput.getAttribute('disabled');\n return this.coerceBooleanProperty(await disabled);\n }\n\n /**\n * Gets a boolean promise indicating if the phone field is valid.\n */\n public async isValid(): Promise<boolean> {\n if (!(await this.hasFormControl())) {\n throw new Error(`Form control not found.`);\n }\n return this.phoneFieldInput.classList.contains('ng-valid');\n }\n\n private get countryElement(): HTMLInputElement {\n return this._debugEl.query(By.css('sky-country-field')).nativeElement;\n }\n\n private get countryFlagButtonContainer(): HTMLInputElement {\n return this._debugEl.query(By.css('.sky-phone-field-country-btn'))\n .nativeElement;\n }\n\n private get countryFlagButton(): HTMLInputElement {\n return this._debugEl.query(By.css('.sky-phone-field-country-btn .sky-btn'))\n .nativeElement;\n }\n\n private get phoneFieldInput(): HTMLInputElement {\n return this._debugEl.query(By.css('input[skyPhoneFieldInput]'))\n .nativeElement;\n }\n\n /**\n * The country-field can take a really long time to initialize. Since we can't perform an await\n * in our constructor, it's safest to do a lazy load of the country field to avoid any race\n * conditions where a test tries to access the sky-country-field element too quickly.\n */\n private async getCountryFixture(): Promise<SkyCountryFieldFixture> {\n if (this._countryFixture === undefined) {\n // tag the country field with a sky test id\n const countrySkyTestId = `${this.skyTestId}-country`;\n this.setSkyTestId(this.countryElement, countrySkyTestId);\n\n // initialize the country fixture\n this._countryFixture = new SkyCountryFieldFixture(\n this.fixture,\n countrySkyTestId\n );\n\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n }\n\n return this._countryFixture;\n }\n\n private async openCountrySelection(): Promise<void> {\n this.countryFlagButton.click();\n return this.waitForCountrySelection();\n }\n\n private setSkyTestId(element: HTMLElement, skyTestId: string): void {\n element.setAttribute('data-sky-id', skyTestId);\n }\n\n private async waitForCountrySelection(): Promise<void> {\n // any country selection needs extra time to complete\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Checks whether the form-field control has set up a form control.\n */\n private async hasFormControl(): Promise<boolean> {\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control.\n const isTouched = this.phoneFieldInput.classList.contains('ng-touched');\n const isUntouched = this.phoneFieldInput.classList.contains('ng-untouched');\n return isTouched || isUntouched;\n }\n\n private coerceBooleanProperty(value: any): boolean {\n // tslint:disable-next-line: no-null-keyword\n return value != null && `${value}` !== 'false';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|