@skyux/popovers 5.9.4 → 6.0.0-beta.10
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 +9 -9
- package/esm2020/index.mjs +24 -0
- package/esm2020/lib/modules/dropdown/dropdown-button.component.mjs +14 -0
- package/esm2020/lib/modules/dropdown/dropdown-extensions.mjs +14 -0
- package/esm2020/lib/modules/dropdown/dropdown-item.component.mjs +67 -0
- package/esm2020/lib/modules/dropdown/dropdown-menu.component.mjs +300 -0
- package/esm2020/lib/modules/dropdown/dropdown.component.mjs +360 -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 +40 -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 +240 -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 +205 -0
- package/esm2020/lib/modules/popover/popover.directive.mjs +193 -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/popover/types/popover-type.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 +139 -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 +1698 -0
- package/fesm2015/skyux-popovers.mjs.map +1 -0
- package/fesm2020/skyux-popovers-testing.mjs +272 -0
- package/fesm2020/skyux-popovers-testing.mjs.map +1 -0
- package/{fesm2015/skyux-popovers.js → fesm2020/skyux-popovers.mjs} +52 -93
- package/fesm2020/skyux-popovers.mjs.map +1 -0
- package/package.json +39 -15
- package/testing/package.json +5 -5
- package/bundles/skyux-popovers-testing.umd.js +0 -688
- package/bundles/skyux-popovers.umd.js +0 -2217
- package/esm2015/index.js +0 -24
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown-button.component.js +0 -17
- 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 -75
- package/esm2015/lib/modules/dropdown/dropdown-item.component.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js +0 -308
- package/esm2015/lib/modules/dropdown/dropdown-menu.component.js.map +0 -1
- package/esm2015/lib/modules/dropdown/dropdown.component.js +0 -366
- 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 -40
- 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 -248
- 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 -210
- package/esm2015/lib/modules/popover/popover.component.js.map +0 -1
- package/esm2015/lib/modules/popover/popover.directive.js +0 -195
- 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/popover/types/popover-type.js +0 -2
- package/esm2015/lib/modules/popover/types/popover-type.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 -144
- 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
package/documentation.json
CHANGED
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
"name": "NgModule"
|
|
365
365
|
},
|
|
366
366
|
"arguments": {
|
|
367
|
-
"obj": "{\n declarations: [\n SkyPopoverComponent,\n SkyPopoverContentComponent,\n SkyPopoverDirective,\n ],\n imports: [\n CommonModule,\n SkyAffixModule,\n SkyIconModule,\n SkyOverlayModule,\n SkyPopoversResourcesModule,\n SkyThemeModule,\n ],\n exports: [\n SkyPopoverComponent,\n SkyPopoverContentComponent,\n SkyPopoverDirective,\n ],\n
|
|
367
|
+
"obj": "{\n declarations: [\n SkyPopoverComponent,\n SkyPopoverContentComponent,\n SkyPopoverDirective,\n ],\n imports: [\n CommonModule,\n SkyAffixModule,\n SkyIconModule,\n SkyOverlayModule,\n SkyPopoversResourcesModule,\n SkyThemeModule,\n ],\n exports: [\n SkyPopoverComponent,\n SkyPopoverContentComponent,\n SkyPopoverDirective,\n ],\n}"
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
370
|
],
|
|
@@ -381,7 +381,7 @@
|
|
|
381
381
|
"sources": [
|
|
382
382
|
{
|
|
383
383
|
"fileName": "projects/popovers/src/modules/popover/popover.module.ts",
|
|
384
|
-
"line":
|
|
384
|
+
"line": 33,
|
|
385
385
|
"character": 13
|
|
386
386
|
}
|
|
387
387
|
]
|
|
@@ -764,7 +764,7 @@
|
|
|
764
764
|
"sources": [
|
|
765
765
|
{
|
|
766
766
|
"fileName": "projects/popovers/src/modules/dropdown/dropdown-item.component.ts",
|
|
767
|
-
"line":
|
|
767
|
+
"line": 86,
|
|
768
768
|
"character": 9
|
|
769
769
|
}
|
|
770
770
|
],
|
|
@@ -2480,7 +2480,7 @@
|
|
|
2480
2480
|
"sources": [
|
|
2481
2481
|
{
|
|
2482
2482
|
"fileName": "projects/popovers/src/modules/dropdown/dropdown-menu.component.ts",
|
|
2483
|
-
"line":
|
|
2483
|
+
"line": 200,
|
|
2484
2484
|
"character": 9
|
|
2485
2485
|
}
|
|
2486
2486
|
],
|
|
@@ -2509,7 +2509,7 @@
|
|
|
2509
2509
|
"sources": [
|
|
2510
2510
|
{
|
|
2511
2511
|
"fileName": "projects/popovers/src/modules/dropdown/dropdown-menu.component.ts",
|
|
2512
|
-
"line":
|
|
2512
|
+
"line": 215,
|
|
2513
2513
|
"character": 9
|
|
2514
2514
|
}
|
|
2515
2515
|
],
|
|
@@ -2538,7 +2538,7 @@
|
|
|
2538
2538
|
"sources": [
|
|
2539
2539
|
{
|
|
2540
2540
|
"fileName": "projects/popovers/src/modules/dropdown/dropdown-menu.component.ts",
|
|
2541
|
-
"line":
|
|
2541
|
+
"line": 245,
|
|
2542
2542
|
"character": 9
|
|
2543
2543
|
}
|
|
2544
2544
|
],
|
|
@@ -2567,7 +2567,7 @@
|
|
|
2567
2567
|
"sources": [
|
|
2568
2568
|
{
|
|
2569
2569
|
"fileName": "projects/popovers/src/modules/dropdown/dropdown-menu.component.ts",
|
|
2570
|
-
"line":
|
|
2570
|
+
"line": 230,
|
|
2571
2571
|
"character": 9
|
|
2572
2572
|
}
|
|
2573
2573
|
],
|
|
@@ -2633,7 +2633,7 @@
|
|
|
2633
2633
|
"sources": [
|
|
2634
2634
|
{
|
|
2635
2635
|
"fileName": "projects/popovers/src/modules/dropdown/dropdown-menu.component.ts",
|
|
2636
|
-
"line":
|
|
2636
|
+
"line": 195,
|
|
2637
2637
|
"character": 9
|
|
2638
2638
|
}
|
|
2639
2639
|
],
|
|
@@ -2670,7 +2670,7 @@
|
|
|
2670
2670
|
"sources": [
|
|
2671
2671
|
{
|
|
2672
2672
|
"fileName": "projects/popovers/src/modules/dropdown/dropdown-menu.component.ts",
|
|
2673
|
-
"line":
|
|
2673
|
+
"line": 260,
|
|
2674
2674
|
"character": 9
|
|
2675
2675
|
}
|
|
2676
2676
|
],
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export * from './lib/modules/dropdown/types/dropdown-horizontal-alignment';
|
|
2
|
+
export * from './lib/modules/dropdown/types/dropdown-menu-change';
|
|
3
|
+
export * from './lib/modules/dropdown/types/dropdown-message';
|
|
4
|
+
export * from './lib/modules/dropdown/types/dropdown-message-type';
|
|
5
|
+
export * from './lib/modules/dropdown/types/dropdown-trigger-type';
|
|
6
|
+
export * from './lib/modules/dropdown/dropdown.module';
|
|
7
|
+
export * from './lib/modules/popover/popover.module';
|
|
8
|
+
export * from './lib/modules/popover/types/popover-alignment';
|
|
9
|
+
export * from './lib/modules/popover/types/popover-message';
|
|
10
|
+
export * from './lib/modules/popover/types/popover-message-type';
|
|
11
|
+
export * from './lib/modules/popover/types/popover-placement';
|
|
12
|
+
export * from './lib/modules/popover/types/popover-position';
|
|
13
|
+
export * from './lib/modules/popover/types/popover-trigger';
|
|
14
|
+
export * from './lib/modules/popover/types/popover-type';
|
|
15
|
+
// Components and directives must be exported to support Angular's "partial" Ivy compiler.
|
|
16
|
+
// Obscure names are used to indicate types are not part of the public API.
|
|
17
|
+
export { SkyDropdownItemComponent as λ1 } from './lib/modules/dropdown/dropdown-item.component';
|
|
18
|
+
export { SkyDropdownButtonComponent as λ2 } from './lib/modules/dropdown/dropdown-button.component';
|
|
19
|
+
export { SkyDropdownComponent as λ3 } from './lib/modules/dropdown/dropdown.component';
|
|
20
|
+
export { SkyDropdownMenuComponent as λ4 } from './lib/modules/dropdown/dropdown-menu.component';
|
|
21
|
+
export { SkyPopoverContentComponent as λ5 } from './lib/modules/popover/popover-content.component';
|
|
22
|
+
export { SkyPopoverComponent as λ6 } from './lib/modules/popover/popover.component';
|
|
23
|
+
export { SkyPopoverDirective as λ7 } from './lib/modules/popover/popover.directive';
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHdDQUF3QyxDQUFDO0FBRXZELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUV6RCwwRkFBMEY7QUFDMUYsMkVBQTJFO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSxFQUFFLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsMEJBQTBCLElBQUksRUFBRSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEcsT0FBTyxFQUFFLG9CQUFvQixJQUFJLEVBQUUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSxFQUFFLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsMEJBQTBCLElBQUksRUFBRSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLEVBQUUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxFQUFFLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvZHJvcGRvd24vdHlwZXMvZHJvcGRvd24taG9yaXpvbnRhbC1hbGlnbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi1tZW51LWNoYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL3R5cGVzL2Ryb3Bkb3duLW1lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9kcm9wZG93bi90eXBlcy9kcm9wZG93bi10cmlnZ2VyLXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9wb3BvdmVyL3R5cGVzL3BvcG92ZXItYWxpZ25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvcG9wb3Zlci90eXBlcy9wb3BvdmVyLW1lc3NhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9wb3BvdmVyL3R5cGVzL3BvcG92ZXItbWVzc2FnZS10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvcG9wb3Zlci90eXBlcy9wb3BvdmVyLXBsYWNlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL3BvcG92ZXIvdHlwZXMvcG9wb3Zlci1wb3NpdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL3BvcG92ZXIvdHlwZXMvcG9wb3Zlci10cmlnZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvcG9wb3Zlci90eXBlcy9wb3BvdmVyLXR5cGUnO1xuXG4vLyBDb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzIG11c3QgYmUgZXhwb3J0ZWQgdG8gc3VwcG9ydCBBbmd1bGFyJ3MgXCJwYXJ0aWFsXCIgSXZ5IGNvbXBpbGVyLlxuLy8gT2JzY3VyZSBuYW1lcyBhcmUgdXNlZCB0byBpbmRpY2F0ZSB0eXBlcyBhcmUgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuXG5leHBvcnQgeyBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQgYXMgzrsxIH0gZnJvbSAnLi9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTa3lEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCBhcyDOuzIgfSBmcm9tICcuL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2t5RHJvcGRvd25Db21wb25lbnQgYXMgzrszIH0gZnJvbSAnLi9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2t5RHJvcGRvd25NZW51Q29tcG9uZW50IGFzIM67NCB9IGZyb20gJy4vbGliL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24tbWVudS5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2t5UG9wb3ZlckNvbnRlbnRDb21wb25lbnQgYXMgzrs1IH0gZnJvbSAnLi9saWIvbW9kdWxlcy9wb3BvdmVyL3BvcG92ZXItY29udGVudC5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2t5UG9wb3ZlckNvbXBvbmVudCBhcyDOuzYgfSBmcm9tICcuL2xpYi9tb2R1bGVzL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2t5UG9wb3ZlckRpcmVjdGl2ZSBhcyDOuzcgfSBmcm9tICcuL2xpYi9tb2R1bGVzL3BvcG92ZXIvcG9wb3Zlci5kaXJlY3RpdmUnO1xuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Specifies the button for the dropdown menu.
|
|
5
|
+
*/
|
|
6
|
+
export class SkyDropdownButtonComponent {
|
|
7
|
+
}
|
|
8
|
+
SkyDropdownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDropdownButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
SkyDropdownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDropdownButtonComponent, selector: "sky-dropdown-button", ngImport: i0, template: "<ng-content></ng-content>\n" });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDropdownButtonComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'sky-dropdown-button', template: "<ng-content></ng-content>\n" }]
|
|
13
|
+
}] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wb3BvdmVycy9zcmMvbGliL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wb3BvdmVycy9zcmMvbGliL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFDOztHQUVHO0FBS0gsTUFBTSxPQUFPLDBCQUEwQjs7dUhBQTFCLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDJEQ1R2Qyw2QkFDQTsyRkRRYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBidXR0b24gZm9yIHRoZSBkcm9wZG93biBtZW51LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZHJvcGRvd24tYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURyb3Bkb3duQnV0dG9uQ29tcG9uZW50IHt9XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function parseAffixHorizontalAlignment(alignment) {
|
|
2
|
+
switch (alignment) {
|
|
3
|
+
case 'center':
|
|
4
|
+
return 'center';
|
|
5
|
+
case 'left':
|
|
6
|
+
return 'left';
|
|
7
|
+
case 'right':
|
|
8
|
+
return 'right';
|
|
9
|
+
/* istanbul ignore next */
|
|
10
|
+
default:
|
|
11
|
+
throw `SkyAffixHorizontalAlignment does not have a matching value for '${alignment}'!`;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wb3BvdmVycy9zcmMvbGliL21vZHVsZXMvZHJvcGRvd24vZHJvcGRvd24tZXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsNkJBQTZCLENBQzNDLFNBQXlDO0lBRXpDLFFBQVEsU0FBUyxFQUFFO1FBQ2pCLEtBQUssUUFBUTtZQUNYLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLEtBQUssTUFBTTtZQUNULE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLDBCQUEwQjtRQUMxQjtZQUNFLE1BQU0sbUVBQW1FLFNBQVMsSUFBSSxDQUFDO0tBQzFGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU2t5RHJvcGRvd25Ib3Jpem9udGFsQWxpZ25tZW50IH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1ob3Jpem9udGFsLWFsaWdubWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFmZml4SG9yaXpvbnRhbEFsaWdubWVudChcbiAgYWxpZ25tZW50OiBTa3lEcm9wZG93bkhvcml6b250YWxBbGlnbm1lbnRcbik6IFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCB7XG4gIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIHJldHVybiAnY2VudGVyJztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgYFNreUFmZml4SG9yaXpvbnRhbEFsaWdubWVudCBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgdmFsdWUgZm9yICcke2FsaWdubWVudH0nIWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, Renderer2, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
/**
|
|
5
|
+
* Specifies the items to display on the dropdown menu.
|
|
6
|
+
*/
|
|
7
|
+
export class SkyDropdownItemComponent {
|
|
8
|
+
constructor(elementRef, changeDetector, renderer) {
|
|
9
|
+
this.elementRef = elementRef;
|
|
10
|
+
this.changeDetector = changeDetector;
|
|
11
|
+
this.renderer = renderer;
|
|
12
|
+
this.isActive = false;
|
|
13
|
+
this.isDisabled = false;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Specifies an ARIA role for the dropdown menu item
|
|
17
|
+
* [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
|
|
18
|
+
* by indicating how the item functions and what it controls. For information about
|
|
19
|
+
* how an ARIA role indicates what an item represents on a web page, see the
|
|
20
|
+
* [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).
|
|
21
|
+
* @default "menuitem"
|
|
22
|
+
*/
|
|
23
|
+
set ariaRole(value) {
|
|
24
|
+
this._ariaRole = value;
|
|
25
|
+
}
|
|
26
|
+
get ariaRole() {
|
|
27
|
+
return this._ariaRole || 'menuitem';
|
|
28
|
+
}
|
|
29
|
+
get buttonElement() {
|
|
30
|
+
return this.elementRef.nativeElement.querySelector('button,a');
|
|
31
|
+
}
|
|
32
|
+
ngAfterViewInit() {
|
|
33
|
+
this.isDisabled = !this.isFocusable();
|
|
34
|
+
// Make sure anchor elements are tab-able.
|
|
35
|
+
const buttonElement = this.buttonElement;
|
|
36
|
+
/* istanbul ignore else */
|
|
37
|
+
if (buttonElement) {
|
|
38
|
+
this.renderer.setAttribute(buttonElement, 'tabIndex', '0');
|
|
39
|
+
}
|
|
40
|
+
this.changeDetector.detectChanges();
|
|
41
|
+
}
|
|
42
|
+
focusElement(enableNativeFocus) {
|
|
43
|
+
this.isActive = true;
|
|
44
|
+
if (enableNativeFocus) {
|
|
45
|
+
this.buttonElement.focus();
|
|
46
|
+
}
|
|
47
|
+
this.changeDetector.detectChanges();
|
|
48
|
+
}
|
|
49
|
+
isFocusable() {
|
|
50
|
+
const isFocusable = this.buttonElement &&
|
|
51
|
+
this.buttonElement.getAttribute('disabled') === null;
|
|
52
|
+
return isFocusable;
|
|
53
|
+
}
|
|
54
|
+
resetState() {
|
|
55
|
+
this.isActive = false;
|
|
56
|
+
this.changeDetector.markForCheck();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
SkyDropdownItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDropdownItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
SkyDropdownItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDropdownItemComponent, selector: "sky-dropdown-item", inputs: { ariaRole: "ariaRole" }, ngImport: i0, template: "<div\n class=\"sky-dropdown-item\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-dropdown-item-active': isActive,\n 'sky-dropdown-item-disabled': isDisabled\n }\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-item{background-color:transparent;border:none;display:block;margin:4px;min-width:160px;text-align:left}.sky-dropdown-item.sky-dropdown-item-active,.sky-dropdown-item:hover{background-color:#eeeeef}.sky-dropdown-item.sky-dropdown-item-disabled{cursor:default}.sky-dropdown-item.sky-dropdown-item-disabled:hover{background-color:transparent}.sky-dropdown-item>a,.sky-dropdown-item>button{background-color:transparent;border:none;color:#212327;cursor:pointer;display:block;padding:3px 20px;text-align:left;width:100%}.sky-dropdown-item>a:hover,.sky-dropdown-item>button:hover{text-decoration:none}.sky-dropdown-item>a[disabled],.sky-dropdown-item>button[disabled]{color:#686c73}.sky-dropdown-item>a[disabled]:hover,.sky-dropdown-item>button[disabled]:hover{cursor:default}.sky-theme-modern .sky-dropdown-item{margin:0}.sky-theme-modern .sky-dropdown-item.sky-dropdown-item-active,.sky-theme-modern .sky-dropdown-item:hover{background-color:transparent}.sky-theme-modern .sky-dropdown-item>a,.sky-theme-modern .sky-dropdown-item>button{padding:8px 20px;transition:box-shadow .15s}.sky-theme-modern .sky-dropdown-item>a:hover,.sky-theme-modern .sky-dropdown-item>button:hover{outline:solid 1px #1870B8;outline-offset:-1px}.sky-theme-modern .sky-dropdown-item>a:focus,.sky-theme-modern .sky-dropdown-item>a:active,.sky-theme-modern .sky-dropdown-item>button:focus,.sky-theme-modern .sky-dropdown-item>button:active{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern .sky-dropdown-item>a:focus:not(:active),.sky-theme-modern .sky-dropdown-item>button:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-item>a,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-item>button{color:#fbfcfe}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDropdownItemComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'sky-dropdown-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-dropdown-item\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-dropdown-item-active': isActive,\n 'sky-dropdown-item-disabled': isDisabled\n }\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-item{background-color:transparent;border:none;display:block;margin:4px;min-width:160px;text-align:left}.sky-dropdown-item.sky-dropdown-item-active,.sky-dropdown-item:hover{background-color:#eeeeef}.sky-dropdown-item.sky-dropdown-item-disabled{cursor:default}.sky-dropdown-item.sky-dropdown-item-disabled:hover{background-color:transparent}.sky-dropdown-item>a,.sky-dropdown-item>button{background-color:transparent;border:none;color:#212327;cursor:pointer;display:block;padding:3px 20px;text-align:left;width:100%}.sky-dropdown-item>a:hover,.sky-dropdown-item>button:hover{text-decoration:none}.sky-dropdown-item>a[disabled],.sky-dropdown-item>button[disabled]{color:#686c73}.sky-dropdown-item>a[disabled]:hover,.sky-dropdown-item>button[disabled]:hover{cursor:default}.sky-theme-modern .sky-dropdown-item{margin:0}.sky-theme-modern .sky-dropdown-item.sky-dropdown-item-active,.sky-theme-modern .sky-dropdown-item:hover{background-color:transparent}.sky-theme-modern .sky-dropdown-item>a,.sky-theme-modern .sky-dropdown-item>button{padding:8px 20px;transition:box-shadow .15s}.sky-theme-modern .sky-dropdown-item>a:hover,.sky-theme-modern .sky-dropdown-item>button:hover{outline:solid 1px #1870B8;outline-offset:-1px}.sky-theme-modern .sky-dropdown-item>a:focus,.sky-theme-modern .sky-dropdown-item>a:active,.sky-theme-modern .sky-dropdown-item>button:focus,.sky-theme-modern .sky-dropdown-item>button:active{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern .sky-dropdown-item>a:focus:not(:active),.sky-theme-modern .sky-dropdown-item>button:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-item>a,.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-item>button{color:#fbfcfe}\n"] }]
|
|
64
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { ariaRole: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}] } });
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7OztBQUV2Qjs7R0FFRztBQVFILE1BQU0sT0FBTyx3QkFBd0I7SUE0Qm5DLFlBQ1MsVUFBc0IsRUFDckIsY0FBaUMsRUFDakMsUUFBbUI7UUFGcEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVR0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFRdkIsQ0FBQztJQS9CSjs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBeUI7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQWNNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV0QywwQ0FBMEM7UUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN6QywwQkFBMEI7UUFDMUIsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM1RDtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxpQkFBMEI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFckIsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVztRQUNoQixNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDdkQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7O3FIQW5FVSx3QkFBd0I7eUdBQXhCLHdCQUF3QiwyRkNyQnJDLDZOQVVBOzJGRFdhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTt5SkFZMUIsUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBpdGVtcyB0byBkaXNwbGF5IG9uIHRoZSBkcm9wZG93biBtZW51LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZHJvcGRvd24taXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24taXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSByb2xlIGZvciB0aGUgZHJvcGRvd24gbWVudSBpdGVtXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSlcbiAgICogYnkgaW5kaWNhdGluZyBob3cgdGhlIGl0ZW0gZnVuY3Rpb25zIGFuZCB3aGF0IGl0IGNvbnRyb2xzLiBGb3IgaW5mb3JtYXRpb24gYWJvdXRcbiAgICogaG93IGFuIEFSSUEgcm9sZSBpbmRpY2F0ZXMgd2hhdCBhbiBpdGVtIHJlcHJlc2VudHMgb24gYSB3ZWIgcGFnZSwgc2VlIHRoZVxuICAgKiBbV0FJLUFSSUEgcm9sZXMgbW9kZWxdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS9yb2xlcykuXG4gICAqIEBkZWZhdWx0IFwibWVudWl0ZW1cIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhUm9sZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYXJpYVJvbGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYVJvbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXJpYVJvbGUgfHwgJ21lbnVpdGVtJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uRWxlbWVudCgpOiBIVE1MQnV0dG9uRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbixhJyk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2FyaWFSb2xlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSAhdGhpcy5pc0ZvY3VzYWJsZSgpO1xuXG4gICAgLy8gTWFrZSBzdXJlIGFuY2hvciBlbGVtZW50cyBhcmUgdGFiLWFibGUuXG4gICAgY29uc3QgYnV0dG9uRWxlbWVudCA9IHRoaXMuYnV0dG9uRWxlbWVudDtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChidXR0b25FbGVtZW50KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShidXR0b25FbGVtZW50LCAndGFiSW5kZXgnLCAnMCcpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzRWxlbWVudChlbmFibGVOYXRpdmVGb2N1czogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgaWYgKGVuYWJsZU5hdGl2ZUZvY3VzKSB7XG4gICAgICB0aGlzLmJ1dHRvbkVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0ZvY3VzYWJsZSA9XG4gICAgICB0aGlzLmJ1dHRvbkVsZW1lbnQgJiZcbiAgICAgIHRoaXMuYnV0dG9uRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgPT09IG51bGw7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktZHJvcGRvd24taXRlbVwiXG4gIFthdHRyLnJvbGVdPVwiYXJpYVJvbGVcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1kcm9wZG93bi1pdGVtLWFjdGl2ZSc6IGlzQWN0aXZlLFxuICAgICdza3ktZHJvcGRvd24taXRlbS1kaXNhYmxlZCc6IGlzRGlzYWJsZWRcbiAgfVwiXG4+XG4gIDxuZy1jb250ZW50PiA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Optional, Output, QueryList, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { Subject, fromEvent as observableFromEvent } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { SkyDropdownItemComponent } from './dropdown-item.component';
|
|
5
|
+
import { SkyDropdownComponent } from './dropdown.component';
|
|
6
|
+
import { SkyDropdownMessageType } from './types/dropdown-message-type';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./dropdown.component";
|
|
9
|
+
let nextId = 0;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a menu that contains dropdown menu items.
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
export class SkyDropdownMenuComponent {
|
|
15
|
+
constructor(changeDetector, elementRef, dropdownComponent) {
|
|
16
|
+
this.changeDetector = changeDetector;
|
|
17
|
+
this.elementRef = elementRef;
|
|
18
|
+
this.dropdownComponent = dropdownComponent;
|
|
19
|
+
/**
|
|
20
|
+
* Fires when the dropdown menu's active index or selected item changes. This event provides an
|
|
21
|
+
* observable to emit changes, and the response is of
|
|
22
|
+
* the SkyDropdownMenuChange type.
|
|
23
|
+
*/
|
|
24
|
+
this.menuChanges = new EventEmitter();
|
|
25
|
+
this.dropdownMenuId = `sky-dropdown-menu-${++nextId}`;
|
|
26
|
+
this.ngUnsubscribe = new Subject();
|
|
27
|
+
this._menuIndex = 0;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Specifies an ARIA role for the dropdown menu
|
|
31
|
+
* [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
|
|
32
|
+
* by indicating how the dropdown menu functions and what it controls. The dropdown button
|
|
33
|
+
* inherits this value to set its `aria-haspopup` property. For information
|
|
34
|
+
* about how an ARIA role indicates what an item represents on a web page, see the
|
|
35
|
+
* [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).
|
|
36
|
+
* @default "menu"
|
|
37
|
+
*/
|
|
38
|
+
set ariaRole(value) {
|
|
39
|
+
this._ariaRole = value;
|
|
40
|
+
}
|
|
41
|
+
get ariaRole() {
|
|
42
|
+
return this._ariaRole || 'menu';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Indicates whether to use the browser's native focus function when users navigate through menu
|
|
46
|
+
* items with the keyboard. To disable the native focus function, set this property to `false`.
|
|
47
|
+
* For example, to let users interact with the dropdown menu but keep the keyboard focus on a
|
|
48
|
+
* different element, set this property to `false`.
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
51
|
+
set useNativeFocus(value) {
|
|
52
|
+
this._useNativeFocus = value;
|
|
53
|
+
}
|
|
54
|
+
get useNativeFocus() {
|
|
55
|
+
if (this._useNativeFocus === undefined) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return this._useNativeFocus;
|
|
59
|
+
}
|
|
60
|
+
get hasFocusableItems() {
|
|
61
|
+
const found = this.menuItems.find((item) => item.isFocusable());
|
|
62
|
+
return found !== undefined;
|
|
63
|
+
}
|
|
64
|
+
set menuIndex(value) {
|
|
65
|
+
if (value < 0) {
|
|
66
|
+
value = this.menuItems.length - 1;
|
|
67
|
+
}
|
|
68
|
+
if (value >= this.menuItems.length) {
|
|
69
|
+
value = 0;
|
|
70
|
+
}
|
|
71
|
+
this._menuIndex = value;
|
|
72
|
+
}
|
|
73
|
+
get menuIndex() {
|
|
74
|
+
return this._menuIndex;
|
|
75
|
+
}
|
|
76
|
+
ngAfterContentInit() {
|
|
77
|
+
/* istanbul ignore else */
|
|
78
|
+
if (this.dropdownComponent) {
|
|
79
|
+
this.dropdownComponent.menuId = this.dropdownMenuId;
|
|
80
|
+
this.dropdownComponent.menuAriaRole = this.ariaRole;
|
|
81
|
+
this.dropdownComponent.messageStream
|
|
82
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
83
|
+
.subscribe((message) => {
|
|
84
|
+
switch (message.type) {
|
|
85
|
+
case SkyDropdownMessageType.Open:
|
|
86
|
+
case SkyDropdownMessageType.Close:
|
|
87
|
+
this.reset();
|
|
88
|
+
break;
|
|
89
|
+
case SkyDropdownMessageType.FocusFirstItem:
|
|
90
|
+
this.focusFirstItem();
|
|
91
|
+
break;
|
|
92
|
+
case SkyDropdownMessageType.FocusNextItem:
|
|
93
|
+
this.focusNextItem();
|
|
94
|
+
break;
|
|
95
|
+
case SkyDropdownMessageType.FocusPreviousItem:
|
|
96
|
+
this.focusPreviousItem();
|
|
97
|
+
break;
|
|
98
|
+
case SkyDropdownMessageType.FocusLastItem:
|
|
99
|
+
this.focusLastItem();
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
this.menuChanges
|
|
104
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
105
|
+
.subscribe((change) => {
|
|
106
|
+
// Close the dropdown when a menu item is selected.
|
|
107
|
+
if (change.selectedItem) {
|
|
108
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
109
|
+
this.sendMessage(SkyDropdownMessageType.FocusTriggerButton);
|
|
110
|
+
}
|
|
111
|
+
if (change.items) {
|
|
112
|
+
// Update the popover style and position whenever the number of items changes.
|
|
113
|
+
this.sendMessage(SkyDropdownMessageType.Reposition);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
// Reset dropdown whenever the menu items change.
|
|
118
|
+
this.menuItems.changes
|
|
119
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
120
|
+
.subscribe((items) => {
|
|
121
|
+
this.reset();
|
|
122
|
+
this.menuChanges.emit({
|
|
123
|
+
items: items.toArray(),
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
this.addEventListeners();
|
|
127
|
+
}
|
|
128
|
+
ngOnDestroy() {
|
|
129
|
+
this.ngUnsubscribe.next();
|
|
130
|
+
this.ngUnsubscribe.complete();
|
|
131
|
+
}
|
|
132
|
+
focusFirstItem() {
|
|
133
|
+
if (!this.hasFocusableItems) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
this.menuIndex = 0;
|
|
137
|
+
const firstItem = this.getItemByIndex(this.menuIndex);
|
|
138
|
+
if (firstItem && firstItem.isFocusable()) {
|
|
139
|
+
this.focusItem(firstItem);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
this.focusNextItem();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
focusLastItem() {
|
|
146
|
+
if (!this.hasFocusableItems) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
this.menuIndex = this.menuItems.length - 1;
|
|
150
|
+
const lastItem = this.getItemByIndex(this.menuIndex);
|
|
151
|
+
if (lastItem && lastItem.isFocusable()) {
|
|
152
|
+
this.focusItem(lastItem);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.focusPreviousItem();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
focusPreviousItem() {
|
|
159
|
+
if (!this.hasFocusableItems) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
this.menuIndex--;
|
|
163
|
+
const previousItem = this.getItemByIndex(this.menuIndex);
|
|
164
|
+
if (previousItem && previousItem.isFocusable()) {
|
|
165
|
+
this.focusItem(previousItem);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
this.focusPreviousItem();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
focusNextItem() {
|
|
172
|
+
if (!this.hasFocusableItems) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
this.menuIndex++;
|
|
176
|
+
const nextItem = this.getItemByIndex(this.menuIndex);
|
|
177
|
+
if (nextItem && nextItem.isFocusable()) {
|
|
178
|
+
this.focusItem(nextItem);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.focusNextItem();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
reset() {
|
|
185
|
+
this._menuIndex = -1;
|
|
186
|
+
this.resetItemsActiveState();
|
|
187
|
+
this.changeDetector.markForCheck();
|
|
188
|
+
}
|
|
189
|
+
resetItemsActiveState() {
|
|
190
|
+
this.menuItems.forEach((item) => {
|
|
191
|
+
item.resetState();
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
focusItem(item) {
|
|
195
|
+
this.resetItemsActiveState();
|
|
196
|
+
item.focusElement(this.useNativeFocus);
|
|
197
|
+
this.menuChanges.emit({
|
|
198
|
+
activeIndex: this.menuIndex,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
getItemByIndex(index) {
|
|
202
|
+
return this.menuItems.find((_, i) => i === index);
|
|
203
|
+
}
|
|
204
|
+
selectItemByEventTarget(target) {
|
|
205
|
+
const selectedItem = this.menuItems.find((item, i) => {
|
|
206
|
+
const found = item.elementRef.nativeElement.contains(target);
|
|
207
|
+
if (found) {
|
|
208
|
+
this.menuIndex = i;
|
|
209
|
+
this.menuChanges.next({
|
|
210
|
+
activeIndex: this.menuIndex,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return found;
|
|
214
|
+
});
|
|
215
|
+
/* istanbul ignore else */
|
|
216
|
+
if (selectedItem) {
|
|
217
|
+
this.menuChanges.next({
|
|
218
|
+
selectedItem,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
sendMessage(type) {
|
|
223
|
+
this.dropdownComponent.messageStream.next({ type });
|
|
224
|
+
}
|
|
225
|
+
addEventListeners() {
|
|
226
|
+
const dropdownMenuElement = this.elementRef.nativeElement;
|
|
227
|
+
observableFromEvent(dropdownMenuElement, 'click')
|
|
228
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
229
|
+
.subscribe((event) => {
|
|
230
|
+
this.selectItemByEventTarget(event.target);
|
|
231
|
+
});
|
|
232
|
+
observableFromEvent(dropdownMenuElement, 'keydown')
|
|
233
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
234
|
+
.subscribe((event) => {
|
|
235
|
+
const key = event.key.toLowerCase();
|
|
236
|
+
switch (key) {
|
|
237
|
+
case 'escape':
|
|
238
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
239
|
+
this.sendMessage(SkyDropdownMessageType.FocusTriggerButton);
|
|
240
|
+
event.stopPropagation();
|
|
241
|
+
event.preventDefault();
|
|
242
|
+
break;
|
|
243
|
+
case 'arrowdown':
|
|
244
|
+
case 'down':
|
|
245
|
+
this.focusNextItem();
|
|
246
|
+
event.preventDefault();
|
|
247
|
+
break;
|
|
248
|
+
case 'arrowup':
|
|
249
|
+
case 'up':
|
|
250
|
+
this.focusPreviousItem();
|
|
251
|
+
event.preventDefault();
|
|
252
|
+
break;
|
|
253
|
+
case 'tab':
|
|
254
|
+
if (this.dropdownComponent.dismissOnBlur) {
|
|
255
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
256
|
+
}
|
|
257
|
+
this.sendMessage(SkyDropdownMessageType.FocusTriggerButton);
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
observableFromEvent(dropdownMenuElement, 'mouseenter')
|
|
262
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
263
|
+
.subscribe(() => {
|
|
264
|
+
this.dropdownComponent.isMouseEnter = true;
|
|
265
|
+
});
|
|
266
|
+
observableFromEvent(dropdownMenuElement, 'mouseleave')
|
|
267
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
268
|
+
.subscribe(() => {
|
|
269
|
+
this.dropdownComponent.isMouseEnter = false;
|
|
270
|
+
// Allow the dropdown component to set isMouseEnter before checking if the close action
|
|
271
|
+
// should be taken.
|
|
272
|
+
setTimeout(() => {
|
|
273
|
+
if (this.dropdownComponent.trigger === 'hover' &&
|
|
274
|
+
this.dropdownComponent.isMouseEnter === false) {
|
|
275
|
+
this.sendMessage(SkyDropdownMessageType.Close);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
SkyDropdownMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDropdownMenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyDropdownComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
282
|
+
SkyDropdownMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyDropdownMenuComponent, selector: "sky-dropdown-menu", inputs: { ariaLabelledBy: "ariaLabelledBy", ariaRole: "ariaRole", useNativeFocus: "useNativeFocus" }, outputs: { menuChanges: "menuChanges" }, queries: [{ propertyName: "menuItems", predicate: SkyDropdownItemComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"sky-dropdown-menu sky-shadow sky-elevation-4\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [id]=\"dropdownMenuId\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-menu{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px);display:flex;flex-direction:column;background-color:#fff}.sky-dropdown-menu button{overflow:hidden;text-overflow:ellipsis}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-menu{background-color:#252a2e;color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyDropdownMenuComponent, decorators: [{
|
|
284
|
+
type: Component,
|
|
285
|
+
args: [{ selector: 'sky-dropdown-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-dropdown-menu sky-shadow sky-elevation-4\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRole\"\n [id]=\"dropdownMenuId\"\n>\n <ng-content> </ng-content>\n</div>\n", styles: [".sky-dropdown-menu{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px);display:flex;flex-direction:column;background-color:#fff}.sky-dropdown-menu button{overflow:hidden;text-overflow:ellipsis}.sky-theme-modern.sky-theme-mode-dark .sky-dropdown-menu{background-color:#252a2e;color:#fff}\n"] }]
|
|
286
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyDropdownComponent, decorators: [{
|
|
287
|
+
type: Optional
|
|
288
|
+
}] }]; }, propDecorators: { ariaLabelledBy: [{
|
|
289
|
+
type: Input
|
|
290
|
+
}], ariaRole: [{
|
|
291
|
+
type: Input
|
|
292
|
+
}], useNativeFocus: [{
|
|
293
|
+
type: Input
|
|
294
|
+
}], menuChanges: [{
|
|
295
|
+
type: Output
|
|
296
|
+
}], menuItems: [{
|
|
297
|
+
type: ContentChildren,
|
|
298
|
+
args: [SkyDropdownItemComponent, { descendants: true }]
|
|
299
|
+
}] } });
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvc3JjL2xpYi9tb2R1bGVzL2Ryb3Bkb3duL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3NyYy9saWIvbW9kdWxlcy9kcm9wZG93bi9kcm9wZG93bi1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxJQUFJLG1CQUFtQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXZFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNmOzs7R0FHRztBQVFILE1BQU0sT0FBTyx3QkFBd0I7SUF5Rm5DLFlBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDVixpQkFBdUM7UUFGbkQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBN0M3RDs7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Q0FBQyxDQUFDO1FBRUwsbUJBQW1CLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDO2FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUM1Qyx1RkFBdUY7WUFDdkYsbUJBQW1CO1lBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxLQUFLLE9BQU87b0JBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUM3QztvQkFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoRDtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztxSEFsVlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isa09BOEVsQix3QkFBd0IsZ0RDbkgzQywrTUFRQTsyRkQ2QmEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkE4RmxDLFFBQVE7NENBckZKLGNBQWM7c0JBRHBCLEtBQUs7Z0JBYUssUUFBUTtzQkFEbEIsS0FBSztnQkFpQkssY0FBYztzQkFEeEIsS0FBSztnQkFtQkMsV0FBVztzQkFEakIsTUFBTTtnQkEyQkEsU0FBUztzQkFEZixlQUFlO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lbnVDaGFuZ2UgfSBmcm9tICcuL3R5cGVzL2Ryb3Bkb3duLW1lbnUtY2hhbmdlJztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvZHJvcGRvd24tbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9kcm9wZG93bi1tZXNzYWdlLXR5cGUnO1xuXG5sZXQgbmV4dElkID0gMDtcbi8qKlxuICogQ3JlYXRlcyBhIG1lbnUgdGhhdCBjb250YWlucyBkcm9wZG93biBtZW51IGl0ZW1zLlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRyb3Bkb3duLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreURyb3Bkb3duTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSBkcm9wZG93biBtZW51LiBUaGlzIHNldHMgdGhlIGRyb3Bkb3duIG1lbnUncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSByb2xlIGZvciB0aGUgZHJvcGRvd24gbWVudVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpXG4gICAqIGJ5IGluZGljYXRpbmcgaG93IHRoZSBkcm9wZG93biBtZW51IGZ1bmN0aW9ucyBhbmQgd2hhdCBpdCBjb250cm9scy4gVGhlIGRyb3Bkb3duIGJ1dHRvblxuICAgKiBpbmhlcml0cyB0aGlzIHZhbHVlIHRvIHNldCBpdHMgYGFyaWEtaGFzcG9wdXBgIHByb3BlcnR5LiBGb3IgaW5mb3JtYXRpb25cbiAgICogYWJvdXQgaG93IGFuIEFSSUEgcm9sZSBpbmRpY2F0ZXMgd2hhdCBhbiBpdGVtIHJlcHJlc2VudHMgb24gYSB3ZWIgcGFnZSwgc2VlIHRoZVxuICAgKiBbV0FJLUFSSUEgcm9sZXMgbW9kZWxdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS9yb2xlcykuXG4gICAqIEBkZWZhdWx0IFwibWVudVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9hcmlhUm9sZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBhcmlhUm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcmlhUm9sZSB8fCAnbWVudSc7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIHRoZSBicm93c2VyJ3MgbmF0aXZlIGZvY3VzIGZ1bmN0aW9uIHdoZW4gdXNlcnMgbmF2aWdhdGUgdGhyb3VnaCBtZW51XG4gICAqIGl0ZW1zIHdpdGggdGhlIGtleWJvYXJkLiBUbyBkaXNhYmxlIHRoZSBuYXRpdmUgZm9jdXMgZnVuY3Rpb24sIHNldCB0aGlzIHByb3BlcnR5IHRvIGBmYWxzZWAuXG4gICAqIEZvciBleGFtcGxlLCB0byBsZXQgdXNlcnMgaW50ZXJhY3Qgd2l0aCB0aGUgZHJvcGRvd24gbWVudSBidXQga2VlcCB0aGUga2V5Ym9hcmQgZm9jdXMgb24gYVxuICAgKiBkaWZmZXJlbnQgZWxlbWVudCwgc2V0IHRoaXMgcHJvcGVydHkgdG8gYGZhbHNlYC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB1c2VOYXRpdmVGb2N1cyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3VzZU5hdGl2ZUZvY3VzID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVzZU5hdGl2ZUZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl91c2VOYXRpdmVGb2N1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdXNlTmF0aXZlRm9jdXM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgZHJvcGRvd24gbWVudSdzIGFjdGl2ZSBpbmRleCBvciBzZWxlY3RlZCBpdGVtIGNoYW5nZXMuIFRoaXMgZXZlbnQgcHJvdmlkZXMgYW5cbiAgICogb2JzZXJ2YWJsZSB0byBlbWl0IGNoYW5nZXMsIGFuZCB0aGUgcmVzcG9uc2UgaXMgb2ZcbiAgICogdGhlIFNreURyb3Bkb3duTWVudUNoYW5nZSB0eXBlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBtZW51Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RHJvcGRvd25NZW51Q2hhbmdlPigpO1xuXG4gIHB1YmxpYyBkcm9wZG93bk1lbnVJZCA9IGBza3ktZHJvcGRvd24tbWVudS0keysrbmV4dElkfWA7XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRm9jdXNhYmxlSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLm1lbnVJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlzRm9jdXNhYmxlKCkpO1xuICAgIHJldHVybiBmb3VuZCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldCBtZW51SW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgIHZhbHVlID0gdGhpcy5tZW51SXRlbXMubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPj0gdGhpcy5tZW51SXRlbXMubGVuZ3RoKSB7XG4gICAgICB2YWx1ZSA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWVudUluZGV4ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tZW51SW5kZXg7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreURyb3Bkb3duSXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgbWVudUl0ZW1zITogUXVlcnlMaXN0PFNreURyb3Bkb3duSXRlbUNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9hcmlhUm9sZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgX21lbnVJbmRleCA9IDA7XG5cbiAgcHJpdmF0ZSBfdXNlTmF0aXZlRm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZHJvcGRvd25Db21wb25lbnQ6IFNreURyb3Bkb3duQ29tcG9uZW50XG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnQpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUlkID0gdGhpcy5kcm9wZG93bk1lbnVJZDtcbiAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQubWVudUFyaWFSb2xlID0gdGhpcy5hcmlhUm9sZTtcblxuICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5tZXNzYWdlU3RyZWFtXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lEcm9wZG93bk1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLk9wZW46XG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2U6XG4gICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c0ZpcnN0SXRlbTpcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0SXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzTmV4dEl0ZW06XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkZvY3VzUHJldmlvdXNJdGVtOlxuICAgICAgICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNMYXN0SXRlbTpcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c0xhc3RJdGVtKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMubWVudUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5RHJvcGRvd25NZW51Q2hhbmdlKSA9PiB7XG4gICAgICAgICAgLy8gQ2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAgICAgICAgaWYgKGNoYW5nZS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2hhbmdlLml0ZW1zKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHBvcG92ZXIgc3R5bGUgYW5kIHBvc2l0aW9uIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgaXRlbXMgY2hhbmdlcy5cbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5SZXBvc2l0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGRyb3Bkb3duIHdoZW5ldmVyIHRoZSBtZW51IGl0ZW1zIGNoYW5nZS5cbiAgICB0aGlzLm1lbnVJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBRdWVyeUxpc3Q8U2t5RHJvcGRvd25JdGVtQ29tcG9uZW50PikgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubWVudUNoYW5nZXMuZW1pdCh7XG4gICAgICAgICAgaXRlbXM6IGl0ZW1zLnRvQXJyYXkoKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzRmlyc3RJdGVtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNGb2N1c2FibGVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWVudUluZGV4ID0gMDtcblxuICAgIGNvbnN0IGZpcnN0SXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChmaXJzdEl0ZW0gJiYgZmlyc3RJdGVtLmlzRm9jdXNhYmxlKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKGZpcnN0SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0xhc3RJdGVtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNGb2N1c2FibGVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWVudUluZGV4ID0gdGhpcy5tZW51SXRlbXMubGVuZ3RoIC0gMTtcblxuICAgIGNvbnN0IGxhc3RJdGVtID0gdGhpcy5nZXRJdGVtQnlJbmRleCh0aGlzLm1lbnVJbmRleCk7XG4gICAgaWYgKGxhc3RJdGVtICYmIGxhc3RJdGVtLmlzRm9jdXNhYmxlKCkpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtKGxhc3RJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c1ByZXZpb3VzSXRlbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaGFzRm9jdXNhYmxlSXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lbnVJbmRleC0tO1xuXG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gdGhpcy5nZXRJdGVtQnlJbmRleCh0aGlzLm1lbnVJbmRleCk7XG4gICAgaWYgKHByZXZpb3VzSXRlbSAmJiBwcmV2aW91c0l0ZW0uaXNGb2N1c2FibGUoKSkge1xuICAgICAgdGhpcy5mb2N1c0l0ZW0ocHJldmlvdXNJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb2N1c05leHRJdGVtKCkge1xuICAgIGlmICghdGhpcy5oYXNGb2N1c2FibGVJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWVudUluZGV4Kys7XG5cbiAgICBjb25zdCBuZXh0SXRlbSA9IHRoaXMuZ2V0SXRlbUJ5SW5kZXgodGhpcy5tZW51SW5kZXgpO1xuICAgIGlmIChuZXh0SXRlbSAmJiBuZXh0SXRlbS5pc0ZvY3VzYWJsZSgpKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbShuZXh0SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZW51SW5kZXggPSAtMTtcbiAgICB0aGlzLnJlc2V0SXRlbXNBY3RpdmVTdGF0ZSgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0SXRlbXNBY3RpdmVTdGF0ZSgpIHtcbiAgICB0aGlzLm1lbnVJdGVtcy5mb3JFYWNoKChpdGVtOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgIGl0ZW0ucmVzZXRTdGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0l0ZW0oaXRlbTogU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEl0ZW1zQWN0aXZlU3RhdGUoKTtcbiAgICBpdGVtLmZvY3VzRWxlbWVudCh0aGlzLnVzZU5hdGl2ZUZvY3VzKTtcbiAgICB0aGlzLm1lbnVDaGFuZ2VzLmVtaXQoe1xuICAgICAgYWN0aXZlSW5kZXg6IHRoaXMubWVudUluZGV4LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtQnlJbmRleChpbmRleDogbnVtYmVyKTogU2t5RHJvcGRvd25JdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5tZW51SXRlbXMuZmluZCgoXywgaSkgPT4gaSA9PT0gaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RJdGVtQnlFdmVudFRhcmdldCh0YXJnZXQ6IEV2ZW50VGFyZ2V0KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5tZW51SXRlbXMuZmluZChcbiAgICAgIChpdGVtOiBTa3lEcm9wZG93bkl0ZW1Db21wb25lbnQsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBmb3VuZCA9IGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XG5cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgdGhpcy5tZW51SW5kZXggPSBpO1xuICAgICAgICAgIHRoaXMubWVudUNoYW5nZXMubmV4dCh7XG4gICAgICAgICAgICBhY3RpdmVJbmRleDogdGhpcy5tZW51SW5kZXgsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHNlbGVjdGVkSXRlbSkge1xuICAgICAgdGhpcy5tZW51Q2hhbmdlcy5uZXh0KHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZW5kTWVzc2FnZSh0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5tZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRyb3Bkb3duTWVudUVsZW1lbnQsICdjbGljaycpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbUJ5RXZlbnRUYXJnZXQoZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0KTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkcm9wZG93bk1lbnVFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKFNreURyb3Bkb3duTWVzc2FnZVR5cGUuRm9jdXNUcmlnZ2VyQnV0dG9uKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0SXRlbSgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSXRlbSgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50LmRpc21pc3NPbkJsdXIpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5Gb2N1c1RyaWdnZXJCdXR0b24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkcm9wZG93bk1lbnVFbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LmlzTW91c2VFbnRlciA9IHRydWU7XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZHJvcGRvd25NZW51RWxlbWVudCwgJ21vdXNlbGVhdmUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC5pc01vdXNlRW50ZXIgPSBmYWxzZTtcbiAgICAgICAgLy8gQWxsb3cgdGhlIGRyb3Bkb3duIGNvbXBvbmVudCB0byBzZXQgaXNNb3VzZUVudGVyIGJlZm9yZSBjaGVja2luZyBpZiB0aGUgY2xvc2UgYWN0aW9uXG4gICAgICAgIC8vIHNob3VsZCBiZSB0YWtlbi5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudC50cmlnZ2VyID09PSAnaG92ZXInICYmXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50LmlzTW91c2VFbnRlciA9PT0gZmFsc2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWRyb3Bkb3duLW1lbnUgc2t5LXNoYWRvdyBza3ktZWxldmF0aW9uLTRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICBbYXR0ci5yb2xlXT1cImFyaWFSb2xlXCJcbiAgW2lkXT1cImRyb3Bkb3duTWVudUlkXCJcbj5cbiAgPG5nLWNvbnRlbnQ+IDwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|