@radix-ng/primitives 0.1.1 → 0.2.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/esm2022/radio/index.mjs +6 -0
- package/esm2022/radio/radix-ng-primitives-radio.mjs +5 -0
- package/esm2022/radio/src/radio-group.directive.mjs +108 -0
- package/esm2022/radio/src/radio-group.token.mjs +6 -0
- package/esm2022/radio/src/radio-indicator.directive.mjs +30 -0
- package/esm2022/radio/src/radio-item.directive.mjs +79 -0
- package/esm2022/radio/src/radio-item.token.mjs +6 -0
- package/fesm2022/radix-ng-primitives-radio.mjs +221 -0
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -0
- package/package.json +7 -1
- package/radio/README.md +1 -0
- package/radio/index.d.ts +5 -0
- package/radio/src/radio-group.directive.d.ts +65 -0
- package/radio/src/radio-group.token.d.ts +4 -0
- package/radio/src/radio-indicator.directive.d.ts +13 -0
- package/radio/src/radio-item.directive.d.ts +36 -0
- package/radio/src/radio-item.token.d.ts +4 -0
@@ -0,0 +1,6 @@
|
|
1
|
+
export * from './src/radio-group.directive';
|
2
|
+
export * from './src/radio-item.directive';
|
3
|
+
export * from './src/radio-group.token';
|
4
|
+
export * from './src/radio-indicator.directive';
|
5
|
+
export * from './src/radio-item.token';
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL3JhZGlvLWdyb3VwLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9yYWRpby1ncm91cC50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9yYWRpby1pbmRpY2F0b3IuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3JhZGlvLWl0ZW0udG9rZW4nO1xuIl19
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1yYWRpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcmFkaW8vcmFkaXgtbmctcHJpbWl0aXZlcy1yYWRpby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
@@ -0,0 +1,108 @@
|
|
1
|
+
import { Directive, EventEmitter, HostListener, Input, Output, booleanAttribute } from '@angular/core';
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
3
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
4
|
+
import { RovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';
|
5
|
+
import { RadioGroupToken } from './radio-group.token';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
8
|
+
export class RadioGroupDirective {
|
9
|
+
constructor() {
|
10
|
+
/**
|
11
|
+
* Whether the radio group is disabled.
|
12
|
+
*/
|
13
|
+
this.disabled = false;
|
14
|
+
/**
|
15
|
+
* The orientation of the radio group.
|
16
|
+
* @default 'horizontal'
|
17
|
+
*/
|
18
|
+
this.orientation = 'horizontal';
|
19
|
+
/**
|
20
|
+
* Event emitted when the value of the radio group changes.
|
21
|
+
*/
|
22
|
+
this.valueChange = new EventEmitter();
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* Select a radio item.
|
26
|
+
* @param value The value of the radio item to select.
|
27
|
+
*/
|
28
|
+
select(value) {
|
29
|
+
this.value = value;
|
30
|
+
this.valueChange.emit(value);
|
31
|
+
this.onChange?.(value);
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* Update the value of the radio group.
|
35
|
+
* @param value The new value of the radio group.
|
36
|
+
* @internal
|
37
|
+
*/
|
38
|
+
writeValue(value) {
|
39
|
+
this.value = value;
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* Register a callback function to call when the value of the radio group changes.
|
43
|
+
* @param fn The callback function to call when the value of the radio group changes.
|
44
|
+
* @internal
|
45
|
+
*/
|
46
|
+
registerOnChange(fn) {
|
47
|
+
this.onChange = fn;
|
48
|
+
}
|
49
|
+
registerOnTouched(fn) {
|
50
|
+
this.onTouched = fn;
|
51
|
+
}
|
52
|
+
/**
|
53
|
+
* Set the disabled state of the radio group.
|
54
|
+
* @param isDisabled Whether the radio group is disabled.
|
55
|
+
* @internal
|
56
|
+
*/
|
57
|
+
setDisabledState(isDisabled) {
|
58
|
+
this.disabled = isDisabled;
|
59
|
+
}
|
60
|
+
/**
|
61
|
+
* When focus leaves the radio group, mark it as touched.
|
62
|
+
* @internal
|
63
|
+
*/
|
64
|
+
onFocusout() {
|
65
|
+
this.onTouched?.();
|
66
|
+
}
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
68
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RadioGroupDirective, isStandalone: true, selector: "[rdxRadioGroup]", inputs: { value: ["rdxRadioGroupValue", "value"], disabled: ["rdxRadioGroupDisabled", "disabled", booleanAttribute], orientation: ["rdxRadioGroupOrientation", "orientation"] }, outputs: { valueChange: "rdxRadioGroupValueChange" }, host: { attributes: { "role": "radiogroup" }, listeners: { "focusout": "onFocusout()" }, properties: { "attr.aria-orientation": "orientation", "attr.data-disabled": "disabled ? \"\" : null" } }, providers: [
|
69
|
+
{ provide: RadioGroupToken, useExisting: RadioGroupDirective },
|
70
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioGroupDirective, multi: true }
|
71
|
+
], hostDirectives: [{ directive: i1.RovingFocusGroupDirective }], ngImport: i0 }); }
|
72
|
+
}
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioGroupDirective, decorators: [{
|
74
|
+
type: Directive,
|
75
|
+
args: [{
|
76
|
+
selector: '[rdxRadioGroup]',
|
77
|
+
standalone: true,
|
78
|
+
providers: [
|
79
|
+
{ provide: RadioGroupToken, useExisting: RadioGroupDirective },
|
80
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioGroupDirective, multi: true }
|
81
|
+
],
|
82
|
+
hostDirectives: [RovingFocusGroupDirective],
|
83
|
+
host: {
|
84
|
+
role: 'radiogroup',
|
85
|
+
'[attr.aria-orientation]': 'orientation',
|
86
|
+
'[attr.data-disabled]': 'disabled ? "" : null'
|
87
|
+
}
|
88
|
+
}]
|
89
|
+
}], propDecorators: { value: [{
|
90
|
+
type: Input,
|
91
|
+
args: ['rdxRadioGroupValue']
|
92
|
+
}], disabled: [{
|
93
|
+
type: Input,
|
94
|
+
args: [{
|
95
|
+
alias: 'rdxRadioGroupDisabled',
|
96
|
+
transform: booleanAttribute
|
97
|
+
}]
|
98
|
+
}], orientation: [{
|
99
|
+
type: Input,
|
100
|
+
args: ['rdxRadioGroupOrientation']
|
101
|
+
}], valueChange: [{
|
102
|
+
type: Output,
|
103
|
+
args: ['rdxRadioGroupValueChange']
|
104
|
+
}], onFocusout: [{
|
105
|
+
type: HostListener,
|
106
|
+
args: ['focusout']
|
107
|
+
}] } });
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yYWRpby9zcmMvcmFkaW8tZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUseURBQXlEO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBZ0J0RCxNQUFNLE9BQU8sbUJBQW1CO0lBZGhDO1FBb0JJOztXQUVHO1FBS0gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7O1dBR0c7UUFDZ0MsZ0JBQVcsR0FBOEIsWUFBWSxDQUFDO1FBRXpGOztXQUVHO1FBQzBDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQStEekY7SUFqREc7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWE7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxFQUEyQjtRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OEdBdEZRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHFKQVdiLGdCQUFnQixtVUF0QnBCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRTtZQUM5RCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNoRjs7MkZBUVEsbUJBQW1CO2tCQWQvQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQzlELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDaEY7b0JBQ0QsY0FBYyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQzNDLElBQUksRUFBRTt3QkFDRixJQUFJLEVBQUUsWUFBWTt3QkFDbEIseUJBQXlCLEVBQUUsYUFBYTt3QkFDeEMsc0JBQXNCLEVBQUUsc0JBQXNCO3FCQUNqRDtpQkFDSjs4QkFLZ0MsS0FBSztzQkFBakMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBUzNCLFFBQVE7c0JBSlAsS0FBSzt1QkFBQzt3QkFDSCxLQUFLLEVBQUUsdUJBQXVCO3dCQUM5QixTQUFTLEVBQUUsZ0JBQWdCO3FCQUM5QjtnQkFPa0MsV0FBVztzQkFBN0MsS0FBSzt1QkFBQywwQkFBMEI7Z0JBS1ksV0FBVztzQkFBdkQsTUFBTTt1QkFBQywwQkFBMEI7Z0JBNER4QixVQUFVO3NCQURuQixZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBueC9lbmZvcmNlLW1vZHVsZS1ib3VuZGFyaWVzXG5pbXBvcnQgeyBSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzJztcbmltcG9ydCB7IFJhZGlvR3JvdXBUb2tlbiB9IGZyb20gJy4vcmFkaW8tZ3JvdXAudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhSYWRpb0dyb3VwXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBSYWRpb0dyb3VwVG9rZW4sIHVzZUV4aXN0aW5nOiBSYWRpb0dyb3VwRGlyZWN0aXZlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBSYWRpb0dyb3VwRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9XG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1JvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3JhZGlvZ3JvdXAnLFxuICAgICAgICAnW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0nOiAnb3JpZW50YXRpb24nLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQgPyBcIlwiIDogbnVsbCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvR3JvdXBEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cC5cbiAgICAgKi9cbiAgICBASW5wdXQoJ3JkeFJhZGlvR3JvdXBWYWx1ZScpIHZhbHVlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcmFkaW8gZ3JvdXAgaXMgZGlzYWJsZWQuXG4gICAgICovXG4gICAgQElucHV0KHtcbiAgICAgICAgYWxpYXM6ICdyZHhSYWRpb0dyb3VwRGlzYWJsZWQnLFxuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGVcbiAgICB9KVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBkZWZhdWx0ICdob3Jpem9udGFsJ1xuICAgICAqL1xuICAgIEBJbnB1dCgncmR4UmFkaW9Hcm91cE9yaWVudGF0aW9uJykgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSByYWRpbyBncm91cCBjaGFuZ2VzLlxuICAgICAqL1xuICAgIEBPdXRwdXQoJ3JkeFJhZGlvR3JvdXBWYWx1ZUNoYW5nZScpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gZ3JvdXAgY2hhbmdlcy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSByYWRpbyBncm91cCBpcyB0b3VjaGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhIHJhZGlvIGl0ZW0uXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gaXRlbSB0byBzZWxlY3QuXG4gICAgICovXG4gICAgc2VsZWN0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlPy4odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IHZhbHVlIG9mIHRoZSByYWRpbyBncm91cC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gZ3JvdXAgY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0gZm4gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIHJhZGlvIGdyb3VwIGNoYW5nZXMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgcmFkaW8gZ3JvdXAuXG4gICAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hldGhlciB0aGUgcmFkaW8gZ3JvdXAgaXMgZGlzYWJsZWQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gZm9jdXMgbGVhdmVzIHRoZSByYWRpbyBncm91cCwgbWFyayBpdCBhcyB0b3VjaGVkLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgICBwcm90ZWN0ZWQgb25Gb2N1c291dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQ/LigpO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { InjectionToken, inject } from '@angular/core';
|
2
|
+
export const RadioGroupToken = new InjectionToken('RadioGroupToken');
|
3
|
+
export function injectRadioGroup() {
|
4
|
+
return inject(RadioGroupToken);
|
5
|
+
}
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1ncm91cC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQXNCLGlCQUFpQixDQUFDLENBQUM7QUFFMUYsTUFBTSxVQUFVLGdCQUFnQjtJQUM1QixPQUFPLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBSYWRpb0dyb3VwRGlyZWN0aXZlIH0gZnJvbSAnLi9yYWRpby1ncm91cC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgUmFkaW9Hcm91cFRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFJhZGlvR3JvdXBEaXJlY3RpdmU+KCdSYWRpb0dyb3VwVG9rZW4nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJhZGlvR3JvdXAoKTogUmFkaW9Hcm91cERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGluamVjdChSYWRpb0dyb3VwVG9rZW4pO1xufVxuIl19
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { Directive } from '@angular/core';
|
2
|
+
import { injectRadioGroup } from './radio-group.token';
|
3
|
+
import { injectRadioItem } from './radio-item.token';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export class RadioIndicatorDirective {
|
6
|
+
constructor() {
|
7
|
+
/**
|
8
|
+
* Access the radio group.
|
9
|
+
*/
|
10
|
+
this.radioGroup = injectRadioGroup();
|
11
|
+
/**
|
12
|
+
* Access the radio group item.
|
13
|
+
*/
|
14
|
+
this.radioItem = injectRadioItem();
|
15
|
+
}
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
17
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RadioIndicatorDirective, isStandalone: true, selector: "[rdxRadioIndicator]", host: { properties: { "attr.data-state": "radioGroup.value === this.radioItem.value ? \"checked\" : \"unchecked\"", "attr.data-disabled": "radioItem.disabled ? \"\" : null" } }, ngImport: i0 }); }
|
18
|
+
}
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioIndicatorDirective, decorators: [{
|
20
|
+
type: Directive,
|
21
|
+
args: [{
|
22
|
+
selector: '[rdxRadioIndicator]',
|
23
|
+
standalone: true,
|
24
|
+
host: {
|
25
|
+
'[attr.data-state]': 'radioGroup.value === this.radioItem.value ? "checked" : "unchecked"',
|
26
|
+
'[attr.data-disabled]': 'radioItem.disabled ? "" : null'
|
27
|
+
}
|
28
|
+
}]
|
29
|
+
}] });
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taW5kaWNhdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcmFkaW8vc3JjL3JhZGlvLWluZGljYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBVXJELE1BQU0sT0FBTyx1QkFBdUI7SUFScEM7UUFTSTs7V0FFRztRQUNnQixlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUVuRDs7V0FFRztRQUNnQixjQUFTLEdBQUcsZUFBZSxFQUFFLENBQUM7S0FDcEQ7OEdBVlksdUJBQXVCO2tHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBUm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDRixtQkFBbUIsRUFBRSxxRUFBcUU7d0JBQzFGLHNCQUFzQixFQUFFLGdDQUFnQztxQkFDM0Q7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdFJhZGlvR3JvdXAgfSBmcm9tICcuL3JhZGlvLWdyb3VwLnRva2VuJztcbmltcG9ydCB7IGluamVjdFJhZGlvSXRlbSB9IGZyb20gJy4vcmFkaW8taXRlbS50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJhZGlvSW5kaWNhdG9yXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdyYWRpb0dyb3VwLnZhbHVlID09PSB0aGlzLnJhZGlvSXRlbS52YWx1ZSA/IFwiY2hlY2tlZFwiIDogXCJ1bmNoZWNrZWRcIicsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdyYWRpb0l0ZW0uZGlzYWJsZWQgPyBcIlwiIDogbnVsbCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvSW5kaWNhdG9yRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByYWRpb0dyb3VwID0gaW5qZWN0UmFkaW9Hcm91cCgpO1xuXG4gICAgLyoqXG4gICAgICogQWNjZXNzIHRoZSByYWRpbyBncm91cCBpdGVtLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByYWRpb0l0ZW0gPSBpbmplY3RSYWRpb0l0ZW0oKTtcbn1cbiJdfQ==
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import { Directive, HostListener, Input, booleanAttribute } from '@angular/core';
|
2
|
+
import { injectRadioGroup } from './radio-group.token';
|
3
|
+
import { RadioItemToken } from './radio-item.token';
|
4
|
+
// eslint-disable-next-line @nx/enforce-module-boundaries
|
5
|
+
import { RovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
8
|
+
export class RadioItemDirective {
|
9
|
+
constructor() {
|
10
|
+
/**
|
11
|
+
* Access the radio group.
|
12
|
+
*/
|
13
|
+
this.radioGroup = injectRadioGroup();
|
14
|
+
/**
|
15
|
+
* Whether the radio item is disabled.
|
16
|
+
* @default false
|
17
|
+
*/
|
18
|
+
this.disabled = false;
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* Handle keydown events.
|
22
|
+
* @param event The keydown event.
|
23
|
+
* @internal
|
24
|
+
*/
|
25
|
+
onKeydown(event) {
|
26
|
+
// According to WAI ARIA, radio groups don't activate items on enter keypress
|
27
|
+
if (event.key === 'Enter') {
|
28
|
+
event.preventDefault();
|
29
|
+
}
|
30
|
+
}
|
31
|
+
/**
|
32
|
+
* When the item receives focus, select it.
|
33
|
+
* @internal
|
34
|
+
*/
|
35
|
+
onFocus() {
|
36
|
+
this.radioGroup.select(this.value);
|
37
|
+
}
|
38
|
+
/**
|
39
|
+
* When the item receives a click, select it.
|
40
|
+
* @internal
|
41
|
+
*/
|
42
|
+
onClick() {
|
43
|
+
this.radioGroup.select(this.value);
|
44
|
+
}
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
46
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RadioItemDirective, isStandalone: true, selector: "button[rdxRadioItem]", inputs: { value: "value", disabled: ["disabled", "disabled", booleanAttribute] }, host: { attributes: { "type": "button", "role": "radio" }, listeners: { "keydown": "onKeydown($event)", "focus": "onFocus()", "click": "onClick()" }, properties: { "attr.aria-checked": "radioGroup.value === value ? \"true\" : \"false\"", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "radioGroup.value === value ? \"checked\" : \"unchecked\"" } }, providers: [{ provide: RadioItemToken, useExisting: RadioItemDirective }], hostDirectives: [{ directive: i1.RovingFocusItemDirective }], ngImport: i0 }); }
|
47
|
+
}
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioItemDirective, decorators: [{
|
49
|
+
type: Directive,
|
50
|
+
args: [{
|
51
|
+
selector: 'button[rdxRadioItem]',
|
52
|
+
standalone: true,
|
53
|
+
hostDirectives: [RovingFocusItemDirective],
|
54
|
+
providers: [{ provide: RadioItemToken, useExisting: RadioItemDirective }],
|
55
|
+
host: {
|
56
|
+
type: 'button',
|
57
|
+
role: 'radio',
|
58
|
+
'[attr.aria-checked]': 'radioGroup.value === value ? "true" : "false"',
|
59
|
+
'[attr.data-disabled]': 'disabled ? "" : null',
|
60
|
+
'[attr.data-state]': 'radioGroup.value === value ? "checked" : "unchecked"'
|
61
|
+
}
|
62
|
+
}]
|
63
|
+
}], propDecorators: { value: [{
|
64
|
+
type: Input,
|
65
|
+
args: [{ required: true }]
|
66
|
+
}], disabled: [{
|
67
|
+
type: Input,
|
68
|
+
args: [{ transform: booleanAttribute }]
|
69
|
+
}], onKeydown: [{
|
70
|
+
type: HostListener,
|
71
|
+
args: ['keydown', ['$event']]
|
72
|
+
}], onFocus: [{
|
73
|
+
type: HostListener,
|
74
|
+
args: ['focus']
|
75
|
+
}], onClick: [{
|
76
|
+
type: HostListener,
|
77
|
+
args: ['click']
|
78
|
+
}] } });
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JhZGlvL3NyYy9yYWRpby1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELHlEQUF5RDtBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBZTdFLE1BQU0sT0FBTyxrQkFBa0I7SUFiL0I7UUFjSTs7V0FFRztRQUNnQixlQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQU9uRDs7O1dBR0c7UUFDcUMsYUFBUSxHQUFHLEtBQUssQ0FBQztLQWdDNUQ7SUE5Qkc7Ozs7T0FJRztJQUVPLFNBQVMsQ0FBQyxLQUFvQjtRQUNwQyw2RUFBNkU7UUFDN0UsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUVPLE9BQU87UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUVPLE9BQU87UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs4R0E5Q1Esa0JBQWtCO2tHQUFsQixrQkFBa0IscUhBZVAsZ0JBQWdCLGlZQXhCekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUM7OzJGQVNoRSxrQkFBa0I7a0JBYjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxvQkFBb0IsRUFBRSxDQUFDO29CQUN6RSxJQUFJLEVBQUU7d0JBQ0YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsSUFBSSxFQUFFLE9BQU87d0JBQ2IscUJBQXFCLEVBQUUsK0NBQStDO3dCQUN0RSxzQkFBc0IsRUFBRSxzQkFBc0I7d0JBQzlDLG1CQUFtQixFQUFFLHNEQUFzRDtxQkFDOUU7aUJBQ0o7OEJBVThCLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU1lLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUTVCLFNBQVM7c0JBRGxCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWF6QixPQUFPO3NCQURoQixZQUFZO3VCQUFDLE9BQU87Z0JBVVgsT0FBTztzQkFEaEIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RSYWRpb0dyb3VwIH0gZnJvbSAnLi9yYWRpby1ncm91cC50b2tlbic7XG5pbXBvcnQgeyBSYWRpb0l0ZW1Ub2tlbiB9IGZyb20gJy4vcmFkaW8taXRlbS50b2tlbic7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQG54L2VuZm9yY2UtbW9kdWxlLWJvdW5kYXJpZXNcbmltcG9ydCB7IFJvdmluZ0ZvY3VzSXRlbURpcmVjdGl2ZSB9IGZyb20gJ0ByYWRpeC1uZy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnYnV0dG9uW3JkeFJhZGlvSXRlbV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtSb3ZpbmdGb2N1c0l0ZW1EaXJlY3RpdmVdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUmFkaW9JdGVtVG9rZW4sIHVzZUV4aXN0aW5nOiBSYWRpb0l0ZW1EaXJlY3RpdmUgfV0sXG4gICAgaG9zdDoge1xuICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgcm9sZTogJ3JhZGlvJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtY2hlY2tlZF0nOiAncmFkaW9Hcm91cC52YWx1ZSA9PT0gdmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIicsXG4gICAgICAgICdbYXR0ci5kYXRhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCA/IFwiXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3JhZGlvR3JvdXAudmFsdWUgPT09IHZhbHVlID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwiJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9JdGVtRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIHJhZGlvIGdyb3VwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByYWRpb0dyb3VwID0gaW5qZWN0UmFkaW9Hcm91cCgpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSByYWRpbyBpdGVtLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHZhbHVlITogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcmFkaW8gaXRlbSBpcyBkaXNhYmxlZC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGtleWRvd24gZXZlbnRzLlxuICAgICAqIEBwYXJhbSBldmVudCBUaGUga2V5ZG93biBldmVudC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBwcm90ZWN0ZWQgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIEFjY29yZGluZyB0byBXQUkgQVJJQSwgcmFkaW8gZ3JvdXBzIGRvbid0IGFjdGl2YXRlIGl0ZW1zIG9uIGVudGVyIGtleXByZXNzXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSBpdGVtIHJlY2VpdmVzIGZvY3VzLCBzZWxlY3QgaXQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHByb3RlY3RlZCBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJhZGlvR3JvdXAuc2VsZWN0KHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGl0ZW0gcmVjZWl2ZXMgYSBjbGljaywgc2VsZWN0IGl0LlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwcm90ZWN0ZWQgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdCh0aGlzLnZhbHVlKTtcbiAgICB9XG59XG4iXX0=
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { InjectionToken, inject } from '@angular/core';
|
2
|
+
export const RadioItemToken = new InjectionToken('RadioItemToken');
|
3
|
+
export function injectRadioItem() {
|
4
|
+
return inject(RadioItemToken);
|
5
|
+
}
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcmFkaW8vc3JjL3JhZGlvLWl0ZW0udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFxQixnQkFBZ0IsQ0FBQyxDQUFDO0FBRXZGLE1BQU0sVUFBVSxlQUFlO0lBQzNCLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJhZGlvSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vcmFkaW8taXRlbS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgUmFkaW9JdGVtVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UmFkaW9JdGVtRGlyZWN0aXZlPignUmFkaW9JdGVtVG9rZW4nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJhZGlvSXRlbSgpOiBSYWRpb0l0ZW1EaXJlY3RpdmUge1xuICAgIHJldHVybiBpbmplY3QoUmFkaW9JdGVtVG9rZW4pO1xufVxuIl19
|
@@ -0,0 +1,221 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { InjectionToken, inject, EventEmitter, booleanAttribute, Directive, Input, Output, HostListener } from '@angular/core';
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
+
import * as i1 from '@radix-ng/primitives/roving-focus';
|
5
|
+
import { RovingFocusGroupDirective, RovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';
|
6
|
+
|
7
|
+
const RadioGroupToken = new InjectionToken('RadioGroupToken');
|
8
|
+
function injectRadioGroup() {
|
9
|
+
return inject(RadioGroupToken);
|
10
|
+
}
|
11
|
+
|
12
|
+
class RadioGroupDirective {
|
13
|
+
constructor() {
|
14
|
+
/**
|
15
|
+
* Whether the radio group is disabled.
|
16
|
+
*/
|
17
|
+
this.disabled = false;
|
18
|
+
/**
|
19
|
+
* The orientation of the radio group.
|
20
|
+
* @default 'horizontal'
|
21
|
+
*/
|
22
|
+
this.orientation = 'horizontal';
|
23
|
+
/**
|
24
|
+
* Event emitted when the value of the radio group changes.
|
25
|
+
*/
|
26
|
+
this.valueChange = new EventEmitter();
|
27
|
+
}
|
28
|
+
/**
|
29
|
+
* Select a radio item.
|
30
|
+
* @param value The value of the radio item to select.
|
31
|
+
*/
|
32
|
+
select(value) {
|
33
|
+
this.value = value;
|
34
|
+
this.valueChange.emit(value);
|
35
|
+
this.onChange?.(value);
|
36
|
+
}
|
37
|
+
/**
|
38
|
+
* Update the value of the radio group.
|
39
|
+
* @param value The new value of the radio group.
|
40
|
+
* @internal
|
41
|
+
*/
|
42
|
+
writeValue(value) {
|
43
|
+
this.value = value;
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Register a callback function to call when the value of the radio group changes.
|
47
|
+
* @param fn The callback function to call when the value of the radio group changes.
|
48
|
+
* @internal
|
49
|
+
*/
|
50
|
+
registerOnChange(fn) {
|
51
|
+
this.onChange = fn;
|
52
|
+
}
|
53
|
+
registerOnTouched(fn) {
|
54
|
+
this.onTouched = fn;
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* Set the disabled state of the radio group.
|
58
|
+
* @param isDisabled Whether the radio group is disabled.
|
59
|
+
* @internal
|
60
|
+
*/
|
61
|
+
setDisabledState(isDisabled) {
|
62
|
+
this.disabled = isDisabled;
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* When focus leaves the radio group, mark it as touched.
|
66
|
+
* @internal
|
67
|
+
*/
|
68
|
+
onFocusout() {
|
69
|
+
this.onTouched?.();
|
70
|
+
}
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
72
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RadioGroupDirective, isStandalone: true, selector: "[rdxRadioGroup]", inputs: { value: ["rdxRadioGroupValue", "value"], disabled: ["rdxRadioGroupDisabled", "disabled", booleanAttribute], orientation: ["rdxRadioGroupOrientation", "orientation"] }, outputs: { valueChange: "rdxRadioGroupValueChange" }, host: { attributes: { "role": "radiogroup" }, listeners: { "focusout": "onFocusout()" }, properties: { "attr.aria-orientation": "orientation", "attr.data-disabled": "disabled ? \"\" : null" } }, providers: [
|
73
|
+
{ provide: RadioGroupToken, useExisting: RadioGroupDirective },
|
74
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioGroupDirective, multi: true }
|
75
|
+
], hostDirectives: [{ directive: i1.RovingFocusGroupDirective }], ngImport: i0 }); }
|
76
|
+
}
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioGroupDirective, decorators: [{
|
78
|
+
type: Directive,
|
79
|
+
args: [{
|
80
|
+
selector: '[rdxRadioGroup]',
|
81
|
+
standalone: true,
|
82
|
+
providers: [
|
83
|
+
{ provide: RadioGroupToken, useExisting: RadioGroupDirective },
|
84
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: RadioGroupDirective, multi: true }
|
85
|
+
],
|
86
|
+
hostDirectives: [RovingFocusGroupDirective],
|
87
|
+
host: {
|
88
|
+
role: 'radiogroup',
|
89
|
+
'[attr.aria-orientation]': 'orientation',
|
90
|
+
'[attr.data-disabled]': 'disabled ? "" : null'
|
91
|
+
}
|
92
|
+
}]
|
93
|
+
}], propDecorators: { value: [{
|
94
|
+
type: Input,
|
95
|
+
args: ['rdxRadioGroupValue']
|
96
|
+
}], disabled: [{
|
97
|
+
type: Input,
|
98
|
+
args: [{
|
99
|
+
alias: 'rdxRadioGroupDisabled',
|
100
|
+
transform: booleanAttribute
|
101
|
+
}]
|
102
|
+
}], orientation: [{
|
103
|
+
type: Input,
|
104
|
+
args: ['rdxRadioGroupOrientation']
|
105
|
+
}], valueChange: [{
|
106
|
+
type: Output,
|
107
|
+
args: ['rdxRadioGroupValueChange']
|
108
|
+
}], onFocusout: [{
|
109
|
+
type: HostListener,
|
110
|
+
args: ['focusout']
|
111
|
+
}] } });
|
112
|
+
|
113
|
+
const RadioItemToken = new InjectionToken('RadioItemToken');
|
114
|
+
function injectRadioItem() {
|
115
|
+
return inject(RadioItemToken);
|
116
|
+
}
|
117
|
+
|
118
|
+
class RadioItemDirective {
|
119
|
+
constructor() {
|
120
|
+
/**
|
121
|
+
* Access the radio group.
|
122
|
+
*/
|
123
|
+
this.radioGroup = injectRadioGroup();
|
124
|
+
/**
|
125
|
+
* Whether the radio item is disabled.
|
126
|
+
* @default false
|
127
|
+
*/
|
128
|
+
this.disabled = false;
|
129
|
+
}
|
130
|
+
/**
|
131
|
+
* Handle keydown events.
|
132
|
+
* @param event The keydown event.
|
133
|
+
* @internal
|
134
|
+
*/
|
135
|
+
onKeydown(event) {
|
136
|
+
// According to WAI ARIA, radio groups don't activate items on enter keypress
|
137
|
+
if (event.key === 'Enter') {
|
138
|
+
event.preventDefault();
|
139
|
+
}
|
140
|
+
}
|
141
|
+
/**
|
142
|
+
* When the item receives focus, select it.
|
143
|
+
* @internal
|
144
|
+
*/
|
145
|
+
onFocus() {
|
146
|
+
this.radioGroup.select(this.value);
|
147
|
+
}
|
148
|
+
/**
|
149
|
+
* When the item receives a click, select it.
|
150
|
+
* @internal
|
151
|
+
*/
|
152
|
+
onClick() {
|
153
|
+
this.radioGroup.select(this.value);
|
154
|
+
}
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
156
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: RadioItemDirective, isStandalone: true, selector: "button[rdxRadioItem]", inputs: { value: "value", disabled: ["disabled", "disabled", booleanAttribute] }, host: { attributes: { "type": "button", "role": "radio" }, listeners: { "keydown": "onKeydown($event)", "focus": "onFocus()", "click": "onClick()" }, properties: { "attr.aria-checked": "radioGroup.value === value ? \"true\" : \"false\"", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "radioGroup.value === value ? \"checked\" : \"unchecked\"" } }, providers: [{ provide: RadioItemToken, useExisting: RadioItemDirective }], hostDirectives: [{ directive: i1.RovingFocusItemDirective }], ngImport: i0 }); }
|
157
|
+
}
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioItemDirective, decorators: [{
|
159
|
+
type: Directive,
|
160
|
+
args: [{
|
161
|
+
selector: 'button[rdxRadioItem]',
|
162
|
+
standalone: true,
|
163
|
+
hostDirectives: [RovingFocusItemDirective],
|
164
|
+
providers: [{ provide: RadioItemToken, useExisting: RadioItemDirective }],
|
165
|
+
host: {
|
166
|
+
type: 'button',
|
167
|
+
role: 'radio',
|
168
|
+
'[attr.aria-checked]': 'radioGroup.value === value ? "true" : "false"',
|
169
|
+
'[attr.data-disabled]': 'disabled ? "" : null',
|
170
|
+
'[attr.data-state]': 'radioGroup.value === value ? "checked" : "unchecked"'
|
171
|
+
}
|
172
|
+
}]
|
173
|
+
}], propDecorators: { value: [{
|
174
|
+
type: Input,
|
175
|
+
args: [{ required: true }]
|
176
|
+
}], disabled: [{
|
177
|
+
type: Input,
|
178
|
+
args: [{ transform: booleanAttribute }]
|
179
|
+
}], onKeydown: [{
|
180
|
+
type: HostListener,
|
181
|
+
args: ['keydown', ['$event']]
|
182
|
+
}], onFocus: [{
|
183
|
+
type: HostListener,
|
184
|
+
args: ['focus']
|
185
|
+
}], onClick: [{
|
186
|
+
type: HostListener,
|
187
|
+
args: ['click']
|
188
|
+
}] } });
|
189
|
+
|
190
|
+
class RadioIndicatorDirective {
|
191
|
+
constructor() {
|
192
|
+
/**
|
193
|
+
* Access the radio group.
|
194
|
+
*/
|
195
|
+
this.radioGroup = injectRadioGroup();
|
196
|
+
/**
|
197
|
+
* Access the radio group item.
|
198
|
+
*/
|
199
|
+
this.radioItem = injectRadioItem();
|
200
|
+
}
|
201
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
202
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: RadioIndicatorDirective, isStandalone: true, selector: "[rdxRadioIndicator]", host: { properties: { "attr.data-state": "radioGroup.value === this.radioItem.value ? \"checked\" : \"unchecked\"", "attr.data-disabled": "radioItem.disabled ? \"\" : null" } }, ngImport: i0 }); }
|
203
|
+
}
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioIndicatorDirective, decorators: [{
|
205
|
+
type: Directive,
|
206
|
+
args: [{
|
207
|
+
selector: '[rdxRadioIndicator]',
|
208
|
+
standalone: true,
|
209
|
+
host: {
|
210
|
+
'[attr.data-state]': 'radioGroup.value === this.radioItem.value ? "checked" : "unchecked"',
|
211
|
+
'[attr.data-disabled]': 'radioItem.disabled ? "" : null'
|
212
|
+
}
|
213
|
+
}]
|
214
|
+
}] });
|
215
|
+
|
216
|
+
/**
|
217
|
+
* Generated bundle index. Do not edit.
|
218
|
+
*/
|
219
|
+
|
220
|
+
export { RadioGroupDirective, RadioGroupToken, RadioIndicatorDirective, RadioItemDirective, RadioItemToken, injectRadioGroup, injectRadioItem };
|
221
|
+
//# sourceMappingURL=radix-ng-primitives-radio.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-radio.mjs","sources":["../../../packages/primitives/radio/src/radio-group.token.ts","../../../packages/primitives/radio/src/radio-group.directive.ts","../../../packages/primitives/radio/src/radio-item.token.ts","../../../packages/primitives/radio/src/radio-item.directive.ts","../../../packages/primitives/radio/src/radio-indicator.directive.ts","../../../packages/primitives/radio/radix-ng-primitives-radio.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { RadioGroupDirective } from './radio-group.directive';\n\nexport const RadioGroupToken = new InjectionToken<RadioGroupDirective>('RadioGroupToken');\n\nexport function injectRadioGroup(): RadioGroupDirective {\n return inject(RadioGroupToken);\n}\n","import {\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output,\n booleanAttribute\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { RovingFocusGroupDirective } from '@radix-ng/primitives/roving-focus';\nimport { RadioGroupToken } from './radio-group.token';\n\n@Directive({\n selector: '[rdxRadioGroup]',\n standalone: true,\n providers: [\n { provide: RadioGroupToken, useExisting: RadioGroupDirective },\n { provide: NG_VALUE_ACCESSOR, useExisting: RadioGroupDirective, multi: true }\n ],\n hostDirectives: [RovingFocusGroupDirective],\n host: {\n role: 'radiogroup',\n '[attr.aria-orientation]': 'orientation',\n '[attr.data-disabled]': 'disabled ? \"\" : null'\n }\n})\nexport class RadioGroupDirective implements ControlValueAccessor {\n /**\n * The value of the radio group.\n */\n @Input('rdxRadioGroupValue') value?: string;\n\n /**\n * Whether the radio group is disabled.\n */\n @Input({\n alias: 'rdxRadioGroupDisabled',\n transform: booleanAttribute\n })\n disabled = false;\n\n /**\n * The orientation of the radio group.\n * @default 'horizontal'\n */\n @Input('rdxRadioGroupOrientation') orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Event emitted when the value of the radio group changes.\n */\n @Output('rdxRadioGroupValueChange') readonly valueChange = new EventEmitter<string>();\n\n /**\n * The callback function to call when the value of the radio group changes.\n * @internal\n */\n private onChange?: (value: string) => void;\n\n /**\n * The callback function to call when the radio group is touched.\n * @internal\n */\n private onTouched?: () => void;\n\n /**\n * Select a radio item.\n * @param value The value of the radio item to select.\n */\n select(value: string): void {\n this.value = value;\n this.valueChange.emit(value);\n this.onChange?.(value);\n }\n\n /**\n * Update the value of the radio group.\n * @param value The new value of the radio group.\n * @internal\n */\n writeValue(value: string): void {\n this.value = value;\n }\n\n /**\n * Register a callback function to call when the value of the radio group changes.\n * @param fn The callback function to call when the value of the radio group changes.\n * @internal\n */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Set the disabled state of the radio group.\n * @param isDisabled Whether the radio group is disabled.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * When focus leaves the radio group, mark it as touched.\n * @internal\n */\n @HostListener('focusout')\n protected onFocusout(): void {\n this.onTouched?.();\n }\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { RadioItemDirective } from './radio-item.directive';\n\nexport const RadioItemToken = new InjectionToken<RadioItemDirective>('RadioItemToken');\n\nexport function injectRadioItem(): RadioItemDirective {\n return inject(RadioItemToken);\n}\n","import { Directive, HostListener, Input, booleanAttribute } from '@angular/core';\nimport { injectRadioGroup } from './radio-group.token';\nimport { RadioItemToken } from './radio-item.token';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { RovingFocusItemDirective } from '@radix-ng/primitives/roving-focus';\n\n@Directive({\n selector: 'button[rdxRadioItem]',\n standalone: true,\n hostDirectives: [RovingFocusItemDirective],\n providers: [{ provide: RadioItemToken, useExisting: RadioItemDirective }],\n host: {\n type: 'button',\n role: 'radio',\n '[attr.aria-checked]': 'radioGroup.value === value ? \"true\" : \"false\"',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'radioGroup.value === value ? \"checked\" : \"unchecked\"'\n }\n})\nexport class RadioItemDirective {\n /**\n * Access the radio group.\n */\n protected readonly radioGroup = injectRadioGroup();\n\n /**\n * The value of the radio item.\n */\n @Input({ required: true }) value!: string;\n\n /**\n * Whether the radio item is disabled.\n * @default false\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Handle keydown events.\n * @param event The keydown event.\n * @internal\n */\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n /**\n * When the item receives focus, select it.\n * @internal\n */\n @HostListener('focus')\n protected onFocus(): void {\n this.radioGroup.select(this.value);\n }\n\n /**\n * When the item receives a click, select it.\n * @internal\n */\n @HostListener('click')\n protected onClick(): void {\n this.radioGroup.select(this.value);\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectRadioGroup } from './radio-group.token';\nimport { injectRadioItem } from './radio-item.token';\n\n@Directive({\n selector: '[rdxRadioIndicator]',\n standalone: true,\n host: {\n '[attr.data-state]': 'radioGroup.value === this.radioItem.value ? \"checked\" : \"unchecked\"',\n '[attr.data-disabled]': 'radioItem.disabled ? \"\" : null'\n }\n})\nexport class RadioIndicatorDirective {\n /**\n * Access the radio group.\n */\n protected readonly radioGroup = injectRadioGroup();\n\n /**\n * Access the radio group item.\n */\n protected readonly radioItem = injectRadioItem();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@radix-ng/primitives",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.2.0",
|
4
4
|
"license": "MIT",
|
5
5
|
"publishConfig": {
|
6
6
|
"access": "public"
|
@@ -52,6 +52,12 @@
|
|
52
52
|
"esm": "./esm2022/progress/radix-ng-primitives-progress.mjs",
|
53
53
|
"default": "./fesm2022/radix-ng-primitives-progress.mjs"
|
54
54
|
},
|
55
|
+
"./radio": {
|
56
|
+
"types": "./radio/index.d.ts",
|
57
|
+
"esm2022": "./esm2022/radio/radix-ng-primitives-radio.mjs",
|
58
|
+
"esm": "./esm2022/radio/radix-ng-primitives-radio.mjs",
|
59
|
+
"default": "./fesm2022/radix-ng-primitives-radio.mjs"
|
60
|
+
},
|
55
61
|
"./roving-focus": {
|
56
62
|
"types": "./roving-focus/index.d.ts",
|
57
63
|
"esm2022": "./esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs",
|
package/radio/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# @radix-ng/primitives/radio
|
package/radio/index.d.ts
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
5
|
+
export declare class RadioGroupDirective implements ControlValueAccessor {
|
6
|
+
/**
|
7
|
+
* The value of the radio group.
|
8
|
+
*/
|
9
|
+
value?: string;
|
10
|
+
/**
|
11
|
+
* Whether the radio group is disabled.
|
12
|
+
*/
|
13
|
+
disabled: boolean;
|
14
|
+
/**
|
15
|
+
* The orientation of the radio group.
|
16
|
+
* @default 'horizontal'
|
17
|
+
*/
|
18
|
+
orientation: 'horizontal' | 'vertical';
|
19
|
+
/**
|
20
|
+
* Event emitted when the value of the radio group changes.
|
21
|
+
*/
|
22
|
+
readonly valueChange: EventEmitter<string>;
|
23
|
+
/**
|
24
|
+
* The callback function to call when the value of the radio group changes.
|
25
|
+
* @internal
|
26
|
+
*/
|
27
|
+
private onChange?;
|
28
|
+
/**
|
29
|
+
* The callback function to call when the radio group is touched.
|
30
|
+
* @internal
|
31
|
+
*/
|
32
|
+
private onTouched?;
|
33
|
+
/**
|
34
|
+
* Select a radio item.
|
35
|
+
* @param value The value of the radio item to select.
|
36
|
+
*/
|
37
|
+
select(value: string): void;
|
38
|
+
/**
|
39
|
+
* Update the value of the radio group.
|
40
|
+
* @param value The new value of the radio group.
|
41
|
+
* @internal
|
42
|
+
*/
|
43
|
+
writeValue(value: string): void;
|
44
|
+
/**
|
45
|
+
* Register a callback function to call when the value of the radio group changes.
|
46
|
+
* @param fn The callback function to call when the value of the radio group changes.
|
47
|
+
* @internal
|
48
|
+
*/
|
49
|
+
registerOnChange(fn: (value: string) => void): void;
|
50
|
+
registerOnTouched(fn: () => void): void;
|
51
|
+
/**
|
52
|
+
* Set the disabled state of the radio group.
|
53
|
+
* @param isDisabled Whether the radio group is disabled.
|
54
|
+
* @internal
|
55
|
+
*/
|
56
|
+
setDisabledState(isDisabled: boolean): void;
|
57
|
+
/**
|
58
|
+
* When focus leaves the radio group, mark it as touched.
|
59
|
+
* @internal
|
60
|
+
*/
|
61
|
+
protected onFocusout(): void;
|
62
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RadioGroupDirective, never>;
|
63
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RadioGroupDirective, "[rdxRadioGroup]", never, { "value": { "alias": "rdxRadioGroupValue"; "required": false; }; "disabled": { "alias": "rdxRadioGroupDisabled"; "required": false; }; "orientation": { "alias": "rdxRadioGroupOrientation"; "required": false; }; }, { "valueChange": "rdxRadioGroupValueChange"; }, never, never, true, [{ directive: typeof i1.RovingFocusGroupDirective; inputs: {}; outputs: {}; }]>;
|
64
|
+
static ngAcceptInputType_disabled: unknown;
|
65
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
export declare class RadioIndicatorDirective {
|
3
|
+
/**
|
4
|
+
* Access the radio group.
|
5
|
+
*/
|
6
|
+
protected readonly radioGroup: import("@radix-ng/primitives/radio").RadioGroupDirective;
|
7
|
+
/**
|
8
|
+
* Access the radio group item.
|
9
|
+
*/
|
10
|
+
protected readonly radioItem: import("@radix-ng/primitives/radio").RadioItemDirective;
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RadioIndicatorDirective, never>;
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RadioIndicatorDirective, "[rdxRadioIndicator]", never, {}, {}, never, never, true, never>;
|
13
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "@radix-ng/primitives/roving-focus";
|
3
|
+
export declare class RadioItemDirective {
|
4
|
+
/**
|
5
|
+
* Access the radio group.
|
6
|
+
*/
|
7
|
+
protected readonly radioGroup: import("@radix-ng/primitives/radio").RadioGroupDirective;
|
8
|
+
/**
|
9
|
+
* The value of the radio item.
|
10
|
+
*/
|
11
|
+
value: string;
|
12
|
+
/**
|
13
|
+
* Whether the radio item is disabled.
|
14
|
+
* @default false
|
15
|
+
*/
|
16
|
+
disabled: boolean;
|
17
|
+
/**
|
18
|
+
* Handle keydown events.
|
19
|
+
* @param event The keydown event.
|
20
|
+
* @internal
|
21
|
+
*/
|
22
|
+
protected onKeydown(event: KeyboardEvent): void;
|
23
|
+
/**
|
24
|
+
* When the item receives focus, select it.
|
25
|
+
* @internal
|
26
|
+
*/
|
27
|
+
protected onFocus(): void;
|
28
|
+
/**
|
29
|
+
* When the item receives a click, select it.
|
30
|
+
* @internal
|
31
|
+
*/
|
32
|
+
protected onClick(): void;
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RadioItemDirective, never>;
|
34
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RadioItemDirective, "button[rdxRadioItem]", never, { "value": { "alias": "value"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.RovingFocusItemDirective; inputs: {}; outputs: {}; }]>;
|
35
|
+
static ngAcceptInputType_disabled: unknown;
|
36
|
+
}
|