@clr/angular 15.0.3 → 15.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/button/button-group/button-group.d.ts +2 -1
- package/clarity.api.md +11 -14
- package/data/datagrid/datagrid-column.d.ts +1 -6
- package/esm2020/button/button-group/button-group.mjs +8 -3
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +5 -1
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +3 -1
- package/esm2020/data/datagrid/datagrid-column.mjs +18 -29
- package/esm2020/data/tree-view/tree-node.mjs +3 -3
- package/esm2020/popover/dropdown/dropdown-item.mjs +17 -1
- package/esm2020/popover/dropdown/dropdown.mjs +9 -7
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +5 -5
- package/fesm2015/clr-angular.mjs +48 -30
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +48 -30
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/popover/dropdown/dropdown-item.d.ts +1 -0
- package/popover/dropdown/dropdown.d.ts +4 -2
- package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +1 -1
|
@@ -24,7 +24,7 @@ export class DropdownFocusHandler {
|
|
|
24
24
|
this.platformId = platformId;
|
|
25
25
|
this.id = uniqueIdFactory();
|
|
26
26
|
this._unlistenFuncs = [];
|
|
27
|
-
this.
|
|
27
|
+
this.focusBackOnTriggerWhenClosed = false;
|
|
28
28
|
this.resetChildren();
|
|
29
29
|
this.moveToFirstItemWhenOpen();
|
|
30
30
|
if (!this.parent) {
|
|
@@ -61,11 +61,11 @@ export class DropdownFocusHandler {
|
|
|
61
61
|
// We reset the state of the focus service both on initialization and when closing.
|
|
62
62
|
this.focusService.reset(this);
|
|
63
63
|
// But we only actively focus the trigger when closing, not on initialization.
|
|
64
|
-
if (this.
|
|
64
|
+
if (this.focusBackOnTriggerWhenClosed) {
|
|
65
65
|
this.focus();
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
this.
|
|
68
|
+
this.focusBackOnTriggerWhenClosed = open;
|
|
69
69
|
});
|
|
70
70
|
this._unlistenFuncs.push(() => subscription.unsubscribe());
|
|
71
71
|
}
|
|
@@ -121,7 +121,7 @@ export class DropdownFocusHandler {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
// We let the user move focus to where the want, we don't force the focus back on the trigger
|
|
124
|
-
this.
|
|
124
|
+
this.focusBackOnTriggerWhenClosed = false;
|
|
125
125
|
this.toggleService.open = false;
|
|
126
126
|
}));
|
|
127
127
|
}
|
|
@@ -182,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
182
182
|
args: [PLATFORM_ID]
|
|
183
183
|
}] }]; } });
|
|
184
184
|
export const DROPDOWN_FOCUS_HANDLER_PROVIDER = customFocusableItemProvider(DropdownFocusHandler);
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZm9jdXMtaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvcG9wb3Zlci9kcm9wZG93bi9wcm92aWRlcnMvZHJvcGRvd24tZm9jdXMtaGFuZGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsV0FBVyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBRWpILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBSW5GLE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsWUFDVSxRQUFtQixFQUduQixNQUE0QixFQUM1QixhQUFzQyxFQUN0QyxZQUEwQixFQUNMLFVBQWU7UUFOcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUduQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDTCxlQUFVLEdBQVYsVUFBVSxDQUFLO1FBVDlDLE9B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RUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUF5QjtRQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFvQixFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7aUhBbE1VLG9CQUFvQiwrS0FVckIsV0FBVztxSEFWVixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTs7MEJBTU4sUUFBUTs7MEJBQ1IsUUFBUTs7MEJBSVIsTUFBTTsyQkFBQyxXQUFXOztBQTJMdkIsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsMkJBQTJCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXJyb3dLZXlEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb2N1cy9hcnJvdy1rZXktZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZm9jdXMvZm9jdXMuc2VydmljZSc7XG5pbXBvcnQgeyBjdXN0b21Gb2N1c2FibGVJdGVtUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb2N1cy9mb2N1c2FibGUtaXRlbS9jdXN0b20tZm9jdXNhYmxlLWl0ZW0tcHJvdmlkZXInO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZvY3VzL2ZvY3VzYWJsZS1pdGVtL2ZvY3VzYWJsZS1pdGVtJztcbmltcG9ydCB7IExpbmtlcnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb2N1cy9mb2N1c2FibGUtaXRlbS9saW5rZXJzJztcbmltcG9ydCB7IHdyYXBPYnNlcnZhYmxlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZm9jdXMvd3JhcC1vYnNlcnZhYmxlJztcbmltcG9ydCB7IHVuaXF1ZUlkRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2lkLWdlbmVyYXRvci9pZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3BvcG92ZXIvcHJvdmlkZXJzL3BvcG92ZXItdG9nZ2xlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Gb2N1c0hhbmRsZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEZvY3VzYWJsZUl0ZW0ge1xuICBpZCA9IHVuaXF1ZUlkRmFjdG9yeSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBAU2tpcFNlbGYoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSBwYXJlbnQ6IERyb3Bkb3duRm9jdXNIYW5kbGVyLFxuICAgIHByaXZhdGUgdG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb2N1c1NlcnZpY2U6IEZvY3VzU2VydmljZSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxuICApIHtcbiAgICB0aGlzLnJlc2V0Q2hpbGRyZW4oKTtcbiAgICB0aGlzLm1vdmVUb0ZpcnN0SXRlbVdoZW5PcGVuKCk7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5oYW5kbGVSb290Rm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91bmxpc3RlbkZ1bmNzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgZHJvcGRvd24gd2FzIG9wZW5lZCBieSBjbGlja2luZyBvbiB0aGUgdHJpZ2dlciwgd2UgYXV0b21hdGljYWxseSBtb3ZlIHRvIHRoZSBmaXJzdCBpdGVtXG4gICAqL1xuICBtb3ZlVG9GaXJzdEl0ZW1XaGVuT3BlbigpIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbiA9PiB7XG4gICAgICBpZiAob3BlbiAmJiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3JpZ2luYWxFdmVudCkge1xuICAgICAgICAvLyBFdmVuIGlmIHdlIHByb3Blcmx5IHdhaXRlZCBmb3IgbmdBZnRlclZpZXdJbml0LCB0aGUgY29udGFpbmVyIHN0aWxsIHdvdWxkbid0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgICAgIC8vIFNvIHNldFRpbWVvdXQgaXMgdGhlIG9ubHkgd2F5IHRvIHdhaXQgZm9yIHRoZSBjb250YWluZXIgdG8gYmUgcmVhZHkgdG8gbW92ZSBmb2N1cyB0byBmaXJzdCBpdGVtLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzU2VydmljZS5tb3ZlVG8odGhpcyk7XG4gICAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU2VydmljZS5tb3ZlKEFycm93S2V5RGlyZWN0aW9uLlJJR0hUKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlcnZpY2UubW92ZShBcnJvd0tleURpcmVjdGlvbi5ET1dOKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKCgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNCYWNrT25UcmlnZ2VyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEZvY3VzIG9uIHRoZSBtZW51IHdoZW4gaXQgb3BlbnMsIGFuZCBmb2N1cyBiYWNrIG9uIHRoZSByb290IHRyaWdnZXIgd2hlbiB0aGUgd2hvbGUgZHJvcGRvd24gYmVjb21lcyBjbG9zZWRcbiAgICovXG4gIGhhbmRsZVJvb3RGb2N1cygpIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbiA9PiB7XG4gICAgICBpZiAoIW9wZW4pIHtcbiAgICAgICAgLy8gV2UgcmVzZXQgdGhlIHN0YXRlIG9mIHRoZSBmb2N1cyBzZXJ2aWNlIGJvdGggb24gaW5pdGlhbGl6YXRpb24gYW5kIHdoZW4gY2xvc2luZy5cbiAgICAgICAgdGhpcy5mb2N1c1NlcnZpY2UucmVzZXQodGhpcyk7XG4gICAgICAgIC8vIEJ1dCB3ZSBvbmx5IGFjdGl2ZWx5IGZvY3VzIHRoZSB0cmlnZ2VyIHdoZW4gY2xvc2luZywgbm90IG9uIGluaXRpYWxpemF0aW9uLlxuICAgICAgICBpZiAodGhpcy5mb2N1c0JhY2tPblRyaWdnZXIpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyID0gb3BlbjtcbiAgICB9KTtcblxuICAgIHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaCgoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIF90cmlnZ2VyOiBIVE1MRWxlbWVudDtcbiAgZ2V0IHRyaWdnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gIH1cbiAgc2V0IHRyaWdnZXIoZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fdHJpZ2dlciA9IGVsO1xuXG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAna2V5ZG93bi5hcnJvd3JpZ2h0JywgZXZlbnQgPT4gdGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChldmVudCkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAna2V5ZG93bi5hcnJvd3VwJywgZXZlbnQgPT4gdGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChldmVudCkpXG4gICAgICApO1xuICAgICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbCwgJ2tleWRvd24uYXJyb3dkb3duJywgZXZlbnQgPT4gdGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChldmVudCkpXG4gICAgICApO1xuICAgICAgdGhpcy5mb2N1c1NlcnZpY2UubGlzdGVuVG9BcnJvd0tleXMoZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gIGdldCBjb250YWluZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lcjtcbiAgfVxuICBzZXQgY29udGFpbmVyKGVsOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuX2NvbnRhaW5lciA9IGVsO1xuXG4gICAgLy8gd2hldGhlciByb290IGNvbnRhaW5lciBvciBub3QsIHRhYiBrZXkgc2hvdWxkIGFsd2F5cyB0b2dnbGUgKGkuZS4gY2xvc2UpIHRoZSBjb250YWluZXJcbiAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbCwgJ2tleWRvd24udGFiJywgZXZlbnQgPT4gdGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChldmVudCkpXG4gICAgKTtcblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgLy8gaWYgaXQncyBhIG5lc3RlZCBjb250YWluZXIsIHByZXNzaW5nIGVzY2FwZSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIHByZXNzaW5nIGxlZnQga2V5LCB3aGljaCBjbG9zZXMgdGhlIGN1cnJlbnRcbiAgICAgIC8vIHBvcHVwIGFuZCBtb3ZlcyB1cCB0byBpdHMgcGFyZW50LiBIZXJlLCB3ZSBzdG9wIHByb3BhZ2F0aW9uIHNvIHRoYXQgdGhlIHBhcmVudCBjb250YWluZXJcbiAgICAgIC8vIGRvZXNuJ3QgcmVjZWl2ZSB0aGUgZXNjYXBlIGtleWRvd25cbiAgICAgIHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaChcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oZWwsICdrZXlkb3duLmVzY2FwZScsIGV2ZW50ID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzU2VydmljZS5tb3ZlKEFycm93S2V5RGlyZWN0aW9uLkxFRlQpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIHJvb3QgY29udGFpbmVyIGlzIHRoZSBvbmx5IG9uZSB3ZSByZWdpc3RlciB0byB0aGUgZm9jdXMgc2VydmljZSwgb3RoZXJzIGRvIG5vdCBuZWVkIGZvY3VzXG4gICAgICB0aGlzLmZvY3VzU2VydmljZS5yZWdpc3RlckNvbnRhaW5lcihlbCk7XG5cbiAgICAgIC8vIFRoZSByb290IGNvbnRhaW5lciB3aWxsIHNpbXBseSBjbG9zZSB0aGUgY29udGFpbmVyIHdoZW4gZXNjYXBlIGtleSBpcyBwcmVzc2VkXG4gICAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAna2V5ZG93bi5lc2NhcGUnLCBldmVudCA9PiB0aGlzLnRvZ2dsZVNlcnZpY2UudG9nZ2xlV2l0aEV2ZW50KGV2ZW50KSlcbiAgICAgICk7XG5cbiAgICAgIC8vIFdoZW4gdGhlIHVzZXIgbW92ZXMgZm9jdXMgb3V0c2lkZSBvZiB0aGUgbWVudSwgd2UgY2xvc2UgdGhlIGRyb3Bkb3duXG4gICAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAnYmx1cicsIGV2ZW50ID0+IHtcbiAgICAgICAgICAvLyB3ZSBjbGVhciBvdXQgYW55IGV4aXN0aW5nIGZvY3VzIG9uIHRoZSBpdGVtc1xuICAgICAgICAgIHRoaXMuY2hpbGRyZW4ucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaXRlbXMgPT4gaXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uYmx1cigpKSk7XG5cbiAgICAgICAgICAvLyBldmVudC5yZWxhdGVkVGFyZ2V0IGlzIG51bGwgaW4gSUUxMS4gSW4gdGhhdCBjYXNlIHdlIHVzZSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IHdoaWNoIGNvcnJlY3RseSBwb2ludHNcbiAgICAgICAgICAvLyB0byB0aGUgZWxlbWVudCB3ZSB3YW50IHRvIGNoZWNrLiBOb3RlIHRoYXQgb3RoZXIgYnJvd3NlcnMgbWlnaHQgcG9pbnQgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB0byB0aGVcbiAgICAgICAgICAvLyB3cm9uZyBlbGVtZW50LiBUaGlzIGlzIG9rLCBiZWNhdXNlIGFsbCB0aGUgb3RoZXIgYnJvd3NlcnMgd2Ugc3VwcG9ydCByZWxpZXMgb24gZXZlbnQucmVsYXRlZFRhcmdldC5cbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAvLyBJZiB0aGUgdXNlciBjbGlja3Mgb24gYW4gaXRlbSB3aGljaCB0cmlnZ2VycyB0aGUgYmx1ciwgd2UgZG9uJ3Qgd2FudCB0byBjbG9zZSBpdCBzaW5jZSBpdCBtYXkgb3BlbiBhIHN1Ym1lbnUuXG4gICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgbmVlZGluZyB0byBjbG9zZSBpdCAoaS5lLiB1c2VyIHNlbGVjdGVkIGFuIGl0ZW0gYW5kIHRoZSBkcm9wZG93biBtZW51IGlzIHNldCB0byBjbG9zZSBvblxuICAgICAgICAgIC8vIHNlbGVjdGlvbiksIGRyb3Bkb3duLWl0ZW0udHMgaGFuZGxlcyBpdC5cbiAgICAgICAgICBpZiAodGFyZ2V0ICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmIChlbC5jb250YWlucyh0YXJnZXQpIHx8IHRhcmdldCA9PT0gdGhpcy50cmlnZ2VyKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gV2UgbGV0IHRoZSB1c2VyIG1vdmUgZm9jdXMgdG8gd2hlcmUgdGhlIHdhbnQsIHdlIGRvbid0IGZvcmNlIHRoZSBmb2N1cyBiYWNrIG9uIHRoZSB0cmlnZ2VyXG4gICAgICAgICAgdGhpcy5mb2N1c0JhY2tPblRyaWdnZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICBpZiAodGhpcy50cmlnZ2VyICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5mb2N1cygpO1xuICAgIH1cbiAgfVxuICBibHVyKCkge1xuICAgIGlmICh0aGlzLnRyaWdnZXIgJiYgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy50cmlnZ2VyLmJsdXIoKTtcbiAgICB9XG4gIH1cblxuICBhY3RpdmF0ZSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGlsZHJlbjogUmVwbGF5U3ViamVjdDxGb2N1c2FibGVJdGVtW10+O1xuICByaWdodD86IE9ic2VydmFibGU8Rm9jdXNhYmxlSXRlbT47XG4gIGRvd24/OiBPYnNlcnZhYmxlPEZvY3VzYWJsZUl0ZW0+O1xuICB1cD86IE9ic2VydmFibGU8Rm9jdXNhYmxlSXRlbT47XG5cbiAgcHJpdmF0ZSBvcGVuQW5kR2V0Q2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHdyYXBPYnNlcnZhYmxlKHRoaXMuY2hpbGRyZW4sICgpID0+ICh0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiA9IHRydWUpKTtcbiAgfVxuICBwcml2YXRlIGNsb3NlQW5kR2V0VGhpcygpIHtcbiAgICByZXR1cm4gd3JhcE9ic2VydmFibGUob2YodGhpcyksICgpID0+ICh0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiA9IGZhbHNlKSk7XG4gIH1cblxuICByZXNldENoaWxkcmVuKCkge1xuICAgIHRoaXMuY2hpbGRyZW4gPSBuZXcgUmVwbGF5U3ViamVjdDxGb2N1c2FibGVJdGVtW10+KDEpO1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5yaWdodCA9IHRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShtYXAoYWxsID0+IGFsbFswXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvd24gPSB0aGlzLm9wZW5BbmRHZXRDaGlsZHJlbigpLnBpcGUobWFwKGFsbCA9PiBhbGxbMF0pKTtcbiAgICAgIHRoaXMudXAgPSB0aGlzLm9wZW5BbmRHZXRDaGlsZHJlbigpLnBpcGUobWFwKGFsbCA9PiBhbGxbYWxsLmxlbmd0aCAtIDFdKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2hpbGRyZW4oY2hpbGRyZW46IEZvY3VzYWJsZUl0ZW1bXSkge1xuICAgIExpbmtlcnMubGlua1ZlcnRpY2FsKGNoaWxkcmVuKTtcbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIExpbmtlcnMubGlua1BhcmVudChjaGlsZHJlbiwgdGhpcy5jbG9zZUFuZEdldFRoaXMoKSwgQXJyb3dLZXlEaXJlY3Rpb24uTEVGVCk7XG4gICAgfVxuICAgIHRoaXMuY2hpbGRyZW4ubmV4dChjaGlsZHJlbik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLmZvckVhY2goKHVubGlzdGVuOiAoKSA9PiB2b2lkKSA9PiB1bmxpc3RlbigpKTtcbiAgICB0aGlzLmZvY3VzU2VydmljZS5kZXRhY2hMaXN0ZW5lcnMoKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRFJPUERPV05fRk9DVVNfSEFORExFUl9QUk9WSURFUiA9IGN1c3RvbUZvY3VzYWJsZUl0ZW1Qcm92aWRlcihEcm9wZG93bkZvY3VzSGFuZGxlcik7XG4iXX0=
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZm9jdXMtaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvcG9wb3Zlci9kcm9wZG93bi9wcm92aWRlcnMvZHJvcGRvd24tZm9jdXMtaGFuZGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsV0FBVyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBRWpILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBSW5GLE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsWUFDVSxRQUFtQixFQUduQixNQUE0QixFQUM1QixhQUFzQyxFQUN0QyxZQUEwQixFQUNMLFVBQWU7UUFOcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUduQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDTCxlQUFVLEdBQVYsVUFBVSxDQUFLO1FBVDlDLE9BQUUsR0FBRyxlQUFlLEVBQUUsQ0FBQztRQWtCZixtQkFBYyxHQUFtQixFQUFFLENBQUM7UUF3QjVDLGlDQUE0QixHQUFHLEtBQUssQ0FBQztRQS9CbkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFJRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUU7Z0JBQzVDLHVHQUF1RztnQkFDdkcsbUdBQW1HO2dCQUNuRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ2pEO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNoRDtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBSUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsbUZBQW1GO2dCQUNuRixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsOEVBQThFO2dCQUM5RSxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtvQkFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNkO2FBQ0Y7WUFDRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUdELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsRUFBZTtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVuQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDbkcsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDaEcsQ0FBQztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFHRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEVBQWU7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFFckIseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDNUYsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLGlIQUFpSDtZQUNqSCwyRkFBMkY7WUFDM0YscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxnR0FBZ0c7WUFDaEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV4QyxnRkFBZ0Y7WUFDaEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQy9GLENBQUM7WUFFRix1RUFBdUU7WUFDdkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZDLCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRW5GLHlHQUF5RztnQkFDekcsc0dBQXNHO2dCQUN0RyxzR0FBc0c7Z0JBQ3RHLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFFN0QsZ0hBQWdIO2dCQUNoSCwwR0FBMEc7Z0JBQzFHLDJDQUEyQztnQkFDM0MsSUFBSSxNQUFNLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUNoRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7d0JBQ2xELE9BQU87cUJBQ1I7aUJBQ0Y7Z0JBQ0QsNkZBQTZGO2dCQUM3RixJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBQ0QsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFPTyxrQkFBa0I7UUFDeEIsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUNPLGVBQWU7UUFDckIsT0FBTyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakU7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUF5QjtRQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFvQixFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7aUhBbE1VLG9CQUFvQiwrS0FVckIsV0FBVztxSEFWVixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTs7MEJBTU4sUUFBUTs7MEJBQ1IsUUFBUTs7MEJBSVIsTUFBTTsyQkFBQyxXQUFXOztBQTJMdkIsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsMkJBQTJCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXJyb3dLZXlEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb2N1cy9hcnJvdy1rZXktZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZm9jdXMvZm9jdXMuc2VydmljZSc7XG5pbXBvcnQgeyBjdXN0b21Gb2N1c2FibGVJdGVtUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb2N1cy9mb2N1c2FibGUtaXRlbS9jdXN0b20tZm9jdXNhYmxlLWl0ZW0tcHJvdmlkZXInO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZvY3VzL2ZvY3VzYWJsZS1pdGVtL2ZvY3VzYWJsZS1pdGVtJztcbmltcG9ydCB7IExpbmtlcnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb2N1cy9mb2N1c2FibGUtaXRlbS9saW5rZXJzJztcbmltcG9ydCB7IHdyYXBPYnNlcnZhYmxlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZm9jdXMvd3JhcC1vYnNlcnZhYmxlJztcbmltcG9ydCB7IHVuaXF1ZUlkRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2lkLWdlbmVyYXRvci9pZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3BvcG92ZXIvcHJvdmlkZXJzL3BvcG92ZXItdG9nZ2xlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Gb2N1c0hhbmRsZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEZvY3VzYWJsZUl0ZW0ge1xuICBpZCA9IHVuaXF1ZUlkRmFjdG9yeSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBAU2tpcFNlbGYoKVxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSBwYXJlbnQ6IERyb3Bkb3duRm9jdXNIYW5kbGVyLFxuICAgIHByaXZhdGUgdG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb2N1c1NlcnZpY2U6IEZvY3VzU2VydmljZSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxuICApIHtcbiAgICB0aGlzLnJlc2V0Q2hpbGRyZW4oKTtcbiAgICB0aGlzLm1vdmVUb0ZpcnN0SXRlbVdoZW5PcGVuKCk7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5oYW5kbGVSb290Rm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91bmxpc3RlbkZ1bmNzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgZHJvcGRvd24gd2FzIG9wZW5lZCBieSBjbGlja2luZyBvbiB0aGUgdHJpZ2dlciwgd2UgYXV0b21hdGljYWxseSBtb3ZlIHRvIHRoZSBmaXJzdCBpdGVtXG4gICAqL1xuICBtb3ZlVG9GaXJzdEl0ZW1XaGVuT3BlbigpIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbiA9PiB7XG4gICAgICBpZiAob3BlbiAmJiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3JpZ2luYWxFdmVudCkge1xuICAgICAgICAvLyBFdmVuIGlmIHdlIHByb3Blcmx5IHdhaXRlZCBmb3IgbmdBZnRlclZpZXdJbml0LCB0aGUgY29udGFpbmVyIHN0aWxsIHdvdWxkbid0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgICAgIC8vIFNvIHNldFRpbWVvdXQgaXMgdGhlIG9ubHkgd2F5IHRvIHdhaXQgZm9yIHRoZSBjb250YWluZXIgdG8gYmUgcmVhZHkgdG8gbW92ZSBmb2N1cyB0byBmaXJzdCBpdGVtLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzU2VydmljZS5tb3ZlVG8odGhpcyk7XG4gICAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU2VydmljZS5tb3ZlKEFycm93S2V5RGlyZWN0aW9uLlJJR0hUKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlcnZpY2UubW92ZShBcnJvd0tleURpcmVjdGlvbi5ET1dOKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKCgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGZvY3VzQmFja09uVHJpZ2dlcldoZW5DbG9zZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRm9jdXMgb24gdGhlIG1lbnUgd2hlbiBpdCBvcGVucywgYW5kIGZvY3VzIGJhY2sgb24gdGhlIHJvb3QgdHJpZ2dlciB3aGVuIHRoZSB3aG9sZSBkcm9wZG93biBiZWNvbWVzIGNsb3NlZFxuICAgKi9cbiAgaGFuZGxlUm9vdEZvY3VzKCkge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShvcGVuID0+IHtcbiAgICAgIGlmICghb3Blbikge1xuICAgICAgICAvLyBXZSByZXNldCB0aGUgc3RhdGUgb2YgdGhlIGZvY3VzIHNlcnZpY2UgYm90aCBvbiBpbml0aWFsaXphdGlvbiBhbmQgd2hlbiBjbG9zaW5nLlxuICAgICAgICB0aGlzLmZvY3VzU2VydmljZS5yZXNldCh0aGlzKTtcbiAgICAgICAgLy8gQnV0IHdlIG9ubHkgYWN0aXZlbHkgZm9jdXMgdGhlIHRyaWdnZXIgd2hlbiBjbG9zaW5nLCBub3Qgb24gaW5pdGlhbGl6YXRpb24uXG4gICAgICAgIGlmICh0aGlzLmZvY3VzQmFja09uVHJpZ2dlcldoZW5DbG9zZWQpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyV2hlbkNsb3NlZCA9IG9wZW47XG4gICAgfSk7XG5cbiAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goKCkgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlcjogSFRNTEVsZW1lbnQ7XG4gIGdldCB0cmlnZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyO1xuICB9XG4gIHNldCB0cmlnZ2VyKGVsOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuX3RyaWdnZXIgPSBlbDtcblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbCwgJ2tleWRvd24uYXJyb3dyaWdodCcsIGV2ZW50ID0+IHRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQoZXZlbnQpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbCwgJ2tleWRvd24uYXJyb3d1cCcsIGV2ZW50ID0+IHRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQoZXZlbnQpKVxuICAgICAgKTtcbiAgICAgIHRoaXMuX3VubGlzdGVuRnVuY3MucHVzaChcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oZWwsICdrZXlkb3duLmFycm93ZG93bicsIGV2ZW50ID0+IHRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQoZXZlbnQpKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZm9jdXNTZXJ2aWNlLmxpc3RlblRvQXJyb3dLZXlzKGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBnZXQgY29udGFpbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXI7XG4gIH1cbiAgc2V0IGNvbnRhaW5lcihlbDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSBlbDtcblxuICAgIC8vIHdoZXRoZXIgcm9vdCBjb250YWluZXIgb3Igbm90LCB0YWIga2V5IHNob3VsZCBhbHdheXMgdG9nZ2xlIChpLmUuIGNsb3NlKSB0aGUgY29udGFpbmVyXG4gICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKFxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oZWwsICdrZXlkb3duLnRhYicsIGV2ZW50ID0+IHRoaXMudG9nZ2xlU2VydmljZS50b2dnbGVXaXRoRXZlbnQoZXZlbnQpKVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIC8vIGlmIGl0J3MgYSBuZXN0ZWQgY29udGFpbmVyLCBwcmVzc2luZyBlc2NhcGUgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBwcmVzc2luZyBsZWZ0IGtleSwgd2hpY2ggY2xvc2VzIHRoZSBjdXJyZW50XG4gICAgICAvLyBwb3B1cCBhbmQgbW92ZXMgdXAgdG8gaXRzIHBhcmVudC4gSGVyZSwgd2Ugc3RvcCBwcm9wYWdhdGlvbiBzbyB0aGF0IHRoZSBwYXJlbnQgY29udGFpbmVyXG4gICAgICAvLyBkb2Vzbid0IHJlY2VpdmUgdGhlIGVzY2FwZSBrZXlkb3duXG4gICAgICB0aGlzLl91bmxpc3RlbkZ1bmNzLnB1c2goXG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsLCAna2V5ZG93bi5lc2NhcGUnLCBldmVudCA9PiB7XG4gICAgICAgICAgdGhpcy5mb2N1c1NlcnZpY2UubW92ZShBcnJvd0tleURpcmVjdGlvbi5MRUZUKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSByb290IGNvbnRhaW5lciBpcyB0aGUgb25seSBvbmUgd2UgcmVnaXN0ZXIgdG8gdGhlIGZvY3VzIHNlcnZpY2UsIG90aGVycyBkbyBub3QgbmVlZCBmb2N1c1xuICAgICAgdGhpcy5mb2N1c1NlcnZpY2UucmVnaXN0ZXJDb250YWluZXIoZWwpO1xuXG4gICAgICAvLyBUaGUgcm9vdCBjb250YWluZXIgd2lsbCBzaW1wbHkgY2xvc2UgdGhlIGNvbnRhaW5lciB3aGVuIGVzY2FwZSBrZXkgaXMgcHJlc3NlZFxuICAgICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbCwgJ2tleWRvd24uZXNjYXBlJywgZXZlbnQgPT4gdGhpcy50b2dnbGVTZXJ2aWNlLnRvZ2dsZVdpdGhFdmVudChldmVudCkpXG4gICAgICApO1xuXG4gICAgICAvLyBXaGVuIHRoZSB1c2VyIG1vdmVzIGZvY3VzIG91dHNpZGUgb2YgdGhlIG1lbnUsIHdlIGNsb3NlIHRoZSBkcm9wZG93blxuICAgICAgdGhpcy5fdW5saXN0ZW5GdW5jcy5wdXNoKFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbCwgJ2JsdXInLCBldmVudCA9PiB7XG4gICAgICAgICAgLy8gd2UgY2xlYXIgb3V0IGFueSBleGlzdGluZyBmb2N1cyBvbiB0aGUgaXRlbXNcbiAgICAgICAgICB0aGlzLmNoaWxkcmVuLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGl0ZW1zID0+IGl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLmJsdXIoKSkpO1xuXG4gICAgICAgICAgLy8gZXZlbnQucmVsYXRlZFRhcmdldCBpcyBudWxsIGluIElFMTEuIEluIHRoYXQgY2FzZSB3ZSB1c2UgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB3aGljaCBjb3JyZWN0bHkgcG9pbnRzXG4gICAgICAgICAgLy8gdG8gdGhlIGVsZW1lbnQgd2Ugd2FudCB0byBjaGVjay4gTm90ZSB0aGF0IG90aGVyIGJyb3dzZXJzIG1pZ2h0IHBvaW50IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgdG8gdGhlXG4gICAgICAgICAgLy8gd3JvbmcgZWxlbWVudC4gVGhpcyBpcyBvaywgYmVjYXVzZSBhbGwgdGhlIG90aGVyIGJyb3dzZXJzIHdlIHN1cHBvcnQgcmVsaWVzIG9uIGV2ZW50LnJlbGF0ZWRUYXJnZXQuXG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgICAgICAgLy8gSWYgdGhlIHVzZXIgY2xpY2tzIG9uIGFuIGl0ZW0gd2hpY2ggdHJpZ2dlcnMgdGhlIGJsdXIsIHdlIGRvbid0IHdhbnQgdG8gY2xvc2UgaXQgc2luY2UgaXQgbWF5IG9wZW4gYSBzdWJtZW51LlxuICAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIG5lZWRpbmcgdG8gY2xvc2UgaXQgKGkuZS4gdXNlciBzZWxlY3RlZCBhbiBpdGVtIGFuZCB0aGUgZHJvcGRvd24gbWVudSBpcyBzZXQgdG8gY2xvc2Ugb25cbiAgICAgICAgICAvLyBzZWxlY3Rpb24pLCBkcm9wZG93bi1pdGVtLnRzIGhhbmRsZXMgaXQuXG4gICAgICAgICAgaWYgKHRhcmdldCAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAoZWwuY29udGFpbnModGFyZ2V0KSB8fCB0YXJnZXQgPT09IHRoaXMudHJpZ2dlcikge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFdlIGxldCB0aGUgdXNlciBtb3ZlIGZvY3VzIHRvIHdoZXJlIHRoZSB3YW50LCB3ZSBkb24ndCBmb3JjZSB0aGUgZm9jdXMgYmFjayBvbiB0aGUgdHJpZ2dlclxuICAgICAgICAgIHRoaXMuZm9jdXNCYWNrT25UcmlnZ2VyV2hlbkNsb3NlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuID0gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGlmICh0aGlzLnRyaWdnZXIgJiYgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy50cmlnZ2VyLmZvY3VzKCk7XG4gICAgfVxuICB9XG4gIGJsdXIoKSB7XG4gICAgaWYgKHRoaXMudHJpZ2dlciAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLnRyaWdnZXIuYmx1cigpO1xuICAgIH1cbiAgfVxuXG4gIGFjdGl2YXRlKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLnRyaWdnZXIuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoaWxkcmVuOiBSZXBsYXlTdWJqZWN0PEZvY3VzYWJsZUl0ZW1bXT47XG4gIHJpZ2h0PzogT2JzZXJ2YWJsZTxGb2N1c2FibGVJdGVtPjtcbiAgZG93bj86IE9ic2VydmFibGU8Rm9jdXNhYmxlSXRlbT47XG4gIHVwPzogT2JzZXJ2YWJsZTxGb2N1c2FibGVJdGVtPjtcblxuICBwcml2YXRlIG9wZW5BbmRHZXRDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gd3JhcE9ic2VydmFibGUodGhpcy5jaGlsZHJlbiwgKCkgPT4gKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuID0gdHJ1ZSkpO1xuICB9XG4gIHByaXZhdGUgY2xvc2VBbmRHZXRUaGlzKCkge1xuICAgIHJldHVybiB3cmFwT2JzZXJ2YWJsZShvZih0aGlzKSwgKCkgPT4gKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuID0gZmFsc2UpKTtcbiAgfVxuXG4gIHJlc2V0Q2hpbGRyZW4oKSB7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ldyBSZXBsYXlTdWJqZWN0PEZvY3VzYWJsZUl0ZW1bXT4oMSk7XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICB0aGlzLnJpZ2h0ID0gdGhpcy5vcGVuQW5kR2V0Q2hpbGRyZW4oKS5waXBlKG1hcChhbGwgPT4gYWxsWzBdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG93biA9IHRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShtYXAoYWxsID0+IGFsbFswXSkpO1xuICAgICAgdGhpcy51cCA9IHRoaXMub3BlbkFuZEdldENoaWxkcmVuKCkucGlwZShtYXAoYWxsID0+IGFsbFthbGwubGVuZ3RoIC0gMV0pKTtcbiAgICB9XG4gIH1cblxuICBhZGRDaGlsZHJlbihjaGlsZHJlbjogRm9jdXNhYmxlSXRlbVtdKSB7XG4gICAgTGlua2Vycy5saW5rVmVydGljYWwoY2hpbGRyZW4pO1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgTGlua2Vycy5saW5rUGFyZW50KGNoaWxkcmVuLCB0aGlzLmNsb3NlQW5kR2V0VGhpcygpLCBBcnJvd0tleURpcmVjdGlvbi5MRUZUKTtcbiAgICB9XG4gICAgdGhpcy5jaGlsZHJlbi5uZXh0KGNoaWxkcmVuKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3VubGlzdGVuRnVuY3MuZm9yRWFjaCgodW5saXN0ZW46ICgpID0+IHZvaWQpID0+IHVubGlzdGVuKCkpO1xuICAgIHRoaXMuZm9jdXNTZXJ2aWNlLmRldGFjaExpc3RlbmVycygpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBEUk9QRE9XTl9GT0NVU19IQU5ETEVSX1BST1ZJREVSID0gY3VzdG9tRm9jdXNhYmxlSXRlbVByb3ZpZGVyKERyb3Bkb3duRm9jdXNIYW5kbGVyKTtcbiJdfQ==
|
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -2689,6 +2689,8 @@ class ClrButtonGroup {
|
|
|
2689
2689
|
this.toggleService = toggleService;
|
|
2690
2690
|
this.commonStrings = commonStrings;
|
|
2691
2691
|
this.destroy$ = destroy$;
|
|
2692
|
+
// Aria
|
|
2693
|
+
this.clrToggleButtonAriaLabel = this.commonStrings.keys.rowActions;
|
|
2692
2694
|
this.popoverId = uniqueIdFactory();
|
|
2693
2695
|
this.popoverPosition = ClrPopoverPositions['bottom-left'];
|
|
2694
2696
|
this.inlineButtons = [];
|
|
@@ -2775,13 +2777,16 @@ class ClrButtonGroup {
|
|
|
2775
2777
|
}
|
|
2776
2778
|
}
|
|
2777
2779
|
ClrButtonGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: ClrPopoverToggleService }, { token: ClrCommonStringsService }, { token: ClrDestroyService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2778
|
-
ClrButtonGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrButtonGroup, selector: "clr-button-group", inputs: { menuPosition: ["clrMenuPosition", "menuPosition"] }, host: { properties: { "class.btn-group": "true" } }, providers: [ButtonInGroupService, ClrDestroyService], queries: [{ propertyName: "buttons", predicate: ClrButton }], hostDirectives: [{ directive: PopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"
|
|
2780
|
+
ClrButtonGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrButtonGroup, selector: "clr-button-group", inputs: { clrToggleButtonAriaLabel: "clrToggleButtonAriaLabel", menuPosition: ["clrMenuPosition", "menuPosition"] }, host: { properties: { "class.btn-group": "true" } }, providers: [ButtonInGroupService, ClrDestroyService], queries: [{ propertyName: "buttons", predicate: ClrButton }], hostDirectives: [{ directive: PopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"clrToggleButtonAriaLabel\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open at popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-template [ngTemplateOutlet]=\"ref\"></ng-template>\n </div>\n </div>\n</ng-container>\n<ng-template #ref>\n <ng-container *ngFor=\"let menuButton of menuButtons\">\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
|
|
2779
2781
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrButtonGroup, decorators: [{
|
|
2780
2782
|
type: Component,
|
|
2781
|
-
args: [{ selector: 'clr-button-group', providers: [ButtonInGroupService, ClrDestroyService], hostDirectives: [PopoverHostDirective], host: { '[class.btn-group]': 'true' }, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"
|
|
2783
|
+
args: [{ selector: 'clr-button-group', providers: [ButtonInGroupService, ClrDestroyService], hostDirectives: [PopoverHostDirective], host: { '[class.btn-group]': 'true' }, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"clrToggleButtonAriaLabel\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open at popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-template [ngTemplateOutlet]=\"ref\"></ng-template>\n </div>\n </div>\n</ng-container>\n<ng-template #ref>\n <ng-container *ngFor=\"let menuButton of menuButtons\">\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </ng-container>\n</ng-template>\n" }]
|
|
2782
2784
|
}], ctorParameters: function () { return [{ type: ButtonInGroupService }, { type: ClrPopoverToggleService }, { type: ClrCommonStringsService }, { type: ClrDestroyService }]; }, propDecorators: { buttons: [{
|
|
2783
2785
|
type: ContentChildren,
|
|
2784
2786
|
args: [ClrButton]
|
|
2787
|
+
}], clrToggleButtonAriaLabel: [{
|
|
2788
|
+
type: Input,
|
|
2789
|
+
args: ['clrToggleButtonAriaLabel']
|
|
2785
2790
|
}], menuPosition: [{
|
|
2786
2791
|
type: Input,
|
|
2787
2792
|
args: ['clrMenuPosition']
|
|
@@ -11365,6 +11370,7 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
11365
11370
|
class="datagrid-numeric-filter-input"
|
|
11366
11371
|
#input_low
|
|
11367
11372
|
type="number"
|
|
11373
|
+
autocomplete="off"
|
|
11368
11374
|
name="low"
|
|
11369
11375
|
[(ngModel)]="low"
|
|
11370
11376
|
[placeholder]="minPlaceholderValue"
|
|
@@ -11375,6 +11381,7 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
11375
11381
|
class="datagrid-numeric-filter-input"
|
|
11376
11382
|
#input_high
|
|
11377
11383
|
type="number"
|
|
11384
|
+
autocomplete="off"
|
|
11378
11385
|
name="high"
|
|
11379
11386
|
[(ngModel)]="high"
|
|
11380
11387
|
[placeholder]="maxPlaceholderValue"
|
|
@@ -11393,6 +11400,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11393
11400
|
class="datagrid-numeric-filter-input"
|
|
11394
11401
|
#input_low
|
|
11395
11402
|
type="number"
|
|
11403
|
+
autocomplete="off"
|
|
11396
11404
|
name="low"
|
|
11397
11405
|
[(ngModel)]="low"
|
|
11398
11406
|
[placeholder]="minPlaceholderValue"
|
|
@@ -11403,6 +11411,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11403
11411
|
class="datagrid-numeric-filter-input"
|
|
11404
11412
|
#input_high
|
|
11405
11413
|
type="number"
|
|
11414
|
+
autocomplete="off"
|
|
11406
11415
|
name="high"
|
|
11407
11416
|
[(ngModel)]="high"
|
|
11408
11417
|
[placeholder]="maxPlaceholderValue"
|
|
@@ -11625,6 +11634,7 @@ DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
11625
11634
|
<input
|
|
11626
11635
|
#input
|
|
11627
11636
|
type="text"
|
|
11637
|
+
autocomplete="off"
|
|
11628
11638
|
name="search"
|
|
11629
11639
|
[(ngModel)]="value"
|
|
11630
11640
|
class="clr-input"
|
|
@@ -11643,6 +11653,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11643
11653
|
<input
|
|
11644
11654
|
#input
|
|
11645
11655
|
type="text"
|
|
11656
|
+
autocomplete="off"
|
|
11646
11657
|
name="search"
|
|
11647
11658
|
[(ngModel)]="value"
|
|
11648
11659
|
class="clr-input"
|
|
@@ -12406,13 +12417,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12406
12417
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12407
12418
|
*/
|
|
12408
12419
|
class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
12409
|
-
constructor(_sort, filters, vcr, detailService, changeDetectorRef
|
|
12420
|
+
constructor(_sort, filters, vcr, detailService, changeDetectorRef) {
|
|
12410
12421
|
super(filters);
|
|
12411
12422
|
this._sort = _sort;
|
|
12412
12423
|
this.vcr = vcr;
|
|
12413
12424
|
this.detailService = detailService;
|
|
12414
12425
|
this.changeDetectorRef = changeDetectorRef;
|
|
12415
|
-
this.commonStrings = commonStrings;
|
|
12416
12426
|
this.showSeparator = true;
|
|
12417
12427
|
/**
|
|
12418
12428
|
* Subscription to the sort service changes
|
|
@@ -12596,15 +12606,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12596
12606
|
this.customFilter = true;
|
|
12597
12607
|
}
|
|
12598
12608
|
}
|
|
12599
|
-
get filterStringPlaceholderValue() {
|
|
12600
|
-
return this.filterStringPlaceholder || this.commonStrings.keys.filterItems;
|
|
12601
|
-
}
|
|
12602
|
-
get filterNumberMaxPlaceholderValue() {
|
|
12603
|
-
return this.filterNumberMaxPlaceholder || this.commonStrings.keys.maxValue;
|
|
12604
|
-
}
|
|
12605
|
-
get filterNumberMinPlaceholderValue() {
|
|
12606
|
-
return this.filterNumberMinPlaceholder || this.commonStrings.keys.minValue;
|
|
12607
|
-
}
|
|
12608
12609
|
set updateFilterValue(newValue) {
|
|
12609
12610
|
if (this.filter) {
|
|
12610
12611
|
if (this.filter instanceof DatagridStringFilterImpl) {
|
|
@@ -12655,7 +12656,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
12655
12656
|
return this.wrappedInjector.get(WrappedColumn, this.vcr).columnView;
|
|
12656
12657
|
}
|
|
12657
12658
|
}
|
|
12658
|
-
ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }
|
|
12659
|
+
ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
12659
12660
|
ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sortOrder: ["clrDgSortOrder", "sortOrder"], filterStringPlaceholder: ["clrFilterStringPlaceholder", "filterStringPlaceholder"], filterNumberMaxPlaceholder: ["clrFilterNumberMaxPlaceholder", "filterNumberMaxPlaceholder"], filterNumberMinPlaceholder: ["clrFilterNumberMinPlaceholder", "filterNumberMinPlaceholder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: PopoverHostDirective }], ngImport: i0, template: `
|
|
12660
12661
|
<div class="datagrid-column-flex">
|
|
12661
12662
|
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
@@ -12673,15 +12674,15 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
12673
12674
|
|
|
12674
12675
|
<clr-dg-string-filter
|
|
12675
12676
|
*ngIf="field && !customFilter && colType == 'string'"
|
|
12676
|
-
[clrFilterPlaceholder]="
|
|
12677
|
+
[clrFilterPlaceholder]="filterStringPlaceholder"
|
|
12677
12678
|
[clrDgStringFilter]="registered"
|
|
12678
12679
|
[(clrFilterValue)]="filterValue"
|
|
12679
12680
|
></clr-dg-string-filter>
|
|
12680
12681
|
|
|
12681
12682
|
<clr-dg-numeric-filter
|
|
12682
12683
|
*ngIf="field && !customFilter && colType == 'number'"
|
|
12683
|
-
[clrFilterMaxPlaceholder]="
|
|
12684
|
-
[clrFilterMinPlaceholder]="
|
|
12684
|
+
[clrFilterMaxPlaceholder]="filterNumberMaxPlaceholder"
|
|
12685
|
+
[clrFilterMinPlaceholder]="filterNumberMinPlaceholder"
|
|
12685
12686
|
[clrDgNumericFilter]="registered"
|
|
12686
12687
|
[(clrFilterValue)]="filterValue"
|
|
12687
12688
|
></clr-dg-numeric-filter>
|
|
@@ -12718,15 +12719,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12718
12719
|
|
|
12719
12720
|
<clr-dg-string-filter
|
|
12720
12721
|
*ngIf="field && !customFilter && colType == 'string'"
|
|
12721
|
-
[clrFilterPlaceholder]="
|
|
12722
|
+
[clrFilterPlaceholder]="filterStringPlaceholder"
|
|
12722
12723
|
[clrDgStringFilter]="registered"
|
|
12723
12724
|
[(clrFilterValue)]="filterValue"
|
|
12724
12725
|
></clr-dg-string-filter>
|
|
12725
12726
|
|
|
12726
12727
|
<clr-dg-numeric-filter
|
|
12727
12728
|
*ngIf="field && !customFilter && colType == 'number'"
|
|
12728
|
-
[clrFilterMaxPlaceholder]="
|
|
12729
|
-
[clrFilterMinPlaceholder]="
|
|
12729
|
+
[clrFilterMaxPlaceholder]="filterNumberMaxPlaceholder"
|
|
12730
|
+
[clrFilterMinPlaceholder]="filterNumberMinPlaceholder"
|
|
12730
12731
|
[clrDgNumericFilter]="registered"
|
|
12731
12732
|
[(clrFilterValue)]="filterValue"
|
|
12732
12733
|
></clr-dg-numeric-filter>
|
|
@@ -12750,7 +12751,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12750
12751
|
},
|
|
12751
12752
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
12752
12753
|
}]
|
|
12753
|
-
}], ctorParameters: function () { return [{ type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }
|
|
12754
|
+
}], ctorParameters: function () { return [{ type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { colType: [{
|
|
12754
12755
|
type: Input,
|
|
12755
12756
|
args: ['clrDgColType']
|
|
12756
12757
|
}], field: [{
|
|
@@ -18400,7 +18401,7 @@ class ClrTreeNode {
|
|
|
18400
18401
|
}
|
|
18401
18402
|
}
|
|
18402
18403
|
ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
18403
|
-
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
|
|
18404
|
+
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
|
|
18404
18405
|
trigger('toggleChildrenAnim', [
|
|
18405
18406
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
18406
18407
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -18419,7 +18420,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
18419
18420
|
]),
|
|
18420
18421
|
], host: {
|
|
18421
18422
|
'[class.clr-tree-node]': 'true',
|
|
18422
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n" }]
|
|
18423
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n" }]
|
|
18423
18424
|
}], ctorParameters: function () {
|
|
18424
18425
|
return [{ type: undefined, decorators: [{
|
|
18425
18426
|
type: Inject,
|
|
@@ -18642,7 +18643,7 @@ class DropdownFocusHandler {
|
|
|
18642
18643
|
this.platformId = platformId;
|
|
18643
18644
|
this.id = uniqueIdFactory();
|
|
18644
18645
|
this._unlistenFuncs = [];
|
|
18645
|
-
this.
|
|
18646
|
+
this.focusBackOnTriggerWhenClosed = false;
|
|
18646
18647
|
this.resetChildren();
|
|
18647
18648
|
this.moveToFirstItemWhenOpen();
|
|
18648
18649
|
if (!this.parent) {
|
|
@@ -18679,11 +18680,11 @@ class DropdownFocusHandler {
|
|
|
18679
18680
|
// We reset the state of the focus service both on initialization and when closing.
|
|
18680
18681
|
this.focusService.reset(this);
|
|
18681
18682
|
// But we only actively focus the trigger when closing, not on initialization.
|
|
18682
|
-
if (this.
|
|
18683
|
+
if (this.focusBackOnTriggerWhenClosed) {
|
|
18683
18684
|
this.focus();
|
|
18684
18685
|
}
|
|
18685
18686
|
}
|
|
18686
|
-
this.
|
|
18687
|
+
this.focusBackOnTriggerWhenClosed = open;
|
|
18687
18688
|
});
|
|
18688
18689
|
this._unlistenFuncs.push(() => subscription.unsubscribe());
|
|
18689
18690
|
}
|
|
@@ -18739,7 +18740,7 @@ class DropdownFocusHandler {
|
|
|
18739
18740
|
}
|
|
18740
18741
|
}
|
|
18741
18742
|
// We let the user move focus to where the want, we don't force the focus back on the trigger
|
|
18742
|
-
this.
|
|
18743
|
+
this.focusBackOnTriggerWhenClosed = false;
|
|
18743
18744
|
this.toggleService.open = false;
|
|
18744
18745
|
}));
|
|
18745
18746
|
}
|
|
@@ -18839,9 +18840,10 @@ const ROOT_DROPDOWN_PROVIDER = {
|
|
|
18839
18840
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18840
18841
|
*/
|
|
18841
18842
|
class ClrDropdown {
|
|
18842
|
-
constructor(parent, toggleService, cdr, dropdownService) {
|
|
18843
|
+
constructor(parent, toggleService, focusHandler, cdr, dropdownService) {
|
|
18843
18844
|
this.parent = parent;
|
|
18844
18845
|
this.toggleService = toggleService;
|
|
18846
|
+
this.focusHandler = focusHandler;
|
|
18845
18847
|
this.cdr = cdr;
|
|
18846
18848
|
this.subscriptions = [];
|
|
18847
18849
|
this.isMenuClosable = true;
|
|
@@ -18852,7 +18854,7 @@ class ClrDropdown {
|
|
|
18852
18854
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
18853
18855
|
}
|
|
18854
18856
|
}
|
|
18855
|
-
ClrDropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdown, deps: [{ token: ClrDropdown, optional: true, skipSelf: true }, { token: ClrPopoverToggleService }, { token: i0.ChangeDetectorRef }, { token: RootDropdownService }], target: i0.ɵɵFactoryTarget.Component });
|
|
18857
|
+
ClrDropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdown, deps: [{ token: ClrDropdown, optional: true, skipSelf: true }, { token: ClrPopoverToggleService }, { token: DropdownFocusHandler }, { token: i0.ChangeDetectorRef }, { token: RootDropdownService }], target: i0.ɵɵFactoryTarget.Component });
|
|
18856
18858
|
ClrDropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDropdown, selector: "clr-dropdown", inputs: { isMenuClosable: ["clrCloseMenuOnItemClick", "isMenuClosable"] }, host: { properties: { "class.dropdown": "true", "class.open": "toggleService.open" } }, providers: [ROOT_DROPDOWN_PROVIDER, FOCUS_SERVICE_PROVIDER, DROPDOWN_FOCUS_HANDLER_PROVIDER], hostDirectives: [{ directive: PopoverHostDirective }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
18857
18859
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdown, decorators: [{
|
|
18858
18860
|
type: Component,
|
|
@@ -18871,7 +18873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
18871
18873
|
type: SkipSelf
|
|
18872
18874
|
}, {
|
|
18873
18875
|
type: Optional
|
|
18874
|
-
}] }, { type: ClrPopoverToggleService }, { type: i0.ChangeDetectorRef }, { type: RootDropdownService }];
|
|
18876
|
+
}] }, { type: ClrPopoverToggleService }, { type: DropdownFocusHandler }, { type: i0.ChangeDetectorRef }, { type: RootDropdownService }];
|
|
18875
18877
|
}, propDecorators: { isMenuClosable: [{
|
|
18876
18878
|
type: Input,
|
|
18877
18879
|
args: ['clrCloseMenuOnItemClick']
|
|
@@ -18956,6 +18958,15 @@ class ClrDropdownItem {
|
|
|
18956
18958
|
return this.focusableItem.id;
|
|
18957
18959
|
}
|
|
18958
18960
|
onDropdownItemClick() {
|
|
18961
|
+
// Move focus back to the root dropdown trigger.
|
|
18962
|
+
// This is done BEFORE the dropdown is closed so that focus gets moved properly if a modal is opened.
|
|
18963
|
+
if (this.dropdown.isMenuClosable && !this.disabled && this.dropdown.toggleService.open) {
|
|
18964
|
+
const rootDropdown = this.findRootDropdown();
|
|
18965
|
+
rootDropdown.focusHandler.focus();
|
|
18966
|
+
// Prevent moving focus back to the trigger when the dropdown menu is closed.
|
|
18967
|
+
// Without this line, focus could be "stolen" from a modal that was opened from a dropdown item.
|
|
18968
|
+
rootDropdown.focusHandler.focusBackOnTriggerWhenClosed = false;
|
|
18969
|
+
}
|
|
18959
18970
|
// Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
|
|
18960
18971
|
setTimeout(() => {
|
|
18961
18972
|
if (this.dropdown.isMenuClosable && !this.disabled) {
|
|
@@ -18974,6 +18985,13 @@ class ClrDropdownItem {
|
|
|
18974
18985
|
$event.stopImmediatePropagation();
|
|
18975
18986
|
}
|
|
18976
18987
|
}
|
|
18988
|
+
findRootDropdown() {
|
|
18989
|
+
let rootDropdown = this.dropdown;
|
|
18990
|
+
while (rootDropdown.parent) {
|
|
18991
|
+
rootDropdown = rootDropdown.parent;
|
|
18992
|
+
}
|
|
18993
|
+
return rootDropdown;
|
|
18994
|
+
}
|
|
18977
18995
|
}
|
|
18978
18996
|
ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: RootDropdownService }, { token: FocusableItem }], target: i0.ɵɵFactoryTarget.Directive });
|
|
18979
18997
|
ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"], dropdownItemId: ["id", "dropdownItemId"] }, host: { listeners: { "click": "onDropdownItemClick()", "keydown.space": "onSpaceKeydown($event)", "keydown.enter": "onEnterKeydown($event)" }, properties: { "class.disabled": "disabled", "class.dropdown-item": "true", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled", "attr.id": "dropdownItemId" } }, providers: [BASIC_FOCUSABLE_ITEM_PROVIDER], ngImport: i0 });
|