@radix-ng/primitives 0.18.1 → 0.19.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/avatar/index.d.ts +1 -2
- package/avatar/src/avatar-fallback.directive.d.ts +11 -23
- package/avatar/src/avatar-image.directive.d.ts +10 -14
- package/avatar/src/avatar-root.directive.d.ts +5 -15
- package/checkbox/index.d.ts +11 -0
- package/checkbox/src/checkbox-button.directive.d.ts +1 -1
- package/checkbox/src/checkbox-indicator.directive.d.ts +1 -1
- package/checkbox/src/checkbox-input.directive.d.ts +1 -1
- package/checkbox/src/checkbox.directive.d.ts +1 -1
- package/compodoc/documentation.json +4895 -2139
- package/core/index.d.ts +2 -0
- package/core/src/control-value-accessor/index.d.ts +75 -0
- package/core/src/create-inject-context/assert-injector.d.ts +51 -0
- package/core/src/create-inject-context/index.d.ts +68 -0
- package/core/src/types.d.ts +23 -0
- package/esm2022/avatar/index.mjs +1 -1
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +38 -40
- package/esm2022/avatar/src/avatar-image.directive.mjs +25 -26
- package/esm2022/avatar/src/avatar-root.directive.mjs +13 -25
- package/esm2022/checkbox/index.mjs +31 -1
- package/esm2022/checkbox/src/checkbox-button.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox-input.directive.mjs +3 -3
- package/esm2022/checkbox/src/checkbox.directive.mjs +3 -3
- package/esm2022/core/index.mjs +3 -1
- package/esm2022/core/src/control-value-accessor/index.mjs +103 -0
- package/esm2022/core/src/create-inject-context/assert-injector.mjs +15 -0
- package/esm2022/core/src/create-inject-context/index.mjs +116 -0
- package/esm2022/core/src/types.mjs +2 -0
- package/esm2022/radio/index.mjs +2 -1
- package/esm2022/radio/src/radio-item-input.directive.mjs +37 -0
- package/esm2022/radio/src/radio-item.directive.mjs +55 -36
- package/esm2022/radio/src/radio-root.directive.mjs +24 -110
- package/esm2022/radio/src/radio-tokens.mjs +1 -1
- package/esm2022/roving-focus/index.mjs +3 -0
- package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +5 -0
- package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +138 -0
- package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +133 -0
- package/esm2022/roving-focus/src/utils.mjs +47 -0
- package/esm2022/select/src/select-item.directive.mjs +8 -2
- package/esm2022/slider/src/slider-orientation-context.service.mjs +3 -4
- package/esm2022/slider/src/slider-root.component.mjs +5 -2
- package/esm2022/toggle/src/toggle-input.directive.mjs +4 -3
- package/fesm2022/radix-ng-primitives-avatar.mjs +70 -85
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +35 -10
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +230 -3
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +142 -176
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +320 -0
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-select.mjs +7 -1
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +6 -4
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +3 -2
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/package.json +7 -1
- package/radio/index.d.ts +1 -0
- package/radio/src/radio-item-input.directive.d.ts +12 -0
- package/radio/src/radio-item.directive.d.ts +23 -14
- package/radio/src/radio-root.directive.d.ts +15 -31
- package/radio/src/radio-tokens.d.ts +3 -3
- package/roving-focus/README.md +3 -0
- package/roving-focus/index.d.ts +3 -0
- package/roving-focus/src/roving-focus-group.directive.d.ts +50 -0
- package/roving-focus/src/roving-focus-item.directive.d.ts +50 -0
- package/roving-focus/src/utils.d.ts +19 -0
- package/select/src/select-item.directive.d.ts +7 -1
- package/slider/src/slider-root.component.d.ts +2 -0
- package/toggle/src/toggle-input.directive.d.ts +1 -1
@@ -1,43 +1,67 @@
|
|
1
|
-
import { booleanAttribute, Directive, ElementRef, inject, InjectionToken,
|
1
|
+
import { booleanAttribute, Directive, ElementRef, inject, InjectionToken, input, signal } from '@angular/core';
|
2
|
+
import { RdxRovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';
|
2
3
|
import { RDX_RADIO_GROUP } from './radio-tokens';
|
3
4
|
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
4
6
|
export const RdxRadioItemToken = new InjectionToken('RadioItemToken');
|
5
7
|
export function injectRadioItem() {
|
6
8
|
return inject(RdxRadioItemToken);
|
7
9
|
}
|
8
|
-
// Increasing integer for generating unique ids for radio components.
|
9
|
-
let nextUniqueId = 0;
|
10
10
|
export class RdxRadioItemDirective {
|
11
11
|
constructor() {
|
12
12
|
this.radioGroup = inject(RDX_RADIO_GROUP);
|
13
|
-
this.
|
14
|
-
this.
|
15
|
-
this.
|
13
|
+
this.elementRef = inject(ElementRef);
|
14
|
+
this.value = input.required();
|
15
|
+
this.id = input();
|
16
|
+
this.required = input();
|
17
|
+
this.disabled = input(false, { transform: booleanAttribute });
|
18
|
+
this.ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
|
19
|
+
this.isArrowKeyPressedSignal = signal(false);
|
16
20
|
}
|
17
|
-
|
18
|
-
|
21
|
+
/** @ignore */
|
22
|
+
ngOnInit() {
|
23
|
+
if (this.radioGroup.defaultValue === this.value()) {
|
24
|
+
this.radioGroup.select(this.value());
|
25
|
+
}
|
19
26
|
}
|
27
|
+
/** @ignore */
|
20
28
|
get checked() {
|
21
|
-
|
29
|
+
if (this.radioGroup.value == undefined)
|
30
|
+
return false;
|
31
|
+
return this.radioGroup.value() === this.value();
|
22
32
|
}
|
23
|
-
|
24
|
-
|
25
|
-
|
33
|
+
/** @ignore */
|
34
|
+
onClick() {
|
35
|
+
if (!this.disabled()) {
|
36
|
+
this.radioGroup.select(this.value());
|
37
|
+
this.isArrowKeyPressedSignal.set(true);
|
26
38
|
}
|
27
39
|
}
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
if (!this.disabled) {
|
33
|
-
this.radioGroup.select(this.value);
|
40
|
+
/** @ignore */
|
41
|
+
onKeyDown(event) {
|
42
|
+
if (this.ARROW_KEYS.includes(event.key)) {
|
43
|
+
this.isArrowKeyPressedSignal.set(true);
|
34
44
|
}
|
35
45
|
}
|
36
|
-
|
37
|
-
|
46
|
+
/** @ignore */
|
47
|
+
onKeyUp() {
|
48
|
+
this.isArrowKeyPressedSignal.set(false);
|
49
|
+
}
|
50
|
+
/** @ignore */
|
51
|
+
onFocus() {
|
52
|
+
this.radioGroup.select(this.value());
|
53
|
+
setTimeout(() => {
|
54
|
+
/**
|
55
|
+
* When navigating with arrow keys, focus triggers on the radio item.
|
56
|
+
* To "check" the radio, we programmatically trigger a click event.
|
57
|
+
*/
|
58
|
+
if (this.isArrowKeyPressedSignal()) {
|
59
|
+
this.elementRef.nativeElement.click();
|
60
|
+
}
|
61
|
+
}, 0);
|
38
62
|
}
|
39
63
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
40
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
64
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioItemDirective, isStandalone: true, selector: "[rdxRadioItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "role": "radio" }, listeners: { "click": "onClick()", "keydown": "onKeyDown($event)", "keyup": "onKeyUp()", "focus": "onFocus()" }, properties: { "attr.aria-checked": "checked", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-state": "checked ? \"checked\" : \"unchecked\"" } }, providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }], exportAs: ["rdxRadioItem"], hostDirectives: [{ directive: i1.RdxRovingFocusItemDirective, inputs: ["tabStopId", "id", "focusable", "focusable", "active", "active", "allowShiftKey", "allowShiftKey"] }], ngImport: i0 }); }
|
41
65
|
}
|
42
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioItemDirective, decorators: [{
|
43
67
|
type: Directive,
|
@@ -46,25 +70,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
46
70
|
exportAs: 'rdxRadioItem',
|
47
71
|
standalone: true,
|
48
72
|
providers: [{ provide: RdxRadioItemToken, useExisting: RdxRadioItemDirective }],
|
73
|
+
hostDirectives: [
|
74
|
+
{ directive: RdxRovingFocusItemDirective, inputs: ['tabStopId: id', 'focusable', 'active', 'allowShiftKey'] }
|
75
|
+
],
|
49
76
|
host: {
|
50
77
|
type: 'button',
|
51
78
|
role: 'radio',
|
52
|
-
'[attr.id]': 'id',
|
53
79
|
'[attr.aria-checked]': 'checked',
|
54
|
-
'[attr.data-disabled]': 'disabled ? "" : null',
|
80
|
+
'[attr.data-disabled]': 'disabled() ? "" : null',
|
55
81
|
'[attr.data-state]': 'checked ? "checked" : "unchecked"',
|
56
|
-
'
|
57
|
-
'(
|
58
|
-
'(
|
82
|
+
'(click)': 'onClick()',
|
83
|
+
'(keydown)': 'onKeyDown($event)',
|
84
|
+
'(keyup)': 'onKeyUp()',
|
85
|
+
'(focus)': 'onFocus()'
|
59
86
|
}
|
60
87
|
}]
|
61
|
-
}]
|
62
|
-
|
63
|
-
}], value: [{
|
64
|
-
type: Input,
|
65
|
-
args: [{ required: true }]
|
66
|
-
}], disabled: [{
|
67
|
-
type: Input,
|
68
|
-
args: [{ transform: booleanAttribute }]
|
69
|
-
}] } });
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWpELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUF3QixnQkFBZ0IsQ0FBQyxDQUFDO0FBRTdGLE1BQU0sVUFBVSxlQUFlO0lBQzNCLE9BQU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELHFFQUFxRTtBQUNyRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtQnJCLE1BQU0sT0FBTyxxQkFBcUI7SUFqQmxDO1FBa0JxQixlQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLFlBQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0IsT0FBRSxHQUFHLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUlKLGFBQVEsR0FBRyxLQUFLLENBQUM7S0E2QjVEO0lBM0JHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUNsQyxDQUFDOytHQXBDUSxxQkFBcUI7bUdBQXJCLHFCQUFxQix5SEFRVixnQkFBZ0Isa1ZBckJ6QixDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDOzs0RkFhdEUscUJBQXFCO2tCQWpCakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsdUJBQXVCLEVBQUUsQ0FBQztvQkFDL0UsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixxQkFBcUIsRUFBRSxTQUFTO3dCQUNoQyxzQkFBc0IsRUFBRSxzQkFBc0I7d0JBQzlDLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsU0FBUyxFQUFFLFlBQVk7d0JBQ3ZCLFFBQVEsRUFBRSxXQUFXO3FCQUN4QjtpQkFDSjs4QkFLWSxFQUFFO3NCQUFWLEtBQUs7Z0JBRXFCLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVlLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c2FibGVPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJEWF9SQURJT19HUk9VUCB9IGZyb20gJy4vcmFkaW8tdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFJkeFJhZGlvSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFJhZGlvSXRlbURpcmVjdGl2ZT4oJ1JhZGlvSXRlbVRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSYWRpb0l0ZW0oKTogUmR4UmFkaW9JdGVtRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJkeFJhZGlvSXRlbVRva2VuKTtcbn1cblxuLy8gSW5jcmVhc2luZyBpbnRlZ2VyIGZvciBnZW5lcmF0aW5nIHVuaXF1ZSBpZHMgZm9yIHJhZGlvIGNvbXBvbmVudHMuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UmFkaW9JdGVtXScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSZHhSYWRpb0l0ZW1Ub2tlbiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvSXRlbURpcmVjdGl2ZSB9XSxcbiAgICBob3N0OiB7XG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICByb2xlOiAncmFkaW8nLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCA/IFwiXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ2NoZWNrZWQgPyBcImNoZWNrZWRcIiA6IFwidW5jaGVja2VkXCInLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAgICAgJyhjbGljayknOiAnX29uQ2xpY2soKScsXG4gICAgICAgICcoYmx1ciknOiAnX29uQmx1cigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9JdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uLCBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmFkaW9Hcm91cCA9IGluamVjdChSRFhfUkFESU9fR1JPVVApO1xuICAgIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBASW5wdXQoKSBpZCA9IGByZHgtcmFkaW8tJHsrK25leHRVbmlxdWVJZH1gO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdmFsdWUhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGdldCB0YWJJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy5yYWRpb0dyb3VwLnZhbHVlID09PSB0aGlzLnZhbHVlID8gMCA6IC0xO1xuICAgIH1cblxuICAgIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yYWRpb0dyb3VwLnZhbHVlID09PSB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yYWRpb0dyb3VwLmRlZmF1bHRWYWx1ZSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIF9vbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfb25CbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJhZGlvR3JvdXAub25Ub3VjaGVkPy4oKTtcbiAgICB9XG59XG4iXX0=
|
88
|
+
}] });
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFakQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQXdCLGdCQUFnQixDQUFDLENBQUM7QUFFN0YsTUFBTSxVQUFVLGVBQWU7SUFDM0IsT0FBTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBc0JELE1BQU0sT0FBTyxxQkFBcUI7SUFwQmxDO1FBcUJxQixlQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUVqQyxPQUFFLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFFckIsYUFBUSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBRTVCLGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFeEUsZUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakUsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBaUQ1RDtJQS9DRyxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBSSxPQUFPO1FBQ1AsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFckQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjO0lBQ2QsT0FBTztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWjs7O2VBR0c7WUFDSCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFDLENBQUM7UUFDTCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDOytHQTdEUSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw2M0JBaEJuQixDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDOzs0RkFnQnRFLHFCQUFxQjtrQkFwQmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLHVCQUF1QixFQUFFLENBQUM7b0JBQy9FLGNBQWMsRUFBRTt3QkFDWixFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsRUFBRTtxQkFBQztvQkFFbEgsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLHNCQUFzQixFQUFFLHdCQUF3Qjt3QkFDaEQsbUJBQW1CLEVBQUUsbUNBQW1DO3dCQUN4RCxTQUFTLEVBQUUsV0FBVzt3QkFDdEIsV0FBVyxFQUFFLG1CQUFtQjt3QkFDaEMsU0FBUyxFQUFFLFdBQVc7d0JBQ3RCLFNBQVMsRUFBRSxXQUFXO3FCQUN6QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIGlucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IFJEWF9SQURJT19HUk9VUCB9IGZyb20gJy4vcmFkaW8tdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFJkeFJhZGlvSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJkeFJhZGlvSXRlbURpcmVjdGl2ZT4oJ1JhZGlvSXRlbVRva2VuJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSYWRpb0l0ZW0oKTogUmR4UmFkaW9JdGVtRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJkeFJhZGlvSXRlbVRva2VuKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UmFkaW9JdGVtXScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb0l0ZW0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSZHhSYWRpb0l0ZW1Ub2tlbiwgdXNlRXhpc3Rpbmc6IFJkeFJhZGlvSXRlbURpcmVjdGl2ZSB9XSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7IGRpcmVjdGl2ZTogUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlLCBpbnB1dHM6IFsndGFiU3RvcElkOiBpZCcsICdmb2N1c2FibGUnLCAnYWN0aXZlJywgJ2FsbG93U2hpZnRLZXknXSB9XSxcblxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHJvbGU6ICdyYWRpbycsXG4gICAgICAgICdbYXR0ci5hcmlhLWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQoKSA/IFwiXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ2NoZWNrZWQgPyBcImNoZWNrZWRcIiA6IFwidW5jaGVja2VkXCInLFxuICAgICAgICAnKGNsaWNrKSc6ICdvbkNsaWNrKCknLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5RG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhrZXl1cCknOiAnb25LZXlVcCgpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9JdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhZGlvR3JvdXAgPSBpbmplY3QoUkRYX1JBRElPX0dST1VQKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICByZWFkb25seSB2YWx1ZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICAgIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgcmVhZG9ubHkgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gICAgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgQVJST1dfS0VZUyA9IFsnQXJyb3dVcCcsICdBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzQXJyb3dLZXlQcmVzc2VkU2lnbmFsID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJhZGlvR3JvdXAuZGVmYXVsdFZhbHVlID09PSB0aGlzLnZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnJhZGlvR3JvdXAudmFsdWUgPT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmFkaW9Hcm91cC52YWx1ZSgpID09PSB0aGlzLnZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdCh0aGlzLnZhbHVlKCkpO1xuICAgICAgICAgICAgdGhpcy5pc0Fycm93S2V5UHJlc3NlZFNpZ25hbC5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5BUlJPV19LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNBcnJvd0tleVByZXNzZWRTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvbktleVVwKCkge1xuICAgICAgICB0aGlzLmlzQXJyb3dLZXlQcmVzc2VkU2lnbmFsLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBvbkZvY3VzKCkge1xuICAgICAgICB0aGlzLnJhZGlvR3JvdXAuc2VsZWN0KHRoaXMudmFsdWUoKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGVuIG5hdmlnYXRpbmcgd2l0aCBhcnJvdyBrZXlzLCBmb2N1cyB0cmlnZ2VycyBvbiB0aGUgcmFkaW8gaXRlbS5cbiAgICAgICAgICAgICAqIFRvIFwiY2hlY2tcIiB0aGUgcmFkaW8sIHdlIHByb2dyYW1tYXRpY2FsbHkgdHJpZ2dlciBhIGNsaWNrIGV2ZW50LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Fycm93S2V5UHJlc3NlZFNpZ25hbCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxufVxuIl19
|
@@ -1,23 +1,13 @@
|
|
1
|
-
import {
|
2
|
-
import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, TAB, UP_ARROW } from '@angular/cdk/keycodes';
|
3
|
-
import { booleanAttribute, ContentChildren, Directive, EventEmitter, Input, Output, QueryList } from '@angular/core';
|
1
|
+
import { booleanAttribute, Directive, EventEmitter, Input, model, Output } from '@angular/core';
|
4
2
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
5
|
-
import {
|
6
|
-
import { RdxRadioItemDirective } from './radio-item.directive';
|
3
|
+
import { RdxRovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';
|
7
4
|
import { RDX_RADIO_GROUP } from './radio-tokens';
|
8
5
|
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
9
7
|
export class RdxRadioGroupDirective {
|
10
8
|
constructor() {
|
11
|
-
this.
|
9
|
+
this.value = model();
|
12
10
|
this.disabled = false;
|
13
|
-
/**
|
14
|
-
* The orientation of the radio group only vertical.
|
15
|
-
* Horizontal radio buttons can sometimes be challenging to scan and localize.
|
16
|
-
* The horizontal arrangement of radio buttons may also lead to difficulties in determining which
|
17
|
-
* label corresponds to which button: whether the label is above or below the button.
|
18
|
-
* @default 'vertical'
|
19
|
-
*/
|
20
|
-
this._orientation = 'vertical';
|
21
11
|
/**
|
22
12
|
* Event handler called when the value changes.
|
23
13
|
*/
|
@@ -30,131 +20,60 @@ export class RdxRadioGroupDirective {
|
|
30
20
|
};
|
31
21
|
/**
|
32
22
|
* The callback function to call when the radio group is touched.
|
23
|
+
* @ignore
|
33
24
|
*/
|
34
25
|
this.onTouched = () => {
|
35
26
|
/* Empty */
|
36
27
|
};
|
37
28
|
}
|
38
|
-
ngAfterContentInit() {
|
39
|
-
this.focusKeyManager = new FocusKeyManager(this.radioItems).withWrap().withVerticalOrientation();
|
40
|
-
this.radioItems.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
41
|
-
this.updateActiveItem();
|
42
|
-
});
|
43
|
-
this.updateActiveItem(false);
|
44
|
-
}
|
45
|
-
ngOnDestroy() {
|
46
|
-
this.destroy$.next();
|
47
|
-
this.destroy$.complete();
|
48
|
-
}
|
49
29
|
/**
|
50
30
|
* Select a radio item.
|
51
31
|
* @param value The value of the radio item to select.
|
32
|
+
* @ignore
|
52
33
|
*/
|
53
34
|
select(value) {
|
54
|
-
this.value
|
35
|
+
this.value.set(value);
|
55
36
|
this.onValueChange.emit(value);
|
56
37
|
this.onChange?.(value);
|
57
|
-
this.updateActiveItem();
|
58
38
|
this.onTouched();
|
59
39
|
}
|
60
40
|
/**
|
61
41
|
* Update the value of the radio group.
|
62
42
|
* @param value The new value of the radio group.
|
63
|
-
* @
|
43
|
+
* @ignore
|
64
44
|
*/
|
65
45
|
writeValue(value) {
|
66
|
-
this.value
|
67
|
-
if (this.radioItems) {
|
68
|
-
this.updateActiveItem(false);
|
69
|
-
}
|
46
|
+
this.value.set(value);
|
70
47
|
}
|
71
48
|
/**
|
72
49
|
* Register a callback function to call when the value of the radio group changes.
|
73
50
|
* @param fn The callback function to call when the value of the radio group changes.
|
74
|
-
* @
|
51
|
+
* @ignore
|
75
52
|
*/
|
76
53
|
registerOnChange(fn) {
|
77
54
|
this.onChange = fn;
|
78
55
|
}
|
56
|
+
/** @ignore */
|
79
57
|
registerOnTouched(fn) {
|
80
58
|
this.onTouched = fn;
|
81
59
|
}
|
82
60
|
/**
|
83
61
|
* Set the disabled state of the radio group.
|
84
62
|
* @param isDisabled Whether the radio group is disabled.
|
85
|
-
* @
|
63
|
+
* @ignore
|
86
64
|
*/
|
87
65
|
setDisabledState(isDisabled) {
|
88
66
|
this.disabled = isDisabled;
|
89
67
|
}
|
90
|
-
|
91
|
-
* When focus leaves the radio group.
|
92
|
-
*/
|
93
|
-
onFocusin(event) {
|
94
|
-
const target = event.target;
|
95
|
-
const radioItem = this.radioItems.find((item) => item.element.nativeElement === target);
|
96
|
-
if (radioItem) {
|
97
|
-
this.focusKeyManager.setActiveItem(radioItem);
|
98
|
-
}
|
99
|
-
}
|
100
|
-
onKeydown(event) {
|
68
|
+
onKeydown() {
|
101
69
|
if (this.disabled)
|
102
70
|
return;
|
103
|
-
switch (event.keyCode) {
|
104
|
-
case ENTER:
|
105
|
-
case SPACE:
|
106
|
-
event.preventDefault();
|
107
|
-
this.selectFocusedItem();
|
108
|
-
break;
|
109
|
-
case DOWN_ARROW:
|
110
|
-
case RIGHT_ARROW:
|
111
|
-
event.preventDefault();
|
112
|
-
this.focusKeyManager.setNextItemActive();
|
113
|
-
this.selectFocusedItem();
|
114
|
-
break;
|
115
|
-
case UP_ARROW:
|
116
|
-
case LEFT_ARROW:
|
117
|
-
event.preventDefault();
|
118
|
-
this.focusKeyManager.setPreviousItemActive();
|
119
|
-
this.selectFocusedItem();
|
120
|
-
break;
|
121
|
-
case TAB:
|
122
|
-
this.tabNavigation(event);
|
123
|
-
break;
|
124
|
-
default:
|
125
|
-
this.focusKeyManager.onKeydown(event);
|
126
|
-
}
|
127
|
-
}
|
128
|
-
selectFocusedItem() {
|
129
|
-
const focusedItem = this.focusKeyManager.activeItem;
|
130
|
-
if (focusedItem) {
|
131
|
-
this.select(focusedItem.value);
|
132
|
-
}
|
133
|
-
}
|
134
|
-
updateActiveItem(setFocus = true) {
|
135
|
-
const activeItem = this.radioItems.find((item) => item.value === this.value);
|
136
|
-
if (activeItem) {
|
137
|
-
this.focusKeyManager.setActiveItem(activeItem);
|
138
|
-
}
|
139
|
-
else if (this.radioItems.length > 0 && setFocus) {
|
140
|
-
this.focusKeyManager.setFirstItemActive();
|
141
|
-
}
|
142
|
-
}
|
143
|
-
tabNavigation(event) {
|
144
|
-
event.preventDefault();
|
145
|
-
const checkedItem = this.radioItems.find((item) => item.checked);
|
146
|
-
if (checkedItem) {
|
147
|
-
checkedItem.focus();
|
148
|
-
}
|
149
|
-
else if (this.radioItems.first) {
|
150
|
-
this.radioItems.first.focus();
|
151
|
-
}
|
152
71
|
}
|
153
72
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
154
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
73
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: RdxRadioGroupDirective, isStandalone: true, selector: "[rdxRadioRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onValueChange: "onValueChange" }, host: { attributes: { "role": "radiogroup" }, listeners: { "keydown": "onKeydown()" }, properties: { "attr.aria-orientation": "orientation", "attr.data-disabled": "disabled ? \"\" : null" } }, providers: [
|
155
74
|
{ provide: RDX_RADIO_GROUP, useExisting: RdxRadioGroupDirective },
|
156
75
|
{ provide: NG_VALUE_ACCESSOR, useExisting: RdxRadioGroupDirective, multi: true }
|
157
|
-
],
|
76
|
+
], exportAs: ["rdxRadioRoot"], hostDirectives: [{ directive: i1.RdxRovingFocusGroupDirective, inputs: ["dir", "dir", "orientation", "orientation", "loop", "loop"] }], ngImport: i0 }); }
|
158
77
|
}
|
159
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRadioGroupDirective, decorators: [{
|
160
79
|
type: Directive,
|
@@ -166,29 +85,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
166
85
|
{ provide: RDX_RADIO_GROUP, useExisting: RdxRadioGroupDirective },
|
167
86
|
{ provide: NG_VALUE_ACCESSOR, useExisting: RdxRadioGroupDirective, multi: true }
|
168
87
|
],
|
88
|
+
hostDirectives: [{ directive: RdxRovingFocusGroupDirective, inputs: ['dir', 'orientation', 'loop'] }],
|
169
89
|
host: {
|
170
90
|
role: 'radiogroup',
|
171
|
-
'[attr.aria-orientation]': '
|
91
|
+
'[attr.aria-orientation]': 'orientation',
|
172
92
|
'[attr.data-disabled]': 'disabled ? "" : null',
|
173
|
-
'
|
174
|
-
'[attr.dir]': 'dir',
|
175
|
-
'(keydown)': 'onKeydown($event)',
|
176
|
-
'(focusin)': 'onFocusin($event)'
|
93
|
+
'(keydown)': 'onKeydown()'
|
177
94
|
}
|
178
95
|
}]
|
179
|
-
}], propDecorators: {
|
180
|
-
type: ContentChildren,
|
181
|
-
args: [RdxRadioItemDirective, { descendants: true }]
|
182
|
-
}], value: [{
|
183
|
-
type: Input
|
184
|
-
}], disabled: [{
|
96
|
+
}], propDecorators: { disabled: [{
|
185
97
|
type: Input,
|
186
98
|
args: [{ transform: booleanAttribute }]
|
187
|
-
}], dir: [{
|
188
|
-
type: Input
|
189
99
|
}], defaultValue: [{
|
190
100
|
type: Input
|
101
|
+
}], required: [{
|
102
|
+
type: Input
|
103
|
+
}], orientation: [{
|
104
|
+
type: Input
|
191
105
|
}], onValueChange: [{
|
192
106
|
type: Output
|
193
107
|
}] } });
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tcm9vdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pHLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBd0MsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBb0J2RixNQUFNLE9BQU8sc0JBQXNCO0lBbEJuQztRQXVCWSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUtDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFNekQ7Ozs7OztXQU1HO1FBQ00saUJBQVksR0FBRyxVQUFVLENBQUM7UUFFbkM7O1dBRUc7UUFDZ0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTlEOztXQUVHO1FBQ0ssYUFBUSxHQUE0QixHQUFHLEVBQUU7WUFDN0MsV0FBVztRQUNmLENBQUMsQ0FBQztRQUVGOztXQUVHO1FBQ0gsY0FBUyxHQUFlLEdBQUcsRUFBRTtZQUN6QixXQUFXO1FB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LElBQUksRUFBRTtnQkFLcEQsS0FBSztzQkFBYixLQUFLO2dCQUVrQyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU3QixHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFjYSxhQUFhO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBTUEFDRSwgVEFCLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmR4UmFkaW9JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9yYWRpby1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSYWRpb0dyb3VwRGlyZWN0aXZlLCBSYWRpb0dyb3VwUHJvcHMsIFJEWF9SQURJT19HUk9VUCB9IGZyb20gJy4vcmFkaW8tdG9rZW5zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4UmFkaW9Sb290XScsXG4gICAgZXhwb3J0QXM6ICdyZHhSYWRpb1Jvb3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogUkRYX1JBRElPX0dST1VQLCB1c2VFeGlzdGluZzogUmR4UmFkaW9Hcm91cERpcmVjdGl2ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogUmR4UmFkaW9Hcm91cERpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmFkaW9ncm91cCcsXG4gICAgICAgICdbYXR0ci5hcmlhLW9yaWVudGF0aW9uXSc6ICdfb3JpZW50YXRpb24nLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQgPyBcIlwiIDogbnVsbCcsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnLFxuICAgICAgICAnW2F0dHIuZGlyXSc6ICdkaXInLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1c2luKSc6ICdvbkZvY3VzaW4oJGV2ZW50KSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFJhZGlvR3JvdXBEaXJlY3RpdmVcbiAgICBpbXBsZW1lbnRzIFJhZGlvR3JvdXBQcm9wcywgUmFkaW9Hcm91cERpcmVjdGl2ZSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveVxue1xuICAgIEBDb250ZW50Q2hpbGRyZW4oUmR4UmFkaW9JdGVtRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHJhZGlvSXRlbXMhOiBRdWVyeUxpc3Q8UmR4UmFkaW9JdGVtRGlyZWN0aXZlPjtcbiAgICBwcml2YXRlIGZvY3VzS2V5TWFuYWdlciE6IEZvY3VzS2V5TWFuYWdlcjxSZHhSYWRpb0l0ZW1EaXJlY3RpdmU+O1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgbmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSB2YWx1ZT86IHN0cmluZztcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGlyPzogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSByYWRpbyBncm91cCBvbmx5IHZlcnRpY2FsLlxuICAgICAqIEhvcml6b250YWwgcmFkaW8gYnV0dG9ucyBjYW4gc29tZXRpbWVzIGJlIGNoYWxsZW5naW5nIHRvIHNjYW4gYW5kIGxvY2FsaXplLlxuICAgICAqIFRoZSBob3Jpem9udGFsIGFycmFuZ2VtZW50IG9mIHJhZGlvIGJ1dHRvbnMgbWF5IGFsc28gbGVhZCB0byBkaWZmaWN1bHRpZXMgaW4gZGV0ZXJtaW5pbmcgd2hpY2hcbiAgICAgKiBsYWJlbCBjb3JyZXNwb25kcyB0byB3aGljaCBidXR0b246IHdoZXRoZXIgdGhlIGxhYmVsIGlzIGFib3ZlIG9yIGJlbG93IHRoZSBidXR0b24uXG4gICAgICogQGRlZmF1bHQgJ3ZlcnRpY2FsJ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IF9vcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gZ3JvdXAgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgLyogRW1wdHkgKi9cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgcmFkaW8gZ3JvdXAgaXMgdG91Y2hlZC5cbiAgICAgKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8qIEVtcHR5ICovXG4gICAgfTtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMucmFkaW9JdGVtcykud2l0aFdyYXAoKS53aXRoVmVydGljYWxPcmllbnRhdGlvbigpO1xuXG4gICAgICAgIHRoaXMucmFkaW9JdGVtcy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlSXRlbShmYWxzZSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGEgcmFkaW8gaXRlbS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSByYWRpbyBpdGVtIHRvIHNlbGVjdC5cbiAgICAgKi9cbiAgICBzZWxlY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZT8uKHZhbHVlKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVJdGVtKCk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gZ3JvdXAuXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnJhZGlvSXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlSXRlbShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIGRpc2FibGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGZvY3VzIGxlYXZlcyB0aGUgcmFkaW8gZ3JvdXAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uRm9jdXNpbihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJhZGlvSXRlbSA9IHRoaXMucmFkaW9JdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudCA9PT0gdGFyZ2V0KTtcbiAgICAgICAgaWYgKHJhZGlvSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShyYWRpb0l0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBFTlRFUjpcbiAgICAgICAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZvY3VzZWRJdGVtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZvY3VzZWRJdGVtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFVQX0FSUk9XOlxuICAgICAgICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RGb2N1c2VkSXRlbSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUQUI6XG4gICAgICAgICAgICAgICAgdGhpcy50YWJOYXZpZ2F0aW9uKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0Rm9jdXNlZEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbTtcbiAgICAgICAgaWYgKGZvY3VzZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdChmb2N1c2VkSXRlbS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUFjdGl2ZUl0ZW0oc2V0Rm9jdXMgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLnJhZGlvSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgIGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGFjdGl2ZUl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmFkaW9JdGVtcy5sZW5ndGggPiAwICYmIHNldEZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdGFiTmF2aWdhdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjaGVja2VkSXRlbSA9IHRoaXMucmFkaW9JdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmNoZWNrZWQpO1xuICAgICAgICBpZiAoY2hlY2tlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNoZWNrZWRJdGVtLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yYWRpb0l0ZW1zLmZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLnJhZGlvSXRlbXMuZmlyc3QuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tcm9vdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1yb290LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFlLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUYsT0FBTyxFQUF3QyxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBa0J2RixNQUFNLE9BQU8sc0JBQXNCO0lBaEJuQztRQWlCYSxVQUFLLEdBQUcsS0FBSyxFQUFzQixDQUFDO1FBRUwsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVF6RDs7V0FFRztRQUNnQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFOUQ7O1dBRUc7UUFDSyxhQUFRLEdBQTRCLEdBQUcsRUFBRTtZQUM3QyxXQUFXO1FBQ2YsQ0FBQyxDQUFDO1FBRUY7OztXQUdHO1FBQ0gsY0FBUyxHQUFlLEdBQUcsRUFBRTtZQUN6QixXQUFXO1FBQ2YsQ0FBQyxDQUFDO0tBaURMO0lBL0NHOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBYTtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxFQUEyQjtRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYztJQUNkLGlCQUFpQixDQUFDLEVBQWM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRVMsU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO0lBQzlCLENBQUM7K0dBN0VRLHNCQUFzQjttR0FBdEIsc0JBQXNCLDhTQUdYLGdCQUFnQixnckJBZnpCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNqRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNuRjs7NEZBU1Esc0JBQXNCO2tCQWhCbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDakUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNuRjtvQkFDRCxjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3JHLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsWUFBWTt3QkFDbEIseUJBQXlCLEVBQUUsYUFBYTt3QkFDeEMsc0JBQXNCLEVBQUUsc0JBQXNCO3dCQUM5QyxXQUFXLEVBQUUsYUFBYTtxQkFDN0I7aUJBQ0o7OEJBSTJDLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTdCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUthLGFBQWE7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIG1vZGVsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9yaWVudGF0aW9uLCBSZHhSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IFJhZGlvR3JvdXBEaXJlY3RpdmUsIFJhZGlvR3JvdXBQcm9wcywgUkRYX1JBRElPX0dST1VQIH0gZnJvbSAnLi9yYWRpby10b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhSYWRpb1Jvb3RdJyxcbiAgICBleHBvcnRBczogJ3JkeFJhZGlvUm9vdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBSRFhfUkFESU9fR1JPVVAsIHVzZUV4aXN0aW5nOiBSZHhSYWRpb0dyb3VwRGlyZWN0aXZlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBSZHhSYWRpb0dyb3VwRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9XG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW3sgZGlyZWN0aXZlOiBSZHhSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlLCBpbnB1dHM6IFsnZGlyJywgJ29yaWVudGF0aW9uJywgJ2xvb3AnXSB9XSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdyYWRpb2dyb3VwJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtb3JpZW50YXRpb25dJzogJ29yaWVudGF0aW9uJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkID8gXCJcIiA6IG51bGwnLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bigpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4UmFkaW9Hcm91cERpcmVjdGl2ZSBpbXBsZW1lbnRzIFJhZGlvR3JvdXBQcm9wcywgUmFkaW9Hcm91cERpcmVjdGl2ZSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHJlYWRvbmx5IHZhbHVlID0gbW9kZWw8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uOiBPcmllbnRhdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAvKiBFbXB0eSAqL1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSByYWRpbyBncm91cCBpcyB0b3VjaGVkLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICAgIC8qIEVtcHR5ICovXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhIHJhZGlvIGl0ZW0uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gaXRlbSB0byBzZWxlY3QuXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHNlbGVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlPy4odmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlIG9mIHRoZSByYWRpbyBncm91cC5cbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIGRpc2FibGVkLlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uS2V5ZG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB9XG59XG4iXX0=
|
@@ -1,3 +1,3 @@
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
2
2
|
export const RDX_RADIO_GROUP = new InjectionToken('RdxRadioGroup');
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yYWRpby9zcmMvcmFkaW8tdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFlNUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFzQixlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBNb2RlbFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvR3JvdXBQcm9wcyB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIHZhbHVlPzogTW9kZWxTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0dyb3VwRGlyZWN0aXZlIGV4dGVuZHMgUmFkaW9Hcm91cFByb3BzIHtcbiAgICBzZWxlY3QodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQ7XG5cbiAgICBvblRvdWNoZWQoKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IFJEWF9SQURJT19HUk9VUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSYWRpb0dyb3VwRGlyZWN0aXZlPignUmR4UmFkaW9Hcm91cCcpO1xuIl19
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export * from './src/roving-focus-group.directive';
|
2
|
+
export * from './src/roving-focus-item.directive';
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCB0eXBlIHsgRGlyZWN0aW9uLCBPcmllbnRhdGlvbiB9IGZyb20gJy4vc3JjL3V0aWxzJztcbiJdfQ==
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1yb3ZpbmctZm9jdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9yYWRpeC1uZy1wcmltaXRpdmVzLXJvdmluZy1mb2N1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
@@ -0,0 +1,138 @@
|
|
1
|
+
import { booleanAttribute, Directive, ElementRef, EventEmitter, inject, Input, NgZone, Output, signal } from '@angular/core';
|
2
|
+
import { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export class RdxRovingFocusGroupDirective {
|
5
|
+
constructor() {
|
6
|
+
this.ngZone = inject(NgZone);
|
7
|
+
this.elementRef = inject(ElementRef);
|
8
|
+
this.dir = 'ltr';
|
9
|
+
this.loop = true;
|
10
|
+
this.preventScrollOnEntryFocus = false;
|
11
|
+
this.entryFocus = new EventEmitter();
|
12
|
+
this.currentTabStopIdChange = new EventEmitter();
|
13
|
+
/** @ignore */
|
14
|
+
this.currentTabStopId = signal(null);
|
15
|
+
/** @ignore */
|
16
|
+
this.focusableItems = signal([]);
|
17
|
+
this.isClickFocus = signal(false);
|
18
|
+
this.isTabbingBackOut = signal(false);
|
19
|
+
this.focusableItemsCount = signal(0);
|
20
|
+
}
|
21
|
+
/** @ignore */
|
22
|
+
get dataOrientation() {
|
23
|
+
return this.orientation || 'horizontal';
|
24
|
+
}
|
25
|
+
/** @ignore */
|
26
|
+
get tabIndex() {
|
27
|
+
return this.isTabbingBackOut() || this.getFocusableItemsCount() === 0 ? -1 : 0;
|
28
|
+
}
|
29
|
+
/** @ignore */
|
30
|
+
handleBlur() {
|
31
|
+
this.isTabbingBackOut.set(false);
|
32
|
+
}
|
33
|
+
/** @ignore */
|
34
|
+
handleMouseUp() {
|
35
|
+
// reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element
|
36
|
+
this.ngZone.runOutsideAngular(() => {
|
37
|
+
// eslint-disable-next-line promise/catch-or-return,promise/always-return
|
38
|
+
Promise.resolve().then(() => {
|
39
|
+
this.ngZone.run(() => {
|
40
|
+
this.isClickFocus.set(false);
|
41
|
+
});
|
42
|
+
});
|
43
|
+
});
|
44
|
+
}
|
45
|
+
/** @ignore */
|
46
|
+
handleFocus(event) {
|
47
|
+
// We normally wouldn't need this check, because we already check
|
48
|
+
// that the focus is on the current target and not bubbling to it.
|
49
|
+
// We do this because Safari doesn't focus buttons when clicked, and
|
50
|
+
// instead, the wrapper will get focused and not through a bubbling event.
|
51
|
+
const isKeyboardFocus = !this.isClickFocus();
|
52
|
+
if (event.currentTarget === this.elementRef.nativeElement &&
|
53
|
+
event.target === event.currentTarget &&
|
54
|
+
isKeyboardFocus &&
|
55
|
+
!this.isTabbingBackOut()) {
|
56
|
+
const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
|
57
|
+
this.elementRef.nativeElement.dispatchEvent(entryFocusEvent);
|
58
|
+
this.entryFocus.emit(entryFocusEvent);
|
59
|
+
if (!entryFocusEvent.defaultPrevented) {
|
60
|
+
const items = this.focusableItems().filter((item) => item.dataset['disabled'] !== '');
|
61
|
+
const activeItem = items.find((item) => item.getAttribute('data-active') === 'true');
|
62
|
+
const currentItem = items.find((item) => item.id === this.currentTabStopId());
|
63
|
+
const candidateItems = [activeItem, currentItem, ...items].filter(Boolean);
|
64
|
+
focusFirst(candidateItems, this.preventScrollOnEntryFocus);
|
65
|
+
}
|
66
|
+
}
|
67
|
+
this.isClickFocus.set(false);
|
68
|
+
}
|
69
|
+
/** @ignore */
|
70
|
+
handleMouseDown() {
|
71
|
+
this.isClickFocus.set(true);
|
72
|
+
}
|
73
|
+
/** @ignore */
|
74
|
+
onItemFocus(tabStopId) {
|
75
|
+
this.currentTabStopId.set(tabStopId);
|
76
|
+
this.currentTabStopIdChange.emit(tabStopId);
|
77
|
+
}
|
78
|
+
/** @ignore */
|
79
|
+
onItemShiftTab() {
|
80
|
+
this.isTabbingBackOut.set(true);
|
81
|
+
}
|
82
|
+
/** @ignore */
|
83
|
+
onFocusableItemAdd() {
|
84
|
+
this.focusableItemsCount.update((count) => count + 1);
|
85
|
+
}
|
86
|
+
/** @ignore */
|
87
|
+
onFocusableItemRemove() {
|
88
|
+
this.focusableItemsCount.update((count) => Math.max(0, count - 1));
|
89
|
+
}
|
90
|
+
/** @ignore */
|
91
|
+
registerItem(item) {
|
92
|
+
const currentItems = this.focusableItems();
|
93
|
+
this.focusableItems.set([...currentItems, item]);
|
94
|
+
}
|
95
|
+
/** @ignore */
|
96
|
+
unregisterItem(item) {
|
97
|
+
const currentItems = this.focusableItems();
|
98
|
+
this.focusableItems.set(currentItems.filter((el) => el !== item));
|
99
|
+
}
|
100
|
+
/** @ignore */
|
101
|
+
getFocusableItemsCount() {
|
102
|
+
return this.focusableItemsCount();
|
103
|
+
}
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
105
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxRovingFocusGroupDirective, isStandalone: true, selector: "[rdxRovingFocusGroup]", inputs: { orientation: "orientation", dir: "dir", loop: ["loop", "loop", booleanAttribute], preventScrollOnEntryFocus: ["preventScrollOnEntryFocus", "preventScrollOnEntryFocus", booleanAttribute] }, outputs: { entryFocus: "entryFocus", currentTabStopIdChange: "currentTabStopIdChange" }, host: { listeners: { "focus": "handleFocus($event)", "blur": "handleBlur()", "mouseup": "handleMouseUp()", "mousedown": "handleMouseDown()" }, properties: { "attr.data-orientation": "dataOrientation", "attr.tabindex": "tabIndex", "attr.dir": "dir" }, styleAttribute: "outline: none;" }, ngImport: i0 }); }
|
106
|
+
}
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, decorators: [{
|
108
|
+
type: Directive,
|
109
|
+
args: [{
|
110
|
+
selector: '[rdxRovingFocusGroup]',
|
111
|
+
standalone: true,
|
112
|
+
host: {
|
113
|
+
'[attr.data-orientation]': 'dataOrientation',
|
114
|
+
'[attr.tabindex]': 'tabIndex',
|
115
|
+
'[attr.dir]': 'dir',
|
116
|
+
'(focus)': 'handleFocus($event)',
|
117
|
+
'(blur)': 'handleBlur()',
|
118
|
+
'(mouseup)': 'handleMouseUp()',
|
119
|
+
'(mousedown)': 'handleMouseDown()',
|
120
|
+
style: 'outline: none;'
|
121
|
+
}
|
122
|
+
}]
|
123
|
+
}], propDecorators: { orientation: [{
|
124
|
+
type: Input
|
125
|
+
}], dir: [{
|
126
|
+
type: Input
|
127
|
+
}], loop: [{
|
128
|
+
type: Input,
|
129
|
+
args: [{ transform: booleanAttribute }]
|
130
|
+
}], preventScrollOnEntryFocus: [{
|
131
|
+
type: Input,
|
132
|
+
args: [{ transform: booleanAttribute }]
|
133
|
+
}], entryFocus: [{
|
134
|
+
type: Output
|
135
|
+
}], currentTabStopIdChange: [{
|
136
|
+
type: Output
|
137
|
+
}] } });
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQWUsTUFBTSxTQUFTLENBQUM7O0FBZ0J6RixNQUFNLE9BQU8sNEJBQTRCO0lBZHpDO1FBZXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUd4QyxRQUFHLEdBQWMsS0FBSyxDQUFDO1FBQ1EsU0FBSSxHQUFZLElBQUksQ0FBQztRQUNyQiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFFekUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDdkMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFckUsY0FBYztRQUNMLHFCQUFnQixHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFeEQsY0FBYztRQUNMLG1CQUFjLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUVuQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBc0dwRDtJQXBHRyxjQUFjO0lBQ2Qs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Q0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7K0dBekhRLDRCQUE0QjttR0FBNUIsNEJBQTRCLGtJQU1qQixnQkFBZ0IseUZBQ2hCLGdCQUFnQjs7NEZBUDNCLDRCQUE0QjtrQkFkeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLHlCQUF5QixFQUFFLGlCQUFpQjt3QkFDNUMsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFNBQVMsRUFBRSxxQkFBcUI7d0JBQ2hDLFFBQVEsRUFBRSxjQUFjO3dCQUN4QixXQUFXLEVBQUUsaUJBQWlCO3dCQUM5QixhQUFhLEVBQUUsbUJBQW1CO3dCQUNsQyxLQUFLLEVBQUUsZ0JBQWdCO3FCQUMxQjtpQkFDSjs4QkFLWSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDa0MsSUFBSTtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSx5QkFBeUI7c0JBQWhFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTVCLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24sIEVOVFJZX0ZPQ1VTLCBFVkVOVF9PUFRJT05TLCBmb2N1c0ZpcnN0LCBPcmllbnRhdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhSb3ZpbmdGb2N1c0dyb3VwXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdkYXRhT3JpZW50YXRpb24nLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAgICAgJ1thdHRyLmRpcl0nOiAnZGlyJyxcbiAgICAgICAgJyhmb2N1cyknOiAnaGFuZGxlRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnaGFuZGxlQmx1cigpJyxcbiAgICAgICAgJyhtb3VzZXVwKSc6ICdoYW5kbGVNb3VzZVVwKCknLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnaGFuZGxlTW91c2VEb3duKCknLFxuICAgICAgICBzdHlsZTogJ291dGxpbmU6IG5vbmU7J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogT3JpZW50YXRpb24gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbG9vcDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBlbnRyeUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgY3VycmVudFRhYlN0b3BJZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgY3VycmVudFRhYlN0b3BJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVhZG9ubHkgZm9jdXNhYmxlSXRlbXMgPSBzaWduYWw8SFRNTEVsZW1lbnRbXT4oW10pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0NsaWNrRm9jdXMgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNUYWJiaW5nQmFja091dCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c2FibGVJdGVtc0NvdW50ID0gc2lnbmFsKDApO1xuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXQgZGF0YU9yaWVudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiB8fCAnaG9yaXpvbnRhbCc7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVGFiYmluZ0JhY2tPdXQoKSB8fCB0aGlzLmdldEZvY3VzYWJsZUl0ZW1zQ291bnQoKSA9PT0gMCA/IC0xIDogMDtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZUJsdXIoKSB7XG4gICAgICAgIHRoaXMuaXNUYWJiaW5nQmFja091dC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlTW91c2VVcCgpIHtcbiAgICAgICAgLy8gcmVzZXQgYGlzQ2xpY2tGb2N1c2AgYWZ0ZXIgMSB0aWNrIGJlY2F1c2UgaGFuZGxlRm9jdXMgbWlnaHQgbm90IHRyaWdnZXJlZCBkdWUgdG8gZm9jdXNlZCBlbGVtZW50XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL2NhdGNoLW9yLXJldHVybixwcm9taXNlL2Fsd2F5cy1yZXR1cm5cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICAvLyBXZSBub3JtYWxseSB3b3VsZG4ndCBuZWVkIHRoaXMgY2hlY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVja1xuICAgICAgICAvLyB0aGF0IHRoZSBmb2N1cyBpcyBvbiB0aGUgY3VycmVudCB0YXJnZXQgYW5kIG5vdCBidWJibGluZyB0byBpdC5cbiAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIFNhZmFyaSBkb2Vzbid0IGZvY3VzIGJ1dHRvbnMgd2hlbiBjbGlja2VkLCBhbmRcbiAgICAgICAgLy8gaW5zdGVhZCwgdGhlIHdyYXBwZXIgd2lsbCBnZXQgZm9jdXNlZCBhbmQgbm90IHRocm91Z2ggYSBidWJibGluZyBldmVudC5cbiAgICAgICAgY29uc3QgaXNLZXlib2FyZEZvY3VzID0gIXRoaXMuaXNDbGlja0ZvY3VzKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCA9PT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJlxuICAgICAgICAgICAgaXNLZXlib2FyZEZvY3VzICYmXG4gICAgICAgICAgICAhdGhpcy5pc1RhYmJpbmdCYWNrT3V0KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeUZvY3VzRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoRU5UUllfRk9DVVMsIEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChlbnRyeUZvY3VzRXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5lbnRyeUZvY3VzLmVtaXQoZW50cnlGb2N1c0V2ZW50KTtcblxuICAgICAgICAgICAgaWYgKCFlbnRyeUZvY3VzRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5mb2N1c2FibGVJdGVtcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5kYXRhc2V0WydkaXNhYmxlZCddICE9PSAnJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWFjdGl2ZScpID09PSAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5jdXJyZW50VGFiU3RvcElkKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUl0ZW1zID0gW2FjdGl2ZUl0ZW0sIGN1cnJlbnRJdGVtLCAuLi5pdGVtc10uZmlsdGVyKEJvb2xlYW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICAgICAgICAgICAgICBmb2N1c0ZpcnN0KGNhbmRpZGF0ZUl0ZW1zLCB0aGlzLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVNb3VzZURvd24oKSB7XG4gICAgICAgIHRoaXMuaXNDbGlja0ZvY3VzLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uSXRlbUZvY3VzKHRhYlN0b3BJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYlN0b3BJZC5zZXQodGFiU3RvcElkKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiU3RvcElkQ2hhbmdlLmVtaXQodGFiU3RvcElkKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uSXRlbVNoaWZ0VGFiKCkge1xuICAgICAgICB0aGlzLmlzVGFiYmluZ0JhY2tPdXQuc2V0KHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgb25Gb2N1c2FibGVJdGVtQWRkKCkge1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zQ291bnQudXBkYXRlKChjb3VudCkgPT4gY291bnQgKyAxKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIG9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5mb2N1c2FibGVJdGVtc0NvdW50LnVwZGF0ZSgoY291bnQpID0+IE1hdGgubWF4KDAsIGNvdW50IC0gMSkpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcmVnaXN0ZXJJdGVtKGl0ZW06IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHRoaXMuZm9jdXNhYmxlSXRlbXMoKTtcbiAgICAgICAgdGhpcy5mb2N1c2FibGVJdGVtcy5zZXQoWy4uLmN1cnJlbnRJdGVtcywgaXRlbV0pO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgdW5yZWdpc3Rlckl0ZW0oaXRlbTogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gdGhpcy5mb2N1c2FibGVJdGVtcygpO1xuICAgICAgICB0aGlzLmZvY3VzYWJsZUl0ZW1zLnNldChjdXJyZW50SXRlbXMuZmlsdGVyKChlbCkgPT4gZWwgIT09IGl0ZW0pKTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGdldEZvY3VzYWJsZUl0ZW1zQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzYWJsZUl0ZW1zQ291bnQoKTtcbiAgICB9XG59XG4iXX0=
|