source: trip-planner-front/node_modules/@angular/material/esm2015/datepicker/testing/datepicker-trigger-harness-base.js@ ceaed42

Last change on this file since ceaed42 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 11.1 KB
Line 
1/**
2 * @license
3 * Copyright Google LLC All Rights Reserved.
4 *
5 * Use of this source code is governed by an MIT-style license that can be
6 * found in the LICENSE file at https://angular.io/license
7 */
8import { __awaiter } from "tslib";
9import { ComponentHarness, parallel } from '@angular/cdk/testing';
10import { MatCalendarHarness } from './calendar-harness';
11/** Base class for harnesses that can trigger a calendar. */
12export class DatepickerTriggerHarnessBase extends ComponentHarness {
13 /** Opens the calendar if the trigger is enabled and it has a calendar. */
14 openCalendar() {
15 return __awaiter(this, void 0, void 0, function* () {
16 const [isDisabled, hasCalendar] = yield parallel(() => [this.isDisabled(), this.hasCalendar()]);
17 if (!isDisabled && hasCalendar) {
18 return this._openCalendar();
19 }
20 });
21 }
22 /** Closes the calendar if it is open. */
23 closeCalendar() {
24 return __awaiter(this, void 0, void 0, function* () {
25 if (yield this.isCalendarOpen()) {
26 yield closeCalendar(getCalendarId(this.host()), this.documentRootLocatorFactory());
27 // This is necessary so that we wait for the closing animation to finish in touch UI mode.
28 yield this.forceStabilize();
29 }
30 });
31 }
32 /** Gets whether there is a calendar associated with the trigger. */
33 hasCalendar() {
34 return __awaiter(this, void 0, void 0, function* () {
35 return (yield getCalendarId(this.host())) != null;
36 });
37 }
38 /**
39 * Gets the `MatCalendarHarness` that is associated with the trigger.
40 * @param filter Optionally filters which calendar is included.
41 */
42 getCalendar(filter = {}) {
43 return __awaiter(this, void 0, void 0, function* () {
44 return getCalendar(filter, this.host(), this.documentRootLocatorFactory());
45 });
46 }
47}
48/** Gets the ID of the calendar that a particular test element can trigger. */
49export function getCalendarId(host) {
50 return __awaiter(this, void 0, void 0, function* () {
51 return (yield host).getAttribute('data-mat-calendar');
52 });
53}
54/** Closes the calendar with a specific ID. */
55export function closeCalendar(calendarId, documentLocator) {
56 return __awaiter(this, void 0, void 0, function* () {
57 // We close the calendar by clicking on the backdrop, even though all datepicker variants
58 // have the ability to close by pressing escape. The backdrop is preferrable, because the
59 // escape key has multiple functions inside a range picker (either cancel the current range
60 // or close the calendar). Since we don't have access to set the ID on the backdrop in all
61 // cases, we set a unique class instead which is the same as the calendar's ID and suffixed
62 // with `-backdrop`.
63 const backdropSelector = `.${yield calendarId}-backdrop`;
64 return (yield documentLocator.locatorFor(backdropSelector)()).click();
65 });
66}
67/** Gets the test harness for a calendar associated with a particular host. */
68export function getCalendar(filter, host, documentLocator) {
69 return __awaiter(this, void 0, void 0, function* () {
70 const calendarId = yield getCalendarId(host);
71 if (!calendarId) {
72 throw Error(`Element is not associated with a calendar`);
73 }
74 return documentLocator.locatorFor(MatCalendarHarness.with(Object.assign(Object.assign({}, filter), { selector: `#${calendarId}` })))();
75 });
76}
77//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10cmlnZ2VyLWhhcm5lc3MtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9kYXRlcGlja2VyL3Rlc3RpbmcvZGF0ZXBpY2tlci10cmlnZ2VyLWhhcm5lc3MtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7O0FBRUgsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixRQUFRLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQVd0RCw0REFBNEQ7QUFDNUQsTUFBTSxPQUFnQiw0QkFBNkIsU0FBUSxnQkFBZ0I7SUFXekUsMEVBQTBFO0lBQ3BFLFlBQVk7O1lBQ2hCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEdBQUcsTUFBTSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVoRyxJQUFJLENBQUMsVUFBVSxJQUFJLFdBQVcsRUFBRTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDN0I7UUFDSCxDQUFDO0tBQUE7SUFFRCx5Q0FBeUM7SUFDbkMsYUFBYTs7WUFDakIsSUFBSSxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDL0IsTUFBTSxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7Z0JBQ25GLDBGQUEwRjtnQkFDMUYsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDN0I7UUFDSCxDQUFDO0tBQUE7SUFFRCxvRUFBb0U7SUFDOUQsV0FBVzs7WUFDZixPQUFPLENBQUMsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDcEQsQ0FBQztLQUFBO0lBRUQ7OztPQUdHO0lBQ0csV0FBVyxDQUFDLFNBQWlDLEVBQUU7O1lBQ25ELE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUM3RSxDQUFDO0tBQUE7Q0FDRjtBQUVELDhFQUE4RTtBQUM5RSxNQUFNLFVBQWdCLGFBQWEsQ0FBQyxJQUEwQjs7UUFDNUQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUFBO0FBRUQsOENBQThDO0FBQzlDLE1BQU0sVUFBZ0IsYUFBYSxDQUNqQyxVQUFrQyxFQUNsQyxlQUErQjs7UUFDL0IseUZBQXlGO1FBQ3pGLHlGQUF5RjtRQUN6RiwyRkFBMkY7UUFDM0YsMEZBQTBGO1FBQzFGLDJGQUEyRjtRQUMzRixvQkFBb0I7UUFDcEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sVUFBVSxXQUFXLENBQUM7UUFDekQsT0FBTyxDQUFDLE1BQU0sZUFBZSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0NBQUE7QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxVQUFnQixXQUFXLENBQy9CLE1BQThCLEVBQzlCLElBQTBCLEVBQzFCLGVBQStCOztRQUMvQixNQUFNLFVBQVUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsTUFBTSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUMxRDtRQUVELE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLGlDQUNwRCxNQUFNLEtBQ1QsUUFBUSxFQUFFLElBQUksVUFBVSxFQUFFLElBQzFCLENBQUMsRUFBRSxDQUFDO0lBQ1IsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50SGFybmVzcywgTG9jYXRvckZhY3RvcnksIHBhcmFsbGVsLCBUZXN0RWxlbWVudH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHtDYWxlbmRhckhhcm5lc3NGaWx0ZXJzfSBmcm9tICcuL2RhdGVwaWNrZXItaGFybmVzcy1maWx0ZXJzJztcbmltcG9ydCB7TWF0Q2FsZW5kYXJIYXJuZXNzfSBmcm9tICcuL2NhbGVuZGFyLWhhcm5lc3MnO1xuXG4vKiogSW50ZXJmYWNlIGZvciBhIHRlc3QgaGFybmVzcyB0aGF0IGNhbiBvcGVuIGFuZCBjbG9zZSBhIGNhbGVuZGFyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRlcGlja2VyVHJpZ2dlciB7XG4gIGlzQ2FsZW5kYXJPcGVuKCk6IFByb21pc2U8Ym9vbGVhbj47XG4gIG9wZW5DYWxlbmRhcigpOiBQcm9taXNlPHZvaWQ+O1xuICBjbG9zZUNhbGVuZGFyKCk6IFByb21pc2U8dm9pZD47XG4gIGhhc0NhbGVuZGFyKCk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGdldENhbGVuZGFyKGZpbHRlcj86IENhbGVuZGFySGFybmVzc0ZpbHRlcnMpOiBQcm9taXNlPE1hdENhbGVuZGFySGFybmVzcz47XG59XG5cbi8qKiBCYXNlIGNsYXNzIGZvciBoYXJuZXNzZXMgdGhhdCBjYW4gdHJpZ2dlciBhIGNhbGVuZGFyLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGVwaWNrZXJUcmlnZ2VySGFybmVzc0Jhc2UgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzIGltcGxlbWVudHNcbiAgRGF0ZXBpY2tlclRyaWdnZXIge1xuICAvKiogV2hldGhlciB0aGUgdHJpZ2dlciBpcyBkaXNhYmxlZC4gKi9cbiAgYWJzdHJhY3QgaXNEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjYWxlbmRhciBhc3NvY2lhdGVkIHdpdGggdGhlIHRyaWdnZXIgaXMgb3Blbi4gKi9cbiAgYWJzdHJhY3QgaXNDYWxlbmRhck9wZW4oKTogUHJvbWlzZTxib29sZWFuPjtcblxuICAvKiogT3BlbnMgdGhlIGNhbGVuZGFyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHJpZ2dlci4gKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9vcGVuQ2FsZW5kYXIoKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKiogT3BlbnMgdGhlIGNhbGVuZGFyIGlmIHRoZSB0cmlnZ2VyIGlzIGVuYWJsZWQgYW5kIGl0IGhhcyBhIGNhbGVuZGFyLiAqL1xuICBhc3luYyBvcGVuQ2FsZW5kYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgW2lzRGlzYWJsZWQsIGhhc0NhbGVuZGFyXSA9IGF3YWl0IHBhcmFsbGVsKCgpID0+IFt0aGlzLmlzRGlzYWJsZWQoKSwgdGhpcy5oYXNDYWxlbmRhcigpXSk7XG5cbiAgICBpZiAoIWlzRGlzYWJsZWQgJiYgaGFzQ2FsZW5kYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vcGVuQ2FsZW5kYXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBjYWxlbmRhciBpZiBpdCBpcyBvcGVuLiAqL1xuICBhc3luYyBjbG9zZUNhbGVuZGFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmlzQ2FsZW5kYXJPcGVuKCkpIHtcbiAgICAgIGF3YWl0IGNsb3NlQ2FsZW5kYXIoZ2V0Q2FsZW5kYXJJZCh0aGlzLmhvc3QoKSksIHRoaXMuZG9jdW1lbnRSb290TG9jYXRvckZhY3RvcnkoKSk7XG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0IHdlIHdhaXQgZm9yIHRoZSBjbG9zaW5nIGFuaW1hdGlvbiB0byBmaW5pc2ggaW4gdG91Y2ggVUkgbW9kZS5cbiAgICAgIGF3YWl0IHRoaXMuZm9yY2VTdGFiaWxpemUoKTtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0cyB3aGV0aGVyIHRoZXJlIGlzIGEgY2FsZW5kYXIgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmlnZ2VyLiAqL1xuICBhc3luYyBoYXNDYWxlbmRhcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IGdldENhbGVuZGFySWQodGhpcy5ob3N0KCkpKSAhPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGBNYXRDYWxlbmRhckhhcm5lc3NgIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmlnZ2VyLlxuICAgKiBAcGFyYW0gZmlsdGVyIE9wdGlvbmFsbHkgZmlsdGVycyB3aGljaCBjYWxlbmRhciBpcyBpbmNsdWRlZC5cbiAgICovXG4gIGFzeW5jIGdldENhbGVuZGFyKGZpbHRlcjogQ2FsZW5kYXJIYXJuZXNzRmlsdGVycyA9IHt9KTogUHJvbWlzZTxNYXRDYWxlbmRhckhhcm5lc3M+IHtcbiAgICByZXR1cm4gZ2V0Q2FsZW5kYXIoZmlsdGVyLCB0aGlzLmhvc3QoKSwgdGhpcy5kb2N1bWVudFJvb3RMb2NhdG9yRmFjdG9yeSgpKTtcbiAgfVxufVxuXG4vKiogR2V0cyB0aGUgSUQgb2YgdGhlIGNhbGVuZGFyIHRoYXQgYSBwYXJ0aWN1bGFyIHRlc3QgZWxlbWVudCBjYW4gdHJpZ2dlci4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWxlbmRhcklkKGhvc3Q6IFByb21pc2U8VGVzdEVsZW1lbnQ+KTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gIHJldHVybiAoYXdhaXQgaG9zdCkuZ2V0QXR0cmlidXRlKCdkYXRhLW1hdC1jYWxlbmRhcicpO1xufVxuXG4vKiogQ2xvc2VzIHRoZSBjYWxlbmRhciB3aXRoIGEgc3BlY2lmaWMgSUQuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xvc2VDYWxlbmRhcihcbiAgY2FsZW5kYXJJZDogUHJvbWlzZTxzdHJpbmcgfCBudWxsPixcbiAgZG9jdW1lbnRMb2NhdG9yOiBMb2NhdG9yRmFjdG9yeSkge1xuICAvLyBXZSBjbG9zZSB0aGUgY2FsZW5kYXIgYnkgY2xpY2tpbmcgb24gdGhlIGJhY2tkcm9wLCBldmVuIHRob3VnaCBhbGwgZGF0ZXBpY2tlciB2YXJpYW50c1xuICAvLyBoYXZlIHRoZSBhYmlsaXR5IHRvIGNsb3NlIGJ5IHByZXNzaW5nIGVzY2FwZS4gVGhlIGJhY2tkcm9wIGlzIHByZWZlcnJhYmxlLCBiZWNhdXNlIHRoZVxuICAvLyBlc2NhcGUga2V5IGhhcyBtdWx0aXBsZSBmdW5jdGlvbnMgaW5zaWRlIGEgcmFuZ2UgcGlja2VyIChlaXRoZXIgY2FuY2VsIHRoZSBjdXJyZW50IHJhbmdlXG4gIC8vIG9yIGNsb3NlIHRoZSBjYWxlbmRhcikuIFNpbmNlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHNldCB0aGUgSUQgb24gdGhlIGJhY2tkcm9wIGluIGFsbFxuICAvLyBjYXNlcywgd2Ugc2V0IGEgdW5pcXVlIGNsYXNzIGluc3RlYWQgd2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlIGNhbGVuZGFyJ3MgSUQgYW5kIHN1ZmZpeGVkXG4gIC8vIHdpdGggYC1iYWNrZHJvcGAuXG4gIGNvbnN0IGJhY2tkcm9wU2VsZWN0b3IgPSBgLiR7YXdhaXQgY2FsZW5kYXJJZH0tYmFja2Ryb3BgO1xuICByZXR1cm4gKGF3YWl0IGRvY3VtZW50TG9jYXRvci5sb2NhdG9yRm9yKGJhY2tkcm9wU2VsZWN0b3IpKCkpLmNsaWNrKCk7XG59XG5cbi8qKiBHZXRzIHRoZSB0ZXN0IGhhcm5lc3MgZm9yIGEgY2FsZW5kYXIgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBob3N0LiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENhbGVuZGFyKFxuICBmaWx0ZXI6IENhbGVuZGFySGFybmVzc0ZpbHRlcnMsXG4gIGhvc3Q6IFByb21pc2U8VGVzdEVsZW1lbnQ+LFxuICBkb2N1bWVudExvY2F0b3I6IExvY2F0b3JGYWN0b3J5KTogUHJvbWlzZTxNYXRDYWxlbmRhckhhcm5lc3M+IHtcbiAgY29uc3QgY2FsZW5kYXJJZCA9IGF3YWl0IGdldENhbGVuZGFySWQoaG9zdCk7XG5cbiAgaWYgKCFjYWxlbmRhcklkKSB7XG4gICAgdGhyb3cgRXJyb3IoYEVsZW1lbnQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIGNhbGVuZGFyYCk7XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRMb2NhdG9yLmxvY2F0b3JGb3IoTWF0Q2FsZW5kYXJIYXJuZXNzLndpdGgoe1xuICAgIC4uLmZpbHRlcixcbiAgICBzZWxlY3RvcjogYCMke2NhbGVuZGFySWR9YFxuICB9KSkoKTtcbn1cbiJdfQ==
Note: See TracBrowser for help on using the repository browser.