@fundamental-ngx/cx 0.38.3-rc.2 → 0.38.3-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2020/fundamental-ngx-cx.module.mjs +19 -0
- package/esm2020/nested-list/fundamental-ngx-cx-nested-list.mjs +5 -0
- package/esm2020/nested-list/nested-content/nested-list-content.directive.mjs +131 -0
- package/esm2020/nested-list/nested-item/nested-item.component.mjs +290 -0
- package/esm2020/nested-list/nested-item/nested-item.interface.mjs +2 -0
- package/esm2020/nested-list/nested-item/nested-item.service.mjs +15 -0
- package/esm2020/nested-list/nested-link/nested-link.component.mjs +151 -0
- package/esm2020/nested-list/nested-list/nested-list.component.mjs +191 -0
- package/esm2020/nested-list/nested-list/nested-list.interface.mjs +2 -0
- package/esm2020/nested-list/nested-list-directives.mjs +248 -0
- package/esm2020/nested-list/nested-list-keyboard.service.mjs +106 -0
- package/esm2020/nested-list/nested-list-model.mjs +2 -0
- package/esm2020/nested-list/nested-list-popover/nested-list-popover.component.mjs +87 -0
- package/esm2020/nested-list/nested-list-popover/nested-list-popover.interface.mjs +2 -0
- package/esm2020/nested-list/nested-list-state.service.mjs +24 -0
- package/esm2020/nested-list/nested-list.module.mjs +78 -0
- package/esm2020/nested-list/prepared-nested-list/prepared-nested-list.component.mjs +53 -0
- package/esm2020/nested-list/public_api.mjs +13 -0
- package/esm2020/public_api.mjs +4 -2
- package/esm2020/side-navigation/fundamental-ngx-cx-side-navigation.mjs +5 -0
- package/esm2020/side-navigation/public_api.mjs +7 -0
- package/esm2020/side-navigation/side-navigation-button.directive.mjs +20 -0
- package/esm2020/side-navigation/side-navigation-main.component.mjs +45 -0
- package/esm2020/side-navigation/side-navigation-model.mjs +2 -0
- package/esm2020/side-navigation/side-navigation-utility.directive.mjs +25 -0
- package/esm2020/side-navigation/side-navigation.component.mjs +159 -0
- package/esm2020/side-navigation/side-navigation.module.mjs +41 -0
- package/fesm2015/fundamental-ngx-cx-nested-list.mjs +1306 -0
- package/fesm2015/fundamental-ngx-cx-nested-list.mjs.map +1 -0
- package/fesm2015/fundamental-ngx-cx-side-navigation.mjs +276 -0
- package/fesm2015/fundamental-ngx-cx-side-navigation.mjs.map +1 -0
- package/fesm2015/fundamental-ngx-cx.mjs +9 -4
- package/fesm2015/fundamental-ngx-cx.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-cx-nested-list.mjs +1292 -0
- package/fesm2020/fundamental-ngx-cx-nested-list.mjs.map +1 -0
- package/fesm2020/fundamental-ngx-cx-side-navigation.mjs +275 -0
- package/fesm2020/fundamental-ngx-cx-side-navigation.mjs.map +1 -0
- package/fesm2020/fundamental-ngx-cx.mjs +9 -4
- package/fesm2020/fundamental-ngx-cx.mjs.map +1 -1
- package/fundamental-ngx-cx-v0.38.3-rc.4.tgz +0 -0
- package/{fundamental-ngx.module.d.ts → fundamental-ngx-cx.module.d.ts} +4 -1
- package/nested-list/README.md +25 -0
- package/nested-list/index.d.ts +5 -0
- package/nested-list/nested-content/nested-list-content.directive.d.ts +58 -0
- package/nested-list/nested-item/nested-item.component.d.ts +111 -0
- package/nested-list/nested-item/nested-item.interface.d.ts +16 -0
- package/nested-list/nested-item/nested-item.service.d.ts +18 -0
- package/nested-list/nested-link/nested-link.component.d.ts +57 -0
- package/nested-list/nested-list/nested-list.component.d.ts +74 -0
- package/nested-list/nested-list/nested-list.interface.d.ts +8 -0
- package/nested-list/nested-list-directives.d.ts +101 -0
- package/nested-list/nested-list-keyboard.service.d.ts +43 -0
- package/nested-list/nested-list-model.d.ts +18 -0
- package/nested-list/nested-list-popover/nested-list-popover.component.d.ts +49 -0
- package/nested-list/nested-list-popover/nested-list-popover.interface.d.ts +7 -0
- package/nested-list/nested-list-state.service.d.ts +17 -0
- package/nested-list/nested-list.module.d.ts +18 -0
- package/nested-list/prepared-nested-list/prepared-nested-list.component.d.ts +31 -0
- package/nested-list/public_api.d.ts +12 -0
- package/package.json +21 -4
- package/public_api.d.ts +3 -1
- package/side-navigation/README.md +25 -0
- package/side-navigation/index.d.ts +5 -0
- package/side-navigation/public_api.d.ts +6 -0
- package/side-navigation/side-navigation-button.directive.d.ts +7 -0
- package/side-navigation/side-navigation-main.component.d.ts +22 -0
- package/side-navigation/side-navigation-model.d.ts +6 -0
- package/side-navigation/side-navigation-utility.directive.d.ts +10 -0
- package/side-navigation/side-navigation.component.d.ts +72 -0
- package/side-navigation/side-navigation.module.d.ts +13 -0
- package/esm2020/fundamental-ngx.module.mjs +0 -16
- package/fundamental-ngx-cx-v0.38.3-rc.2.tgz +0 -0
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ Check the [Breaking Changes](https://github.com/SAP/fundamental-ngx/wiki#breakin
|
|
|
43
43
|
For an existing Angular CLI application,
|
|
44
44
|
|
|
45
45
|
0. **Video tutorial**
|
|
46
|
-
[How to use the Fundamental
|
|
46
|
+
[How to use the Fundamental Cx Library](https://www.youtube.com/watch?v=i4VIiuzD2Fg)
|
|
47
47
|
|
|
48
48
|
1. **Install Fundamental-NGX.**
|
|
49
49
|
`ng add @fundamental-ngx/cx`
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { CxNestedListModule } from '@fundamental-ngx/cx/nested-list';
|
|
4
|
+
import { CxSideNavigationModule } from '@fundamental-ngx/cx/side-navigation';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class FundamentalNgxCxModule {
|
|
7
|
+
}
|
|
8
|
+
FundamentalNgxCxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FundamentalNgxCxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
FundamentalNgxCxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: FundamentalNgxCxModule, imports: [CommonModule], exports: [CxNestedListModule, CxSideNavigationModule] });
|
|
10
|
+
FundamentalNgxCxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FundamentalNgxCxModule, imports: [CommonModule, CxNestedListModule, CxSideNavigationModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FundamentalNgxCxModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
declarations: [],
|
|
16
|
+
exports: [CxNestedListModule, CxSideNavigationModule]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWN4Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvY3gvc3JjL2xpYi9mdW5kYW1lbnRhbC1uZ3gtY3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQU83RSxNQUFNLE9BQU8sc0JBQXNCOzttSEFBdEIsc0JBQXNCO29IQUF0QixzQkFBc0IsWUFKckIsWUFBWSxhQUVaLGtCQUFrQixFQUFFLHNCQUFzQjtvSEFFM0Msc0JBQXNCLFlBSnJCLFlBQVksRUFFWixrQkFBa0IsRUFBRSxzQkFBc0I7MkZBRTNDLHNCQUFzQjtrQkFMbEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQztpQkFDeEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEN4TmVzdGVkTGlzdE1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY3gvbmVzdGVkLWxpc3QnO1xuaW1wb3J0IHsgQ3hTaWRlTmF2aWdhdGlvbk1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY3gvc2lkZS1uYXZpZ2F0aW9uJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtdLFxuICAgIGV4cG9ydHM6IFtDeE5lc3RlZExpc3RNb2R1bGUsIEN4U2lkZU5hdmlnYXRpb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEZ1bmRhbWVudGFsTmd4Q3hNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWN4LW5lc3RlZC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jeC9zcmMvbGliL25lc3RlZC1saXN0L2Z1bmRhbWVudGFsLW5neC1jeC1uZXN0ZWQtbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { ChangeDetectorRef, ContentChild, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, Renderer2 } from '@angular/core';
|
|
2
|
+
import { NestedLinkComponent } from '../nested-link/nested-link.component';
|
|
3
|
+
import { NestedListExpandIconComponent } from '../nested-list-directives';
|
|
4
|
+
import { NestedItemService } from '../nested-item/nested-item.service';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { takeUntil } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../nested-item/nested-item.service";
|
|
9
|
+
export class NestedListContentDirective {
|
|
10
|
+
/** @hidden */
|
|
11
|
+
constructor(changeDetRef, _renderer, _elementRef, _itemService) {
|
|
12
|
+
this.changeDetRef = changeDetRef;
|
|
13
|
+
this._renderer = _renderer;
|
|
14
|
+
this._elementRef = _elementRef;
|
|
15
|
+
this._itemService = _itemService;
|
|
16
|
+
/** Whether this element is selected*/
|
|
17
|
+
this.selected = false;
|
|
18
|
+
/** @hidden */
|
|
19
|
+
this.role = 'treeitem';
|
|
20
|
+
/** @hidden */
|
|
21
|
+
this.ariaExpanded = false;
|
|
22
|
+
/** Event thrown, when selected state is changed */
|
|
23
|
+
this.selectedChange = new EventEmitter();
|
|
24
|
+
/** Event that is thrown, when any keyboard event is dispatched on this element */
|
|
25
|
+
this.keyboardTriggered = new EventEmitter();
|
|
26
|
+
/** Event that is thrown, when this element is clicked */
|
|
27
|
+
this.clicked = new EventEmitter();
|
|
28
|
+
/** @hidden */
|
|
29
|
+
this.cxNestedListContentClass = true;
|
|
30
|
+
/**
|
|
31
|
+
* @hidden
|
|
32
|
+
* Attribute controlled by the parent `NestedItemComponent`
|
|
33
|
+
*/
|
|
34
|
+
this.hasChildren = false;
|
|
35
|
+
/** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
|
|
36
|
+
this.onDestroy$ = new Subject();
|
|
37
|
+
}
|
|
38
|
+
/** @hidden */
|
|
39
|
+
ngAfterContentInit() {
|
|
40
|
+
this._makeLinkUnFocusable();
|
|
41
|
+
this._setFocusSubscription();
|
|
42
|
+
}
|
|
43
|
+
/** @hidden */
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this.onDestroy$.next();
|
|
46
|
+
this.onDestroy$.complete();
|
|
47
|
+
}
|
|
48
|
+
/** Keyboard Event Handler */
|
|
49
|
+
onKeyDown(event) {
|
|
50
|
+
this.keyboardTriggered.emit(event);
|
|
51
|
+
this._itemService.keyDown.next(event);
|
|
52
|
+
}
|
|
53
|
+
/** Handler for mouse events */
|
|
54
|
+
onClick() {
|
|
55
|
+
this._itemService.click.next();
|
|
56
|
+
}
|
|
57
|
+
/** Method to trigger selected state change */
|
|
58
|
+
changeSelected(selected) {
|
|
59
|
+
this.selected = selected;
|
|
60
|
+
this.selectedChange.emit(selected);
|
|
61
|
+
}
|
|
62
|
+
/** Set focus on the element. */
|
|
63
|
+
focus() {
|
|
64
|
+
this._elementRef.nativeElement.focus();
|
|
65
|
+
}
|
|
66
|
+
/** Dispatches the click event on the element */
|
|
67
|
+
click() {
|
|
68
|
+
this.focus();
|
|
69
|
+
if (this.nestedLink) {
|
|
70
|
+
this.nestedLink.click();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Add subscription for child focusing */
|
|
74
|
+
_setFocusSubscription() {
|
|
75
|
+
this._itemService.focus.pipe(takeUntil(this.onDestroy$)).subscribe(() => this.focus());
|
|
76
|
+
}
|
|
77
|
+
/** Hide link child element from tab key */
|
|
78
|
+
_makeLinkUnFocusable() {
|
|
79
|
+
if (this.nestedLink) {
|
|
80
|
+
this.nestedLink.elementRef.nativeElement.tabIndex = -1;
|
|
81
|
+
this.changeDetRef.detectChanges();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
NestedListContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NestedListContentDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.NestedItemService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
86
|
+
NestedListContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: NestedListContentDirective, selector: "[cxNestedListContent], [fdx-nested-list-content]", inputs: { selected: "selected" }, outputs: { selectedChange: "selectedChange", keyboardTriggered: "keyboardTriggered", clicked: "clicked" }, host: { attributes: { "tabindex": "0" }, listeners: { "keydown": "onKeyDown($event)", "click": "onClick($event)" }, properties: { "class.is-selected": "this.selected", "attr.role": "this.role", "attr.aria-expanded": "this.ariaExpanded", "class.fdx-nested-list__content": "this.cxNestedListContentClass", "class.has-child": "this.hasChildren" } }, queries: [{ propertyName: "nestedLink", first: true, predicate: NestedLinkComponent, descendants: true }, { propertyName: "nestedExpandIcon", first: true, predicate: NestedListExpandIconComponent, descendants: true }], ngImport: i0 });
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NestedListContentDirective, decorators: [{
|
|
88
|
+
type: Directive,
|
|
89
|
+
args: [{
|
|
90
|
+
selector: '[cxNestedListContent], [fdx-nested-list-content]',
|
|
91
|
+
host: {
|
|
92
|
+
tabindex: '0'
|
|
93
|
+
}
|
|
94
|
+
}]
|
|
95
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.NestedItemService }]; }, propDecorators: { selected: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}, {
|
|
98
|
+
type: HostBinding,
|
|
99
|
+
args: ['class.is-selected']
|
|
100
|
+
}], role: [{
|
|
101
|
+
type: HostBinding,
|
|
102
|
+
args: ['attr.role']
|
|
103
|
+
}], ariaExpanded: [{
|
|
104
|
+
type: HostBinding,
|
|
105
|
+
args: ['attr.aria-expanded']
|
|
106
|
+
}], selectedChange: [{
|
|
107
|
+
type: Output
|
|
108
|
+
}], keyboardTriggered: [{
|
|
109
|
+
type: Output
|
|
110
|
+
}], clicked: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}], cxNestedListContentClass: [{
|
|
113
|
+
type: HostBinding,
|
|
114
|
+
args: ['class.fdx-nested-list__content']
|
|
115
|
+
}], hasChildren: [{
|
|
116
|
+
type: HostBinding,
|
|
117
|
+
args: ['class.has-child']
|
|
118
|
+
}], nestedLink: [{
|
|
119
|
+
type: ContentChild,
|
|
120
|
+
args: [NestedLinkComponent]
|
|
121
|
+
}], nestedExpandIcon: [{
|
|
122
|
+
type: ContentChild,
|
|
123
|
+
args: [NestedListExpandIconComponent]
|
|
124
|
+
}], onKeyDown: [{
|
|
125
|
+
type: HostListener,
|
|
126
|
+
args: ['keydown', ['$event']]
|
|
127
|
+
}], onClick: [{
|
|
128
|
+
type: HostListener,
|
|
129
|
+
args: ['click', ['$event']]
|
|
130
|
+
}] } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWxpc3QtY29udGVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2N4L3NyYy9saWIvbmVzdGVkLWxpc3QvbmVzdGVkLWNvbnRlbnQvbmVzdGVkLWxpc3QtY29udGVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUTNDLE1BQU0sT0FBTywwQkFBMEI7SUFnRG5DLGNBQWM7SUFDZCxZQUNXLFlBQStCLEVBQzlCLFNBQW9CLEVBQ3BCLFdBQXVCLEVBQ3ZCLFlBQStCO1FBSGhDLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQXBEM0Msc0NBQXNDO1FBR3RDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBYztRQUVkLFNBQUksR0FBRyxVQUFVLENBQUM7UUFFbEIsY0FBYztRQUVkLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG1EQUFtRDtRQUVuRCxtQkFBYyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXBFLGtGQUFrRjtRQUV6RSxzQkFBaUIsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFNUYseURBQXlEO1FBRWhELFlBQU8sR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUU1RSxjQUFjO1FBRWQsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO1FBRWhDOzs7V0FHRztRQUVILGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBVXBCLHVHQUF1RztRQUN0RixlQUFVLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7SUFROUQsQ0FBQztJQUVKLGNBQWM7SUFDZCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELDZCQUE2QjtJQUU3QixTQUFTLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELCtCQUErQjtJQUUvQixPQUFPO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxjQUFjLENBQUMsUUFBaUI7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxLQUFLO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQsMENBQTBDO0lBQ2xDLHFCQUFxQjtRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsMkNBQTJDO0lBQ25DLG9CQUFvQjtRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQzs7dUhBL0dRLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHdtQkFzQ3JCLG1CQUFtQixtRkFJbkIsNkJBQTZCOzJGQTFDbEMsMEJBQTBCO2tCQU50QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrREFBa0Q7b0JBQzVELElBQUksRUFBRTt3QkFDRixRQUFRLEVBQUUsR0FBRztxQkFDaEI7aUJBQ0o7eUxBS0csUUFBUTtzQkFGUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLG1CQUFtQjtnQkFLaEMsSUFBSTtzQkFESCxXQUFXO3VCQUFDLFdBQVc7Z0JBS3hCLFlBQVk7c0JBRFgsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBS2pDLGNBQWM7c0JBRGIsTUFBTTtnQkFLRSxpQkFBaUI7c0JBRHpCLE1BQU07Z0JBS0UsT0FBTztzQkFEZixNQUFNO2dCQUtQLHdCQUF3QjtzQkFEdkIsV0FBVzt1QkFBQyxnQ0FBZ0M7Z0JBUTdDLFdBQVc7c0JBRFYsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBSzlCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxtQkFBbUI7Z0JBS2pDLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLDZCQUE2QjtnQkE0QjNDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUW5DLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXN0ZWRMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbmVzdGVkLWxpbmsvbmVzdGVkLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IE5lc3RlZExpc3RFeHBhbmRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmVzdGVkLWxpc3QtZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBOZXN0ZWRJdGVtU2VydmljZSB9IGZyb20gJy4uL25lc3RlZC1pdGVtL25lc3RlZC1pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tjeE5lc3RlZExpc3RDb250ZW50XSwgW2ZkeC1uZXN0ZWQtbGlzdC1jb250ZW50XScsXG4gICAgaG9zdDoge1xuICAgICAgICB0YWJpbmRleDogJzAnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBOZXN0ZWRMaXN0Q29udGVudERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgdGhpcyBlbGVtZW50IGlzIHNlbGVjdGVkKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VsZWN0ZWQnKVxuICAgIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICByb2xlID0gJ3RyZWVpdGVtJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIGFyaWFFeHBhbmRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biwgd2hlbiBzZWxlY3RlZCBzdGF0ZSBpcyBjaGFuZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIHRocm93biwgd2hlbiBhbnkga2V5Ym9hcmQgZXZlbnQgaXMgZGlzcGF0Y2hlZCBvbiB0aGlzIGVsZW1lbnQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBrZXlib2FyZFRyaWdnZXJlZDogRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgdGhyb3duLCB3aGVuIHRoaXMgZWxlbWVudCBpcyBjbGlja2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2xpY2tlZDogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkeC1uZXN0ZWQtbGlzdF9fY29udGVudCcpXG4gICAgY3hOZXN0ZWRMaXN0Q29udGVudENsYXNzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBdHRyaWJ1dGUgY29udHJvbGxlZCBieSB0aGUgcGFyZW50IGBOZXN0ZWRJdGVtQ29tcG9uZW50YFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLWNoaWxkJylcbiAgICBoYXNDaGlsZHJlbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKE5lc3RlZExpbmtDb21wb25lbnQpXG4gICAgbmVzdGVkTGluazogTmVzdGVkTGlua0NvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChOZXN0ZWRMaXN0RXhwYW5kSWNvbkNvbXBvbmVudClcbiAgICBuZXN0ZWRFeHBhbmRJY29uOiBOZXN0ZWRMaXN0RXhwYW5kSWNvbkNvbXBvbmVudDtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2hhbmdlRGV0UmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IE5lc3RlZEl0ZW1TZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21ha2VMaW5rVW5Gb2N1c2FibGUoKTtcbiAgICAgICAgdGhpcy5fc2V0Rm9jdXNTdWJzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogS2V5Ym9hcmQgRXZlbnQgSGFuZGxlciAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkVHJpZ2dlcmVkLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLl9pdGVtU2VydmljZS5rZXlEb3duLm5leHQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVyIGZvciBtb3VzZSBldmVudHMgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UuY2xpY2submV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdG8gdHJpZ2dlciBzZWxlY3RlZCBzdGF0ZSBjaGFuZ2UgKi9cbiAgICBjaGFuZ2VTZWxlY3RlZChzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChzZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBmb2N1cyBvbiB0aGUgZWxlbWVudC4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIERpc3BhdGNoZXMgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBlbGVtZW50ICovXG4gICAgY2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgaWYgKHRoaXMubmVzdGVkTGluaykge1xuICAgICAgICAgICAgdGhpcy5uZXN0ZWRMaW5rLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIHN1YnNjcmlwdGlvbiBmb3IgY2hpbGQgZm9jdXNpbmcgKi9cbiAgICBwcml2YXRlIF9zZXRGb2N1c1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UuZm9jdXMucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgLyoqIEhpZGUgbGluayBjaGlsZCBlbGVtZW50IGZyb20gdGFiIGtleSAqL1xuICAgIHByaXZhdGUgX21ha2VMaW5rVW5Gb2N1c2FibGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5lc3RlZExpbmspIHtcbiAgICAgICAgICAgIHRoaXMubmVzdGVkTGluay5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { ContentChild, Component, ElementRef, EventEmitter, HostBinding, Input, Output, forwardRef } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { NestedLinkComponent } from '../nested-link/nested-link.component';
|
|
5
|
+
import { NestedListKeyboardService } from '../nested-list-keyboard.service';
|
|
6
|
+
import { NestedListContentDirective } from '../nested-content/nested-list-content.directive';
|
|
7
|
+
import { NestedListStateService } from '../nested-list-state.service';
|
|
8
|
+
import { NestedItemService } from './nested-item.service';
|
|
9
|
+
import { NestedListComponent } from '../nested-list/nested-list.component';
|
|
10
|
+
import { NestedListExpandIconComponent } from '../nested-list-directives';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "./nested-item.service";
|
|
13
|
+
import * as i2 from "../nested-list-keyboard.service";
|
|
14
|
+
import * as i3 from "../nested-list-state.service";
|
|
15
|
+
let sideNavigationItemUniqueId = 0;
|
|
16
|
+
export class NestedItemComponent {
|
|
17
|
+
/** @hidden */
|
|
18
|
+
constructor(_itemService, _keyboardService, _stateService, elementRef) {
|
|
19
|
+
this._itemService = _itemService;
|
|
20
|
+
this._keyboardService = _keyboardService;
|
|
21
|
+
this._stateService = _stateService;
|
|
22
|
+
this.elementRef = elementRef;
|
|
23
|
+
/** Event thrown, when expanded state is changed */
|
|
24
|
+
this.expandedChange = new EventEmitter();
|
|
25
|
+
/** Event thrown, when any keyboard event is dispatched on this, or link element */
|
|
26
|
+
this.keyboardTriggered = new EventEmitter();
|
|
27
|
+
/** @hidden */
|
|
28
|
+
this.fdNestedListItemClass = true;
|
|
29
|
+
/** Whether this item is a header item. */
|
|
30
|
+
this.header = false;
|
|
31
|
+
/** Whether this item is only meant for display purposes, meaning it cannot be used for navigation or shown as selected. */
|
|
32
|
+
this.display = false;
|
|
33
|
+
/** @hidden */
|
|
34
|
+
this._ariaLevel = null;
|
|
35
|
+
/** @hidden */
|
|
36
|
+
this._display = 'block';
|
|
37
|
+
/** @hidden */
|
|
38
|
+
this._narrow = false;
|
|
39
|
+
/** @hidden */
|
|
40
|
+
this._expanded = false;
|
|
41
|
+
/** @hidden */
|
|
42
|
+
this._ariaExpanded = null;
|
|
43
|
+
/** @hidden */
|
|
44
|
+
this._ariaSelected = null;
|
|
45
|
+
/** @hidden */
|
|
46
|
+
this._ariaDisabled = false;
|
|
47
|
+
/** @hidden */
|
|
48
|
+
this._ariaHidden = true;
|
|
49
|
+
/** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
|
|
50
|
+
this._onDestroy$ = new Subject();
|
|
51
|
+
/** Unique element ID */
|
|
52
|
+
this._elementId = 'fdNestedItem' + sideNavigationItemUniqueId++;
|
|
53
|
+
}
|
|
54
|
+
/** Whether item should be expanded */
|
|
55
|
+
set expanded(expanded) {
|
|
56
|
+
if (expanded !== this._expanded) {
|
|
57
|
+
this.propagateOpenChange(expanded);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** @hidden */
|
|
61
|
+
get expanded() {
|
|
62
|
+
return this._expanded;
|
|
63
|
+
}
|
|
64
|
+
/** @hidden */
|
|
65
|
+
ngAfterContentInit() {
|
|
66
|
+
this._setUpSubscriptions();
|
|
67
|
+
this._propagateHasChildrenProperty();
|
|
68
|
+
this._passItemReferences();
|
|
69
|
+
/** Propagate initial open state to children */
|
|
70
|
+
this.propagateOpenChange(this._expanded);
|
|
71
|
+
if (this.linkItem) {
|
|
72
|
+
this._ariaSelected = this.linkItem.selected;
|
|
73
|
+
this._ariaDisabled = !this._stateService.selectable && !this.linkItem.selected;
|
|
74
|
+
this._title = this.linkItem.getTitle();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** @hidden */
|
|
78
|
+
ngOnDestroy() {
|
|
79
|
+
this._onDestroy$.next();
|
|
80
|
+
this._onDestroy$.complete();
|
|
81
|
+
}
|
|
82
|
+
/** Check if the item element has any child */
|
|
83
|
+
get hasChildren() {
|
|
84
|
+
return !!this._itemService?.list;
|
|
85
|
+
}
|
|
86
|
+
/** Get all of the children item elements */
|
|
87
|
+
get allChildrenItems() {
|
|
88
|
+
if (this._itemService?.list) {
|
|
89
|
+
return this._itemService.list.nestedItems.toArray();
|
|
90
|
+
}
|
|
91
|
+
return [];
|
|
92
|
+
}
|
|
93
|
+
/** Method that expand the item and propagate it to children */
|
|
94
|
+
triggerOpen() {
|
|
95
|
+
if (!this.expanded) {
|
|
96
|
+
/** Propagate initial open state to children */
|
|
97
|
+
this.propagateOpenChange(true);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Method that close the item and propagate it to children */
|
|
101
|
+
triggerClose() {
|
|
102
|
+
if (this.expanded) {
|
|
103
|
+
/** Propagate initial open state to children */
|
|
104
|
+
this.propagateOpenChange(false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Method that toggle the item and propagate it to children */
|
|
108
|
+
toggle() {
|
|
109
|
+
/** Propagate initial open state to children */
|
|
110
|
+
this.propagateOpenChange(!this._expanded);
|
|
111
|
+
}
|
|
112
|
+
/** Method that dispatches `click` event on link item*/
|
|
113
|
+
click() {
|
|
114
|
+
if (!this.display) {
|
|
115
|
+
if (this.contentItem) {
|
|
116
|
+
this.contentItem.click();
|
|
117
|
+
}
|
|
118
|
+
else if (this.linkItem) {
|
|
119
|
+
this.linkItem.click();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Method that focuses link item*/
|
|
124
|
+
focus() {
|
|
125
|
+
if (this.contentItem) {
|
|
126
|
+
this.contentItem.focus();
|
|
127
|
+
}
|
|
128
|
+
else if (this.linkItem) {
|
|
129
|
+
this.linkItem.focus();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** Method that provides information if element, or children of this element has passed id */
|
|
133
|
+
containsId(id) {
|
|
134
|
+
if (this._elementId === id) {
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
if (this._itemService.list) {
|
|
138
|
+
return !!this._itemService.list.nestedItems.find((item) => item.containsId(id));
|
|
139
|
+
}
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* @hidden
|
|
144
|
+
* Propagate open state to all of the children
|
|
145
|
+
*/
|
|
146
|
+
propagateOpenChange(open) {
|
|
147
|
+
this._expanded = open;
|
|
148
|
+
if (this.hasChildren) {
|
|
149
|
+
this._ariaExpanded = this._expanded;
|
|
150
|
+
}
|
|
151
|
+
this.expandIcon?.changeExpandedState(open);
|
|
152
|
+
/** Propagate hidden flag to list component, that is passed from child */
|
|
153
|
+
if (this._itemService.list) {
|
|
154
|
+
this._itemService.list.hidden = !open;
|
|
155
|
+
this._itemService.list.detectChanges();
|
|
156
|
+
}
|
|
157
|
+
/** Propagate open flag to popover list component, that is passed from child */
|
|
158
|
+
if (this._itemService.popover) {
|
|
159
|
+
this._itemService.popover.open = open;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* If there are any list below
|
|
163
|
+
* Trigger event to provide keyboard support to new list of opened item element.
|
|
164
|
+
* */
|
|
165
|
+
if (this._shouldRefreshKeyboardService()) {
|
|
166
|
+
this._keyboardService.refresh$.next();
|
|
167
|
+
}
|
|
168
|
+
this.expandedChange.emit(open);
|
|
169
|
+
}
|
|
170
|
+
/** @hidden */
|
|
171
|
+
_shouldRefreshKeyboardService() {
|
|
172
|
+
return !!(this._itemService.popover || this._itemService.list || this.contentItem);
|
|
173
|
+
}
|
|
174
|
+
/** @hidden */
|
|
175
|
+
_setUpSubscriptions() {
|
|
176
|
+
if (this._stateService.condensed) {
|
|
177
|
+
this._role = 'menuitemradio';
|
|
178
|
+
}
|
|
179
|
+
if (!this.display) {
|
|
180
|
+
/** Subscribe to mouse click event, thrown by link item */
|
|
181
|
+
this._itemService.toggle.pipe(takeUntil(this._onDestroy$)).subscribe(() => this.toggle());
|
|
182
|
+
/** Subscribe to mouse click event, thrown by link item */
|
|
183
|
+
this._itemService.click
|
|
184
|
+
.pipe(takeUntil(this._onDestroy$))
|
|
185
|
+
.subscribe(() => this._stateService.onSelected.next(this._elementId));
|
|
186
|
+
}
|
|
187
|
+
/** Subscribe to keyboard event and throw it farther */
|
|
188
|
+
this._itemService.keyDown
|
|
189
|
+
.pipe(takeUntil(this._onDestroy$))
|
|
190
|
+
.subscribe((keyboardEvent) => this.keyboardTriggered.emit(keyboardEvent));
|
|
191
|
+
/** Subscribe to selected state change, it's not triggered, when selectable flag is disabled*/
|
|
192
|
+
this._stateService.onSelected
|
|
193
|
+
.pipe(takeUntil(this._onDestroy$), filter(() => this._stateService.selectable))
|
|
194
|
+
.subscribe((id) => this._selectedChange(id));
|
|
195
|
+
}
|
|
196
|
+
/** @hidden */
|
|
197
|
+
_propagateHasChildrenProperty() {
|
|
198
|
+
if (this.contentItem && this.hasChildren) {
|
|
199
|
+
this._ariaExpanded = false;
|
|
200
|
+
this.contentItem.hasChildren = true;
|
|
201
|
+
this.contentItem.changeDetRef.detectChanges();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/** Pass this element to popover child item, to allow control `expanded` value */
|
|
205
|
+
_passItemReferences() {
|
|
206
|
+
if (this._itemService.popover) {
|
|
207
|
+
this._itemService.popover.parentItemElement = this;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** Change of selected state of content or link, if there is any children with I */
|
|
211
|
+
_selectedChange(id) {
|
|
212
|
+
const selected = this.containsId(id);
|
|
213
|
+
this._ariaSelected = selected;
|
|
214
|
+
if (this.contentItem) {
|
|
215
|
+
this.contentItem.changeSelected(selected);
|
|
216
|
+
}
|
|
217
|
+
else if (this.linkItem) {
|
|
218
|
+
this.linkItem.changeSelected(selected);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
NestedItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NestedItemComponent, deps: [{ token: i1.NestedItemService }, { token: i2.NestedListKeyboardService }, { token: i3.NestedListStateService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
223
|
+
NestedItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: NestedItemComponent, selector: "[cxNestedItem], [fdx-nested-list-item], li[fdx-nested-list-item]", inputs: { expanded: "expanded", fdNestedListItemClass: "fdNestedListItemClass", header: "header", display: "display" }, outputs: { expandedChange: "expandedChange", keyboardTriggered: "keyboardTriggered" }, host: { properties: { "class.fdx-nested-list__item": "this.fdNestedListItemClass", "class.fdx-nested-list__item--header": "this.header", "attr.aria-level": "this._ariaLevel", "attr.title": "this._title", "style.display": "this._display", "attr.role": "this._role", "attr.aria-expanded": "this._ariaExpanded", "attr.aria-selected": "this._ariaSelected", "attr.aria-disabled": "this._ariaDisabled", "attr.aria-label": "this._ariaLabel", "attr.aria-hidden": "this._ariaHidden" } }, providers: [NestedItemService], queries: [{ propertyName: "linkItem", first: true, predicate: NestedLinkComponent, descendants: true }, { propertyName: "contentItem", first: true, predicate: NestedListContentDirective, descendants: true }, { propertyName: "expandIcon", first: true, predicate: NestedListExpandIconComponent, descendants: true }, { propertyName: "_nestedList", first: true, predicate: i0.forwardRef(function () { return NestedListComponent; }), descendants: true }], ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true });
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NestedItemComponent, decorators: [{
|
|
225
|
+
type: Component,
|
|
226
|
+
args: [{
|
|
227
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
228
|
+
selector: '[cxNestedItem], [fdx-nested-list-item], li[fdx-nested-list-item]',
|
|
229
|
+
template: ` <ng-content></ng-content> `,
|
|
230
|
+
providers: [NestedItemService]
|
|
231
|
+
}]
|
|
232
|
+
}], ctorParameters: function () { return [{ type: i1.NestedItemService }, { type: i2.NestedListKeyboardService }, { type: i3.NestedListStateService }, { type: i0.ElementRef }]; }, propDecorators: { expanded: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], expandedChange: [{
|
|
235
|
+
type: Output
|
|
236
|
+
}], keyboardTriggered: [{
|
|
237
|
+
type: Output
|
|
238
|
+
}], fdNestedListItemClass: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}, {
|
|
241
|
+
type: HostBinding,
|
|
242
|
+
args: ['class.fdx-nested-list__item']
|
|
243
|
+
}], header: [{
|
|
244
|
+
type: Input
|
|
245
|
+
}, {
|
|
246
|
+
type: HostBinding,
|
|
247
|
+
args: ['class.fdx-nested-list__item--header']
|
|
248
|
+
}], display: [{
|
|
249
|
+
type: Input
|
|
250
|
+
}], linkItem: [{
|
|
251
|
+
type: ContentChild,
|
|
252
|
+
args: [NestedLinkComponent]
|
|
253
|
+
}], contentItem: [{
|
|
254
|
+
type: ContentChild,
|
|
255
|
+
args: [NestedListContentDirective]
|
|
256
|
+
}], expandIcon: [{
|
|
257
|
+
type: ContentChild,
|
|
258
|
+
args: [NestedListExpandIconComponent, { descendants: true }]
|
|
259
|
+
}], _nestedList: [{
|
|
260
|
+
type: ContentChild,
|
|
261
|
+
args: [forwardRef(() => NestedListComponent)]
|
|
262
|
+
}], _ariaLevel: [{
|
|
263
|
+
type: HostBinding,
|
|
264
|
+
args: ['attr.aria-level']
|
|
265
|
+
}], _title: [{
|
|
266
|
+
type: HostBinding,
|
|
267
|
+
args: ['attr.title']
|
|
268
|
+
}], _display: [{
|
|
269
|
+
type: HostBinding,
|
|
270
|
+
args: ['style.display']
|
|
271
|
+
}], _role: [{
|
|
272
|
+
type: HostBinding,
|
|
273
|
+
args: ['attr.role']
|
|
274
|
+
}], _ariaExpanded: [{
|
|
275
|
+
type: HostBinding,
|
|
276
|
+
args: ['attr.aria-expanded']
|
|
277
|
+
}], _ariaSelected: [{
|
|
278
|
+
type: HostBinding,
|
|
279
|
+
args: ['attr.aria-selected']
|
|
280
|
+
}], _ariaDisabled: [{
|
|
281
|
+
type: HostBinding,
|
|
282
|
+
args: ['attr.aria-disabled']
|
|
283
|
+
}], _ariaLabel: [{
|
|
284
|
+
type: HostBinding,
|
|
285
|
+
args: ['attr.aria-label']
|
|
286
|
+
}], _ariaHidden: [{
|
|
287
|
+
type: HostBinding,
|
|
288
|
+
args: ['attr.aria-hidden']
|
|
289
|
+
}] } });
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jeC9zcmMvbGliL25lc3RlZC1saXN0L25lc3RlZC1pdGVtL25lc3RlZC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBRTFFLElBQUksMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBUW5DLE1BQU0sT0FBTyxtQkFBbUI7SUEwRzVCLGNBQWM7SUFDZCxZQUNZLFlBQStCLEVBQy9CLGdCQUEyQyxFQUMzQyxhQUFxQyxFQUN0QyxVQUFzQjtRQUhyQixpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtRQUMzQyxrQkFBYSxH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QVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2lCQUNqQzs4TUFHZ0IsUUFBUTtzQkFBcEIsS0FBSztnQkFhRyxjQUFjO3NCQUR0QixNQUFNO2dCQUtFLGlCQUFpQjtzQkFEekIsTUFBTTtnQkFNUCxxQkFBcUI7c0JBRnBCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsNkJBQTZCO2dCQU0xQyxNQUFNO3NCQUZMLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMscUNBQXFDO2dCQUtsRCxPQUFPO3NCQUROLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLG1CQUFtQjtnQkFTakMsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLbEUsV0FBVztzQkFEVixZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFLbkQsVUFBVTtzQkFEVCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFLOUIsTUFBTTtzQkFETCxXQUFXO3VCQUFDLFlBQVk7Z0JBS3pCLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyxlQUFlO2dCQVFwQixLQUFLO3NCQURaLFdBQVc7dUJBQUMsV0FBVztnQkFRaEIsYUFBYTtzQkFEcEIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBS3pCLGFBQWE7c0JBRHBCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUt6QixhQUFhO3NCQURwQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFLekIsVUFBVTtzQkFEakIsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBS3RCLFdBQVc7c0JBRGxCLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE5lc3RlZExpbmtDb21wb25lbnQgfSBmcm9tICcuLi9uZXN0ZWQtbGluay9uZXN0ZWQtbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmVzdGVkTGlzdEtleWJvYXJkU2VydmljZSB9IGZyb20gJy4uL25lc3RlZC1saXN0LWtleWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmVzdGVkTGlzdENvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuLi9uZXN0ZWQtY29udGVudC9uZXN0ZWQtbGlzdC1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZXN0ZWRMaXN0U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vbmVzdGVkLWxpc3Qtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBOZXN0ZWRJdGVtSW50ZXJmYWNlIH0gZnJvbSAnLi9uZXN0ZWQtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmVzdGVkSXRlbVNlcnZpY2UgfSBmcm9tICcuL25lc3RlZC1pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IE5lc3RlZExpc3RDb21wb25lbnQgfSBmcm9tICcuLi9uZXN0ZWQtbGlzdC9uZXN0ZWQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmVzdGVkTGlzdEV4cGFuZEljb25Db21wb25lbnQgfSBmcm9tICcuLi9uZXN0ZWQtbGlzdC1kaXJlY3RpdmVzJztcblxubGV0IHNpZGVOYXZpZ2F0aW9uSXRlbVVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tjeE5lc3RlZEl0ZW1dLCBbZmR4LW5lc3RlZC1saXN0LWl0ZW1dLCBsaVtmZHgtbmVzdGVkLWxpc3QtaXRlbV0nLFxuICAgIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbiAgICBwcm92aWRlcnM6IFtOZXN0ZWRJdGVtU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTmVzdGVkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE5lc3RlZEl0ZW1JbnRlcmZhY2UsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgaXRlbSBzaG91bGQgYmUgZXhwYW5kZWQgKi9cbiAgICBASW5wdXQoKSBzZXQgZXhwYW5kZWQoZXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGV4cGFuZGVkICE9PSB0aGlzLl9leHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVPcGVuQ2hhbmdlKGV4cGFuZGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IHRocm93biwgd2hlbiBleHBhbmRlZCBzdGF0ZSBpcyBjaGFuZ2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgZXhwYW5kZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24sIHdoZW4gYW55IGtleWJvYXJkIGV2ZW50IGlzIGRpc3BhdGNoZWQgb24gdGhpcywgb3IgbGluayBlbGVtZW50ICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkga2V5Ym9hcmRUcmlnZ2VyZWQ6IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkeC1uZXN0ZWQtbGlzdF9faXRlbScpXG4gICAgZmROZXN0ZWRMaXN0SXRlbUNsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoaXMgaXRlbSBpcyBhIGhlYWRlciBpdGVtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZHgtbmVzdGVkLWxpc3RfX2l0ZW0tLWhlYWRlcicpXG4gICAgaGVhZGVyID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGlzIGl0ZW0gaXMgb25seSBtZWFudCBmb3IgZGlzcGxheSBwdXJwb3NlcywgbWVhbmluZyBpdCBjYW5ub3QgYmUgdXNlZCBmb3IgbmF2aWdhdGlvbiBvciBzaG93biBhcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIGxpbmsgZGlyZWN0aXZlLCB0byBhbGxvdyBtYW5pcHVsYXRpbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBlbGVtZW50LlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoTmVzdGVkTGlua0NvbXBvbmVudClcbiAgICBsaW5rSXRlbTogTmVzdGVkTGlua0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb3N0bHkgdXNlZCwgd2hlbiB0aGlzIGl0ZW0gaGFzIGxpc3RcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIGNvbnRlbnQgZGlyZWN0aXZlLCB0byBhbGxvdyBtYW5pcHVsYXRpbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhpcyBlbGVtZW50LlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoTmVzdGVkTGlzdENvbnRlbnREaXJlY3RpdmUpXG4gICAgY29udGVudEl0ZW06IE5lc3RlZExpc3RDb250ZW50RGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKE5lc3RlZExpc3RFeHBhbmRJY29uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgZXhwYW5kSWNvbjogTmVzdGVkTGlzdEV4cGFuZEljb25Db21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBOZXN0ZWRMaXN0Q29tcG9uZW50KSlcbiAgICBfbmVzdGVkTGlzdDogTmVzdGVkTGlzdENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGV2ZWwnKVxuICAgIF9hcmlhTGV2ZWw6IE51bGxhYmxlPG51bWJlcj4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGl0bGUnKVxuICAgIF90aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKVxuICAgIF9kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25hcnJvdyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHJpdmF0ZSBfcm9sZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9leHBhbmRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgcHJpdmF0ZSBfYXJpYUV4cGFuZGVkOiBOdWxsYWJsZTxib29sZWFuPiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJylcbiAgICBwcml2YXRlIF9hcmlhU2VsZWN0ZWQ6IE51bGxhYmxlPGJvb2xlYW4+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGlzYWJsZWQnKVxuICAgIHByaXZhdGUgX2FyaWFEaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gICAgcHJpdmF0ZSBfYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhpZGRlbicpXG4gICAgcHJpdmF0ZSBfYXJpYUhpZGRlbiA9IHRydWU7XG5cbiAgICAvKiogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBVbmlxdWUgZWxlbWVudCBJRCAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRJZDogc3RyaW5nID0gJ2ZkTmVzdGVkSXRlbScgKyBzaWRlTmF2aWdhdGlvbkl0ZW1VbmlxdWVJZCsrO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IE5lc3RlZEl0ZW1TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9rZXlib2FyZFNlcnZpY2U6IE5lc3RlZExpc3RLZXlib2FyZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3N0YXRlU2VydmljZTogTmVzdGVkTGlzdFN0YXRlU2VydmljZSxcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0VXBTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUhhc0NoaWxkcmVuUHJvcGVydHkoKTtcbiAgICAgICAgdGhpcy5fcGFzc0l0ZW1SZWZlcmVuY2VzKCk7XG4gICAgICAgIC8qKiBQcm9wYWdhdGUgaW5pdGlhbCBvcGVuIHN0YXRlIHRvIGNoaWxkcmVuICovXG4gICAgICAgIHRoaXMucHJvcGFnYXRlT3BlbkNoYW5nZSh0aGlzLl9leHBhbmRlZCk7XG5cbiAgICAgICAgaWYgKHRoaXMubGlua0l0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuX2FyaWFTZWxlY3RlZCA9IHRoaXMubGlua0l0ZW0uc2VsZWN0ZWQ7XG4gICAgICAgICAgICB0aGlzLl9hcmlhRGlzYWJsZWQgPSAhdGhpcy5fc3RhdGVTZXJ2aWNlLnNlbGVjdGFibGUgJiYgIXRoaXMubGlua0l0ZW0uc2VsZWN0ZWQ7XG4gICAgICAgICAgICB0aGlzLl90aXRsZSA9IHRoaXMubGlua0l0ZW0uZ2V0VGl0bGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRoZSBpdGVtIGVsZW1lbnQgaGFzIGFueSBjaGlsZCAqL1xuICAgIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5faXRlbVNlcnZpY2U/Lmxpc3Q7XG4gICAgfVxuXG4gICAgLyoqIEdldCBhbGwgb2YgdGhlIGNoaWxkcmVuIGl0ZW0gZWxlbWVudHMgKi9cbiAgICBnZXQgYWxsQ2hpbGRyZW5JdGVtcygpOiBOZXN0ZWRJdGVtSW50ZXJmYWNlW10ge1xuICAgICAgICBpZiAodGhpcy5faXRlbVNlcnZpY2U/Lmxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pdGVtU2VydmljZS5saXN0Lm5lc3RlZEl0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgZXhwYW5kIHRoZSBpdGVtIGFuZCBwcm9wYWdhdGUgaXQgdG8gY2hpbGRyZW4gKi9cbiAgICB0cmlnZ2VyT3BlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAvKiogUHJvcGFnYXRlIGluaXRpYWwgb3BlbiBzdGF0ZSB0byBjaGlsZHJlbiAqL1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVPcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IGNsb3NlIHRoZSBpdGVtIGFuZCBwcm9wYWdhdGUgaXQgdG8gY2hpbGRyZW4gKi9cbiAgICB0cmlnZ2VyQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAvKiogUHJvcGFnYXRlIGluaXRpYWwgb3BlbiBzdGF0ZSB0byBjaGlsZHJlbiAqL1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCB0b2dnbGUgdGhlIGl0ZW0gYW5kIHByb3BhZ2F0ZSBpdCB0byBjaGlsZHJlbiAqL1xuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgLyoqIFByb3BhZ2F0ZSBpbml0aWFsIG9wZW4gc3RhdGUgdG8gY2hpbGRyZW4gKi9cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVPcGVuQ2hhbmdlKCF0aGlzLl9leHBhbmRlZCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IGRpc3BhdGNoZXMgYGNsaWNrYCBldmVudCBvbiBsaW5rIGl0ZW0qL1xuICAgIGNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzcGxheSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudEl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGlua0l0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgZm9jdXNlcyBsaW5rIGl0ZW0qL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50SXRlbS5mb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGlua0l0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubGlua0l0ZW0uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBpZiBlbGVtZW50LCBvciBjaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQgaGFzIHBhc3NlZCBpZCAqL1xuICAgIGNvbnRhaW5zSWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fZWxlbWVudElkID09PSBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXRlbVNlcnZpY2UubGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5faXRlbVNlcnZpY2UubGlzdC5uZXN0ZWRJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmNvbnRhaW5zSWQoaWQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUHJvcGFnYXRlIG9wZW4gc3RhdGUgdG8gYWxsIG9mIHRoZSBjaGlsZHJlblxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvcGFnYXRlT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2V4cGFuZGVkID0gb3BlbjtcblxuICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5fYXJpYUV4cGFuZGVkID0gdGhpcy5fZXhwYW5kZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4cGFuZEljb24/LmNoYW5nZUV4cGFuZGVkU3RhdGUob3Blbik7XG5cbiAgICAgICAgLyoqIFByb3BhZ2F0ZSBoaWRkZW4gZmxhZyB0byBsaXN0IGNvbXBvbmVudCwgdGhhdCBpcyBwYXNzZWQgZnJvbSBjaGlsZCAqL1xuICAgICAgICBpZiAodGhpcy5faXRlbVNlcnZpY2UubGlzdCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UubGlzdC5oaWRkZW4gPSAhb3BlbjtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmxpc3QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIFByb3BhZ2F0ZSBvcGVuIGZsYWcgdG8gcG9wb3ZlciBsaXN0IGNvbXBvbmVudCwgdGhhdCBpcyBwYXNzZWQgZnJvbSBjaGlsZCAqL1xuICAgICAgICBpZiAodGhpcy5faXRlbVNlcnZpY2UucG9wb3Zlcikge1xuICAgICAgICAgICAgdGhpcy5faXRlbVNlcnZpY2UucG9wb3Zlci5vcGVuID0gb3BlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiB0aGVyZSBhcmUgYW55IGxpc3QgYmVsb3dcbiAgICAgICAgICogVHJpZ2dlciBldmVudCB0byBwcm92aWRlIGtleWJvYXJkIHN1cHBvcnQgdG8gbmV3IGxpc3Qgb2Ygb3BlbmVkIGl0ZW0gZWxlbWVudC5cbiAgICAgICAgICogKi9cbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFJlZnJlc2hLZXlib2FyZFNlcnZpY2UoKSkge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTZXJ2aWNlLnJlZnJlc2gkLm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdChvcGVuKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3VsZFJlZnJlc2hLZXlib2FyZFNlcnZpY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLl9pdGVtU2VydmljZS5wb3BvdmVyIHx8IHRoaXMuX2l0ZW1TZXJ2aWNlLmxpc3QgfHwgdGhpcy5jb250ZW50SXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZVNlcnZpY2UuY29uZGVuc2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9yb2xlID0gJ21lbnVpdGVtcmFkaW8nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpc3BsYXkpIHtcbiAgICAgICAgICAgIC8qKiBTdWJzY3JpYmUgdG8gbW91c2UgY2xpY2sgZXZlbnQsIHRocm93biBieSBsaW5rIGl0ZW0gKi9cbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLnRvZ2dsZS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlKCkpO1xuXG4gICAgICAgICAgICAvKiogU3Vic2NyaWJlIHRvIG1vdXNlIGNsaWNrIGV2ZW50LCB0aHJvd24gYnkgbGluayBpdGVtICovXG4gICAgICAgICAgICB0aGlzLl9pdGVtU2VydmljZS5jbGlja1xuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3N0YXRlU2VydmljZS5vblNlbGVjdGVkLm5leHQodGhpcy5fZWxlbWVudElkKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogU3Vic2NyaWJlIHRvIGtleWJvYXJkIGV2ZW50IGFuZCB0aHJvdyBpdCBmYXJ0aGVyICovXG4gICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmtleURvd25cbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGtleWJvYXJkRXZlbnQpID0+IHRoaXMua2V5Ym9hcmRUcmlnZ2VyZWQuZW1pdChrZXlib2FyZEV2ZW50KSk7XG5cbiAgICAgICAgLyoqIFN1YnNjcmliZSB0byBzZWxlY3RlZCBzdGF0ZSBjaGFuZ2UsIGl0J3Mgbm90IHRyaWdnZXJlZCwgd2hlbiBzZWxlY3RhYmxlIGZsYWcgaXMgZGlzYWJsZWQqL1xuICAgICAgICB0aGlzLl9zdGF0ZVNlcnZpY2Uub25TZWxlY3RlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLl9zdGF0ZVNlcnZpY2Uuc2VsZWN0YWJsZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGlkKSA9PiB0aGlzLl9zZWxlY3RlZENoYW5nZShpZCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvcGFnYXRlSGFzQ2hpbGRyZW5Qcm9wZXJ0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEl0ZW0gJiYgdGhpcy5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5fYXJpYUV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRJdGVtLmhhc0NoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudEl0ZW0uY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBQYXNzIHRoaXMgZWxlbWVudCB0byBwb3BvdmVyIGNoaWxkIGl0ZW0sIHRvIGFsbG93IGNvbnRyb2wgYGV4cGFuZGVkYCB2YWx1ZSAqL1xuICAgIHByaXZhdGUgX3Bhc3NJdGVtUmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1TZXJ2aWNlLnBvcG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLnBvcG92ZXIucGFyZW50SXRlbUVsZW1lbnQgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoYW5nZSBvZiBzZWxlY3RlZCBzdGF0ZSBvZiBjb250ZW50IG9yIGxpbmssIGlmIHRoZXJlIGlzIGFueSBjaGlsZHJlbiB3aXRoIEkgKi9cbiAgICBwcml2YXRlIF9zZWxlY3RlZENoYW5nZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb250YWluc0lkKGlkKTtcbiAgICAgICAgdGhpcy5fYXJpYVNlbGVjdGVkID0gc2VsZWN0ZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGVudEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudEl0ZW0uY2hhbmdlU2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGlua0l0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubGlua0l0ZW0uY2hhbmdlU2VsZWN0ZWQoc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWl0ZW0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jeC9zcmMvbGliL25lc3RlZC1saXN0L25lc3RlZC1pdGVtL25lc3RlZC1pdGVtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0TWVudUl0ZW0gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBOZXN0ZWRMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbmVzdGVkLWxpbmsvbmVzdGVkLWxpbmsuY29tcG9uZW50JztcblxuLyoqIEludGVyZmFjZSwgdG8gcmVkdWNlIGFtb3VudCBvZiBjaXJjdWxhciBkZXBlbmRlbmN5IHdhcm5pbmdzICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZEl0ZW1JbnRlcmZhY2UgZXh0ZW5kcyBEZWZhdWx0TWVudUl0ZW0ge1xuICAgIGV4cGFuZGVkOiBib29sZWFuO1xuICAgIGtleWJvYXJkVHJpZ2dlcmVkOiBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD47XG4gICAgdHJpZ2dlck9wZW46ICgpID0+IHZvaWQ7XG4gICAgdHJpZ2dlckNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIGxpbmtJdGVtOiBOZXN0ZWRMaW5rQ29tcG9uZW50O1xuICAgIGFsbENoaWxkcmVuSXRlbXM6IE5lc3RlZEl0ZW1JbnRlcmZhY2VbXTtcbiAgICBoYXNDaGlsZHJlbjogYm9vbGVhbjtcbiAgICBjb250YWluc0lkOiAoaWQ6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgICBjbGljazogKCkgPT4gdm9pZDtcbiAgICBmb2N1czogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
/** Contains references to popover or list nested components, that are placed as direct children of item component */
|
|
3
|
+
export class NestedItemService {
|
|
4
|
+
constructor() {
|
|
5
|
+
/** Subject fired when expand icon is clicked */
|
|
6
|
+
this.toggle = new Subject();
|
|
7
|
+
/** Subject fired, when child elements are focused */
|
|
8
|
+
this.focus = new Subject();
|
|
9
|
+
/** Subject fired, when content or link is clicked */
|
|
10
|
+
this.click = new Subject();
|
|
11
|
+
/** KeyDown handler, it is triggered from link, content and item elements */
|
|
12
|
+
this.keyDown = new Subject();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWl0ZW0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3gvc3JjL2xpYi9uZXN0ZWQtbGlzdC9uZXN0ZWQtaXRlbS9uZXN0ZWQtaXRlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IscUhBQXFIO0FBQ3JILE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFNSSxnREFBZ0Q7UUFDaEQsV0FBTSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRWxELHFEQUFxRDtRQUNyRCxVQUFLLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFM0MscURBQXFEO1FBQ3JELFVBQUssR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUUzQyw0RUFBNEU7UUFDNUUsWUFBTyxHQUEyQixJQUFJLE9BQU8sRUFBaUIsQ0FBQztJQUNuRSxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZXN0ZWRMaXN0SW50ZXJmYWNlIH0gZnJvbSAnLi4vbmVzdGVkLWxpc3QvbmVzdGVkLWxpc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IE5lc3RlZExpc3RQb3BvdmVySW50ZXJmYWNlIH0gZnJvbSAnLi4vbmVzdGVkLWxpc3QtcG9wb3Zlci9uZXN0ZWQtbGlzdC1wb3BvdmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKiBDb250YWlucyByZWZlcmVuY2VzIHRvIHBvcG92ZXIgb3IgbGlzdCBuZXN0ZWQgY29tcG9uZW50cywgdGhhdCBhcmUgcGxhY2VkIGFzIGRpcmVjdCBjaGlsZHJlbiBvZiBpdGVtIGNvbXBvbmVudCAqL1xuZXhwb3J0IGNsYXNzIE5lc3RlZEl0ZW1TZXJ2aWNlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxpc3Q6IE5lc3RlZExpc3RJbnRlcmZhY2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwb3BvdmVyPzogTmVzdGVkTGlzdFBvcG92ZXJJbnRlcmZhY2U7XG5cbiAgICAvKiogU3ViamVjdCBmaXJlZCB3aGVuIGV4cGFuZCBpY29uIGlzIGNsaWNrZWQgKi9cbiAgICB0b2dnbGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqIFN1YmplY3QgZmlyZWQsIHdoZW4gY2hpbGQgZWxlbWVudHMgYXJlIGZvY3VzZWQgKi9cbiAgICBmb2N1czogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogU3ViamVjdCBmaXJlZCwgd2hlbiBjb250ZW50IG9yIGxpbmsgaXMgY2xpY2tlZCAqL1xuICAgIGNsaWNrOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBLZXlEb3duIGhhbmRsZXIsIGl0IGlzIHRyaWdnZXJlZCBmcm9tIGxpbmssIGNvbnRlbnQgYW5kIGl0ZW0gZWxlbWVudHMgKi9cbiAgICBrZXlEb3duOiBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+ID0gbmV3IFN1YmplY3Q8S2V5Ym9hcmRFdmVudD4oKTtcbn1cbiJdfQ==
|