@skyux/popovers 5.6.2 → 6.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +2 -2
- package/esm2020/index.mjs +23 -0
- package/esm2020/lib/modules/dropdown/dropdown-button.component.mjs +11 -0
- package/esm2020/lib/modules/dropdown/dropdown-extensions.mjs +14 -0
- package/esm2020/lib/modules/dropdown/dropdown-item.component.mjs +66 -0
- package/esm2020/lib/modules/dropdown/dropdown-menu.component.mjs +301 -0
- package/esm2020/lib/modules/dropdown/dropdown.component.mjs +356 -0
- package/esm2020/lib/modules/dropdown/dropdown.module.mjs +60 -0
- package/esm2020/lib/modules/dropdown/types/dropdown-horizontal-alignment.mjs +2 -0
- package/esm2020/lib/modules/dropdown/types/dropdown-menu-change.mjs +2 -0
- package/esm2020/lib/modules/dropdown/types/dropdown-message-type.mjs +37 -0
- package/esm2020/lib/modules/dropdown/types/dropdown-message.mjs +2 -0
- package/esm2020/lib/modules/dropdown/types/dropdown-trigger-type.mjs +2 -0
- package/esm2020/lib/modules/popover/popover-adapter.service.mjs +74 -0
- package/esm2020/lib/modules/popover/popover-animation-state.mjs +2 -0
- package/esm2020/lib/modules/popover/popover-animation.mjs +19 -0
- package/esm2020/lib/modules/popover/popover-content.component.mjs +261 -0
- package/esm2020/lib/modules/popover/popover-context.mjs +10 -0
- package/esm2020/lib/modules/popover/popover-extensions.mjs +29 -0
- package/esm2020/lib/modules/popover/popover.component.mjs +198 -0
- package/esm2020/lib/modules/popover/popover.directive.mjs +176 -0
- package/esm2020/lib/modules/popover/popover.module.mjs +55 -0
- package/esm2020/lib/modules/popover/types/popover-adapter-arrow-coordinates.mjs +2 -0
- package/esm2020/lib/modules/popover/types/popover-adapter-elements.mjs +2 -0
- package/esm2020/lib/modules/popover/types/popover-alignment.mjs +2 -0
- package/esm2020/lib/modules/popover/types/popover-message-type.mjs +24 -0
- package/esm2020/lib/modules/popover/types/popover-message.mjs +2 -0
- package/esm2020/lib/modules/popover/types/popover-placement.mjs +2 -0
- package/esm2020/lib/modules/popover/types/popover-position.mjs +2 -0
- package/esm2020/lib/modules/popover/types/popover-trigger.mjs +2 -0
- package/esm2020/lib/modules/shared/sky-popovers-resources.module.mjs +47 -0
- package/esm2020/skyux-popovers.mjs +5 -0
- package/esm2020/testing/dropdown/dropdown-fixture.mjs +133 -0
- package/esm2020/testing/dropdown/dropdown-testing.module.mjs +15 -0
- package/esm2020/testing/dropdown/popovers-fixture-dropdown-item.mjs +2 -0
- package/esm2020/testing/dropdown/popovers-fixture-dropdown-menu.mjs +2 -0
- package/esm2020/testing/dropdown/popovers-fixture-dropdown.mjs +2 -0
- package/esm2020/testing/popover/popover-fixture.mjs +86 -0
- package/esm2020/testing/popover/popover-testing.module.mjs +29 -0
- package/esm2020/testing/public-api.mjs +8 -0
- package/esm2020/testing/skyux-popovers-testing.mjs +5 -0
- package/fesm2015/{skyux-popovers-testing.js → skyux-popovers-testing.mjs} +9 -9
- package/fesm2015/skyux-popovers-testing.mjs.map +1 -0
- package/fesm2015/skyux-popovers.mjs +1689 -0
- package/fesm2015/skyux-popovers.mjs.map +1 -0
- package/fesm2020/skyux-popovers-testing.mjs +266 -0
- package/fesm2020/skyux-popovers-testing.mjs.map +1 -0
- package/{fesm2015/skyux-popovers.js → fesm2020/skyux-popovers.mjs} +54 -89
- package/fesm2020/skyux-popovers.mjs.map +1 -0
- package/lib/modules/shared/sky-popovers-resources.module.d.ts +1 -1
- package/package.json +36 -15
- package/testing/package.json +5 -5
- package/bundles/skyux-popovers-testing.umd.js +0 -682
- package/bundles/skyux-popovers.umd.js +0 -1873
- package/esm2015/index.js +0 -23
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown-button.component.js +0 -14
- package/esm2015/lib/modules/dropdown/dropdown-button.component.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown-extensions.js +0 -14
- package/esm2015/lib/modules/dropdown/dropdown-extensions.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js +0 -72
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js +0 -307
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown.component.js +0 -360
- package/esm2015/lib/modules/dropdown/dropdown.component.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown.module.js +0 -60
- package/esm2015/lib/modules/dropdown/dropdown.module.js.map +0 -1
- package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js +0 -2
- package/esm2015/lib/modules/dropdown/types/dropdown-horizontal-alignment.js.map +0 -1
- package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js +0 -2
- package/esm2015/lib/modules/dropdown/types/dropdown-menu-change.js.map +0 -1
- package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js +0 -37
- package/esm2015/lib/modules/dropdown/types/dropdown-message-type.js.map +0 -1
- package/esm2015/lib/modules/dropdown/types/dropdown-message.js +0 -2
- package/esm2015/lib/modules/dropdown/types/dropdown-message.js.map +0 -1
- package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js +0 -2
- package/esm2015/lib/modules/dropdown/types/dropdown-trigger-type.js.map +0 -1
- package/esm2015/lib/modules/popover/popover-adapter.service.js +0 -74
- package/esm2015/lib/modules/popover/popover-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/popover/popover-animation-state.js +0 -2
- package/esm2015/lib/modules/popover/popover-animation-state.js.map +0 -1
- package/esm2015/lib/modules/popover/popover-animation.js +0 -19
- package/esm2015/lib/modules/popover/popover-animation.js.map +0 -1
- package/esm2015/lib/modules/popover/popover-content.component.js +0 -271
- package/esm2015/lib/modules/popover/popover-content.component.js.map +0 -1
- package/esm2015/lib/modules/popover/popover-context.js +0 -10
- package/esm2015/lib/modules/popover/popover-context.js.map +0 -1
- package/esm2015/lib/modules/popover/popover-extensions.js +0 -29
- package/esm2015/lib/modules/popover/popover-extensions.js.map +0 -1
- package/esm2015/lib/modules/popover/popover.component.js +0 -203
- package/esm2015/lib/modules/popover/popover.component.js.map +0 -1
- package/esm2015/lib/modules/popover/popover.directive.js +0 -176
- package/esm2015/lib/modules/popover/popover.directive.js.map +0 -1
- package/esm2015/lib/modules/popover/popover.module.js +0 -56
- package/esm2015/lib/modules/popover/popover.module.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-adapter-arrow-coordinates.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-adapter-elements.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-adapter-elements.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-alignment.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-alignment.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-message-type.js +0 -24
- package/esm2015/lib/modules/popover/types/popover-message-type.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-message.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-message.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-placement.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-placement.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-position.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-position.js.map +0 -1
- package/esm2015/lib/modules/popover/types/popover-trigger.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-trigger.js.map +0 -1
- package/esm2015/lib/modules/shared/sky-popovers-resources.module.js +0 -47
- package/esm2015/lib/modules/shared/sky-popovers-resources.module.js.map +0 -1
- package/esm2015/skyux-popovers.js +0 -5
- package/esm2015/skyux-popovers.js.map +0 -1
- package/esm2015/testing/dropdown/dropdown-fixture.js +0 -138
- package/esm2015/testing/dropdown/dropdown-fixture.js.map +0 -1
- package/esm2015/testing/dropdown/dropdown-testing.module.js +0 -15
- package/esm2015/testing/dropdown/dropdown-testing.module.js.map +0 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js +0 -2
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-item.js.map +0 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js +0 -2
- package/esm2015/testing/dropdown/popovers-fixture-dropdown-menu.js.map +0 -1
- package/esm2015/testing/dropdown/popovers-fixture-dropdown.js +0 -2
- package/esm2015/testing/dropdown/popovers-fixture-dropdown.js.map +0 -1
- package/esm2015/testing/popover/popover-fixture.js +0 -86
- package/esm2015/testing/popover/popover-fixture.js.map +0 -1
- package/esm2015/testing/popover/popover-testing.module.js +0 -29
- package/esm2015/testing/popover/popover-testing.module.js.map +0 -1
- package/esm2015/testing/public-api.js +0 -8
- package/esm2015/testing/public-api.js.map +0 -1
- package/esm2015/testing/skyux-popovers-testing.js +0 -5
- package/esm2015/testing/skyux-popovers-testing.js.map +0 -1
- package/fesm2015/skyux-popovers-testing.js.map +0 -1
- package/fesm2015/skyux-popovers.js.map +0 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, Optional, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
+
import { SkyAffixAutoFitContext, SkyAffixService, SkyOverlayService, } from '@skyux/core';
|
|
3
|
+
import { SkyThemeService } from '@skyux/theme';
|
|
4
|
+
import { Subject, fromEvent as observableFromEvent } from 'rxjs';
|
|
5
|
+
import { takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { parseAffixHorizontalAlignment } from './dropdown-extensions';
|
|
7
|
+
import { SkyDropdownMessageType } from './types/dropdown-message-type';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@skyux/core";
|
|
10
|
+
import * as i2 from "@skyux/theme";
|
|
11
|
+
import * as i3 from "@skyux/indicators";
|
|
12
|
+
import * as i4 from "@angular/common";
|
|
13
|
+
import * as i5 from "@skyux/i18n";
|
|
14
|
+
export class SkyDropdownComponent {
|
|
15
|
+
constructor(changeDetector, affixService, overlayService, themeSvc) {
|
|
16
|
+
this.changeDetector = changeDetector;
|
|
17
|
+
this.affixService = affixService;
|
|
18
|
+
this.overlayService = overlayService;
|
|
19
|
+
this.themeSvc = themeSvc;
|
|
20
|
+
/**
|
|
21
|
+
* Provides an observable to send commands to the dropdown. The commands should respect
|
|
22
|
+
* the [[SkyDropdownMessage]] type.
|
|
23
|
+
*/
|
|
24
|
+
this.messageStream = new Subject();
|
|
25
|
+
this.isMouseEnter = false;
|
|
26
|
+
this.isVisible = false;
|
|
27
|
+
this.ngUnsubscribe = new Subject();
|
|
28
|
+
this._isOpen = false;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Specifies a background color for the dropdown button. Available values are `default` and
|
|
32
|
+
* `primary`. These values set the background color from the
|
|
33
|
+
* [secondary and primary button classes](https://developer.blackbaud.com/skyux/components/button) respectively.
|
|
34
|
+
* @default "default"
|
|
35
|
+
*/
|
|
36
|
+
set buttonStyle(value) {
|
|
37
|
+
this._buttonStyle = value;
|
|
38
|
+
}
|
|
39
|
+
get buttonStyle() {
|
|
40
|
+
return this._buttonStyle || 'default';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Specifies the type of button to render as the dropdown's trigger element. To display a button
|
|
44
|
+
* with text and a caret, specify `select` and then enter the button text in a
|
|
45
|
+
* `sky-dropdown-button` element. To display a round button with an ellipsis, specify
|
|
46
|
+
* `context-menu`. And to display a button with a [Font Awesome icon](http://fontawesome.io/icons/), specify the icon's class name.
|
|
47
|
+
* For example, to display the `fa-filter` icon, specify `filter`.
|
|
48
|
+
* @default "select"
|
|
49
|
+
*/
|
|
50
|
+
set buttonType(value) {
|
|
51
|
+
this._buttonType = value;
|
|
52
|
+
}
|
|
53
|
+
get buttonType() {
|
|
54
|
+
return this._buttonType || 'select';
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Indicates whether to disable the dropdown button.
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
set disabled(value) {
|
|
61
|
+
this._disabled = value;
|
|
62
|
+
}
|
|
63
|
+
get disabled() {
|
|
64
|
+
return this._disabled || false;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Indicates whether to close the dropdown when users click away from the menu.
|
|
68
|
+
* @default true
|
|
69
|
+
*/
|
|
70
|
+
set dismissOnBlur(value) {
|
|
71
|
+
this._dismissOnBlur = value;
|
|
72
|
+
}
|
|
73
|
+
get dismissOnBlur() {
|
|
74
|
+
if (this._dismissOnBlur === undefined) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return this._dismissOnBlur;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Specifies the horizontal alignment of the dropdown menu in relation to the dropdown button.
|
|
81
|
+
* @default "left"
|
|
82
|
+
*/
|
|
83
|
+
set horizontalAlignment(value) {
|
|
84
|
+
this._horizontalAlignment = value;
|
|
85
|
+
}
|
|
86
|
+
get horizontalAlignment() {
|
|
87
|
+
return this._horizontalAlignment || 'left';
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Specifies how users interact with the dropdown button to expose the dropdown menu.
|
|
91
|
+
* We recommend the default `click` value because the `hover` value can pose
|
|
92
|
+
* [accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) issues
|
|
93
|
+
* for users on touch devices such as phones and tablets.
|
|
94
|
+
* @deprecated We recommend against using this property. If you choose to use the deprecated
|
|
95
|
+
* `hover` value anyway, we recommend that you not use it in combination with the `title`
|
|
96
|
+
* property. (This property will be removed in the next major version release.)
|
|
97
|
+
* @default "click"
|
|
98
|
+
*/
|
|
99
|
+
set trigger(value) {
|
|
100
|
+
this._trigger = value;
|
|
101
|
+
}
|
|
102
|
+
get trigger() {
|
|
103
|
+
return this._trigger || 'click';
|
|
104
|
+
}
|
|
105
|
+
set isOpen(value) {
|
|
106
|
+
this._isOpen = value;
|
|
107
|
+
this.changeDetector.markForCheck();
|
|
108
|
+
}
|
|
109
|
+
get isOpen() {
|
|
110
|
+
return this._isOpen || false;
|
|
111
|
+
}
|
|
112
|
+
set menuContainerElementRef(value) {
|
|
113
|
+
if (value) {
|
|
114
|
+
this._menuContainerElementRef = value;
|
|
115
|
+
this.destroyAffixer();
|
|
116
|
+
this.createAffixer();
|
|
117
|
+
this.changeDetector.markForCheck();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
get menuContainerElementRef() {
|
|
121
|
+
return this._menuContainerElementRef;
|
|
122
|
+
}
|
|
123
|
+
ngOnInit() {
|
|
124
|
+
this.addEventListeners();
|
|
125
|
+
this.messageStream
|
|
126
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
127
|
+
.subscribe((message) => {
|
|
128
|
+
this.handleIncomingMessages(message);
|
|
129
|
+
});
|
|
130
|
+
// Load proper icons on theme change.
|
|
131
|
+
this.themeSvc?.settingsChange
|
|
132
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
133
|
+
.subscribe(() => {
|
|
134
|
+
this.changeDetector.markForCheck();
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
ngOnDestroy() {
|
|
138
|
+
this.destroyAffixer();
|
|
139
|
+
this.destroyOverlay();
|
|
140
|
+
clearTimeout(this._positionTimeout);
|
|
141
|
+
this.ngUnsubscribe.next();
|
|
142
|
+
this.ngUnsubscribe.complete();
|
|
143
|
+
this.ngUnsubscribe = undefined;
|
|
144
|
+
}
|
|
145
|
+
addEventListeners() {
|
|
146
|
+
const buttonElement = this.triggerButton.nativeElement;
|
|
147
|
+
observableFromEvent(buttonElement, 'click')
|
|
148
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
149
|
+
.subscribe(() => {
|
|
150
|
+
if (this.isOpen) {
|
|
151
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.sendMessage(SkyDropdownMessageType.Open);
|
|
155
|
+
// Wait for dropdown to open, then set focus on first item.
|
|
156
|
+
setTimeout(() => {
|
|
157
|
+
this.sendMessage(SkyDropdownMessageType.FocusFirstItem);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
observableFromEvent(buttonElement, 'keydown')
|
|
162
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
163
|
+
.subscribe((event) => {
|
|
164
|
+
const key = event.key.toLowerCase();
|
|
165
|
+
/* tslint:disable-next-line:switch-default */
|
|
166
|
+
switch (key) {
|
|
167
|
+
case 'escape':
|
|
168
|
+
/*istanbul ignore else*/
|
|
169
|
+
if (this.isOpen) {
|
|
170
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
171
|
+
this.sendMessage(SkyDropdownMessageType.FocusTriggerButton);
|
|
172
|
+
event.stopPropagation();
|
|
173
|
+
}
|
|
174
|
+
break;
|
|
175
|
+
case 'tab':
|
|
176
|
+
if (this.isOpen && this.dismissOnBlur) {
|
|
177
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
178
|
+
}
|
|
179
|
+
break;
|
|
180
|
+
case 'arrowup':
|
|
181
|
+
case 'up':
|
|
182
|
+
if (!this.isOpen) {
|
|
183
|
+
this.sendMessage(SkyDropdownMessageType.Open);
|
|
184
|
+
this.sendMessage(SkyDropdownMessageType.FocusLastItem);
|
|
185
|
+
event.preventDefault();
|
|
186
|
+
event.stopPropagation();
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
case 'enter':
|
|
190
|
+
case 'arrowdown':
|
|
191
|
+
case 'down':
|
|
192
|
+
case ' ': // Spacebar.
|
|
193
|
+
/*istanbul ignore else*/
|
|
194
|
+
if (!this.isOpen) {
|
|
195
|
+
this.sendMessage(SkyDropdownMessageType.Open);
|
|
196
|
+
this.sendMessage(SkyDropdownMessageType.FocusFirstItem);
|
|
197
|
+
event.preventDefault();
|
|
198
|
+
event.stopPropagation();
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
observableFromEvent(buttonElement, 'mouseenter')
|
|
204
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
205
|
+
.subscribe(() => {
|
|
206
|
+
this.isMouseEnter = true;
|
|
207
|
+
if (this.trigger === 'hover') {
|
|
208
|
+
this.sendMessage(SkyDropdownMessageType.Open);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
observableFromEvent(buttonElement, 'mouseleave')
|
|
212
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
213
|
+
.subscribe(() => {
|
|
214
|
+
this.isMouseEnter = false;
|
|
215
|
+
if (this.trigger === 'hover') {
|
|
216
|
+
// Allow the dropdown menu to set isMouseEnter before checking if the close action
|
|
217
|
+
// should be taken.
|
|
218
|
+
setTimeout(() => {
|
|
219
|
+
if (!this.isMouseEnter) {
|
|
220
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
createOverlay() {
|
|
227
|
+
if (this.overlay) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const overlay = this.overlayService.create({
|
|
231
|
+
enableScroll: true,
|
|
232
|
+
enablePointerEvents: true,
|
|
233
|
+
});
|
|
234
|
+
overlay.attachTemplate(this.menuContainerTemplateRef);
|
|
235
|
+
overlay.backdropClick.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
|
|
236
|
+
if (this.dismissOnBlur) {
|
|
237
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
this.overlay = overlay;
|
|
241
|
+
}
|
|
242
|
+
destroyAffixer() {
|
|
243
|
+
/*istanbul ignore else*/
|
|
244
|
+
if (this.affixer) {
|
|
245
|
+
this.affixer.destroy();
|
|
246
|
+
this.affixer = undefined;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
destroyOverlay() {
|
|
250
|
+
/*istanbul ignore else*/
|
|
251
|
+
if (this.overlay) {
|
|
252
|
+
this.overlayService.close(this.overlay);
|
|
253
|
+
this.overlay = undefined;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
createAffixer() {
|
|
257
|
+
const affixer = this.affixService.createAffixer(this.menuContainerElementRef);
|
|
258
|
+
affixer.placementChange
|
|
259
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
260
|
+
.subscribe((change) => {
|
|
261
|
+
this.isVisible = change.placement !== null;
|
|
262
|
+
this.changeDetector.markForCheck();
|
|
263
|
+
});
|
|
264
|
+
this.affixer = affixer;
|
|
265
|
+
}
|
|
266
|
+
handleIncomingMessages(message) {
|
|
267
|
+
if (!this.disabled) {
|
|
268
|
+
/* tslint:disable-next-line:switch-default */
|
|
269
|
+
switch (message.type) {
|
|
270
|
+
case SkyDropdownMessageType.Open:
|
|
271
|
+
this.isOpen = true;
|
|
272
|
+
this.positionDropdownMenu();
|
|
273
|
+
break;
|
|
274
|
+
case SkyDropdownMessageType.Close:
|
|
275
|
+
this.isOpen = false;
|
|
276
|
+
this.destroyOverlay();
|
|
277
|
+
break;
|
|
278
|
+
case SkyDropdownMessageType.Reposition:
|
|
279
|
+
// Only reposition the dropdown if it is already open.
|
|
280
|
+
/* istanbul ignore else */
|
|
281
|
+
if (this.isOpen && this.affixer) {
|
|
282
|
+
this.affixer.reaffix();
|
|
283
|
+
}
|
|
284
|
+
break;
|
|
285
|
+
case SkyDropdownMessageType.FocusTriggerButton:
|
|
286
|
+
this.triggerButton.nativeElement.focus();
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
sendMessage(type) {
|
|
292
|
+
this.messageStream.next({ type });
|
|
293
|
+
}
|
|
294
|
+
positionDropdownMenu() {
|
|
295
|
+
this.isVisible = false;
|
|
296
|
+
this.createOverlay();
|
|
297
|
+
this.changeDetector.markForCheck();
|
|
298
|
+
// Explicitly declare the `setTimeout` from the `window` object in order to use the DOM typings
|
|
299
|
+
// during a unit test (instead of confusing this with Node's `setTimeout`).
|
|
300
|
+
this._positionTimeout = window.setTimeout(() => {
|
|
301
|
+
this.affixer.affixTo(this.triggerButton.nativeElement, {
|
|
302
|
+
autoFitContext: SkyAffixAutoFitContext.Viewport,
|
|
303
|
+
enableAutoFit: true,
|
|
304
|
+
horizontalAlignment: parseAffixHorizontalAlignment(this.horizontalAlignment),
|
|
305
|
+
isSticky: true,
|
|
306
|
+
placement: 'below',
|
|
307
|
+
});
|
|
308
|
+
this.isVisible = true;
|
|
309
|
+
this.changeDetector.markForCheck();
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
SkyDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyAffixService }, { token: i1.SkyOverlayService }, { token: i2.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
314
|
+
SkyDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyDropdownComponent, selector: "sky-dropdown", inputs: { buttonStyle: "buttonStyle", buttonType: "buttonType", disabled: "disabled", dismissOnBlur: "dismissOnBlur", label: "label", horizontalAlignment: "horizontalAlignment", messageStream: "messageStream", title: "title", trigger: "trigger" }, viewQueries: [{ propertyName: "menuContainerElementRef", first: true, predicate: ["menuContainerElementRef"], descendants: true, read: ElementRef }, { propertyName: "menuContainerTemplateRef", first: true, predicate: ["menuContainerTemplateRef"], descendants: true, read: TemplateRef, static: true }, { propertyName: "triggerButton", first: true, predicate: ["triggerButton"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"], components: [{ type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "skyLibResources": i5.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownComponent, decorators: [{
|
|
316
|
+
type: Component,
|
|
317
|
+
args: [{ selector: 'sky-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-dropdown\">\n <button\n class=\"sky-btn sky-dropdown-button\"\n type=\"button\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"isOpen ? menuId : null\"\n [attr.aria-haspopup]=\"menuAriaRole\"\n [attr.aria-label]=\"\n label || ('skyux_dropdown_context_menu_default_label' | skyLibResources)\n \"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'sky-dropdown-button-type-' + buttonType,\n 'sky-btn-' + buttonStyle\n ]\"\n #triggerButton\n >\n <ng-container [ngSwitch]=\"buttonType\">\n <ng-template ngSwitchCase=\"context-menu\">\n <sky-icon *skyThemeIf=\"'default'\" icon=\"ellipsis-h\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"ellipsis\"\n iconType=\"skyux\"\n ></sky-icon>\n </ng-template>\n\n <ng-template ngSwitchDefault>\n <div\n *ngIf=\"buttonType === 'select' || buttonType === 'tab' || !buttonType\"\n class=\"sky-dropdown-button-container\"\n >\n <div class=\"sky-dropdown-button-content-container\">\n <ng-content select=\"sky-dropdown-button\"> </ng-content>\n </div>\n <div class=\"sky-dropdown-button-icon-container\">\n <sky-icon\n *skyThemeIf=\"'default'\"\n class=\"sky-dropdown-caret\"\n icon=\"caret-down\"\n >\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n class=\"sky-dropdown-caret\"\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </div>\n </div>\n <div\n *ngIf=\"buttonType !== 'select' && buttonType !== 'tab' && buttonType\"\n >\n <sky-icon [icon]=\"buttonType\" size=\"lg\"></sky-icon>\n </div>\n </ng-template>\n </ng-container>\n </button>\n</div>\n\n<ng-template #menuContainerTemplateRef>\n <div\n class=\"sky-dropdown-menu-container\"\n [class.hidden]=\"!isVisible\"\n #menuContainerElementRef\n >\n <ng-content select=\"sky-dropdown-menu\"></ng-content>\n </div>\n</ng-template>\n", styles: [".sky-dropdown-button-type-tab{background-color:transparent;border:none;border-radius:4px 4px 0 0;color:#686c73;cursor:pointer;display:inline-block;font-weight:600;line-height:1.8;padding:8px 16px;background-color:#0974a1;color:#fff;max-width:100%;text-align:left}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#eeeeef;color:#212327;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled{background-color:#cdcfd2;cursor:default;outline:none;text-decoration:none}.sky-dropdown-button-type-tab.sky-btn-tab-disabled:hover{color:#686c73;cursor:default;text-decoration:none}.sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:#0974a1;color:#fff}.sky-dropdown-button-type-context-menu{border-radius:50%;padding:3px 8px}.sky-dropdown-caret{margin-left:10px}.sky-dropdown-button-container{display:flex}.sky-dropdown-button-content-container{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.sky-dropdown-button-icon-container{flex-grow:1}.sky-dropdown-menu-container{position:fixed}.hidden{visibility:hidden}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}:host-context(.sky-theme-modern) .sky-dropdown-caret{margin-left:10px}.sky-theme-modern .sky-dropdown-button-type-tab{border:none;border-radius:0;font-weight:400;padding:10px 15px;transition:box-shadow .15s;background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled):not(.sky-btn-tab-selected):not(.sky-dropdown-button-type-tab):not(:focus){background-color:transparent;border-bottom:solid 1px #00b4f1;padding-bottom:9px}.sky-theme-modern .sky-dropdown-button-type-tab:focus{background-color:transparent;outline:none}.sky-theme-modern .sky-dropdown-button-type-tab:focus:not(:active){outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-dropdown-button-type-tab:active{border-bottom:solid 3px #00b4f1;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:not(:active){border-bottom:solid 3px #1870B8;padding-bottom:7px}.sky-theme-modern .sky-dropdown-button-type-tab:hover:not(.sky-btn-tab-disabled){background-color:transparent;color:#212327}.sky-theme-modern .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern .sky-dropdown-button-type-tab .sky-tab-header-count{color:#686c73}.sky-theme-modern .sky-dropdown-caret{margin-left:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab:hover{color:#fff}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-btn-tab-close,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab:hover{color:#fff}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-btn-tab-close,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-button-type-tab .sky-tab-header-count{color:#efefef}\n"] }]
|
|
318
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyAffixService }, { type: i1.SkyOverlayService }, { type: i2.SkyThemeService, decorators: [{
|
|
319
|
+
type: Optional
|
|
320
|
+
}] }]; }, propDecorators: { buttonStyle: [{
|
|
321
|
+
type: Input
|
|
322
|
+
}], buttonType: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], disabled: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], dismissOnBlur: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], label: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], horizontalAlignment: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}], messageStream: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], title: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], trigger: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], menuContainerElementRef: [{
|
|
339
|
+
type: ViewChild,
|
|
340
|
+
args: ['menuContainerElementRef', {
|
|
341
|
+
read: ElementRef,
|
|
342
|
+
}]
|
|
343
|
+
}], menuContainerTemplateRef: [{
|
|
344
|
+
type: ViewChild,
|
|
345
|
+
args: ['menuContainerTemplateRef', {
|
|
346
|
+
read: TemplateRef,
|
|
347
|
+
static: true,
|
|
348
|
+
}]
|
|
349
|
+
}], triggerButton: [{
|
|
350
|
+
type: ViewChild,
|
|
351
|
+
args: ['triggerButton', {
|
|
352
|
+
read: ElementRef,
|
|
353
|
+
static: true,
|
|
354
|
+
}]
|
|
355
|
+
}] } });
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUdmLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQVN2RSxNQUFNLE9BQU8sb0JBQW9CO0lBeUwvQixZQUNVLGNBQWlDLEVBQ2pDLFlBQTZCLEVBQzdCLGNBQWlDLEVBQ3JCLFFBQTBCO1FBSHRDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ3JCLGFBQVEsR0FBUixRQUFR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UTtzQkFEbEIsS0FBSztnQkFjSyxhQUFhO3NCQUR2QixLQUFLO2dCQWtCQyxLQUFLO3NCQURYLEtBQUs7Z0JBUUssbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWVDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQWNLLE9BQU87c0JBRGpCLEtBQUs7Z0JBcUJLLHVCQUF1QjtzQkFIakMsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQTBCTyx3QkFBd0I7c0JBSi9CLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUU7d0JBQ3JDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTyxhQUFhO3NCQUpwQixTQUFTO3VCQUFDLGVBQWUsRUFBRTt3QkFDMUIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBwYXJzZUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gJy4vZHJvcGRvd24tZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tdHJpZ2dlci10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGRyb3Bkb3duIGJ1dHRvbi4gQXZhaWxhYmxlIHZhbHVlcyBhcmUgYGRlZmF1bHRgIGFuZFxuICAgKiBgcHJpbWFyeWAuIFRoZXNlIHZhbHVlcyBzZXQgdGhlIGJhY2tncm91bmQgY29sb3IgZnJvbSB0aGVcbiAgICogW3NlY29uZGFyeSBhbmQgcHJpbWFyeSBidXR0b24gY2xhc3Nlc10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2J1dHRvbikgcmVzcGVjdGl2ZWx5LlxuICAgKiBAZGVmYXVsdCBcImRlZmF1bHRcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBidXR0b25TdHlsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYnV0dG9uU3R5bGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uU3R5bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uU3R5bGUgfHwgJ2RlZmF1bHQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiBidXR0b24gdG8gcmVuZGVyIGFzIHRoZSBkcm9wZG93bidzIHRyaWdnZXIgZWxlbWVudC4gVG8gZGlzcGxheSBhIGJ1dHRvblxuICAgKiB3aXRoIHRleHQgYW5kIGEgY2FyZXQsIHNwZWNpZnkgYHNlbGVjdGAgYW5kIHRoZW4gZW50ZXIgdGhlIGJ1dHRvbiB0ZXh0IGluIGFcbiAgICogYHNreS1kcm9wZG93bi1idXR0b25gIGVsZW1lbnQuIFRvIGRpc3BsYXkgYSByb3VuZCBidXR0b24gd2l0aCBhbiBlbGxpcHNpcywgc3BlY2lmeVxuICAgKiBgY29udGV4dC1tZW51YC4gQW5kIHRvIGRpc3BsYXkgYSBidXR0b24gd2l0aCBhIFtGb250IEF3ZXNvbWUgaWNvbl0oaHR0cDovL2ZvbnRhd2Vzb21lLmlvL2ljb25zLyksIHNwZWNpZnkgdGhlIGljb24ncyBjbGFzcyBuYW1lLlxuICAgKiBGb3IgZXhhbXBsZSwgdG8gZGlzcGxheSB0aGUgYGZhLWZpbHRlcmAgaWNvbiwgc3BlY2lmeSBgZmlsdGVyYC5cbiAgICogQGRlZmF1bHQgXCJzZWxlY3RcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBidXR0b25UeXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25UeXBlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJ1dHRvblR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uVHlwZSB8fCAnc2VsZWN0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGNsb3NlIHRoZSBkcm9wZG93biB3aGVuIHVzZXJzIGNsaWNrIGF3YXkgZnJvbSB0aGUgbWVudS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNtaXNzT25CbHVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzbWlzc09uQmx1ciA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNtaXNzT25CbHVyKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9kaXNtaXNzT25CbHVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kaXNtaXNzT25CbHVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUklBIGxhYmVsIGZvciB0aGUgZHJvcGRvd24uIFRoaXMgc2V0cyB0aGUgZHJvcGRvd24ncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiB0aGUgZHJvcGRvd24gbWVudSBpbiByZWxhdGlvbiB0byB0aGUgZHJvcGRvd24gYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBcImxlZnRcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBob3Jpem9udGFsQWxpZ25tZW50KHZhbHVlOiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnQpIHtcbiAgICB0aGlzLl9ob3Jpem9udGFsQWxpZ25tZW50ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhvcml6b250YWxBbGlnbm1lbnQoKTogU2t5RHJvcGRvd25Ib3Jpem9udGFsQWxpZ25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5faG9yaXpvbnRhbEFsaWdubWVudCB8fCAnbGVmdCc7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgYW4gb2JzZXJ2YWJsZSB0byBzZW5kIGNvbW1hbmRzIHRvIHRoZSBkcm9wZG93bi4gVGhlIGNvbW1hbmRzIHNob3VsZCByZXNwZWN0XG4gICAqIHRoZSBbW1NreURyb3Bkb3duTWVzc2FnZV1dIHR5cGUuXG4gICAqL1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXNzYWdlU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSB0aXRsZSB0byBkaXNwbGF5IGluIGEgdG9vbHRpcCB3aGVuIHVzZXJzIGhvdmVyIHRoZSBtb3VzZSBvdmVyIHRoZSBkcm9wZG93biBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyB1c2VycyBpbnRlcmFjdCB3aXRoIHRoZSBkcm9wZG93biBidXR0b24gdG8gZXhwb3NlIHRoZSBkcm9wZG93biBtZW51LlxuICAgKiBXZSByZWNvbW1lbmQgdGhlIGRlZmF1bHQgYGNsaWNrYCB2YWx1ZSBiZWNhdXNlIHRoZSBgaG92ZXJgIHZhbHVlIGNhbiBwb3NlXG4gICAqIFthY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpIGlzc3Vlc1xuICAgKiBmb3IgdXNlcnMgb24gdG91Y2ggZGV2aWNlcyBzdWNoIGFzIHBob25lcyBhbmQgdGFibGV0cy5cbiAgICogQGRlcHJlY2F0ZWQgV2UgcmVjb21tZW5kIGFnYWluc3QgdXNpbmcgdGhpcyBwcm9wZXJ0eS4gSWYgeW91IGNob29zZSB0byB1c2UgdGhlIGRlcHJlY2F0ZWRcbiAgICogYGhvdmVyYCB2YWx1ZSBhbnl3YXksIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBub3QgdXNlIGl0IGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGB0aXRsZWBcbiAgICogcHJvcGVydHkuIChUaGlzIHByb3BlcnR5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuKVxuICAgKiBAZGVmYXVsdCBcImNsaWNrXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHJpZ2dlcih2YWx1ZTogU2t5RHJvcGRvd25UcmlnZ2VyVHlwZSkge1xuICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJpZ2dlcigpOiBTa3lEcm9wZG93blRyaWdnZXJUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlciB8fCAnY2xpY2snO1xuICB9XG5cbiAgcHVibGljIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbiB8fCBmYWxzZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21lbnVDb250YWluZXJFbGVtZW50UmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHB1YmxpYyBzZXQgbWVudUNvbnRhaW5lckVsZW1lbnRSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX21lbnVDb250YWluZXJFbGVtZW50UmVmID0gdmFsdWU7XG4gICAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgICB0aGlzLmNyZWF0ZUFmZml4ZXIoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtZW51Q29udGFpbmVyRWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudUNvbnRhaW5lckVsZW1lbnRSZWY7XG4gIH1cblxuICBwdWJsaWMgaXNNb3VzZUVudGVyID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBtZW51SWQ6IHN0cmluZztcblxuICBwdWJsaWMgbWVudUFyaWFSb2xlOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lclRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSBtZW51Q29udGFpbmVyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvbicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHJpdmF0ZSB0cmlnZ2VyQnV0dG9uOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgYWZmaXhlcjogU2t5QWZmaXhlcjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlO1xuXG4gIHByaXZhdGUgX2J1dHRvblN0eWxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfYnV0dG9uVHlwZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2Rpc21pc3NPbkJsdXI6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfaG9yaXpvbnRhbEFsaWdubWVudDogU2t5RHJvcGRvd25Ib3Jpem9udGFsQWxpZ25tZW50O1xuXG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX21lbnVDb250YWluZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3RyaWdnZXI6IFNreURyb3Bkb3duVHJpZ2dlclR5cGU7XG5cbiAgcHJpdmF0ZSBfcG9zaXRpb25UaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuXG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreURyb3Bkb3duTWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZSk7XG4gICAgICB9KTtcblxuICAgIC8vIExvYWQgcHJvcGVyIGljb25zIG9uIHRoZW1lIGNoYW5nZS5cbiAgICB0aGlzLnRoZW1lU3ZjPy5zZXR0aW5nc0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Bvc2l0aW9uVGltZW91dCk7XG5cbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgYnV0dG9uRWxlbWVudCA9IHRoaXMudHJpZ2dlckJ1dHRvbi5uYXRpdmVFbGVtZW50O1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuT3Blbik7XG4gICAgICAgICAgLy8gV2FpdCBmb3IgZHJvcGRvd24gdG8gb3BlbiwgdGhlbiBzZXQgZm9jdXMgb24gZmlyc3QgaXRlbS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChidXR0b25FbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UpO1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uKTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5kaXNtaXNzT25CbHVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW4pO1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNMYXN0SXRlbSk7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdlbnRlcic6XG4gICAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICBjYXNlICcgJzogLy8gU3BhY2ViYXIuXG4gICAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW4pO1xuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNGaXJzdEl0ZW0pO1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoYnV0dG9uRWxlbWVudCwgJ21vdXNlZW50ZXInKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc01vdXNlRW50ZXIgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW4pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoYnV0dG9uRWxlbWVudCwgJ21vdXNlbGVhdmUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc01vdXNlRW50ZXIgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgIC8vIEFsbG93IHRoZSBkcm9wZG93biBtZW51IHRvIHNldCBpc01vdXNlRW50ZXIgYmVmb3JlIGNoZWNraW5nIGlmIHRoZSBjbG9zZSBhY3Rpb25cbiAgICAgICAgICAvLyBzaG91bGQgYmUgdGFrZW4uXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb3VzZUVudGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoe1xuICAgICAgZW5hYmxlU2Nyb2xsOiB0cnVlLFxuICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICB9KTtcblxuICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5tZW51Q29udGFpbmVyVGVtcGxhdGVSZWYpO1xuXG4gICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNtaXNzT25CbHVyKSB7XG4gICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5hZmZpeGVyKSB7XG4gICAgICB0aGlzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5hZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgdGhpcy5vdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBjb25zdCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcihcbiAgICAgIHRoaXMubWVudUNvbnRhaW5lckVsZW1lbnRSZWZcbiAgICApO1xuXG4gICAgYWZmaXhlci5wbGFjZW1lbnRDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gY2hhbmdlLnBsYWNlbWVudCAhPT0gbnVsbDtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZmZpeGVyID0gYWZmaXhlcjtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhtZXNzYWdlOiBTa3lEcm9wZG93bk1lc3NhZ2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW46XG4gICAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9zaXRpb25Ecm9wZG93bk1lbnUoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2U6XG4gICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLlJlcG9zaXRpb246XG4gICAgICAgICAgLy8gT25seSByZXBvc2l0aW9uIHRoZSBkcm9wZG93biBpZiBpdCBpcyBhbHJlYWR5IG9wZW4uXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5hZmZpeGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFmZml4ZXIucmVhZmZpeCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uOlxuICAgICAgICAgIHRoaXMudHJpZ2dlckJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kTWVzc2FnZSh0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvbkRyb3Bkb3duTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyBFeHBsaWNpdGx5IGRlY2xhcmUgdGhlIGBzZXRUaW1lb3V0YCBmcm9tIHRoZSBgd2luZG93YCBvYmplY3QgaW4gb3JkZXIgdG8gdXNlIHRoZSBET00gdHlwaW5nc1xuICAgIC8vIGR1cmluZyBhIHVuaXQgdGVzdCAoaW5zdGVhZCBvZiBjb25mdXNpbmcgdGhpcyB3aXRoIE5vZGUncyBgc2V0VGltZW91dGApLlxuICAgIHRoaXMuX3Bvc2l0aW9uVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvbi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiBwYXJzZUFmZml4SG9yaXpvbnRhbEFsaWdubWVudChcbiAgICAgICAgICB0aGlzLmhvcml6b250YWxBbGlnbm1lbnRcbiAgICAgICAgKSxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93JyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWRyb3Bkb3duXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInNreS1idG4gc2t5LWRyb3Bkb3duLWJ1dHRvblwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gbWVudUlkIDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJtZW51QXJpYVJvbGVcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICBsYWJlbCB8fCAoJ3NreXV4X2Ryb3Bkb3duX2NvbnRleHRfbWVudV9kZWZhdWx0X2xhYmVsJyB8IHNreUxpYlJlc291cmNlcylcbiAgICBcIlxuICAgIFthdHRyLnRpdGxlXT1cInRpdGxlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICdza3ktZHJvcGRvd24tYnV0dG9uLXR5cGUtJyArIGJ1dHRvblR5cGUsXG4gICAgICAnc2t5LWJ0bi0nICsgYnV0dG9uU3R5bGVcbiAgICBdXCJcbiAgICAjdHJpZ2dlckJ1dHRvblxuICA+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYnV0dG9uVHlwZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoQ2FzZT1cImNvbnRleHQtbWVudVwiPlxuICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwiZWxsaXBzaXMtaFwiPjwvc2t5LWljb24+XG4gICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICAgIGljb249XCJlbGxpcHNpc1wiXG4gICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgID48L3NreS1pY29uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlIG5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiYnV0dG9uVHlwZSA9PT0gJ3NlbGVjdCcgfHwgYnV0dG9uVHlwZSA9PT0gJ3RhYicgfHwgIWJ1dHRvblR5cGVcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWJ1dHRvbi1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1kcm9wZG93bi1idXR0b24tY29udGVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kcm9wZG93bi1idXR0b25cIj4gPC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZHJvcGRvd24tYnV0dG9uLWljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1kcm9wZG93bi1jYXJldFwiXG4gICAgICAgICAgICAgIGljb249XCJjYXJldC1kb3duXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc2t5LWljb24+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRyb3Bkb3duLWNhcmV0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tZG93blwiXG4gICAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvblR5cGUgIT09ICdzZWxlY3QnICYmIGJ1dHRvblR5cGUgIT09ICd0YWInICYmIGJ1dHRvblR5cGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIFtpY29uXT1cImJ1dHRvblR5cGVcIiBzaXplPVwibGdcIj48L3NreS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudUNvbnRhaW5lclRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZHJvcGRvd24tbWVudS1jb250YWluZXJcIlxuICAgIFtjbGFzcy5oaWRkZW5dPVwiIWlzVmlzaWJsZVwiXG4gICAgI21lbnVDb250YWluZXJFbGVtZW50UmVmXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZHJvcGRvd24tbWVudVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { SkyAffixModule, SkyOverlayModule } from '@skyux/core';
|
|
4
|
+
import { SkyIconModule } from '@skyux/indicators';
|
|
5
|
+
import { SkyThemeModule } from '@skyux/theme';
|
|
6
|
+
import { SkyPopoversResourcesModule } from '../shared/sky-popovers-resources.module';
|
|
7
|
+
import { SkyDropdownButtonComponent } from './dropdown-button.component';
|
|
8
|
+
import { SkyDropdownItemComponent } from './dropdown-item.component';
|
|
9
|
+
import { SkyDropdownMenuComponent } from './dropdown-menu.component';
|
|
10
|
+
import { SkyDropdownComponent } from './dropdown.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class SkyDropdownModule {
|
|
13
|
+
}
|
|
14
|
+
SkyDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
SkyDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, declarations: [SkyDropdownButtonComponent,
|
|
16
|
+
SkyDropdownComponent,
|
|
17
|
+
SkyDropdownItemComponent,
|
|
18
|
+
SkyDropdownMenuComponent], imports: [CommonModule,
|
|
19
|
+
SkyAffixModule,
|
|
20
|
+
SkyIconModule,
|
|
21
|
+
SkyOverlayModule,
|
|
22
|
+
SkyPopoversResourcesModule,
|
|
23
|
+
SkyThemeModule], exports: [SkyDropdownButtonComponent,
|
|
24
|
+
SkyDropdownComponent,
|
|
25
|
+
SkyDropdownItemComponent,
|
|
26
|
+
SkyDropdownMenuComponent] });
|
|
27
|
+
SkyDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, imports: [[
|
|
28
|
+
CommonModule,
|
|
29
|
+
SkyAffixModule,
|
|
30
|
+
SkyIconModule,
|
|
31
|
+
SkyOverlayModule,
|
|
32
|
+
SkyPopoversResourcesModule,
|
|
33
|
+
SkyThemeModule,
|
|
34
|
+
]] });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyDropdownModule, decorators: [{
|
|
36
|
+
type: NgModule,
|
|
37
|
+
args: [{
|
|
38
|
+
declarations: [
|
|
39
|
+
SkyDropdownButtonComponent,
|
|
40
|
+
SkyDropdownComponent,
|
|
41
|
+
SkyDropdownItemComponent,
|
|
42
|
+
SkyDropdownMenuComponent,
|
|
43
|
+
],
|
|
44
|
+
imports: [
|
|
45
|
+
CommonModule,
|
|
46
|
+
SkyAffixModule,
|
|
47
|
+
SkyIconModule,
|
|
48
|
+
SkyOverlayModule,
|
|
49
|
+
SkyPopoversResourcesModule,
|
|
50
|
+
SkyThemeModule,
|
|
51
|
+
],
|
|
52
|
+
exports: [
|
|
53
|
+
SkyDropdownButtonComponent,
|
|
54
|
+
SkyDropdownComponent,
|
|
55
|
+
SkyDropdownItemComponent,
|
|
56
|
+
SkyDropdownMenuComponent,
|
|
57
|
+
],
|
|
58
|
+
}]
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUF3QjVELE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFwQjFCLDBCQUEwQjtRQUMxQixvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLHdCQUF3QixhQUd4QixZQUFZO1FBQ1osY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsMEJBQTBCO1FBQzFCLGNBQWMsYUFHZCwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4Qix3QkFBd0I7K0dBR2YsaUJBQWlCLFlBZm5CO1lBQ1AsWUFBWTtZQUNaLGNBQWM7WUFDZCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLDBCQUEwQjtZQUMxQixjQUFjO1NBQ2Y7MkZBUVUsaUJBQWlCO2tCQXRCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osMEJBQTBCO3dCQUMxQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBQzFCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDBCQUEwQjt3QkFDMUIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFmZml4TW9kdWxlLCBTa3lPdmVybGF5TW9kdWxlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcbmltcG9ydCB7IFNreVRoZW1lTW9kdWxlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU2t5UG9wb3ZlcnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LXBvcG92ZXJzLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVudUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreURyb3Bkb3duQnV0dG9uQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCxcbiAgICBTa3lEcm9wZG93bk1lbnVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5QWZmaXhNb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lPdmVybGF5TW9kdWxlLFxuICAgIFNreVBvcG92ZXJzUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5RHJvcGRvd25CdXR0b25Db21wb25lbnQsXG4gICAgU2t5RHJvcGRvd25Db21wb25lbnQsXG4gICAgU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50LFxuICAgIFNreURyb3Bkb3duTWVudUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25Nb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taG9yaXpvbnRhbC1hbGlnbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL3R5cGVzL2Ryb3Bkb3duLWhvcml6b250YWwtYWxpZ25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lBZmZpeEhvcml6b250YWxBbGlnbm1lbnQgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFNreURyb3Bkb3duSG9yaXpvbnRhbEFsaWdubWVudCA9IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudDtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS1jaGFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL3R5cGVzL2Ryb3Bkb3duLW1lbnUtY2hhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5RHJvcGRvd25NZW51Q2hhbmdlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgYWN0aXZlIG1lbnUgaW5kZXguXG4gICAqL1xuICBhY3RpdmVJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBpdGVtcyBpbiB0aGUgbWVudS5cbiAgICovXG4gIGl0ZW1zPzogU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50W107XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgc2VsZWN0ZWQgaXRlbSBpbiB0aGUgbWVudS5cbiAgICovXG4gIHNlbGVjdGVkSXRlbT86IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export var SkyDropdownMessageType;
|
|
2
|
+
(function (SkyDropdownMessageType) {
|
|
3
|
+
/**
|
|
4
|
+
* Opens the dropdown menu.
|
|
5
|
+
*/
|
|
6
|
+
SkyDropdownMessageType[SkyDropdownMessageType["Open"] = 0] = "Open";
|
|
7
|
+
/**
|
|
8
|
+
* Closes the dropdown menu.
|
|
9
|
+
*/
|
|
10
|
+
SkyDropdownMessageType[SkyDropdownMessageType["Close"] = 1] = "Close";
|
|
11
|
+
/**
|
|
12
|
+
* Puts focus on the dropdown button.
|
|
13
|
+
*/
|
|
14
|
+
SkyDropdownMessageType[SkyDropdownMessageType["FocusTriggerButton"] = 2] = "FocusTriggerButton";
|
|
15
|
+
/**
|
|
16
|
+
* Puts focus on the next item in the dropdown menu.
|
|
17
|
+
*/
|
|
18
|
+
SkyDropdownMessageType[SkyDropdownMessageType["FocusNextItem"] = 3] = "FocusNextItem";
|
|
19
|
+
/**
|
|
20
|
+
* Puts focus on the previous item in the dropdown menu.
|
|
21
|
+
*/
|
|
22
|
+
SkyDropdownMessageType[SkyDropdownMessageType["FocusPreviousItem"] = 4] = "FocusPreviousItem";
|
|
23
|
+
/**
|
|
24
|
+
* Repositions the dropdown menu next to the dropdown button. This is useful for when the
|
|
25
|
+
* dropdown menu's width and height change while it is open.
|
|
26
|
+
*/
|
|
27
|
+
SkyDropdownMessageType[SkyDropdownMessageType["Reposition"] = 5] = "Reposition";
|
|
28
|
+
/**
|
|
29
|
+
* Puts focus on the first item in the dropdown menu.
|
|
30
|
+
*/
|
|
31
|
+
SkyDropdownMessageType[SkyDropdownMessageType["FocusFirstItem"] = 6] = "FocusFirstItem";
|
|
32
|
+
/**
|
|
33
|
+
* Puts focus on the last item in the dropdown menu.
|
|
34
|
+
*/
|
|
35
|
+
SkyDropdownMessageType[SkyDropdownMessageType["FocusLastItem"] = 7] = "FocusLastItem";
|
|
36
|
+
})(SkyDropdownMessageType || (SkyDropdownMessageType = {}));
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVzc2FnZS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksc0JBeUNYO0FBekNELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gsbUVBQVEsQ0FBQTtJQUVSOztPQUVHO0lBQ0gscUVBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsK0ZBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCxxRkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDZGQUFxQixDQUFBO0lBRXJCOzs7T0FHRztJQUNILCtFQUFjLENBQUE7SUFFZDs7T0FFRztJQUNILHVGQUFrQixDQUFBO0lBRWxCOztPQUVHO0lBQ0gscUZBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQXpDVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBeUNqQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNreURyb3Bkb3duTWVzc2FnZVR5cGUge1xuICAvKipcbiAgICogT3BlbnMgdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBPcGVuID0gMCxcblxuICAvKipcbiAgICogIENsb3NlcyB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIENsb3NlID0gMSxcblxuICAvKipcbiAgICogUHV0cyBmb2N1cyBvbiB0aGUgZHJvcGRvd24gYnV0dG9uLlxuICAgKi9cbiAgRm9jdXNUcmlnZ2VyQnV0dG9uID0gMixcblxuICAvKipcbiAgICogUHV0cyBmb2N1cyBvbiB0aGUgbmV4dCBpdGVtIGluIHRoZSBkcm9wZG93biBtZW51LlxuICAgKi9cbiAgRm9jdXNOZXh0SXRlbSA9IDMsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIHByZXZpb3VzIGl0ZW0gaW4gdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBGb2N1c1ByZXZpb3VzSXRlbSA9IDQsXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRpb25zIHRoZSBkcm9wZG93biBtZW51IG5leHQgdG8gdGhlIGRyb3Bkb3duIGJ1dHRvbi4gVGhpcyBpcyB1c2VmdWwgZm9yIHdoZW4gdGhlXG4gICAqIGRyb3Bkb3duIG1lbnUncyB3aWR0aCBhbmQgaGVpZ2h0IGNoYW5nZSB3aGlsZSBpdCBpcyBvcGVuLlxuICAgKi9cbiAgUmVwb3NpdGlvbiA9IDUsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGRyb3Bkb3duIG1lbnUuXG4gICAqL1xuICBGb2N1c0ZpcnN0SXRlbSA9IDYsXG5cbiAgLyoqXG4gICAqIFB1dHMgZm9jdXMgb24gdGhlIGxhc3QgaXRlbSBpbiB0aGUgZHJvcGRvd24gbWVudS5cbiAgICovXG4gIEZvY3VzTGFzdEl0ZW0gPSA3LFxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wb3BvdmVycy9zcmMvbGliL21vZHVsZXMvZHJvcGRvd24vdHlwZXMvZHJvcGRvd24tbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlVHlwZSB9IGZyb20gJy4vZHJvcGRvd24tbWVzc2FnZS10eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBTa3lEcm9wZG93bk1lc3NhZ2Uge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIG1lc3NhZ2UgdG8gc2VuZC5cbiAgICovXG4gIHR5cGU/OiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdHJpZ2dlci10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi10cmlnZ2VyLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNreURyb3Bkb3duVHJpZ2dlclR5cGUgPSAnY2xpY2snIHwgJ2hvdmVyJztcbiJdfQ==
|