@ndwnu/design-system 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/card/card-content/card-content.component.d.ts +5 -0
- package/components/card/card-content/index.d.ts +1 -0
- package/components/card/card-footer/card-footer.component.d.ts +6 -0
- package/components/card/card-footer/index.d.ts +1 -0
- package/components/card/card-header/card-header.component.d.ts +8 -0
- package/components/card/card-header/index.d.ts +1 -0
- package/components/card/card.component.d.ts +8 -2
- package/components/card/index.d.ts +3 -0
- package/components/dropdown/dropdown.component.d.ts +10 -3
- package/components/dropdown/index.d.ts +0 -1
- package/components/form-field/checkbox-group/checkbox-group.component.d.ts +3 -1
- package/components/form-field/form-field.component.d.ts +3 -3
- package/components/index.d.ts +3 -0
- package/components/modal/index.d.ts +1 -0
- package/components/modal/modal-trigger.directive.d.ts +8 -12
- package/components/modal/modal.service.d.ts +16 -0
- package/components/multi-select/checkbox-data.interface.d.ts +5 -0
- package/components/multi-select/index.d.ts +3 -0
- package/components/multi-select/multi-select.component.d.ts +27 -0
- package/components/multi-select/select-all-text.interface.d.ts +4 -0
- package/components/popover/index.d.ts +1 -0
- package/components/popover/popover-trigger.directive.d.ts +27 -0
- package/components/removable-pill/index.d.ts +1 -0
- package/components/removable-pill/removable-pill.component.d.ts +7 -0
- package/components/tooltip/tooltip.directive.d.ts +3 -2
- package/core/styles/ndw-styles.scss +33 -21
- package/core/styles/nwb-styles.scss +33 -21
- package/esm2022/components/alert/alert.component.mjs +3 -3
- package/esm2022/components/badge/badge.component.mjs +2 -2
- package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +3 -3
- package/esm2022/components/card/card-content/card-content.component.mjs +11 -0
- package/esm2022/components/card/card-content/index.mjs +2 -0
- package/esm2022/components/card/card-footer/card-footer.component.mjs +14 -0
- package/esm2022/components/card/card-footer/index.mjs +2 -0
- package/esm2022/components/card/card-header/card-header.component.mjs +20 -0
- package/esm2022/components/card/card-header/index.mjs +2 -0
- package/esm2022/components/card/card.component.mjs +22 -5
- package/esm2022/components/card/index.mjs +4 -1
- package/esm2022/components/collapsible/collapsible.animation.mjs +3 -3
- package/esm2022/components/collapsible/collapsible.component.mjs +3 -3
- package/esm2022/components/dropdown/dropdown.component.mjs +26 -6
- package/esm2022/components/dropdown/index.mjs +1 -2
- package/esm2022/components/form-field/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +7 -3
- package/esm2022/components/form-field/form-field.component.mjs +7 -7
- package/esm2022/components/form-field/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/components/icon/icon.component.mjs +5 -3
- package/esm2022/components/index.mjs +4 -1
- package/esm2022/components/modal/index.mjs +2 -1
- package/esm2022/components/modal/modal-trigger.directive.mjs +23 -54
- package/esm2022/components/modal/modal.service.mjs +57 -0
- package/esm2022/components/multi-select/checkbox-data.interface.mjs +2 -0
- package/esm2022/components/multi-select/index.mjs +4 -0
- package/esm2022/components/multi-select/multi-select.component.mjs +76 -0
- package/esm2022/components/multi-select/select-all-text.interface.mjs +2 -0
- package/esm2022/components/popover/index.mjs +2 -0
- package/esm2022/components/popover/popover-trigger.directive.mjs +183 -0
- package/esm2022/components/removable-pill/index.mjs +2 -0
- package/esm2022/components/removable-pill/removable-pill.component.mjs +21 -0
- package/esm2022/components/tooltip/tooltip.component.mjs +2 -2
- package/esm2022/components/tooltip/tooltip.directive.mjs +4 -3
- package/fesm2022/ndwnu-design-system.mjs +399 -125
- package/fesm2022/ndwnu-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/components/dropdown/dropdown-trigger.directive.d.ts +0 -23
- package/esm2022/components/dropdown/dropdown-trigger.directive.mjs +0 -95
package/package.json
CHANGED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { OnDestroy, TemplateRef } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class DropdownTriggerDirective implements OnDestroy {
|
|
4
|
-
dropdownContent: import("@angular/core").InputSignal<TemplateRef<unknown>>;
|
|
5
|
-
toggleOnClick: import("@angular/core").InputSignal<boolean>;
|
|
6
|
-
isOpen: import("@angular/core").ModelSignal<boolean>;
|
|
7
|
-
toggle(): void;
|
|
8
|
-
private destroyRef;
|
|
9
|
-
private elementRef;
|
|
10
|
-
private overlay;
|
|
11
|
-
private viewContainerRef;
|
|
12
|
-
private focusTrapFactory;
|
|
13
|
-
private overlayRef?;
|
|
14
|
-
constructor();
|
|
15
|
-
ngOnDestroy(): void;
|
|
16
|
-
private open;
|
|
17
|
-
private trapFocus;
|
|
18
|
-
private closeOverlayOnEscapeKey;
|
|
19
|
-
private closeOverlayOnBackdropClick;
|
|
20
|
-
private close;
|
|
21
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownTriggerDirective, never>;
|
|
22
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<DropdownTriggerDirective, "[ndwDropdownTrigger]", never, { "dropdownContent": { "alias": "ndwDropdownTrigger"; "required": true; "isSignal": true; }; "toggleOnClick": { "alias": "toggleOnClick"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; }, never, never, true, never>;
|
|
23
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
|
|
2
|
-
import { Overlay } from '@angular/cdk/overlay';
|
|
3
|
-
import { TemplatePortal } from '@angular/cdk/portal';
|
|
4
|
-
import { DestroyRef, Directive, ElementRef, HostListener, ViewContainerRef, effect, inject, input, model, } from '@angular/core';
|
|
5
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
-
import { take } from 'rxjs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class DropdownTriggerDirective {
|
|
9
|
-
toggle() {
|
|
10
|
-
if (!this.toggleOnClick()) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
this.isOpen.set(!this.isOpen());
|
|
14
|
-
}
|
|
15
|
-
constructor() {
|
|
16
|
-
this.dropdownContent = input.required({ alias: 'ndwDropdownTrigger' });
|
|
17
|
-
this.toggleOnClick = input(true);
|
|
18
|
-
this.isOpen = model(false);
|
|
19
|
-
this.destroyRef = inject(DestroyRef);
|
|
20
|
-
this.elementRef = inject((ElementRef));
|
|
21
|
-
this.overlay = inject(Overlay);
|
|
22
|
-
this.viewContainerRef = inject(ViewContainerRef);
|
|
23
|
-
this.focusTrapFactory = inject(ConfigurableFocusTrapFactory);
|
|
24
|
-
effect(() => {
|
|
25
|
-
if (this.isOpen()) {
|
|
26
|
-
this.open();
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
this.close();
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
ngOnDestroy() {
|
|
34
|
-
this.isOpen.set(false);
|
|
35
|
-
}
|
|
36
|
-
open() {
|
|
37
|
-
const position = {
|
|
38
|
-
originX: 'start',
|
|
39
|
-
originY: 'bottom',
|
|
40
|
-
overlayX: 'start',
|
|
41
|
-
overlayY: 'top',
|
|
42
|
-
offsetY: 4,
|
|
43
|
-
panelClass: 'ndw-dropdown-panel',
|
|
44
|
-
};
|
|
45
|
-
const templatePortal = new TemplatePortal(this.dropdownContent(), this.viewContainerRef);
|
|
46
|
-
this.overlayRef = this.overlay.create({
|
|
47
|
-
hasBackdrop: true,
|
|
48
|
-
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
49
|
-
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
50
|
-
positionStrategy: this.overlay
|
|
51
|
-
.position()
|
|
52
|
-
.flexibleConnectedTo(this.elementRef)
|
|
53
|
-
.withPositions([position]),
|
|
54
|
-
});
|
|
55
|
-
this.overlayRef.attach(templatePortal);
|
|
56
|
-
this.trapFocus(this.overlayRef);
|
|
57
|
-
this.closeOverlayOnEscapeKey(this.overlayRef);
|
|
58
|
-
this.closeOverlayOnBackdropClick(this.overlayRef);
|
|
59
|
-
}
|
|
60
|
-
trapFocus(overlayRef) {
|
|
61
|
-
this.focusTrapFactory.create(overlayRef.overlayElement);
|
|
62
|
-
}
|
|
63
|
-
closeOverlayOnEscapeKey(overlayRef) {
|
|
64
|
-
overlayRef.overlayElement.onkeydown = (event) => {
|
|
65
|
-
if (event.key === 'Escape') {
|
|
66
|
-
this.isOpen.set(false);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
closeOverlayOnBackdropClick(overlayRef) {
|
|
71
|
-
overlayRef
|
|
72
|
-
.backdropClick()
|
|
73
|
-
.pipe(takeUntilDestroyed(this.destroyRef), take(1))
|
|
74
|
-
.subscribe(() => {
|
|
75
|
-
this.isOpen.set(false);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
close() {
|
|
79
|
-
this.overlayRef?.dispose();
|
|
80
|
-
this.elementRef.nativeElement.focus();
|
|
81
|
-
}
|
|
82
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
83
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: DropdownTriggerDirective, isStandalone: true, selector: "[ndwDropdownTrigger]", inputs: { dropdownContent: { classPropertyName: "dropdownContent", publicName: "ndwDropdownTrigger", isSignal: true, isRequired: true, transformFunction: null }, toggleOnClick: { classPropertyName: "toggleOnClick", publicName: "toggleOnClick", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange" }, host: { listeners: { "click": "toggle()" } }, ngImport: i0 }); }
|
|
84
|
-
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: DropdownTriggerDirective, decorators: [{
|
|
86
|
-
type: Directive,
|
|
87
|
-
args: [{
|
|
88
|
-
selector: '[ndwDropdownTrigger]',
|
|
89
|
-
standalone: true,
|
|
90
|
-
}]
|
|
91
|
-
}], ctorParameters: () => [], propDecorators: { toggle: [{
|
|
92
|
-
type: HostListener,
|
|
93
|
-
args: ['click']
|
|
94
|
-
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24tdHJpZ2dlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFxQixPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFHWixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTTVCLE1BQU0sT0FBTyx3QkFBd0I7SUFNNUIsTUFBTTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQVVEO1FBckJPLG9CQUFlLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBdUIsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLGtCQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFXckIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxV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QUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQzs4R0F2RlUsd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3dEQU9RLE1BQU07c0JBRFosWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25kd0Ryb3Bkb3duVHJpZ2dlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93blRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZHJvcGRvd25Db250ZW50ID0gaW5wdXQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KHsgYWxpYXM6ICduZHdEcm9wZG93blRyaWdnZXInIH0pO1xuICBwdWJsaWMgdG9nZ2xlT25DbGljayA9IGlucHV0KHRydWUpO1xuICBwdWJsaWMgaXNPcGVuID0gbW9kZWwoZmFsc2UpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgcHVibGljIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudG9nZ2xlT25DbGljaygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc09wZW4uc2V0KCF0aGlzLmlzT3BlbigpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG4gIHByaXZhdGUgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIGZvY3VzVHJhcEZhY3RvcnkgPSBpbmplY3QoQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW4oKTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICBvZmZzZXRZOiA0LFxuICAgICAgcGFuZWxDbGFzczogJ25kdy1kcm9wZG93bi1wYW5lbCcsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmRyb3Bkb3duQ29udGVudCgpLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoW3Bvc2l0aW9uXSksXG4gICAgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0ZW1wbGF0ZVBvcnRhbCk7XG5cbiAgICB0aGlzLnRyYXBGb2N1cyh0aGlzLm92ZXJsYXlSZWYpO1xuICAgIHRoaXMuY2xvc2VPdmVybGF5T25Fc2NhcGVLZXkodGhpcy5vdmVybGF5UmVmKTtcbiAgICB0aGlzLmNsb3NlT3ZlcmxheU9uQmFja2Ryb3BDbGljayh0aGlzLm92ZXJsYXlSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFwRm9jdXMob3ZlcmxheVJlZjogT3ZlcmxheVJlZik6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUob3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT3ZlcmxheU9uRXNjYXBlS2V5KG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYpOiB2b2lkIHtcbiAgICBvdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50Lm9ua2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZU92ZXJsYXlPbkJhY2tkcm9wQ2xpY2sob3ZlcmxheVJlZjogT3ZlcmxheVJlZik6IHZvaWQge1xuICAgIG92ZXJsYXlSZWZcbiAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIl19
|