@radix-ng/primitives 0.41.0 → 0.43.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/fesm2022/radix-ng-primitives-focus-guards.mjs +50 -0
- package/fesm2022/radix-ng-primitives-focus-guards.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +336 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +7 -4
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +73 -80
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/focus-guards/README.md +1 -0
- package/focus-guards/index.d.ts +1 -0
- package/focus-guards/src/focus-guards.d.ts +12 -0
- package/focus-scope/README.md +1 -0
- package/focus-scope/index.d.ts +1 -0
- package/focus-scope/src/focus-scope.d.ts +53 -0
- package/focus-scope/src/stack.d.ts +13 -0
- package/focus-scope/src/utils.d.ts +46 -0
- package/hover-card/src/hover-card-root.directive.d.ts +4 -4
- package/navigation-menu/src/navigation-menu-trigger.directive.d.ts +2 -1
- package/package.json +9 -1
- package/popover/src/popover-root.directive.d.ts +4 -4
- package/tooltip/src/tooltip-root.directive.d.ts +4 -4
- package/visually-hidden/src/visually-hidden-input-bubble.directive.d.ts +10 -9
- package/visually-hidden/src/visually-hidden-input.directive.d.ts +9 -5
- package/visually-hidden/src/visually-hidden.directive.d.ts +7 -6
|
@@ -1,49 +1,50 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, linkedSignal, Directive, inject, ElementRef, effect,
|
|
2
|
+
import { input, linkedSignal, Directive, inject, ElementRef, computed, effect, Injector, afterNextRender } from '@angular/core';
|
|
3
|
+
import { watch } from '@radix-ng/primitives/core';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
*
|
|
6
7
|
* <span rdxVisuallyHidden [feature]="'fully-hidden'">
|
|
7
|
-
* <ng-content
|
|
8
|
+
* <ng-content />
|
|
8
9
|
* </span>
|
|
9
10
|
*
|
|
10
|
-
* <button (click)="directiveInstance.
|
|
11
|
-
* <button (click)="directiveInstance.
|
|
11
|
+
* <button (click)="directiveInstance.setFeature('focusable')">Make Focusable</button>
|
|
12
|
+
* <button (click)="directiveInstance.setFeature('fully-hidden')">Hide</button>
|
|
12
13
|
*/
|
|
13
14
|
class RdxVisuallyHiddenDirective {
|
|
14
15
|
constructor() {
|
|
15
16
|
this.feature = input('focusable');
|
|
16
|
-
this.
|
|
17
|
-
source: this.feature,
|
|
18
|
-
computation: (feature) => feature
|
|
19
|
-
});
|
|
17
|
+
this.computedFeature = linkedSignal(this.feature);
|
|
20
18
|
}
|
|
21
|
-
|
|
22
|
-
this.
|
|
19
|
+
setFeature(feature) {
|
|
20
|
+
this.computedFeature.set(feature);
|
|
23
21
|
}
|
|
24
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxVisuallyHiddenDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxVisuallyHiddenDirective, isStandalone: true, selector: "[rdxVisuallyHidden]", inputs: { feature: { classPropertyName: "feature", publicName: "feature", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.
|
|
23
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxVisuallyHiddenDirective, isStandalone: true, selector: "[rdxVisuallyHidden]", inputs: { feature: { classPropertyName: "feature", publicName: "feature", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.tabindex": "computedFeature() === \"fully-hidden\" ? \"-1\" : undefined", "attr.aria-hidden": "computedFeature() === \"focusable\" ? \"true\" : undefined", "attr.data-hidden": "computedFeature() === \"fully-hidden\" ? \"\" : undefined", "hidden": "computedFeature() === \"fully-hidden\" ? true : undefined", "style": "{\n position: 'absolute',\n border: 0,\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n wordWrap: 'normal',\n }", "style.display": "feature() === \"focusable\" ? \"inline-block\" : \"none\"" } }, ngImport: i0 }); }
|
|
26
24
|
}
|
|
27
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxVisuallyHiddenDirective, decorators: [{
|
|
28
26
|
type: Directive,
|
|
29
27
|
args: [{
|
|
30
28
|
selector: '[rdxVisuallyHidden]',
|
|
31
29
|
host: {
|
|
32
|
-
'[attr.
|
|
33
|
-
'[hidden]': '
|
|
34
|
-
'[attr.
|
|
35
|
-
'[
|
|
36
|
-
'[style
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
30
|
+
'[attr.tabindex]': 'computedFeature() === "fully-hidden" ? "-1" : undefined',
|
|
31
|
+
'[attr.aria-hidden]': 'computedFeature() === "focusable" ? "true" : undefined',
|
|
32
|
+
'[attr.data-hidden]': 'computedFeature() === "fully-hidden" ? "" : undefined',
|
|
33
|
+
'[hidden]': 'computedFeature() === "fully-hidden" ? true : undefined',
|
|
34
|
+
'[style]': `{
|
|
35
|
+
position: 'absolute',
|
|
36
|
+
border: 0,
|
|
37
|
+
width: '1px',
|
|
38
|
+
height: '1px',
|
|
39
|
+
padding: 0,
|
|
40
|
+
margin: '-1px',
|
|
41
|
+
overflow: 'hidden',
|
|
42
|
+
clip: 'rect(0, 0, 0, 0)',
|
|
43
|
+
clipPath: 'inset(50%)',
|
|
44
|
+
whiteSpace: 'nowrap',
|
|
45
|
+
wordWrap: 'normal',
|
|
46
|
+
}`,
|
|
47
|
+
'[style.display]': 'feature() === "focusable" ? "inline-block" : "none"'
|
|
47
48
|
}
|
|
48
49
|
}]
|
|
49
50
|
}] });
|
|
@@ -54,72 +55,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
54
55
|
class RdxVisuallyHiddenInputBubbleDirective {
|
|
55
56
|
constructor() {
|
|
56
57
|
this.elementRef = inject(ElementRef);
|
|
57
|
-
this.
|
|
58
|
+
this.visuallyHidden = inject(RdxVisuallyHiddenDirective);
|
|
59
|
+
this.feature = input('fully-hidden');
|
|
60
|
+
this.name = input(undefined);
|
|
58
61
|
this.value = input();
|
|
59
62
|
this.checked = input(undefined);
|
|
60
63
|
this.required = input(undefined);
|
|
61
64
|
this.disabled = input(undefined);
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
this.computedFeature = linkedSignal(this.feature);
|
|
66
|
+
this.computedValue = linkedSignal(this.value);
|
|
67
|
+
this.valueState = computed(() => this.checked() ?? this.computedValue());
|
|
68
|
+
watch([this.valueState], ([cur]) => {
|
|
69
|
+
if (!this.elementRef.nativeElement) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const input = this.elementRef.nativeElement;
|
|
73
|
+
const inputProto = window.HTMLInputElement.prototype;
|
|
74
|
+
const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'value');
|
|
75
|
+
const setValue = descriptor.set;
|
|
76
|
+
if (setValue) {
|
|
77
|
+
const inputEvent = new Event('input', { bubbles: true });
|
|
78
|
+
const changeEvent = new Event('change', { bubbles: true });
|
|
79
|
+
setValue.call(input, cur);
|
|
80
|
+
input.dispatchEvent(inputEvent);
|
|
81
|
+
input.dispatchEvent(changeEvent);
|
|
82
|
+
}
|
|
66
83
|
});
|
|
67
84
|
effect(() => {
|
|
68
|
-
this.
|
|
85
|
+
this.visuallyHidden.setFeature(this.computedFeature());
|
|
69
86
|
});
|
|
70
87
|
}
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
}
|
|
74
|
-
onChange() {
|
|
75
|
-
this.updateInputValue();
|
|
76
|
-
}
|
|
77
|
-
updateInputValue() {
|
|
78
|
-
let valueChanged = false;
|
|
79
|
-
let checkedChanged = false;
|
|
80
|
-
// Check if the value has changed before applying the update
|
|
81
|
-
const currentValue = this.inputElement.value;
|
|
82
|
-
const newValue = String(this.value());
|
|
83
|
-
if (currentValue !== newValue) {
|
|
84
|
-
this.inputElement.value = newValue;
|
|
85
|
-
valueChanged = true;
|
|
86
|
-
}
|
|
87
|
-
if (this.inputElement.type === 'checkbox' || this.inputElement.type === 'radio') {
|
|
88
|
-
const currentChecked = this.inputElement.checked;
|
|
89
|
-
const newChecked = !!this.checked();
|
|
90
|
-
if (currentChecked !== newChecked) {
|
|
91
|
-
this.inputElement.checked = newChecked;
|
|
92
|
-
checkedChanged = true;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (valueChanged || checkedChanged) {
|
|
96
|
-
this.dispatchInputEvents();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
get inputElement() {
|
|
100
|
-
return this.elementRef.nativeElement;
|
|
88
|
+
setValue(value) {
|
|
89
|
+
this.computedValue.set(value);
|
|
101
90
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const changeEvent = new Event('change', { bubbles: true });
|
|
105
|
-
this.inputElement.dispatchEvent(inputEvent);
|
|
106
|
-
this.inputElement.dispatchEvent(changeEvent);
|
|
91
|
+
setFeature(feature) {
|
|
92
|
+
this.computedFeature.set(feature);
|
|
107
93
|
}
|
|
108
94
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxVisuallyHiddenInputBubbleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
109
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxVisuallyHiddenInputBubbleDirective, isStandalone: true, selector: "input[rdxVisuallyHiddenInputBubble]", inputs: {
|
|
95
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxVisuallyHiddenInputBubbleDirective, isStandalone: true, selector: "input[rdxVisuallyHiddenInputBubble]", inputs: { feature: { classPropertyName: "feature", publicName: "feature", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", 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: { properties: { "attr.name": "name()", "attr.required": "required()", "attr.disabled": "disabled()", "attr.checked": "checked()", "value": "computedValue()" } }, hostDirectives: [{ directive: RdxVisuallyHiddenDirective, inputs: ["feature", "feature"] }], ngImport: i0 }); }
|
|
110
96
|
}
|
|
111
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxVisuallyHiddenInputBubbleDirective, decorators: [{
|
|
112
98
|
type: Directive,
|
|
113
99
|
args: [{
|
|
114
100
|
selector: 'input[rdxVisuallyHiddenInputBubble]',
|
|
115
|
-
hostDirectives: [
|
|
101
|
+
hostDirectives: [
|
|
102
|
+
{
|
|
103
|
+
directive: RdxVisuallyHiddenDirective,
|
|
104
|
+
inputs: ['feature: feature']
|
|
105
|
+
}
|
|
106
|
+
],
|
|
116
107
|
host: {
|
|
117
108
|
'[attr.name]': 'name()',
|
|
118
109
|
'[attr.required]': 'required()',
|
|
119
110
|
'[attr.disabled]': 'disabled()',
|
|
120
111
|
'[attr.checked]': 'checked()',
|
|
121
|
-
'[value]': '
|
|
122
|
-
'(change)': 'onChange()'
|
|
112
|
+
'[value]': 'computedValue()'
|
|
123
113
|
}
|
|
124
114
|
}]
|
|
125
115
|
}], ctorParameters: () => [] });
|
|
@@ -128,7 +118,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
128
118
|
class RdxVisuallyHiddenInputDirective {
|
|
129
119
|
constructor() {
|
|
130
120
|
this.elementRef = inject(ElementRef);
|
|
131
|
-
this.
|
|
121
|
+
this.injector = inject(Injector);
|
|
122
|
+
this.name = input(undefined);
|
|
132
123
|
this.value = input();
|
|
133
124
|
this.checked = input(undefined);
|
|
134
125
|
this.required = input(undefined);
|
|
@@ -161,13 +152,15 @@ class RdxVisuallyHiddenInputDirective {
|
|
|
161
152
|
}
|
|
162
153
|
return [];
|
|
163
154
|
});
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
155
|
+
afterNextRender(() => {
|
|
156
|
+
effect(() => {
|
|
157
|
+
const parsedValues = this.parsedValue();
|
|
158
|
+
parsedValues.forEach((parsed) => {
|
|
159
|
+
const inputElement = this.elementRef.nativeElement;
|
|
160
|
+
inputElement.setAttribute('name', parsed.name);
|
|
161
|
+
inputElement.setAttribute('value', parsed.value);
|
|
162
|
+
});
|
|
163
|
+
}, { injector: this.injector });
|
|
171
164
|
});
|
|
172
165
|
}
|
|
173
166
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxVisuallyHiddenInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
@@ -191,7 +184,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
191
184
|
}
|
|
192
185
|
]
|
|
193
186
|
}]
|
|
194
|
-
}] });
|
|
187
|
+
}], ctorParameters: () => [] });
|
|
195
188
|
|
|
196
189
|
/**
|
|
197
190
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-visually-hidden.mjs","sources":["../../../packages/primitives/visually-hidden/src/visually-hidden.directive.ts","../../../packages/primitives/visually-hidden/src/visually-hidden-input-bubble.directive.ts","../../../packages/primitives/visually-hidden/src/visually-hidden-input.directive.ts","../../../packages/primitives/visually-hidden/radix-ng-primitives-visually-hidden.ts"],"sourcesContent":["import { Directive, input, linkedSignal } from '@angular/core';\n\n/**\n *\n * <span rdxVisuallyHidden [feature]=\"'fully-hidden'\">\n * <ng-content></ng-content>\n * </span>\n *\n * <button (click)=\"directiveInstance.feature.set('focusable')\">Make Focusable</button>\n * <button (click)=\"directiveInstance.feature.set('fully-hidden')\">Hide</button>\n */\n@Directive({\n selector: '[rdxVisuallyHidden]',\n host: {\n '[attr.aria-hidden]': 'feature() === \"focusable\" ? \"true\" : undefined',\n '[hidden]': 'feature() === \"fully-hidden\" ? true : undefined',\n '[attr.tabindex]': 'feature() === \"fully-hidden\" ? \"-1\" : undefined',\n '[style.position]': '\"absolute\"',\n '[style.border]': '\"0\"',\n '[style.display]': 'feature() === \"focusable\" ? \"inline-block\" : \"none\"',\n '[style.width]': '\"1px\"',\n '[style.height]': '\"1px\"',\n '[style.padding]': '\"0\"',\n '[style.margin]': '\"-1px\"',\n '[style.overflow]': '\"hidden\"',\n '[style.clip]': '\"rect(0, 0, 0, 0)\"',\n '[style.clipPath]': '\"inset(50%)\"',\n '[style.white-space]': '\"nowrap\"',\n '[style.word-wrap]': '\"normal\"'\n }\n})\nexport class RdxVisuallyHiddenDirective {\n readonly feature = input<'focusable' | 'fully-hidden'>('focusable');\n\n protected readonly featureEffect = linkedSignal({\n source: this.feature,\n computation: (feature: 'focusable' | 'fully-hidden') => feature\n });\n\n updateFeature(feature: 'focusable' | 'fully-hidden') {\n this.featureEffect.set(feature);\n }\n}\n","import { Directive, effect, ElementRef, inject, input, linkedSignal } from '@angular/core';\nimport { RdxVisuallyHiddenDirective } from './visually-hidden.directive';\n\n/**\n *\n */\n@Directive({\n selector: 'input[rdxVisuallyHiddenInputBubble]',\n hostDirectives: [{ directive: RdxVisuallyHiddenDirective, inputs: ['feature: feature'] }],\n host: {\n '[attr.name]': 'name()',\n '[attr.required]': 'required()',\n '[attr.disabled]': 'disabled()',\n '[attr.checked]': 'checked()',\n '[value]': 'value()',\n '(change)': 'onChange()'\n }\n})\nexport class RdxVisuallyHiddenInputBubbleDirective<T> {\n private readonly elementRef = inject(ElementRef);\n\n readonly name = input<string>('');\n readonly value = input<T | string | null>();\n readonly checked = input<boolean | undefined>(undefined);\n readonly required = input<boolean | undefined>(undefined);\n readonly disabled = input<boolean | undefined>(undefined);\n readonly feature = input<string>('fully-hidden');\n\n protected readonly valueEffect = linkedSignal({\n source: this.value,\n computation: (value: NoInfer<string | T | null | undefined>) => value\n });\n\n constructor() {\n effect(() => {\n this.updateInputValue();\n });\n }\n\n updateValue(value: string) {\n this.valueEffect.set(value);\n }\n\n protected onChange() {\n this.updateInputValue();\n }\n\n private updateInputValue() {\n let valueChanged = false;\n let checkedChanged = false;\n\n // Check if the value has changed before applying the update\n const currentValue = this.inputElement.value;\n const newValue = String(this.value());\n\n if (currentValue !== newValue) {\n this.inputElement.value = newValue;\n valueChanged = true;\n }\n\n if (this.inputElement.type === 'checkbox' || this.inputElement.type === 'radio') {\n const currentChecked = this.inputElement.checked;\n const newChecked = !!this.checked();\n\n if (currentChecked !== newChecked) {\n this.inputElement.checked = newChecked;\n checkedChanged = true;\n }\n }\n\n if (valueChanged || checkedChanged) {\n this.dispatchInputEvents();\n }\n }\n\n private get inputElement() {\n return this.elementRef.nativeElement;\n }\n\n private dispatchInputEvents() {\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n\n this.inputElement.dispatchEvent(inputEvent);\n this.inputElement.dispatchEvent(changeEvent);\n }\n}\n","// Implementation from https://github.com/unovue/radix-vue\n\nimport { Directive, ElementRef, OnInit, computed, inject, input } from '@angular/core';\nimport { RdxVisuallyHiddenInputBubbleDirective } from './visually-hidden-input-bubble.directive';\n\n@Directive({\n selector: '[rdxVisuallyHiddenInput]',\n hostDirectives: [\n {\n directive: RdxVisuallyHiddenInputBubbleDirective,\n inputs: [\n 'feature: feature',\n 'name: name ',\n 'value: value',\n 'checked: checked',\n 'disabled: disabled',\n 'required: required'\n ]\n }\n ]\n})\nexport class RdxVisuallyHiddenInputDirective<T> implements OnInit {\n private readonly elementRef = inject(ElementRef);\n\n readonly name = input<string>('');\n readonly value = input<T | string>();\n readonly checked = input<boolean | undefined>(undefined);\n readonly required = input<boolean | undefined>(undefined);\n readonly disabled = input<boolean | undefined>(undefined);\n readonly feature = input<'focusable' | 'fully-hidden'>('fully-hidden');\n\n readonly parsedValue = computed<{ name: string; value: any }[]>(() => {\n const value = this.value();\n const name = this.name();\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return [{ name, value }];\n }\n\n if (Array.isArray(value)) {\n return value.flatMap((obj, index) => {\n if (typeof obj === 'object') {\n return Object.entries(obj).map(([key, val]) => ({\n name: `[${name}][${index}][${key}]`,\n value: val\n }));\n } else {\n return { name: `[${name}][${index}]`, value: obj };\n }\n });\n }\n\n if (value !== null && typeof value === 'object') {\n return Object.entries(value).map(([key, val]) => ({\n name: `[${name}][${key}]`,\n value: val\n }));\n }\n\n return [];\n });\n\n ngOnInit() {\n const parsedValues = this.parsedValue();\n\n parsedValues.forEach((parsed) => {\n const inputElement = this.elementRef.nativeElement;\n inputElement.setAttribute('name', parsed.name);\n inputElement.setAttribute('value', parsed.value);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxVisuallyHiddenDirective","i1.RdxVisuallyHiddenInputBubbleDirective"],"mappings":";;;AAEA;;;;;;;;AAQG;MAqBU,0BAA0B,CAAA;AApBvC,IAAA,WAAA,GAAA;AAqBa,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA+B,WAAW,CAAC;QAEhD,IAAa,CAAA,aAAA,GAAG,YAAY,CAAC;YAC5C,MAAM,EAAE,IAAI,CAAC,OAAO;AACpB,YAAA,WAAW,EAAE,CAAC,OAAqC,KAAK;AAC3D,SAAA,CAAC;AAKL;AAHG,IAAA,aAAa,CAAC,OAAqC,EAAA;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;;8GAT1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,oDAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,eAAA,EAAA,qDAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,OAAA,EAAA,eAAA,EAAA,2DAAA,EAAA,aAAA,EAAA,SAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBApBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACF,wBAAA,oBAAoB,EAAE,gDAAgD;AACtE,wBAAA,UAAU,EAAE,iDAAiD;AAC7D,wBAAA,iBAAiB,EAAE,iDAAiD;AACpE,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,iBAAiB,EAAE,qDAAqD;AACxE,wBAAA,eAAe,EAAE,OAAO;AACxB,wBAAA,gBAAgB,EAAE,OAAO;AACzB,wBAAA,iBAAiB,EAAE,KAAK;AACxB,wBAAA,gBAAgB,EAAE,QAAQ;AAC1B,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,cAAc,EAAE,oBAAoB;AACpC,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,qBAAqB,EAAE,UAAU;AACjC,wBAAA,mBAAmB,EAAE;AACxB;AACJ,iBAAA;;;AC3BD;;AAEG;MAaU,qCAAqC,CAAA;AAe9C,IAAA,WAAA,GAAA;AAdiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;QACxB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAqB;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAsB,SAAS,CAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAsB,SAAS,CAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAsB,SAAS,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,cAAc,CAAC;QAE7B,IAAW,CAAA,WAAA,GAAG,YAAY,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,KAAK;AAClB,YAAA,WAAW,EAAE,CAAC,KAA6C,KAAK;AACnE,SAAA,CAAC;QAGE,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,gBAAgB,EAAE;AAC3B,SAAC,CAAC;;AAGN,IAAA,WAAW,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;;IAGrB,QAAQ,GAAA;QACd,IAAI,CAAC,gBAAgB,EAAE;;IAGnB,gBAAgB,GAAA;QACpB,IAAI,YAAY,GAAG,KAAK;QACxB,IAAI,cAAc,GAAG,KAAK;;AAG1B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAErC,QAAA,IAAI,YAAY,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,QAAQ;YAClC,YAAY,GAAG,IAAI;;AAGvB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE;AAC7E,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO;YAChD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;AAEnC,YAAA,IAAI,cAAc,KAAK,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,UAAU;gBACtC,cAAc,GAAG,IAAI;;;AAI7B,QAAA,IAAI,YAAY,IAAI,cAAc,EAAE;YAChC,IAAI,CAAC,mBAAmB,EAAE;;;AAIlC,IAAA,IAAY,YAAY,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;;IAGhC,mBAAmB,GAAA;AACvB,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAE1D,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC;;8GAlEvC,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAZjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;AACzF,oBAAA,IAAI,EAAE;AACF,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,gBAAgB,EAAE,WAAW;AAC7B,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,UAAU,EAAE;AACf;AACJ,iBAAA;;;ACjBD;MAqBa,+BAA+B,CAAA;AAhB5C,IAAA,WAAA,GAAA;AAiBqB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;QACxB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAc;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAsB,SAAS,CAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAsB,SAAS,CAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAsB,SAAS,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA+B,cAAc,CAAC;AAE7D,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAiC,MAAK;AACjE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAExB,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACtF,gBAAA,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;AAG5B,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AAChC,oBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzB,wBAAA,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM;AAC5C,4BAAA,IAAI,EAAE,CAAI,CAAA,EAAA,IAAI,KAAK,KAAK,CAAA,EAAA,EAAK,GAAG,CAAG,CAAA,CAAA;AACnC,4BAAA,KAAK,EAAE;AACV,yBAAA,CAAC,CAAC;;yBACA;AACH,wBAAA,OAAO,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAG,EAAE,KAAK,EAAE,GAAG,EAAE;;AAE1D,iBAAC,CAAC;;YAGN,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7C,gBAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM;AAC9C,oBAAA,IAAI,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,GAAG,CAAG,CAAA,CAAA;AACzB,oBAAA,KAAK,EAAE;AACV,iBAAA,CAAC,CAAC;;AAGP,YAAA,OAAO,EAAE;AACb,SAAC,CAAC;AAWL;IATG,QAAQ,GAAA;AACJ,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;AAEvC,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YAClD,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;YAC9C,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AACpD,SAAC,CAAC;;8GAhDG,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,qCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAhB3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,qCAAqC;AAChD,4BAAA,MAAM,EAAE;gCACJ,kBAAkB;gCAClB,aAAa;gCACb,cAAc;gCACd,kBAAkB;gCAClB,oBAAoB;gCACpB;AACH;AACJ;AACJ;AACJ,iBAAA;;;ACpBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-visually-hidden.mjs","sources":["../../../packages/primitives/visually-hidden/src/visually-hidden.directive.ts","../../../packages/primitives/visually-hidden/src/visually-hidden-input-bubble.directive.ts","../../../packages/primitives/visually-hidden/src/visually-hidden-input.directive.ts","../../../packages/primitives/visually-hidden/radix-ng-primitives-visually-hidden.ts"],"sourcesContent":["import { Directive, input, linkedSignal } from '@angular/core';\n\nexport type VisuallyHidden = 'focusable' | 'fully-hidden';\n\n/**\n *\n * <span rdxVisuallyHidden [feature]=\"'fully-hidden'\">\n * <ng-content />\n * </span>\n *\n * <button (click)=\"directiveInstance.setFeature('focusable')\">Make Focusable</button>\n * <button (click)=\"directiveInstance.setFeature('fully-hidden')\">Hide</button>\n */\n@Directive({\n selector: '[rdxVisuallyHidden]',\n host: {\n '[attr.tabindex]': 'computedFeature() === \"fully-hidden\" ? \"-1\" : undefined',\n '[attr.aria-hidden]': 'computedFeature() === \"focusable\" ? \"true\" : undefined',\n '[attr.data-hidden]': 'computedFeature() === \"fully-hidden\" ? \"\" : undefined',\n '[hidden]': 'computedFeature() === \"fully-hidden\" ? true : undefined',\n '[style]': `{\n position: 'absolute',\n border: 0,\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n wordWrap: 'normal',\n }`,\n '[style.display]': 'feature() === \"focusable\" ? \"inline-block\" : \"none\"'\n }\n})\nexport class RdxVisuallyHiddenDirective {\n readonly feature = input<VisuallyHidden>('focusable');\n\n protected readonly computedFeature = linkedSignal(this.feature);\n\n setFeature(feature: VisuallyHidden) {\n this.computedFeature.set(feature);\n }\n}\n","import { computed, Directive, effect, ElementRef, inject, input, linkedSignal } from '@angular/core';\nimport { watch } from '@radix-ng/primitives/core';\nimport { RdxVisuallyHiddenDirective, VisuallyHidden } from './visually-hidden.directive';\n\n/**\n *\n */\n@Directive({\n selector: 'input[rdxVisuallyHiddenInputBubble]',\n hostDirectives: [\n {\n directive: RdxVisuallyHiddenDirective,\n inputs: ['feature: feature']\n }\n ],\n host: {\n '[attr.name]': 'name()',\n '[attr.required]': 'required()',\n '[attr.disabled]': 'disabled()',\n '[attr.checked]': 'checked()',\n '[value]': 'computedValue()'\n }\n})\nexport class RdxVisuallyHiddenInputBubbleDirective<T> {\n private readonly elementRef = inject(ElementRef);\n private readonly visuallyHidden = inject(RdxVisuallyHiddenDirective);\n\n readonly feature = input<VisuallyHidden>('fully-hidden');\n\n readonly name = input<string | undefined>(undefined);\n readonly value = input<T | string | null>();\n readonly checked = input<boolean | undefined>(undefined);\n readonly required = input<boolean | undefined>(undefined);\n readonly disabled = input<boolean | undefined>(undefined);\n\n protected readonly computedFeature = linkedSignal(this.feature);\n protected readonly computedValue = linkedSignal(this.value);\n\n readonly valueState = computed(() => this.checked() ?? this.computedValue());\n\n constructor() {\n watch([this.valueState], ([cur]) => {\n if (!this.elementRef.nativeElement) {\n return;\n }\n\n const input = this.elementRef.nativeElement as HTMLInputElement;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'value') as PropertyDescriptor;\n const setValue = descriptor.set;\n\n if (setValue) {\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n setValue.call(input, cur);\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n }\n });\n\n effect(() => {\n this.visuallyHidden.setFeature(this.computedFeature());\n });\n }\n\n setValue(value: string) {\n this.computedValue.set(value);\n }\n\n setFeature(feature: VisuallyHidden) {\n this.computedFeature.set(feature);\n }\n}\n","// Implementation from https://github.com/unovue/radix-vue\n\nimport { Directive, ElementRef, Injector, afterNextRender, computed, effect, inject, input } from '@angular/core';\nimport { RdxVisuallyHiddenInputBubbleDirective } from './visually-hidden-input-bubble.directive';\nimport { VisuallyHidden } from './visually-hidden.directive';\n\n@Directive({\n selector: '[rdxVisuallyHiddenInput]',\n hostDirectives: [\n {\n directive: RdxVisuallyHiddenInputBubbleDirective,\n inputs: [\n 'feature: feature',\n 'name: name ',\n 'value: value',\n 'checked: checked',\n 'disabled: disabled',\n 'required: required'\n ]\n }\n ]\n})\nexport class RdxVisuallyHiddenInputDirective<T> {\n private readonly elementRef = inject(ElementRef);\n private readonly injector = inject(Injector);\n\n readonly name = input<string | undefined>(undefined);\n readonly value = input<T | string>();\n readonly checked = input<boolean | undefined>(undefined);\n readonly required = input<boolean | undefined>(undefined);\n readonly disabled = input<boolean | undefined>(undefined);\n readonly feature = input<VisuallyHidden>('fully-hidden');\n\n readonly parsedValue = computed(() => {\n const value = this.value();\n const name = this.name();\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return [{ name, value }];\n }\n\n if (Array.isArray(value)) {\n return value.flatMap((obj, index) => {\n if (typeof obj === 'object') {\n return Object.entries(obj).map(([key, val]) => ({\n name: `[${name}][${index}][${key}]`,\n value: val\n }));\n } else {\n return { name: `[${name}][${index}]`, value: obj };\n }\n });\n }\n\n if (value !== null && typeof value === 'object') {\n return Object.entries(value).map(([key, val]) => ({\n name: `[${name}][${key}]`,\n value: val\n }));\n }\n\n return [];\n });\n\n constructor() {\n afterNextRender(() => {\n effect(\n () => {\n const parsedValues = this.parsedValue();\n\n parsedValues.forEach((parsed) => {\n const inputElement = this.elementRef.nativeElement;\n inputElement.setAttribute('name', parsed.name);\n inputElement.setAttribute('value', parsed.value);\n });\n },\n { injector: this.injector }\n );\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxVisuallyHiddenDirective","i1.RdxVisuallyHiddenInputBubbleDirective"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @radix-ng/primitives/focus-guards
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/focus-guards';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Injects a pair of focus guards at the edges of the whole DOM tree
|
|
4
|
+
* to ensure `focusin` & `focusout` events can be caught consistently.
|
|
5
|
+
*/
|
|
6
|
+
export declare class RdxFocusGuards {
|
|
7
|
+
private readonly injector;
|
|
8
|
+
constructor();
|
|
9
|
+
createFocusGuard(): HTMLSpanElement;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RdxFocusGuards, never>;
|
|
11
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxFocusGuards, never, never, {}, {}, never, never, true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @radix-ng/primitives/focus-scope
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/focus-scope';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
|
2
|
+
import { Signal } from '@angular/core';
|
|
3
|
+
import { FocusScopeAPI } from './stack';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export interface FocusScopeContext {
|
|
6
|
+
loop?: Signal<boolean>;
|
|
7
|
+
trapped?: Signal<boolean>;
|
|
8
|
+
}
|
|
9
|
+
export declare const injectFocusScopeContext: (optional?: boolean) => FocusScopeContext | null, provideFocusScopeContext: (useFactory: () => FocusScopeContext) => import("@angular/core").Provider;
|
|
10
|
+
/**
|
|
11
|
+
* @group Components
|
|
12
|
+
*/
|
|
13
|
+
export declare class RdxFocusScope {
|
|
14
|
+
private readonly injector;
|
|
15
|
+
private readonly elementRef;
|
|
16
|
+
/**
|
|
17
|
+
* When `true`, tabbing from last item will focus first tabbable
|
|
18
|
+
* and shift+tab from first item will focus last tababble.
|
|
19
|
+
*
|
|
20
|
+
* @group Props
|
|
21
|
+
* @defaultValue false
|
|
22
|
+
*/
|
|
23
|
+
readonly loop: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
|
|
24
|
+
/**
|
|
25
|
+
* When `true`, focus cannot escape the focus scope via keyboard,
|
|
26
|
+
* pointer, or a programmatic focus.
|
|
27
|
+
*
|
|
28
|
+
* @group Props
|
|
29
|
+
* @defaultValue false
|
|
30
|
+
*/
|
|
31
|
+
readonly trapped: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
|
|
32
|
+
/**
|
|
33
|
+
* Event handler called when auto-focusing on mount.
|
|
34
|
+
* Can be prevented.
|
|
35
|
+
*
|
|
36
|
+
* @group Emits
|
|
37
|
+
*/
|
|
38
|
+
readonly mountAutoFocus: import("@angular/core").OutputEmitterRef<Event>;
|
|
39
|
+
/**
|
|
40
|
+
* Event handler called when auto-focusing on unmount.
|
|
41
|
+
* Can be prevented.
|
|
42
|
+
*
|
|
43
|
+
* @group Emits
|
|
44
|
+
*/
|
|
45
|
+
readonly unmountAutoFocus: import("@angular/core").OutputEmitterRef<Event>;
|
|
46
|
+
readonly lastFocusedElement: import("@angular/core").WritableSignal<HTMLElement | null>;
|
|
47
|
+
private readonly focusScopesStack;
|
|
48
|
+
readonly focusScope: FocusScopeAPI;
|
|
49
|
+
constructor();
|
|
50
|
+
handleKeyDown(event: KeyboardEvent): void;
|
|
51
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RdxFocusScope, never>;
|
|
52
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxFocusScope, "[rdxFocusScope]", never, { "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "trapped": { "alias": "trapped"; "required": false; "isSignal": true; }; }, { "mountAutoFocus": "mountAutoFocus"; "unmountAutoFocus": "unmountAutoFocus"; }, never, never, true, never>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WritableSignal } from '@angular/core';
|
|
2
|
+
export declare function createGlobalState<T>(factory: () => T): () => T;
|
|
3
|
+
export interface FocusScopeAPI {
|
|
4
|
+
paused: WritableSignal<boolean>;
|
|
5
|
+
pause(): void;
|
|
6
|
+
resume(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createFocusScopesStack(): {
|
|
9
|
+
add(focusScope: FocusScopeAPI): void;
|
|
10
|
+
remove(focusScope: FocusScopeAPI): void;
|
|
11
|
+
};
|
|
12
|
+
export declare function arrayRemove<T>(array: T[], item: T): T[];
|
|
13
|
+
export declare function removeLinks(items: HTMLElement[]): HTMLElement[];
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
|
|
2
|
+
export declare const AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
|
|
3
|
+
export declare const EVENT_OPTIONS: {
|
|
4
|
+
bubbles: boolean;
|
|
5
|
+
cancelable: boolean;
|
|
6
|
+
};
|
|
7
|
+
type FocusableTarget = HTMLElement | {
|
|
8
|
+
focus: () => void;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Attempts focusing the first element in a list of candidates.
|
|
12
|
+
* Stops when focus has actually moved.
|
|
13
|
+
*/
|
|
14
|
+
export declare function focusFirst(candidates: HTMLElement[], { select }?: {
|
|
15
|
+
select?: boolean | undefined;
|
|
16
|
+
}): true | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Returns a list of potential tabbable candidates.
|
|
19
|
+
*
|
|
20
|
+
* NOTE: This is only a close approximation. For example it doesn't take into account cases like when
|
|
21
|
+
* elements are not visible. This cannot be worked out easily by just reading a property, but rather
|
|
22
|
+
* necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.
|
|
23
|
+
*
|
|
24
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
|
|
25
|
+
* Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1
|
|
26
|
+
*/
|
|
27
|
+
export declare function getTabbableCandidates(container: HTMLElement): HTMLElement[];
|
|
28
|
+
export declare function isHidden(node: HTMLElement, { upTo }: {
|
|
29
|
+
upTo?: HTMLElement;
|
|
30
|
+
}): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the first visible element in a list.
|
|
33
|
+
* NOTE: Only checks visibility up to the `container`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function findVisible(elements: HTMLElement[], container: HTMLElement): HTMLElement | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Returns the first and last tabbable elements inside a container.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getTabbableEdges(container: HTMLElement): readonly [HTMLElement | undefined, HTMLElement | undefined];
|
|
40
|
+
export declare function isSelectableInput(element: any): element is FocusableTarget & {
|
|
41
|
+
select: () => void;
|
|
42
|
+
};
|
|
43
|
+
export declare function focus(element?: FocusableTarget | null, { select }?: {
|
|
44
|
+
select?: boolean | undefined;
|
|
45
|
+
}): void;
|
|
46
|
+
export {};
|
|
@@ -93,7 +93,7 @@ export declare class RdxHoverCardRootDirective {
|
|
|
93
93
|
window: Window & typeof globalThis;
|
|
94
94
|
primitiveConfigs?: import("./utils/types").PrimitiveConfigs;
|
|
95
95
|
onDestroyCallbacks: Set<() => void>;
|
|
96
|
-
"__#
|
|
96
|
+
"__#14891@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
|
|
97
97
|
registerPrimitive<T extends object>(primitiveInstance: T): void;
|
|
98
98
|
deregisterPrimitive<T extends object>(primitiveInstance: T): void;
|
|
99
99
|
preventPrimitiveFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): void;
|
|
@@ -104,9 +104,9 @@ export declare class RdxHoverCardRootDirective {
|
|
|
104
104
|
primitivePreventedFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): boolean | undefined;
|
|
105
105
|
addClickDomRootEventCallback(callback: (event: MouseEvent) => void): void;
|
|
106
106
|
removeClickDomRootEventCallback(callback: (event: MouseEvent) => void): boolean;
|
|
107
|
-
"__#
|
|
108
|
-
"__#
|
|
109
|
-
"__#
|
|
107
|
+
"__#14891@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
|
|
108
|
+
"__#14891@#registerOnDestroyCallbacks"(): void;
|
|
109
|
+
"__#14891@#listenToClickDomRootEvent"(): void;
|
|
110
110
|
} | null;
|
|
111
111
|
/** @ignore */
|
|
112
112
|
readonly destroyRef: DestroyRef;
|
|
@@ -10,6 +10,7 @@ export declare class RdxNavigationMenuTriggerDirective extends RdxNavigationMenu
|
|
|
10
10
|
private readonly elementRef;
|
|
11
11
|
private readonly viewContainerRef;
|
|
12
12
|
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
readonly openOnHover: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
13
14
|
readonly triggerId: string;
|
|
14
15
|
readonly contentId: string;
|
|
15
16
|
readonly open: import("@angular/core").Signal<boolean>;
|
|
@@ -29,5 +30,5 @@ export declare class RdxNavigationMenuTriggerDirective extends RdxNavigationMenu
|
|
|
29
30
|
onClick(): void;
|
|
30
31
|
onKeydown(event: KeyboardEvent): void;
|
|
31
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<RdxNavigationMenuTriggerDirective, never>;
|
|
32
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxNavigationMenuTriggerDirective, "[rdxNavigationMenuTrigger]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxRovingFocusItemDirective; inputs: {}; outputs: {}; }]>;
|
|
33
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxNavigationMenuTriggerDirective, "[rdxNavigationMenuTrigger]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxRovingFocusItemDirective; inputs: {}; outputs: {}; }]>;
|
|
33
34
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radix-ng/primitives",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -100,6 +100,14 @@
|
|
|
100
100
|
"types": "./editable/index.d.ts",
|
|
101
101
|
"default": "./fesm2022/radix-ng-primitives-editable.mjs"
|
|
102
102
|
},
|
|
103
|
+
"./focus-guards": {
|
|
104
|
+
"types": "./focus-guards/index.d.ts",
|
|
105
|
+
"default": "./fesm2022/radix-ng-primitives-focus-guards.mjs"
|
|
106
|
+
},
|
|
107
|
+
"./focus-scope": {
|
|
108
|
+
"types": "./focus-scope/index.d.ts",
|
|
109
|
+
"default": "./fesm2022/radix-ng-primitives-focus-scope.mjs"
|
|
110
|
+
},
|
|
103
111
|
"./hover-card": {
|
|
104
112
|
"types": "./hover-card/index.d.ts",
|
|
105
113
|
"default": "./fesm2022/radix-ng-primitives-hover-card.mjs"
|
|
@@ -70,7 +70,7 @@ export declare class RdxPopoverRootDirective {
|
|
|
70
70
|
window: Window & typeof globalThis;
|
|
71
71
|
primitiveConfigs?: import("./utils/types").PrimitiveConfigs;
|
|
72
72
|
onDestroyCallbacks: Set<() => void>;
|
|
73
|
-
"__#
|
|
73
|
+
"__#19196@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
|
|
74
74
|
registerPrimitive<T extends object>(primitiveInstance: T): void;
|
|
75
75
|
deregisterPrimitive<T extends object>(primitiveInstance: T): void;
|
|
76
76
|
preventPrimitiveFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): void;
|
|
@@ -81,9 +81,9 @@ export declare class RdxPopoverRootDirective {
|
|
|
81
81
|
primitivePreventedFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): boolean | undefined;
|
|
82
82
|
addClickDomRootEventCallback(callback: (event: MouseEvent) => void): void;
|
|
83
83
|
removeClickDomRootEventCallback(callback: (event: MouseEvent) => void): boolean;
|
|
84
|
-
"__#
|
|
85
|
-
"__#
|
|
86
|
-
"__#
|
|
84
|
+
"__#19196@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
|
|
85
|
+
"__#19196@#registerOnDestroyCallbacks"(): void;
|
|
86
|
+
"__#19196@#listenToClickDomRootEvent"(): void;
|
|
87
87
|
} | null;
|
|
88
88
|
/** @ignore */
|
|
89
89
|
readonly destroyRef: DestroyRef;
|
|
@@ -79,7 +79,7 @@ export declare class RdxTooltipRootDirective {
|
|
|
79
79
|
window: Window & typeof globalThis;
|
|
80
80
|
primitiveConfigs?: import("./utils/types").PrimitiveConfigs;
|
|
81
81
|
onDestroyCallbacks: Set<() => void>;
|
|
82
|
-
"__#
|
|
82
|
+
"__#23041@#clickDomRootEventCallbacks": Set<(event: MouseEvent) => void>;
|
|
83
83
|
registerPrimitive<T extends object>(primitiveInstance: T): void;
|
|
84
84
|
deregisterPrimitive<T extends object>(primitiveInstance: T): void;
|
|
85
85
|
preventPrimitiveFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): void;
|
|
@@ -90,9 +90,9 @@ export declare class RdxTooltipRootDirective {
|
|
|
90
90
|
primitivePreventedFromCdkEvent<T extends object>(primitiveInstance: T, eventType: import("./utils/types").EventType): boolean | undefined;
|
|
91
91
|
addClickDomRootEventCallback(callback: (event: MouseEvent) => void): void;
|
|
92
92
|
removeClickDomRootEventCallback(callback: (event: MouseEvent) => void): boolean;
|
|
93
|
-
"__#
|
|
94
|
-
"__#
|
|
95
|
-
"__#
|
|
93
|
+
"__#23041@#setPreventPrimitiveFromCdkEvent"<T extends object, R extends import("./utils/types").EventType, K extends import("./utils/types").PrimitiveConfig[`prevent${Capitalize<R>}`]>(primitiveInstance: T, eventType: R, value: K): void;
|
|
94
|
+
"__#23041@#registerOnDestroyCallbacks"(): void;
|
|
95
|
+
"__#23041@#listenToClickDomRootEvent"(): void;
|
|
96
96
|
} | null;
|
|
97
97
|
/** @ignore */
|
|
98
98
|
readonly destroyRef: DestroyRef;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VisuallyHidden } from './visually-hidden.directive';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
3
|
import * as i1 from "./visually-hidden.directive";
|
|
3
4
|
/**
|
|
@@ -5,19 +6,19 @@ import * as i1 from "./visually-hidden.directive";
|
|
|
5
6
|
*/
|
|
6
7
|
export declare class RdxVisuallyHiddenInputBubbleDirective<T> {
|
|
7
8
|
private readonly elementRef;
|
|
8
|
-
readonly
|
|
9
|
+
private readonly visuallyHidden;
|
|
10
|
+
readonly feature: import("@angular/core").InputSignal<VisuallyHidden>;
|
|
11
|
+
readonly name: import("@angular/core").InputSignal<string | undefined>;
|
|
9
12
|
readonly value: import("@angular/core").InputSignal<string | T | null | undefined>;
|
|
10
13
|
readonly checked: import("@angular/core").InputSignal<boolean | undefined>;
|
|
11
14
|
readonly required: import("@angular/core").InputSignal<boolean | undefined>;
|
|
12
15
|
readonly disabled: import("@angular/core").InputSignal<boolean | undefined>;
|
|
13
|
-
readonly
|
|
14
|
-
protected readonly
|
|
16
|
+
protected readonly computedFeature: import("@angular/core").WritableSignal<VisuallyHidden>;
|
|
17
|
+
protected readonly computedValue: import("@angular/core").WritableSignal<string | T | null | undefined>;
|
|
18
|
+
readonly valueState: import("@angular/core").Signal<string | boolean | T | null | undefined>;
|
|
15
19
|
constructor();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
private updateInputValue;
|
|
19
|
-
private get inputElement();
|
|
20
|
-
private dispatchInputEvents;
|
|
20
|
+
setValue(value: string): void;
|
|
21
|
+
setFeature(feature: VisuallyHidden): void;
|
|
21
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<RdxVisuallyHiddenInputBubbleDirective<any>, never>;
|
|
22
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxVisuallyHiddenInputBubbleDirective<any>, "input[rdxVisuallyHiddenInputBubble]", never, { "
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RdxVisuallyHiddenInputBubbleDirective<any>, "input[rdxVisuallyHiddenInputBubble]", never, { "feature": { "alias": "feature"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxVisuallyHiddenDirective; inputs: { "feature": "feature"; }; outputs: {}; }]>;
|
|
23
24
|
}
|