@radix-ng/primitives 0.1.0 → 0.1.1

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.
Files changed (132) hide show
  1. package/README.md +2 -4
  2. package/checkbox/src/checkbox-indicator.directive.d.ts +6 -0
  3. package/checkbox/src/checkbox.directive.d.ts +71 -0
  4. package/checkbox/src/checkbox.token.d.ts +4 -0
  5. package/esm2022/checkbox/index.mjs +4 -0
  6. package/esm2022/checkbox/radix-ng-primitives-checkbox.mjs +5 -0
  7. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +23 -0
  8. package/esm2022/checkbox/src/checkbox.directive.mjs +135 -0
  9. package/esm2022/checkbox/src/checkbox.token.mjs +6 -0
  10. package/esm2022/index.mjs +2 -0
  11. package/esm2022/label/index.mjs +2 -0
  12. package/esm2022/label/radix-ng-primitives-label.mjs +5 -0
  13. package/esm2022/label/src/label.directive.mjs +46 -0
  14. package/esm2022/progress/index.mjs +3 -0
  15. package/esm2022/progress/radix-ng-primitives-progress.mjs +5 -0
  16. package/esm2022/progress/src/progress-indicator.directive.mjs +23 -0
  17. package/esm2022/progress/src/progress.directive.mjs +62 -0
  18. package/esm2022/progress/src/progress.token.mjs +6 -0
  19. package/esm2022/radix-ng-primitives.mjs +5 -0
  20. package/esm2022/roving-focus/index.mjs +5 -0
  21. package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +5 -0
  22. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +115 -0
  23. package/esm2022/roving-focus/src/roving-focus-group.token.mjs +9 -0
  24. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +91 -0
  25. package/esm2022/roving-focus/src/roving-focus-item.token.mjs +6 -0
  26. package/esm2022/separator/index.mjs +2 -0
  27. package/esm2022/separator/radix-ng-primitives-separator.mjs +5 -0
  28. package/esm2022/separator/src/separator.directive.mjs +37 -0
  29. package/esm2022/switch/index.mjs +4 -0
  30. package/esm2022/switch/radix-ng-primitives-switch.mjs +5 -0
  31. package/esm2022/switch/src/switch-thumb.directive.mjs +25 -0
  32. package/esm2022/switch/src/switch.directive.mjs +125 -0
  33. package/esm2022/switch/src/switch.token.mjs +6 -0
  34. package/esm2022/visually-hidden/index.mjs +2 -0
  35. package/esm2022/visually-hidden/radix-ng-primitives-visually-hidden.mjs +5 -0
  36. package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +42 -0
  37. package/fesm2022/radix-ng-primitives-checkbox.mjs +166 -0
  38. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -0
  39. package/fesm2022/radix-ng-primitives-label.mjs +53 -0
  40. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -0
  41. package/fesm2022/radix-ng-primitives-progress.mjs +93 -0
  42. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -0
  43. package/fesm2022/radix-ng-primitives-roving-focus.mjs +220 -0
  44. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -0
  45. package/fesm2022/radix-ng-primitives-separator.mjs +44 -0
  46. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -0
  47. package/fesm2022/radix-ng-primitives-switch.mjs +158 -0
  48. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -0
  49. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +49 -0
  50. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -0
  51. package/fesm2022/radix-ng-primitives.mjs +4 -0
  52. package/fesm2022/radix-ng-primitives.mjs.map +1 -0
  53. package/label/src/label.directive.d.ts +14 -0
  54. package/package.json +82 -24
  55. package/progress/src/progress-indicator.directive.d.ts +6 -0
  56. package/progress/src/progress.directive.d.ts +26 -0
  57. package/progress/src/progress.token.d.ts +4 -0
  58. package/roving-focus/src/roving-focus-group.directive.d.ts +55 -0
  59. package/roving-focus/src/roving-focus-group.token.d.ts +7 -0
  60. package/roving-focus/src/roving-focus-item.directive.d.ts +52 -0
  61. package/roving-focus/src/roving-focus-item.token.d.ts +4 -0
  62. package/separator/src/separator.directive.d.ts +16 -0
  63. package/switch/src/switch-thumb.directive.d.ts +9 -0
  64. package/switch/src/switch.directive.d.ts +73 -0
  65. package/switch/src/switch.token.d.ts +4 -0
  66. package/visually-hidden/src/visually-hidden.directive.d.ts +11 -0
  67. package/.docs/overview/accessibility.docs.mdx +0 -45
  68. package/.docs/overview/installation.docs.mdx +0 -15
  69. package/.docs/overview/introduction.docs.mdx +0 -59
  70. package/.docs/utils/storybook.ts +0 -30
  71. package/.eslintrc.json +0 -56
  72. package/.storybook/helpers/bages-config.ts +0 -43
  73. package/.storybook/main.ts +0 -24
  74. package/.storybook/manager-head.html +0 -76
  75. package/.storybook/manager.ts +0 -6
  76. package/.storybook/preview.ts +0 -58
  77. package/.storybook/rdxTheme.ts +0 -8
  78. package/.storybook/tsconfig.json +0 -20
  79. package/CHANGELOG.md +0 -6
  80. package/checkbox/ng-package.json +0 -5
  81. package/checkbox/src/checkbox-indicator.directive.ts +0 -15
  82. package/checkbox/src/checkbox.directive.ts +0 -138
  83. package/checkbox/src/checkbox.token.ts +0 -8
  84. package/checkbox/stories/checkbox.component.ts +0 -50
  85. package/checkbox/stories/checkbox.stories.ts +0 -29
  86. package/checkbox/stories/style.css +0 -265
  87. package/jest.config.ts +0 -22
  88. package/label/ng-package.json +0 -5
  89. package/label/src/label.directive.ts +0 -36
  90. package/label/stories/label.docs.mdx +0 -40
  91. package/label/stories/label.stories.ts +0 -63
  92. package/ng-package.json +0 -7
  93. package/progress/ng-package.json +0 -5
  94. package/progress/src/progress-indicator.directive.ts +0 -15
  95. package/progress/src/progress.directive.ts +0 -51
  96. package/progress/src/progress.token.ts +0 -8
  97. package/progress/stories/progress.docs.mdx +0 -66
  98. package/progress/stories/progress.stories.ts +0 -61
  99. package/project.json +0 -90
  100. package/roving-focus/ng-package.json +0 -5
  101. package/roving-focus/src/roving-focus-group.directive.ts +0 -135
  102. package/roving-focus/src/roving-focus-group.token.ts +0 -13
  103. package/roving-focus/src/roving-focus-item.directive.ts +0 -98
  104. package/roving-focus/src/roving-focus-item.token.ts +0 -10
  105. package/separator/ng-package.json +0 -5
  106. package/separator/src/separator.directive.spec.ts +0 -59
  107. package/separator/src/separator.directive.ts +0 -24
  108. package/separator/stories/separator.docs.mdx +0 -38
  109. package/separator/stories/separator.stories.ts +0 -91
  110. package/switch/ng-package.json +0 -5
  111. package/switch/src/switch-thumb.directive.ts +0 -17
  112. package/switch/src/switch.directive.ts +0 -132
  113. package/switch/src/switch.token.ts +0 -8
  114. package/switch/stories/switch.docs.mdx +0 -74
  115. package/switch/stories/switch.stories.ts +0 -76
  116. package/test-setup.ts +0 -8
  117. package/tsconfig.json +0 -32
  118. package/tsconfig.lib.json +0 -19
  119. package/tsconfig.lib.prod.json +0 -9
  120. package/tsconfig.spec.json +0 -21
  121. package/visually-hidden/ng-package.json +0 -5
  122. package/visually-hidden/src/visually-hidden.directive.spec.ts +0 -48
  123. package/visually-hidden/src/visually-hidden.directive.ts +0 -35
  124. package/visually-hidden/stories/visually-hidden.docs.mdx +0 -35
  125. /package/checkbox/{index.ts → index.d.ts} +0 -0
  126. /package/{index.ts → index.d.ts} +0 -0
  127. /package/label/{index.ts → index.d.ts} +0 -0
  128. /package/progress/{index.ts → index.d.ts} +0 -0
  129. /package/roving-focus/{index.ts → index.d.ts} +0 -0
  130. /package/separator/{index.ts → index.d.ts} +0 -0
  131. /package/switch/{index.ts → index.d.ts} +0 -0
  132. /package/visually-hidden/{index.ts → index.d.ts} +0 -0
@@ -0,0 +1,115 @@
1
+ import { FocusKeyManager } from '@angular/cdk/a11y';
2
+ import { Directionality } from '@angular/cdk/bidi';
3
+ import { DestroyRef, Directive, Input, QueryList, booleanAttribute, inject } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { filter } from 'rxjs';
6
+ import { RovingFocusGroupToken } from './roving-focus-group.token';
7
+ import * as i0 from "@angular/core";
8
+ export class RovingFocusGroupDirective {
9
+ constructor() {
10
+ this.directionality = inject(Directionality);
11
+ this.destroyRef = inject(DestroyRef);
12
+ /**
13
+ * Create a query list of all the roving focus items.
14
+ * We don't use ContentChildren as dynamically added items may not be in the correct order.
15
+ */
16
+ this.items = new QueryList();
17
+ /**
18
+ * Create the focus key manager instance.
19
+ * @internal
20
+ */
21
+ this.keyManager = new FocusKeyManager(this.items);
22
+ /**
23
+ * Determine the orientation of the roving focus group.
24
+ * @default vertical
25
+ */
26
+ this.orientation = 'vertical';
27
+ /**
28
+ * Determine if focus should wrap when the end or beginning is reached.
29
+ * @default true
30
+ */
31
+ this.wrap = true;
32
+ }
33
+ ngOnInit() {
34
+ this.keyManager.withWrap(this.wrap);
35
+ this.setOrientation(this.orientation);
36
+ // update the key manager orientation if the document direction changes
37
+ this.directionality.change
38
+ .pipe(filter(() => this.orientation === 'horizontal'), takeUntilDestroyed(this.destroyRef))
39
+ .subscribe((direction) => this.keyManager.withHorizontalOrientation(direction));
40
+ }
41
+ ngOnChanges(changes) {
42
+ if ('orientation' in changes) {
43
+ this.setOrientation(this.orientation);
44
+ }
45
+ if ('wrap' in changes) {
46
+ this.keyManager.withWrap(this.wrap);
47
+ }
48
+ }
49
+ ngOnDestroy() {
50
+ this.keyManager.destroy();
51
+ }
52
+ /**
53
+ * Register a roving focus item.
54
+ * @param item The roving focus item to register.
55
+ */
56
+ register(item) {
57
+ // add the item to the query list by sort the items based on their order
58
+ this.items.reset([...this.items.toArray(), item].sort((a, b) => a.order - b.order));
59
+ // if this is the first item, make it the active item
60
+ if (this.items.length === 1) {
61
+ this.keyManager.updateActiveItem(item);
62
+ }
63
+ }
64
+ /**
65
+ * Unregister a roving focus item.
66
+ * @param item The roving focus item to unregister.
67
+ */
68
+ unregister(item) {
69
+ // determine if the item being removed is the active item
70
+ const isActive = this.keyManager.activeItem === item;
71
+ // remove the item from the query list
72
+ this.items.reset(this.items.toArray().filter((i) => i !== item));
73
+ // if the item being removed is the active item, make the first item the active item
74
+ if (isActive) {
75
+ this.keyManager.updateActiveItem(0);
76
+ }
77
+ }
78
+ /**
79
+ * Handle key events on the roving focus items.
80
+ * @param event The key event.
81
+ * @internal
82
+ */
83
+ onKeydown(event) {
84
+ this.keyManager.onKeydown(event);
85
+ }
86
+ /**
87
+ * Set the orientation of the roving focus group.
88
+ * @param orientation The orientation of the roving focus group.
89
+ */
90
+ setOrientation(orientation) {
91
+ this.orientation = orientation;
92
+ if (orientation === 'horizontal') {
93
+ this.keyManager.withHorizontalOrientation(this.directionality.value);
94
+ }
95
+ else {
96
+ this.keyManager.withVerticalOrientation();
97
+ }
98
+ }
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
100
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RovingFocusGroupDirective, isStandalone: true, selector: "[rdxRovingFocusGroup]", inputs: { orientation: "orientation", wrap: ["wrap", "wrap", booleanAttribute] }, providers: [{ provide: RovingFocusGroupToken, useExisting: RovingFocusGroupDirective }], usesOnChanges: true, ngImport: i0 }); }
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RovingFocusGroupDirective, decorators: [{
103
+ type: Directive,
104
+ args: [{
105
+ selector: '[rdxRovingFocusGroup]',
106
+ standalone: true,
107
+ providers: [{ provide: RovingFocusGroupToken, useExisting: RovingFocusGroupDirective }]
108
+ }]
109
+ }], propDecorators: { orientation: [{
110
+ type: Input
111
+ }], wrap: [{
112
+ type: Input,
113
+ args: [{ transform: booleanAttribute }]
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsS0FBSyxFQUlMLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT25FLE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFNcUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFeEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVqRDs7O1dBR0c7UUFDYyxVQUFLLEdBQUcsSUFBSSxTQUFTLEVBQTRCLENBQUM7UUFFbkU7OztXQUdHO1FBQ00sZUFBVSxHQUFHLElBQUksZUFBZSxDQUEyQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEY7OztXQUdHO1FBQ00sZ0JBQVcsR0FBOEIsVUFBVSxDQUFDO1FBRTdEOzs7V0FHRztRQUNxQyxTQUFJLEdBQUcsSUFBSSxDQUFDO0tBbUZ2RDtJQWpGRyxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRDLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07YUFDckIsSUFBSSxDQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxFQUMvQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3RDO2FBQ0EsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLGFBQWEsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxJQUE4QjtRQUNuQyx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVwRixxREFBcUQ7UUFDckQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQThCO1FBQ3JDLHlEQUF5RDtRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUM7UUFFckQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVqRSxvRkFBb0Y7UUFDcEYsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEtBQW9CO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsV0FBc0M7UUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0IsSUFBSSxXQUFXLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzlDLENBQUM7SUFDTCxDQUFDOzhHQTdHUSx5QkFBeUI7a0dBQXpCLHlCQUF5QixzSEEyQmQsZ0JBQWdCLGdCQTdCekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsQ0FBQzs7MkZBRTlFLHlCQUF5QjtrQkFMckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsV0FBVywyQkFBMkIsRUFBRSxDQUFDO2lCQUMxRjs4QkFzQlksV0FBVztzQkFBbkIsS0FBSztnQkFNa0MsSUFBSTtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBSb3ZpbmdGb2N1c0l0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSb3ZpbmdGb2N1c0dyb3VwVG9rZW4gfSBmcm9tICcuL3JvdmluZy1mb2N1cy1ncm91cC50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJvdmluZ0ZvY3VzR3JvdXBdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUm92aW5nRm9jdXNHcm91cFRva2VuLCB1c2VFeGlzdGluZzogUm92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3Rpb25hbGl0eSA9IGluamVjdChEaXJlY3Rpb25hbGl0eSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBxdWVyeSBsaXN0IG9mIGFsbCB0aGUgcm92aW5nIGZvY3VzIGl0ZW1zLlxuICAgICAqIFdlIGRvbid0IHVzZSBDb250ZW50Q2hpbGRyZW4gYXMgZHluYW1pY2FsbHkgYWRkZWQgaXRlbXMgbWF5IG5vdCBiZSBpbiB0aGUgY29ycmVjdCBvcmRlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zID0gbmV3IFF1ZXJ5TGlzdDxSb3ZpbmdGb2N1c0l0ZW1EaXJlY3RpdmU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgdGhlIGZvY3VzIGtleSBtYW5hZ2VyIGluc3RhbmNlLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyPFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZT4odGhpcy5pdGVtcyk7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXAuXG4gICAgICogQGRlZmF1bHQgdmVydGljYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICd2ZXJ0aWNhbCc7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgZm9jdXMgc2hvdWxkIHdyYXAgd2hlbiB0aGUgZW5kIG9yIGJlZ2lubmluZyBpcyByZWFjaGVkLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgd3JhcCA9IHRydWU7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLndpdGhXcmFwKHRoaXMud3JhcCk7XG5cbiAgICAgICAgdGhpcy5zZXRPcmllbnRhdGlvbih0aGlzLm9yaWVudGF0aW9uKTtcblxuICAgICAgICAvLyB1cGRhdGUgdGhlIGtleSBtYW5hZ2VyIG9yaWVudGF0aW9uIGlmIHRoZSBkb2N1bWVudCBkaXJlY3Rpb24gY2hhbmdlc1xuICAgICAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRpcmVjdGlvbikgPT4gdGhpcy5rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24oZGlyZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ29yaWVudGF0aW9uJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnNldE9yaWVudGF0aW9uKHRoaXMub3JpZW50YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCd3cmFwJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIud2l0aFdyYXAodGhpcy53cmFwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGEgcm92aW5nIGZvY3VzIGl0ZW0uXG4gICAgICogQHBhcmFtIGl0ZW0gVGhlIHJvdmluZyBmb2N1cyBpdGVtIHRvIHJlZ2lzdGVyLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyKGl0ZW06IFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZSk6IHZvaWQge1xuICAgICAgICAvLyBhZGQgdGhlIGl0ZW0gdG8gdGhlIHF1ZXJ5IGxpc3QgYnkgc29ydCB0aGUgaXRlbXMgYmFzZWQgb24gdGhlaXIgb3JkZXJcbiAgICAgICAgdGhpcy5pdGVtcy5yZXNldChbLi4udGhpcy5pdGVtcy50b0FycmF5KCksIGl0ZW1dLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKSk7XG5cbiAgICAgICAgLy8gaWYgdGhpcyBpcyB0aGUgZmlyc3QgaXRlbSwgbWFrZSBpdCB0aGUgYWN0aXZlIGl0ZW1cbiAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVucmVnaXN0ZXIgYSByb3ZpbmcgZm9jdXMgaXRlbS5cbiAgICAgKiBAcGFyYW0gaXRlbSBUaGUgcm92aW5nIGZvY3VzIGl0ZW0gdG8gdW5yZWdpc3Rlci5cbiAgICAgKi9cbiAgICB1bnJlZ2lzdGVyKGl0ZW06IFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZSk6IHZvaWQge1xuICAgICAgICAvLyBkZXRlcm1pbmUgaWYgdGhlIGl0ZW0gYmVpbmcgcmVtb3ZlZCBpcyB0aGUgYWN0aXZlIGl0ZW1cbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbSA9PT0gaXRlbTtcblxuICAgICAgICAvLyByZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgcXVlcnkgbGlzdFxuICAgICAgICB0aGlzLml0ZW1zLnJlc2V0KHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbHRlcigoaSkgPT4gaSAhPT0gaXRlbSkpO1xuXG4gICAgICAgIC8vIGlmIHRoZSBpdGVtIGJlaW5nIHJlbW92ZWQgaXMgdGhlIGFjdGl2ZSBpdGVtLCBtYWtlIHRoZSBmaXJzdCBpdGVtIHRoZSBhY3RpdmUgaXRlbVxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGtleSBldmVudHMgb24gdGhlIHJvdmluZyBmb2N1cyBpdGVtcy5cbiAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleSBldmVudC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgICAqIEBwYXJhbSBvcmllbnRhdGlvbiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHJvdmluZyBmb2N1cyBncm91cC5cbiAgICAgKi9cbiAgICBzZXRPcmllbnRhdGlvbihvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9yaWVudGF0aW9uID0gb3JpZW50YXRpb247XG5cbiAgICAgICAgaWYgKG9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { InjectionToken, inject } from '@angular/core';
2
+ export const RovingFocusGroupToken = new InjectionToken('RovingFocusToken');
3
+ /**
4
+ * Inject the roving focus directive instance.
5
+ */
6
+ export function injectRovingFocusGroup() {
7
+ return inject(RovingFocusGroupToken);
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMvc3JjL3JvdmluZy1mb2N1cy1ncm91cC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQsa0JBQWtCLENBQ3JCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0I7SUFDbEMsT0FBTyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IFJvdmluZ0ZvY3VzR3JvdXBUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlPihcbiAgICAnUm92aW5nRm9jdXNUb2tlbidcbik7XG5cbi8qKlxuICogSW5qZWN0IHRoZSByb3ZpbmcgZm9jdXMgZGlyZWN0aXZlIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um92aW5nRm9jdXNHcm91cCgpOiBSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gaW5qZWN0KFJvdmluZ0ZvY3VzR3JvdXBUb2tlbik7XG59XG4iXX0=
@@ -0,0 +1,91 @@
1
+ import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, HostBinding, HostListener, Input, booleanAttribute, inject, numberAttribute } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { injectRovingFocusGroup } from './roving-focus-group.token';
4
+ import { RovingFocusItemToken } from './roving-focus-item.token';
5
+ import * as i0 from "@angular/core";
6
+ export class RovingFocusItemDirective {
7
+ constructor() {
8
+ /**
9
+ * Access the group the roving focus item belongs to.
10
+ */
11
+ this.group = injectRovingFocusGroup();
12
+ /**
13
+ * Access the element reference of the roving focus item.
14
+ */
15
+ this.elementRef = inject((ElementRef));
16
+ /**
17
+ * Access the destroyRef
18
+ */
19
+ this.destroyRef = inject(DestroyRef);
20
+ /**
21
+ * Access the change detector ref
22
+ */
23
+ this.changeDetectorRef = inject(ChangeDetectorRef);
24
+ /**
25
+ * Define the order of the roving focus item in the group.
26
+ */
27
+ this.order = 0;
28
+ /**
29
+ * Define if the item is disabled.
30
+ */
31
+ this.disabled = false;
32
+ }
33
+ /**
34
+ * Derive the tabindex of the roving focus item.
35
+ * @internal
36
+ */
37
+ get tabindex() {
38
+ return this.group.keyManager.activeItem === this ? 0 : -1;
39
+ }
40
+ ngOnInit() {
41
+ // register the roving focus item with the group
42
+ this.group.register(this);
43
+ // listen for changes to the active item and run change detection
44
+ this.group.keyManager.change
45
+ .pipe(takeUntilDestroyed(this.destroyRef))
46
+ .subscribe(() => this.changeDetectorRef.markForCheck());
47
+ }
48
+ ngOnDestroy() {
49
+ // unregister the roving focus item with the group
50
+ this.group.unregister(this);
51
+ }
52
+ /**
53
+ * Handle key events on the roving focus item.
54
+ * @param event The key event.
55
+ * @internal
56
+ */
57
+ onKeydown(event) {
58
+ this.group.onKeydown(event);
59
+ }
60
+ /**
61
+ * Focus the roving focus item.
62
+ * @param origin The origin of the focus request.
63
+ * @internal
64
+ */
65
+ focus() {
66
+ this.elementRef?.nativeElement.focus();
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RovingFocusItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
69
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RovingFocusItemDirective, isStandalone: true, selector: "[rdxRovingFocusItem]", inputs: { order: ["order", "order", numberAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "attr.tabindex": "this.tabindex" } }, providers: [{ provide: RovingFocusItemToken, useExisting: RovingFocusItemDirective }], ngImport: i0 }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RovingFocusItemDirective, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: '[rdxRovingFocusItem]',
75
+ standalone: true,
76
+ providers: [{ provide: RovingFocusItemToken, useExisting: RovingFocusItemDirective }]
77
+ }]
78
+ }], propDecorators: { order: [{
79
+ type: Input,
80
+ args: [{ transform: numberAttribute }]
81
+ }], disabled: [{
82
+ type: Input,
83
+ args: [{ transform: booleanAttribute }]
84
+ }], tabindex: [{
85
+ type: HostBinding,
86
+ args: ['attr.tabindex']
87
+ }], onKeydown: [{
88
+ type: HostListener,
89
+ args: ['keydown', ['$event']]
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMvc3JjL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFPakUsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQU1JOztXQUVHO1FBQ2MsVUFBSyxHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFFbEQ7O1dBRUc7UUFDYyxlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFFOUQ7O1dBRUc7UUFDYyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2Msc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFL0Q7O1dBRUc7UUFDb0MsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVqRDs7V0FFRztRQUNxQyxhQUFRLEdBQUcsS0FBSyxDQUFDO0tBNEM1RDtJQTFDRzs7O09BR0c7SUFDSCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFFBQVE7UUFDSixnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUIsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU07YUFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFdBQVc7UUFDUCxrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs4R0F4RVEsd0JBQXdCO2tHQUF4Qix3QkFBd0IsNEZBd0JiLGVBQWUsc0NBS2YsZ0JBQWdCLDJIQS9CekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQzs7MkZBRTVFLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVywwQkFBMEIsRUFBRSxDQUFDO2lCQUN4Rjs4QkF5QjBDLEtBQUs7c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUtHLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT2xDLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxlQUFlO2dCQTBCNUIsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGluamVjdCxcbiAgICBudW1iZXJBdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBpbmplY3RSb3ZpbmdGb2N1c0dyb3VwIH0gZnJvbSAnLi9yb3ZpbmctZm9jdXMtZ3JvdXAudG9rZW4nO1xuaW1wb3J0IHsgUm92aW5nRm9jdXNJdGVtVG9rZW4gfSBmcm9tICcuL3JvdmluZy1mb2N1cy1pdGVtLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4Um92aW5nRm9jdXNJdGVtXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFJvdmluZ0ZvY3VzSXRlbVRva2VuLCB1c2VFeGlzdGluZzogUm92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH1dXG59KVxuZXhwb3J0IGNsYXNzIFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBGb2N1c2FibGVPcHRpb24ge1xuICAgIC8qKlxuICAgICAqIEFjY2VzcyB0aGUgZ3JvdXAgdGhlIHJvdmluZyBmb2N1cyBpdGVtIGJlbG9uZ3MgdG8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBncm91cCA9IGluamVjdFJvdmluZ0ZvY3VzR3JvdXAoKTtcblxuICAgIC8qKlxuICAgICAqIEFjY2VzcyB0aGUgZWxlbWVudCByZWZlcmVuY2Ugb2YgdGhlIHJvdmluZyBmb2N1cyBpdGVtLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIGRlc3Ryb3lSZWZcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIGNoYW5nZSBkZXRlY3RvciByZWZcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8qKlxuICAgICAqIERlZmluZSB0aGUgb3JkZXIgb2YgdGhlIHJvdmluZyBmb2N1cyBpdGVtIGluIHRoZSBncm91cC5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBvcmRlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgaWYgdGhlIGl0ZW0gaXMgZGlzYWJsZWQuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZXJpdmUgdGhlIHRhYmluZGV4IG9mIHRoZSByb3ZpbmcgZm9jdXMgaXRlbS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIGdldCB0YWJpbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cC5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0gPT09IHRoaXMgPyAwIDogLTE7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHJlZ2lzdGVyIHRoZSByb3ZpbmcgZm9jdXMgaXRlbSB3aXRoIHRoZSBncm91cFxuICAgICAgICB0aGlzLmdyb3VwLnJlZ2lzdGVyKHRoaXMpO1xuXG4gICAgICAgIC8vIGxpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgYWN0aXZlIGl0ZW0gYW5kIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICAgIHRoaXMuZ3JvdXAua2V5TWFuYWdlci5jaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gdW5yZWdpc3RlciB0aGUgcm92aW5nIGZvY3VzIGl0ZW0gd2l0aCB0aGUgZ3JvdXBcbiAgICAgICAgdGhpcy5ncm91cC51bnJlZ2lzdGVyKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBrZXkgZXZlbnRzIG9uIHRoZSByb3ZpbmcgZm9jdXMgaXRlbS5cbiAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleSBldmVudC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncm91cC5vbktleWRvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzIHRoZSByb3ZpbmcgZm9jdXMgaXRlbS5cbiAgICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gb2YgdGhlIGZvY3VzIHJlcXVlc3QuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { InjectionToken, inject } from '@angular/core';
2
+ export const RovingFocusItemToken = new InjectionToken('RovingFocusItemToken');
3
+ export function injectRovingFocusItem() {
4
+ return inject(RovingFocusItemToken);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWl0ZW0udG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9zcmMvcm92aW5nLWZvY3VzLWl0ZW0udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQ2xELHNCQUFzQixDQUN6QixDQUFDO0FBRUYsTUFBTSxVQUFVLHFCQUFxQjtJQUNqQyxPQUFPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vcm92aW5nLWZvY3VzLWl0ZW0uZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IFJvdmluZ0ZvY3VzSXRlbVRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZT4oXG4gICAgJ1JvdmluZ0ZvY3VzSXRlbVRva2VuJ1xuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdmluZ0ZvY3VzSXRlbSgpOiBSb3ZpbmdGb2N1c0l0ZW1EaXJlY3RpdmUge1xuICAgIHJldHVybiBpbmplY3QoUm92aW5nRm9jdXNJdGVtVG9rZW4pO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './src/separator.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3NlcGFyYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvc2VwYXJhdG9yLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1zZXBhcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3NlcGFyYXRvci9yYWRpeC1uZy1wcmltaXRpdmVzLXNlcGFyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Directive, Input, booleanAttribute } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SeparatorDirective {
4
+ constructor() {
5
+ /**
6
+ * The orientation of the separator.
7
+ * @default 'horizontal'
8
+ */
9
+ this.orientation = 'horizontal';
10
+ /**
11
+ * Whether the separator is for decoration purposes. If true, the separator will not be included in the accessibility tree.
12
+ * @default false
13
+ */
14
+ this.decorative = false;
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SeparatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: SeparatorDirective, isStandalone: true, selector: "[rdxSeparator]", inputs: { orientation: ["rdxSeparatorOrientation", "orientation"], decorative: ["rdxSeparatorDecorative", "decorative", booleanAttribute] }, host: { properties: { "attr.role": "decorative ? \"none\" : \"separator\"", "attr.aria-orientation": "!decorative && orientation === \"vertical\" ? \"vertical\" : null", "attr.data-orientation": "orientation" } }, ngImport: i0 }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SeparatorDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[rdxSeparator]',
23
+ standalone: true,
24
+ host: {
25
+ '[attr.role]': 'decorative ? "none" : "separator"',
26
+ '[attr.aria-orientation]': '!decorative && orientation === "vertical" ? "vertical" : null',
27
+ '[attr.data-orientation]': 'orientation'
28
+ }
29
+ }]
30
+ }], propDecorators: { orientation: [{
31
+ type: Input,
32
+ args: ['rdxSeparatorOrientation']
33
+ }], decorative: [{
34
+ type: Input,
35
+ args: [{ alias: 'rdxSeparatorDecorative', transform: booleanAttribute }]
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VwYXJhdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvc2VwYXJhdG9yL3NyYy9zZXBhcmF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVduRSxNQUFNLE9BQU8sa0JBQWtCO0lBVC9CO1FBVUk7OztXQUdHO1FBQytCLGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUV4Rjs7O1dBR0c7UUFDc0UsZUFBVSxHQUFHLEtBQUssQ0FBQztLQUMvRjs4R0FaWSxrQkFBa0I7a0dBQWxCLGtCQUFrQiwwS0FXMEIsZ0JBQWdCOzsyRkFYNUQsa0JBQWtCO2tCQVQ5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0YsYUFBYSxFQUFFLG1DQUFtQzt3QkFDbEQseUJBQXlCLEVBQUUsK0RBQStEO3dCQUMxRix5QkFBeUIsRUFBRSxhQUFhO3FCQUMzQztpQkFDSjs4QkFNcUMsV0FBVztzQkFBNUMsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBTXlDLFVBQVU7c0JBQWxGLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhTZXBhcmF0b3JdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnJvbGVdJzogJ2RlY29yYXRpdmUgPyBcIm5vbmVcIiA6IFwic2VwYXJhdG9yXCInLFxuICAgICAgICAnW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0nOiAnIWRlY29yYXRpdmUgJiYgb3JpZW50YXRpb24gPT09IFwidmVydGljYWxcIiA/IFwidmVydGljYWxcIiA6IG51bGwnLFxuICAgICAgICAnW2F0dHIuZGF0YS1vcmllbnRhdGlvbl0nOiAnb3JpZW50YXRpb24nXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTZXBhcmF0b3JEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgc2VwYXJhdG9yLlxuICAgICAqIEBkZWZhdWx0ICdob3Jpem9udGFsJ1xuICAgICAqL1xuICAgIEBJbnB1dCgncmR4U2VwYXJhdG9yT3JpZW50YXRpb24nKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHNlcGFyYXRvciBpcyBmb3IgZGVjb3JhdGlvbiBwdXJwb3Nlcy4gSWYgdHJ1ZSwgdGhlIHNlcGFyYXRvciB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdyZHhTZXBhcmF0b3JEZWNvcmF0aXZlJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRlY29yYXRpdmUgPSBmYWxzZTtcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './src/switch.directive';
2
+ export * from './src/switch-thumb.directive';
3
+ export * from './src/switch.token';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3N3aXRjaC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL3N3aXRjaC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvc3dpdGNoLXRodW1iLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9zd2l0Y2gudG9rZW4nO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1zd2l0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3N3aXRjaC9yYWRpeC1uZy1wcmltaXRpdmVzLXN3aXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Directive } from '@angular/core';
2
+ import { injectSwitch } from './switch.token';
3
+ import * as i0 from "@angular/core";
4
+ export class SwitchThumbDirective {
5
+ constructor() {
6
+ /**
7
+ * Access the switch directive.
8
+ */
9
+ this.switch = injectSwitch();
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SwitchThumbDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: SwitchThumbDirective, isStandalone: true, selector: "[rdxSwitchThumb]", host: { properties: { "attr.data-state": "switch.checked ? \"checked\" : \"unchecked\"", "attr.data-disabled": "switch.disabled ? \"true\" : null" } }, ngImport: i0 }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SwitchThumbDirective, decorators: [{
15
+ type: Directive,
16
+ args: [{
17
+ selector: '[rdxSwitchThumb]',
18
+ standalone: true,
19
+ host: {
20
+ '[attr.data-state]': 'switch.checked ? "checked" : "unchecked"',
21
+ '[attr.data-disabled]': 'switch.disabled ? "true" : null'
22
+ }
23
+ }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLXRodW1iLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvc3dpdGNoL3NyYy9zd2l0Y2gtdGh1bWIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU5QyxNQUFNLE9BQU8sb0JBQW9CO0lBUmpDO1FBU0k7O1dBRUc7UUFDZ0IsV0FBTSxHQUFHLFlBQVksRUFBRSxDQUFDO0tBQzlDOzhHQUxZLG9CQUFvQjtrR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQVJoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0YsbUJBQW1CLEVBQUUsMENBQTBDO3dCQUMvRCxzQkFBc0IsRUFBRSxpQ0FBaUM7cUJBQzVEO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RTd2l0Y2ggfSBmcm9tICcuL3N3aXRjaC50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFN3aXRjaFRodW1iXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdzd2l0Y2guY2hlY2tlZCA/IFwiY2hlY2tlZFwiIDogXCJ1bmNoZWNrZWRcIicsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdzd2l0Y2guZGlzYWJsZWQgPyBcInRydWVcIiA6IG51bGwnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hUaHVtYkRpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQWNjZXNzIHRoZSBzd2l0Y2ggZGlyZWN0aXZlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzd2l0Y2ggPSBpbmplY3RTd2l0Y2goKTtcbn1cbiJdfQ==
@@ -0,0 +1,125 @@
1
+ import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, booleanAttribute, inject } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { SwitchToken } from './switch.token';
4
+ import * as i0 from "@angular/core";
5
+ export class SwitchDirective {
6
+ constructor() {
7
+ /**
8
+ * Access the element ref.
9
+ */
10
+ this.elementRef = inject(ElementRef);
11
+ /**
12
+ * Determine if the switch is a button
13
+ */
14
+ this.isButton = this.elementRef.nativeElement.tagName === 'BUTTON';
15
+ /**
16
+ * Determine if the switch is checked.
17
+ * The controlled state of the switch.
18
+ * @default false
19
+ */
20
+ this.checked = false;
21
+ /**
22
+ * Determine if the switch is disabled.
23
+ * When true, prevents the user from interacting with the switch.
24
+ * @default false
25
+ */
26
+ this.disabled = false;
27
+ /**
28
+ * Event emitted when the checked state changes.
29
+ */
30
+ this.checkedChange = new EventEmitter();
31
+ }
32
+ /**
33
+ * Register the onChange callback.
34
+ * @param fn The onChange callback.
35
+ * @internal
36
+ */
37
+ registerOnChange(fn) {
38
+ this.onChange = fn;
39
+ }
40
+ /**
41
+ * Register the onTouched callback.
42
+ * @param fn The onTouched callback.
43
+ * @internal
44
+ */
45
+ registerOnTouched(fn) {
46
+ this.onTouched = fn;
47
+ }
48
+ /**
49
+ * Write the value to the checked state.
50
+ * @param checked The checked state.
51
+ * @internal
52
+ */
53
+ writeValue(checked) {
54
+ this.checked = checked;
55
+ }
56
+ /**
57
+ * Set the disabled state.
58
+ * @param isDisabled The disabled state.
59
+ * @internal
60
+ */
61
+ setDisabledState(isDisabled) {
62
+ this.disabled = isDisabled;
63
+ }
64
+ /**
65
+ * Toggle the checked state.
66
+ */
67
+ toggle() {
68
+ if (this.disabled) {
69
+ return;
70
+ }
71
+ this.checked = !this.checked;
72
+ this.checkedChange.emit(this.checked);
73
+ this.onChange?.(this.checked);
74
+ }
75
+ /**
76
+ * Handle the keydown event.
77
+ */
78
+ onKeyDown() {
79
+ // If the switch is not a button then the space key will not toggle the checked state automatically,
80
+ // so we need to do it manually.
81
+ if (!this.isButton) {
82
+ this.toggle();
83
+ }
84
+ }
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SwitchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
86
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: SwitchDirective, isStandalone: true, selector: "[rdxSwitch]", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange" }, host: { attributes: { "role": "switch" }, listeners: { "focus": "onTouched?.()", "click": "toggle()", "keydown.space": "onKeyDown()" }, properties: { "attr.type": "isButton ? \"button\" : null", "attr.aria-checked": "checked", "attr.data-state": "checked ? \"checked\" : \"unchecked\"", "attr.data-disabled": "disabled ? \"true\" : null", "attr.disabled": "isButton && disabled ? disabled : null" } }, providers: [
87
+ { provide: SwitchToken, useExisting: SwitchDirective },
88
+ { provide: NG_VALUE_ACCESSOR, useExisting: SwitchDirective, multi: true }
89
+ ], ngImport: i0 }); }
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SwitchDirective, decorators: [{
92
+ type: Directive,
93
+ args: [{
94
+ selector: '[rdxSwitch]',
95
+ standalone: true,
96
+ providers: [
97
+ { provide: SwitchToken, useExisting: SwitchDirective },
98
+ { provide: NG_VALUE_ACCESSOR, useExisting: SwitchDirective, multi: true }
99
+ ],
100
+ host: {
101
+ role: 'switch',
102
+ '[attr.type]': 'isButton ? "button" : null',
103
+ '[attr.aria-checked]': 'checked',
104
+ '[attr.data-state]': 'checked ? "checked" : "unchecked"',
105
+ '[attr.data-disabled]': 'disabled ? "true" : null',
106
+ '[attr.disabled]': 'isButton && disabled ? disabled : null',
107
+ '(focus)': 'onTouched?.()'
108
+ }
109
+ }]
110
+ }], propDecorators: { checked: [{
111
+ type: Input,
112
+ args: [{ transform: booleanAttribute }]
113
+ }], disabled: [{
114
+ type: Input,
115
+ args: [{ transform: booleanAttribute }]
116
+ }], checkedChange: [{
117
+ type: Output
118
+ }], toggle: [{
119
+ type: HostListener,
120
+ args: ['click']
121
+ }], onKeyDown: [{
122
+ type: HostListener,
123
+ args: ['keydown.space']
124
+ }] } });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvc3dpdGNoL3NyYy9zd2l0Y2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBbUI3QyxNQUFNLE9BQU8sZUFBZTtJQWpCNUI7UUFrQkk7O1dBRUc7UUFDYyxlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUUxRTs7V0FFRztRQUNPLGFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDO1FBRXhFOzs7O1dBSUc7UUFDcUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV4RDs7OztXQUlHO1FBQ3FDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFekQ7O1dBRUc7UUFDZ0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBeUVsRTtJQTdERzs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBOEI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBRUgsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBRU8sU0FBUztRQUNmLG9HQUFvRztRQUNwRyxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7OEdBcEdRLGVBQWU7a0dBQWYsZUFBZSx5RkFnQkosZ0JBQWdCLHNDQU9oQixnQkFBZ0IsK2NBckN6QjtZQUNQLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFO1lBQ3RELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUM1RTs7MkZBV1EsZUFBZTtrQkFqQjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsaUJBQWlCLEVBQUU7d0JBQ3RELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDNUU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLGFBQWEsRUFBRSw0QkFBNEI7d0JBQzNDLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsc0JBQXNCLEVBQUUsMEJBQTBCO3dCQUNsRCxpQkFBaUIsRUFBRSx3Q0FBd0M7d0JBQzNELFNBQVMsRUFBRSxlQUFlO3FCQUM3QjtpQkFDSjs4QkFpQjJDLE9BQU87c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT0UsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLbkIsYUFBYTtzQkFBL0IsTUFBTTtnQkFvRFAsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE9BQU87Z0JBZVgsU0FBUztzQkFEbEIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN3aXRjaFRva2VuIH0gZnJvbSAnLi9zd2l0Y2gudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhTd2l0Y2hdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFN3aXRjaFRva2VuLCB1c2VFeGlzdGluZzogU3dpdGNoRGlyZWN0aXZlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBTd2l0Y2hEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3N3aXRjaCcsXG4gICAgICAgICdbYXR0ci50eXBlXSc6ICdpc0J1dHRvbiA/IFwiYnV0dG9uXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdjaGVja2VkID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwiJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkID8gXCJ0cnVlXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdpc0J1dHRvbiAmJiBkaXNhYmxlZCA/IGRpc2FibGVkIDogbnVsbCcsXG4gICAgICAgICcoZm9jdXMpJzogJ29uVG91Y2hlZD8uKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQWNjZXNzIHRoZSBlbGVtZW50IHJlZi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIHRoZSBzd2l0Y2ggaXMgYSBidXR0b25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNCdXR0b24gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnQlVUVE9OJztcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiB0aGUgc3dpdGNoIGlzIGNoZWNrZWQuXG4gICAgICogVGhlIGNvbnRyb2xsZWQgc3RhdGUgb2YgdGhlIHN3aXRjaC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjaGVja2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIHN3aXRjaCBpcyBkaXNhYmxlZC5cbiAgICAgKiBXaGVuIHRydWUsIHByZXZlbnRzIHRoZSB1c2VyIGZyb20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3dpdGNoLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIFN0b3JlIHRoZSBvbkNoYW5nZSBjYWxsYmFjay5cbiAgICAgKi9cbiAgICBwcml2YXRlIG9uQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSB0aGUgb25Ub3VjaGVkIGNhbGxiYWNrLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgdGhlIG9uQ2hhbmdlIGNhbGxiYWNrLlxuICAgICAqIEBwYXJhbSBmbiBUaGUgb25DaGFuZ2UgY2FsbGJhY2suXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIHRoZSBvblRvdWNoZWQgY2FsbGJhY2suXG4gICAgICogQHBhcmFtIGZuIFRoZSBvblRvdWNoZWQgY2FsbGJhY2suXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0aGUgdmFsdWUgdG8gdGhlIGNoZWNrZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGNoZWNrZWQgVGhlIGNoZWNrZWQgc3RhdGUuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBkaXNhYmxlZCBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBUaGUgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSB0aGUgY2hlY2tlZCBzdGF0ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZT8uKHRoaXMuY2hlY2tlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHRoZSBrZXlkb3duIGV2ZW50LlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc3BhY2UnKVxuICAgIHByb3RlY3RlZCBvbktleURvd24oKTogdm9pZCB7XG4gICAgICAgIC8vIElmIHRoZSBzd2l0Y2ggaXMgbm90IGEgYnV0dG9uIHRoZW4gdGhlIHNwYWNlIGtleSB3aWxsIG5vdCB0b2dnbGUgdGhlIGNoZWNrZWQgc3RhdGUgYXV0b21hdGljYWxseSxcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseS5cbiAgICAgICAgaWYgKCF0aGlzLmlzQnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ import { InjectionToken, inject } from '@angular/core';
2
+ export const SwitchToken = new InjectionToken('SwitchToken');
3
+ export function injectSwitch() {
4
+ return inject(SwitchToken);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9zd2l0Y2gvc3JjL3N3aXRjaC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQWtCLGFBQWEsQ0FBQyxDQUFDO0FBRTlFLE1BQU0sVUFBVSxZQUFZO0lBQ3hCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFN3aXRjaERpcmVjdGl2ZSB9IGZyb20gJy4vc3dpdGNoLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBTd2l0Y2hUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTd2l0Y2hEaXJlY3RpdmU+KCdTd2l0Y2hUb2tlbicpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U3dpdGNoKCk6IFN3aXRjaERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGluamVjdChTd2l0Y2hUb2tlbik7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './src/visually-hidden.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3Zpc3VhbGx5LWhpZGRlbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvdmlzdWFsbHktaGlkZGVuLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy12aXN1YWxseS1oaWRkZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3Zpc3VhbGx5LWhpZGRlbi9yYWRpeC1uZy1wcmltaXRpdmVzLXZpc3VhbGx5LWhpZGRlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { Directive, ElementRef, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class VisuallyHiddenDirective {
4
+ constructor() {
5
+ /**
6
+ * Access the element.
7
+ */
8
+ this.element = inject(ElementRef);
9
+ }
10
+ ngOnInit() {
11
+ // hide the element
12
+ Object.assign(this.element.nativeElement.style, {
13
+ position: 'absolute',
14
+ border: 0,
15
+ width: '1px',
16
+ height: '1px',
17
+ padding: 0,
18
+ margin: '-1px',
19
+ overflow: 'hidden',
20
+ clip: 'rect(0, 0, 0, 0)',
21
+ whiteSpace: 'nowrap',
22
+ wordWrap: 'normal',
23
+ // Avoid browsers rendering the focus ring in some cases.
24
+ outline: 'none',
25
+ appearance: 'none',
26
+ // Avoid some cases where the browser will still render the native controls
27
+ '-webkit-appearance': 'none',
28
+ '-moz-appearance': 'none',
29
+ left: 0
30
+ });
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: VisuallyHiddenDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
33
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: VisuallyHiddenDirective, isStandalone: true, selector: "[rdxVisuallyHidden]", ngImport: i0 }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: VisuallyHiddenDirective, decorators: [{
36
+ type: Directive,
37
+ args: [{
38
+ selector: '[rdxVisuallyHidden]',
39
+ standalone: true
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsbHktaGlkZGVuLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvdmlzdWFsbHktaGlkZGVuL3NyYy92aXN1YWxseS1oaWRkZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNdEUsTUFBTSxPQUFPLHVCQUF1QjtJQUpwQztRQUtJOztXQUVHO1FBQ2MsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7S0F3QjFFO0lBdEJHLFFBQVE7UUFDSixtQkFBbUI7UUFDbkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDNUMsUUFBUSxFQUFFLFVBQVU7WUFDcEIsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsTUFBTTtZQUNkLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIseURBQXlEO1lBQ3pELE9BQU8sRUFBRSxNQUFNO1lBQ2YsVUFBVSxFQUFFLE1BQU07WUFDbEIsMkVBQTJFO1lBQzNFLG9CQUFvQixFQUFFLE1BQU07WUFDNUIsaUJBQWlCLEVBQUUsTUFBTTtZQUN6QixJQUFJLEVBQUUsQ0FBQztTQUNWLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBM0JRLHVCQUF1QjtrR0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4VmlzdWFsbHlIaWRkZW5dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZpc3VhbGx5SGlkZGVuRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBoaWRlIHRoZSBlbGVtZW50XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgd2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMXB4JyxcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICBtYXJnaW46ICctMXB4JyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgIGNsaXA6ICdyZWN0KDAsIDAsIDAsIDApJyxcbiAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICAgICAgd29yZFdyYXA6ICdub3JtYWwnLFxuICAgICAgICAgICAgLy8gQXZvaWQgYnJvd3NlcnMgcmVuZGVyaW5nIHRoZSBmb2N1cyByaW5nIGluIHNvbWUgY2FzZXMuXG4gICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gICAgICAgICAgICAvLyBBdm9pZCBzb21lIGNhc2VzIHdoZXJlIHRoZSBicm93c2VyIHdpbGwgc3RpbGwgcmVuZGVyIHRoZSBuYXRpdmUgY29udHJvbHNcbiAgICAgICAgICAgICctd2Via2l0LWFwcGVhcmFuY2UnOiAnbm9uZScsXG4gICAgICAgICAgICAnLW1vei1hcHBlYXJhbmNlJzogJ25vbmUnLFxuICAgICAgICAgICAgbGVmdDogMFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=