@radix-ng/primitives 0.1.0 → 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/README.md +2 -4
- package/checkbox/src/checkbox-indicator.directive.d.ts +6 -0
- package/checkbox/src/checkbox.directive.d.ts +71 -0
- package/checkbox/src/checkbox.token.d.ts +4 -0
- package/esm2022/checkbox/index.mjs +4 -0
- package/esm2022/checkbox/radix-ng-primitives-checkbox.mjs +5 -0
- package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +23 -0
- package/esm2022/checkbox/src/checkbox.directive.mjs +135 -0
- package/esm2022/checkbox/src/checkbox.token.mjs +6 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/label/index.mjs +2 -0
- package/esm2022/label/radix-ng-primitives-label.mjs +5 -0
- package/esm2022/label/src/label.directive.mjs +46 -0
- package/esm2022/progress/index.mjs +3 -0
- package/esm2022/progress/radix-ng-primitives-progress.mjs +5 -0
- package/esm2022/progress/src/progress-indicator.directive.mjs +23 -0
- package/esm2022/progress/src/progress.directive.mjs +62 -0
- package/esm2022/progress/src/progress.token.mjs +6 -0
- 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/esm2022/radix-ng-primitives.mjs +5 -0
- package/esm2022/roving-focus/index.mjs +5 -0
- package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +5 -0
- package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +115 -0
- package/esm2022/roving-focus/src/roving-focus-group.token.mjs +9 -0
- package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +91 -0
- package/esm2022/roving-focus/src/roving-focus-item.token.mjs +6 -0
- package/esm2022/separator/index.mjs +2 -0
- package/esm2022/separator/radix-ng-primitives-separator.mjs +5 -0
- package/esm2022/separator/src/separator.directive.mjs +37 -0
- package/esm2022/switch/index.mjs +4 -0
- package/esm2022/switch/radix-ng-primitives-switch.mjs +5 -0
- package/esm2022/switch/src/switch-thumb.directive.mjs +25 -0
- package/esm2022/switch/src/switch.directive.mjs +125 -0
- package/esm2022/switch/src/switch.token.mjs +6 -0
- package/esm2022/visually-hidden/index.mjs +2 -0
- package/esm2022/visually-hidden/radix-ng-primitives-visually-hidden.mjs +5 -0
- package/esm2022/visually-hidden/src/visually-hidden.directive.mjs +42 -0
- package/fesm2022/radix-ng-primitives-checkbox.mjs +166 -0
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-label.mjs +53 -0
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-progress.mjs +93 -0
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-radio.mjs +221 -0
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +220 -0
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-separator.mjs +44 -0
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-switch.mjs +158 -0
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +49 -0
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives.mjs +4 -0
- package/fesm2022/radix-ng-primitives.mjs.map +1 -0
- package/label/src/label.directive.d.ts +14 -0
- package/package.json +88 -24
- package/progress/src/progress-indicator.directive.d.ts +6 -0
- package/progress/src/progress.directive.d.ts +26 -0
- package/progress/src/progress.token.d.ts +4 -0
- 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
- package/roving-focus/src/roving-focus-group.directive.d.ts +55 -0
- package/roving-focus/src/roving-focus-group.token.d.ts +7 -0
- package/roving-focus/src/roving-focus-item.directive.d.ts +52 -0
- package/roving-focus/src/roving-focus-item.token.d.ts +4 -0
- package/separator/src/separator.directive.d.ts +16 -0
- package/switch/src/switch-thumb.directive.d.ts +9 -0
- package/switch/src/switch.directive.d.ts +73 -0
- package/switch/src/switch.token.d.ts +4 -0
- package/visually-hidden/src/visually-hidden.directive.d.ts +11 -0
- package/.docs/overview/accessibility.docs.mdx +0 -45
- package/.docs/overview/installation.docs.mdx +0 -15
- package/.docs/overview/introduction.docs.mdx +0 -59
- package/.docs/utils/storybook.ts +0 -30
- package/.eslintrc.json +0 -56
- package/.storybook/helpers/bages-config.ts +0 -43
- package/.storybook/main.ts +0 -24
- package/.storybook/manager-head.html +0 -76
- package/.storybook/manager.ts +0 -6
- package/.storybook/preview.ts +0 -58
- package/.storybook/rdxTheme.ts +0 -8
- package/.storybook/tsconfig.json +0 -20
- package/CHANGELOG.md +0 -6
- package/checkbox/ng-package.json +0 -5
- package/checkbox/src/checkbox-indicator.directive.ts +0 -15
- package/checkbox/src/checkbox.directive.ts +0 -138
- package/checkbox/src/checkbox.token.ts +0 -8
- package/checkbox/stories/checkbox.component.ts +0 -50
- package/checkbox/stories/checkbox.stories.ts +0 -29
- package/checkbox/stories/style.css +0 -265
- package/jest.config.ts +0 -22
- package/label/ng-package.json +0 -5
- package/label/src/label.directive.ts +0 -36
- package/label/stories/label.docs.mdx +0 -40
- package/label/stories/label.stories.ts +0 -63
- package/ng-package.json +0 -7
- package/progress/ng-package.json +0 -5
- package/progress/src/progress-indicator.directive.ts +0 -15
- package/progress/src/progress.directive.ts +0 -51
- package/progress/src/progress.token.ts +0 -8
- package/progress/stories/progress.docs.mdx +0 -66
- package/progress/stories/progress.stories.ts +0 -61
- package/project.json +0 -90
- package/roving-focus/ng-package.json +0 -5
- package/roving-focus/src/roving-focus-group.directive.ts +0 -135
- package/roving-focus/src/roving-focus-group.token.ts +0 -13
- package/roving-focus/src/roving-focus-item.directive.ts +0 -98
- package/roving-focus/src/roving-focus-item.token.ts +0 -10
- package/separator/ng-package.json +0 -5
- package/separator/src/separator.directive.spec.ts +0 -59
- package/separator/src/separator.directive.ts +0 -24
- package/separator/stories/separator.docs.mdx +0 -38
- package/separator/stories/separator.stories.ts +0 -91
- package/switch/ng-package.json +0 -5
- package/switch/src/switch-thumb.directive.ts +0 -17
- package/switch/src/switch.directive.ts +0 -132
- package/switch/src/switch.token.ts +0 -8
- package/switch/stories/switch.docs.mdx +0 -74
- package/switch/stories/switch.stories.ts +0 -76
- package/test-setup.ts +0 -8
- package/tsconfig.json +0 -32
- package/tsconfig.lib.json +0 -19
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -21
- package/visually-hidden/ng-package.json +0 -5
- package/visually-hidden/src/visually-hidden.directive.spec.ts +0 -48
- package/visually-hidden/src/visually-hidden.directive.ts +0 -35
- package/visually-hidden/stories/visually-hidden.docs.mdx +0 -35
- /package/checkbox/{index.ts → index.d.ts} +0 -0
- /package/{index.ts → index.d.ts} +0 -0
- /package/label/{index.ts → index.d.ts} +0 -0
- /package/progress/{index.ts → index.d.ts} +0 -0
- /package/roving-focus/{index.ts → index.d.ts} +0 -0
- /package/separator/{index.ts → index.d.ts} +0 -0
- /package/switch/{index.ts → index.d.ts} +0 -0
- /package/visually-hidden/{index.ts → index.d.ts} +0 -0
@@ -0,0 +1,125 @@
|
|
1
|
+
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, booleanAttribute, inject } from '@angular/core';
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
3
|
+
import { SwitchToken } from './switch.token';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export class SwitchDirective {
|
6
|
+
constructor() {
|
7
|
+
/**
|
8
|
+
* Access the element ref.
|
9
|
+
*/
|
10
|
+
this.elementRef = inject(ElementRef);
|
11
|
+
/**
|
12
|
+
* Determine if the switch is a button
|
13
|
+
*/
|
14
|
+
this.isButton = this.elementRef.nativeElement.tagName === 'BUTTON';
|
15
|
+
/**
|
16
|
+
* Determine if the switch is checked.
|
17
|
+
* The controlled state of the switch.
|
18
|
+
* @default false
|
19
|
+
*/
|
20
|
+
this.checked = false;
|
21
|
+
/**
|
22
|
+
* Determine if the switch is disabled.
|
23
|
+
* When true, prevents the user from interacting with the switch.
|
24
|
+
* @default false
|
25
|
+
*/
|
26
|
+
this.disabled = false;
|
27
|
+
/**
|
28
|
+
* Event emitted when the checked state changes.
|
29
|
+
*/
|
30
|
+
this.checkedChange = new EventEmitter();
|
31
|
+
}
|
32
|
+
/**
|
33
|
+
* Register the onChange callback.
|
34
|
+
* @param fn The onChange callback.
|
35
|
+
* @internal
|
36
|
+
*/
|
37
|
+
registerOnChange(fn) {
|
38
|
+
this.onChange = fn;
|
39
|
+
}
|
40
|
+
/**
|
41
|
+
* Register the onTouched callback.
|
42
|
+
* @param fn The onTouched callback.
|
43
|
+
* @internal
|
44
|
+
*/
|
45
|
+
registerOnTouched(fn) {
|
46
|
+
this.onTouched = fn;
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* Write the value to the checked state.
|
50
|
+
* @param checked The checked state.
|
51
|
+
* @internal
|
52
|
+
*/
|
53
|
+
writeValue(checked) {
|
54
|
+
this.checked = checked;
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* Set the disabled state.
|
58
|
+
* @param isDisabled The disabled state.
|
59
|
+
* @internal
|
60
|
+
*/
|
61
|
+
setDisabledState(isDisabled) {
|
62
|
+
this.disabled = isDisabled;
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* Toggle the checked state.
|
66
|
+
*/
|
67
|
+
toggle() {
|
68
|
+
if (this.disabled) {
|
69
|
+
return;
|
70
|
+
}
|
71
|
+
this.checked = !this.checked;
|
72
|
+
this.checkedChange.emit(this.checked);
|
73
|
+
this.onChange?.(this.checked);
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* Handle the keydown event.
|
77
|
+
*/
|
78
|
+
onKeyDown() {
|
79
|
+
// If the switch is not a button then the space key will not toggle the checked state automatically,
|
80
|
+
// so we need to do it manually.
|
81
|
+
if (!this.isButton) {
|
82
|
+
this.toggle();
|
83
|
+
}
|
84
|
+
}
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SwitchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
86
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: SwitchDirective, isStandalone: true, selector: "[rdxSwitch]", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange" }, host: { attributes: { "role": "switch" }, listeners: { "focus": "onTouched?.()", "click": "toggle()", "keydown.space": "onKeyDown()" }, properties: { "attr.type": "isButton ? \"button\" : null", "attr.aria-checked": "checked", "attr.data-state": "checked ? \"checked\" : \"unchecked\"", "attr.data-disabled": "disabled ? \"true\" : null", "attr.disabled": "isButton && disabled ? disabled : null" } }, providers: [
|
87
|
+
{ provide: SwitchToken, useExisting: SwitchDirective },
|
88
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SwitchDirective, multi: true }
|
89
|
+
], ngImport: i0 }); }
|
90
|
+
}
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: SwitchDirective, decorators: [{
|
92
|
+
type: Directive,
|
93
|
+
args: [{
|
94
|
+
selector: '[rdxSwitch]',
|
95
|
+
standalone: true,
|
96
|
+
providers: [
|
97
|
+
{ provide: SwitchToken, useExisting: SwitchDirective },
|
98
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SwitchDirective, multi: true }
|
99
|
+
],
|
100
|
+
host: {
|
101
|
+
role: 'switch',
|
102
|
+
'[attr.type]': 'isButton ? "button" : null',
|
103
|
+
'[attr.aria-checked]': 'checked',
|
104
|
+
'[attr.data-state]': 'checked ? "checked" : "unchecked"',
|
105
|
+
'[attr.data-disabled]': 'disabled ? "true" : null',
|
106
|
+
'[attr.disabled]': 'isButton && disabled ? disabled : null',
|
107
|
+
'(focus)': 'onTouched?.()'
|
108
|
+
}
|
109
|
+
}]
|
110
|
+
}], propDecorators: { checked: [{
|
111
|
+
type: Input,
|
112
|
+
args: [{ transform: booleanAttribute }]
|
113
|
+
}], disabled: [{
|
114
|
+
type: Input,
|
115
|
+
args: [{ transform: booleanAttribute }]
|
116
|
+
}], checkedChange: [{
|
117
|
+
type: Output
|
118
|
+
}], toggle: [{
|
119
|
+
type: HostListener,
|
120
|
+
args: ['click']
|
121
|
+
}], onKeyDown: [{
|
122
|
+
type: HostListener,
|
123
|
+
args: ['keydown.space']
|
124
|
+
}] } });
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvc3dpdGNoL3NyYy9zd2l0Y2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBbUI3QyxNQUFNLE9BQU8sZUFBZTtJQWpCNUI7UUFrQkk7O1dBRUc7UUFDYyxlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUUxRTs7V0FFRztRQUNPLGFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDO1FBRXhFOzs7O1dBSUc7UUFDcUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV4RDs7OztXQUlHO1FBQ3FDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFekQ7O1dBRUc7UUFDZ0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBeUVsRTtJQTdERzs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBOEI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBRUgsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBRU8sU0FBUztRQUNmLG9HQUFvRztRQUNwRyxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7OEdBcEdRLGVBQWU7a0dBQWYsZUFBZSx5RkFnQkosZ0JBQWdCLHNDQU9oQixnQkFBZ0IsK2NBckN6QjtZQUNQLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFO1lBQ3RELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUM1RTs7MkZBV1EsZUFBZTtrQkFqQjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsaUJBQWlCLEVBQUU7d0JBQ3RELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDNUU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLGFBQWEsRUFBRSw0QkFBNEI7d0JBQzNDLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsc0JBQXNCLEVBQUUsMEJBQTBCO3dCQUNsRCxpQkFBaUIsRUFBRSx3Q0FBd0M7d0JBQzNELFNBQVMsRUFBRSxlQUFlO3FCQUM3QjtpQkFDSjs4QkFpQjJDLE9BQU87c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBT0UsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLbkIsYUFBYTtzQkFBL0IsTUFBTTtnQkFvRFAsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE9BQU87Z0JBZVgsU0FBUztzQkFEbEIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN3aXRjaFRva2VuIH0gZnJvbSAnLi9zd2l0Y2gudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhTd2l0Y2hdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFN3aXRjaFRva2VuLCB1c2VFeGlzdGluZzogU3dpdGNoRGlyZWN0aXZlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBTd2l0Y2hEaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3N3aXRjaCcsXG4gICAgICAgICdbYXR0ci50eXBlXSc6ICdpc0J1dHRvbiA/IFwiYnV0dG9uXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgICAgICdbYXR0ci5kYXRhLXN0YXRlXSc6ICdjaGVja2VkID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwiJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkID8gXCJ0cnVlXCIgOiBudWxsJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdpc0J1dHRvbiAmJiBkaXNhYmxlZCA/IGRpc2FibGVkIDogbnVsbCcsXG4gICAgICAgICcoZm9jdXMpJzogJ29uVG91Y2hlZD8uKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQWNjZXNzIHRoZSBlbGVtZW50IHJlZi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIHRoZSBzd2l0Y2ggaXMgYSBidXR0b25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNCdXR0b24gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnQlVUVE9OJztcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiB0aGUgc3dpdGNoIGlzIGNoZWNrZWQuXG4gICAgICogVGhlIGNvbnRyb2xsZWQgc3RhdGUgb2YgdGhlIHN3aXRjaC5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjaGVja2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIHN3aXRjaCBpcyBkaXNhYmxlZC5cbiAgICAgKiBXaGVuIHRydWUsIHByZXZlbnRzIHRoZSB1c2VyIGZyb20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3dpdGNoLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIFN0b3JlIHRoZSBvbkNoYW5nZSBjYWxsYmFjay5cbiAgICAgKi9cbiAgICBwcml2YXRlIG9uQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSB0aGUgb25Ub3VjaGVkIGNhbGxiYWNrLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgdGhlIG9uQ2hhbmdlIGNhbGxiYWNrLlxuICAgICAqIEBwYXJhbSBmbiBUaGUgb25DaGFuZ2UgY2FsbGJhY2suXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIHRoZSBvblRvdWNoZWQgY2FsbGJhY2suXG4gICAgICogQHBhcmFtIGZuIFRoZSBvblRvdWNoZWQgY2FsbGJhY2suXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0aGUgdmFsdWUgdG8gdGhlIGNoZWNrZWQgc3RhdGUuXG4gICAgICogQHBhcmFtIGNoZWNrZWQgVGhlIGNoZWNrZWQgc3RhdGUuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBkaXNhYmxlZCBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBUaGUgZGlzYWJsZWQgc3RhdGUuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSB0aGUgY2hlY2tlZCBzdGF0ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZT8uKHRoaXMuY2hlY2tlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHRoZSBrZXlkb3duIGV2ZW50LlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc3BhY2UnKVxuICAgIHByb3RlY3RlZCBvbktleURvd24oKTogdm9pZCB7XG4gICAgICAgIC8vIElmIHRoZSBzd2l0Y2ggaXMgbm90IGEgYnV0dG9uIHRoZW4gdGhlIHNwYWNlIGtleSB3aWxsIG5vdCB0b2dnbGUgdGhlIGNoZWNrZWQgc3RhdGUgYXV0b21hdGljYWxseSxcbiAgICAgICAgLy8gc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseS5cbiAgICAgICAgaWYgKCF0aGlzLmlzQnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { InjectionToken, inject } from '@angular/core';
|
2
|
+
export const SwitchToken = new InjectionToken('SwitchToken');
|
3
|
+
export function injectSwitch() {
|
4
|
+
return inject(SwitchToken);
|
5
|
+
}
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9zd2l0Y2gvc3JjL3N3aXRjaC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQWtCLGFBQWEsQ0FBQyxDQUFDO0FBRTlFLE1BQU0sVUFBVSxZQUFZO0lBQ3hCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFN3aXRjaERpcmVjdGl2ZSB9IGZyb20gJy4vc3dpdGNoLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBTd2l0Y2hUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTd2l0Y2hEaXJlY3RpdmU+KCdTd2l0Y2hUb2tlbicpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U3dpdGNoKCk6IFN3aXRjaERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIGluamVjdChTd2l0Y2hUb2tlbik7XG59XG4iXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export * from './src/visually-hidden.directive';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3Zpc3VhbGx5LWhpZGRlbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvdmlzdWFsbHktaGlkZGVuLmRpcmVjdGl2ZSc7XG4iXX0=
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy12aXN1YWxseS1oaWRkZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3Zpc3VhbGx5LWhpZGRlbi9yYWRpeC1uZy1wcmltaXRpdmVzLXZpc3VhbGx5LWhpZGRlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { Directive, ElementRef, inject } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export class VisuallyHiddenDirective {
|
4
|
+
constructor() {
|
5
|
+
/**
|
6
|
+
* Access the element.
|
7
|
+
*/
|
8
|
+
this.element = inject(ElementRef);
|
9
|
+
}
|
10
|
+
ngOnInit() {
|
11
|
+
// hide the element
|
12
|
+
Object.assign(this.element.nativeElement.style, {
|
13
|
+
position: 'absolute',
|
14
|
+
border: 0,
|
15
|
+
width: '1px',
|
16
|
+
height: '1px',
|
17
|
+
padding: 0,
|
18
|
+
margin: '-1px',
|
19
|
+
overflow: 'hidden',
|
20
|
+
clip: 'rect(0, 0, 0, 0)',
|
21
|
+
whiteSpace: 'nowrap',
|
22
|
+
wordWrap: 'normal',
|
23
|
+
// Avoid browsers rendering the focus ring in some cases.
|
24
|
+
outline: 'none',
|
25
|
+
appearance: 'none',
|
26
|
+
// Avoid some cases where the browser will still render the native controls
|
27
|
+
'-webkit-appearance': 'none',
|
28
|
+
'-moz-appearance': 'none',
|
29
|
+
left: 0
|
30
|
+
});
|
31
|
+
}
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: VisuallyHiddenDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
33
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: VisuallyHiddenDirective, isStandalone: true, selector: "[rdxVisuallyHidden]", ngImport: i0 }); }
|
34
|
+
}
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: VisuallyHiddenDirective, decorators: [{
|
36
|
+
type: Directive,
|
37
|
+
args: [{
|
38
|
+
selector: '[rdxVisuallyHidden]',
|
39
|
+
standalone: true
|
40
|
+
}]
|
41
|
+
}] });
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsbHktaGlkZGVuLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvdmlzdWFsbHktaGlkZGVuL3NyYy92aXN1YWxseS1oaWRkZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNdEUsTUFBTSxPQUFPLHVCQUF1QjtJQUpwQztRQUtJOztXQUVHO1FBQ2MsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7S0F3QjFFO0lBdEJHLFFBQVE7UUFDSixtQkFBbUI7UUFDbkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDNUMsUUFBUSxFQUFFLFVBQVU7WUFDcEIsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsTUFBTTtZQUNkLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIseURBQXlEO1lBQ3pELE9BQU8sRUFBRSxNQUFNO1lBQ2YsVUFBVSxFQUFFLE1BQU07WUFDbEIsMkVBQTJFO1lBQzNFLG9CQUFvQixFQUFFLE1BQU07WUFDNUIsaUJBQWlCLEVBQUUsTUFBTTtZQUN6QixJQUFJLEVBQUUsQ0FBQztTQUNWLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBM0JRLHVCQUF1QjtrR0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4VmlzdWFsbHlIaWRkZW5dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZpc3VhbGx5SGlkZGVuRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBBY2Nlc3MgdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBoaWRlIHRoZSBlbGVtZW50XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgd2lkdGg6ICcxcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMXB4JyxcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICBtYXJnaW46ICctMXB4JyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgIGNsaXA6ICdyZWN0KDAsIDAsIDAsIDApJyxcbiAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICAgICAgd29yZFdyYXA6ICdub3JtYWwnLFxuICAgICAgICAgICAgLy8gQXZvaWQgYnJvd3NlcnMgcmVuZGVyaW5nIHRoZSBmb2N1cyByaW5nIGluIHNvbWUgY2FzZXMuXG4gICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gICAgICAgICAgICAvLyBBdm9pZCBzb21lIGNhc2VzIHdoZXJlIHRoZSBicm93c2VyIHdpbGwgc3RpbGwgcmVuZGVyIHRoZSBuYXRpdmUgY29udHJvbHNcbiAgICAgICAgICAgICctd2Via2l0LWFwcGVhcmFuY2UnOiAnbm9uZScsXG4gICAgICAgICAgICAnLW1vei1hcHBlYXJhbmNlJzogJ25vbmUnLFxuICAgICAgICAgICAgbGVmdDogMFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
@@ -0,0 +1,166 @@
|
|
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
|
+
|
5
|
+
const CheckboxToken = new InjectionToken('CheckboxToken');
|
6
|
+
function injectCheckbox() {
|
7
|
+
return inject(CheckboxToken);
|
8
|
+
}
|
9
|
+
|
10
|
+
class CheckboxDirective {
|
11
|
+
constructor() {
|
12
|
+
/**
|
13
|
+
* Defines whether the checkbox is checked.
|
14
|
+
*/
|
15
|
+
this.checked = false;
|
16
|
+
/**
|
17
|
+
* Defines whether the checkbox is indeterminate.
|
18
|
+
*/
|
19
|
+
this.indeterminate = false;
|
20
|
+
/**
|
21
|
+
* Defines whether the checkbox is disabled.
|
22
|
+
*/
|
23
|
+
this.disabled = false;
|
24
|
+
/**
|
25
|
+
* Event emitted when the checkbox checked state changes.
|
26
|
+
*/
|
27
|
+
this.checkedChange = new EventEmitter();
|
28
|
+
/**
|
29
|
+
* Event emitted when the indeterminate state changes.
|
30
|
+
*/
|
31
|
+
this.indeterminateChange = new EventEmitter();
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* Determine the state
|
35
|
+
*/
|
36
|
+
get state() {
|
37
|
+
if (this.indeterminate) {
|
38
|
+
return 'indeterminate';
|
39
|
+
}
|
40
|
+
return this.checked ? 'checked' : 'unchecked';
|
41
|
+
}
|
42
|
+
onKeydown(event) {
|
43
|
+
// According to WAI ARIA, Checkboxes don't activate on enter keypress
|
44
|
+
if (event.key === 'Enter') {
|
45
|
+
event.preventDefault();
|
46
|
+
}
|
47
|
+
}
|
48
|
+
onClick() {
|
49
|
+
this.checked = this.indeterminate ? true : !this.checked;
|
50
|
+
this.checkedChange.emit(this.checked);
|
51
|
+
this.onChange?.(this.checked);
|
52
|
+
// if the checkbox was indeterminate, it isn't anymore
|
53
|
+
if (this.indeterminate) {
|
54
|
+
this.indeterminate = false;
|
55
|
+
this.indeterminateChange.emit(this.indeterminate);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
onBlur() {
|
59
|
+
this.onTouched?.();
|
60
|
+
}
|
61
|
+
/**
|
62
|
+
* Sets the checked state of the checkbox.
|
63
|
+
* @param checked The checked state of the checkbox.
|
64
|
+
* @internal
|
65
|
+
*/
|
66
|
+
writeValue(checked) {
|
67
|
+
this.checked = checked;
|
68
|
+
}
|
69
|
+
/**
|
70
|
+
* Registers a callback function that should be called when the checkbox checked state changes.
|
71
|
+
* @param fn The callback function.
|
72
|
+
* @internal
|
73
|
+
*/
|
74
|
+
registerOnChange(fn) {
|
75
|
+
this.onChange = fn;
|
76
|
+
}
|
77
|
+
/**
|
78
|
+
* Registers a callback function that should be called when the checkbox is blurred.
|
79
|
+
* @param fn The callback function.
|
80
|
+
* @internal
|
81
|
+
*/
|
82
|
+
registerOnTouched(fn) {
|
83
|
+
this.onTouched = fn;
|
84
|
+
}
|
85
|
+
/**
|
86
|
+
* Sets the disabled state of the checkbox.
|
87
|
+
* @param isDisabled The disabled state of the checkbox.
|
88
|
+
* @internal
|
89
|
+
*/
|
90
|
+
setDisabledState(isDisabled) {
|
91
|
+
this.disabled = isDisabled;
|
92
|
+
}
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
94
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: CheckboxDirective, isStandalone: true, selector: "button[rdxCheckbox]", inputs: { checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange", indeterminateChange: "indeterminateChange" }, host: { attributes: { "type": "button", "role": "checkbox" }, listeners: { "keydown": "onKeydown($event)", "click": "onClick()", "blur": "onBlur()" }, properties: { "disabled": "disabled", "attr.aria-checked": "indeterminate ? \"mixed\" : checked", "attr.data-disabled": "disabled ? \"\" : null", "attr.data-state": "state" } }, providers: [
|
95
|
+
{ provide: CheckboxToken, useExisting: CheckboxDirective },
|
96
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }
|
97
|
+
], ngImport: i0 }); }
|
98
|
+
}
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxDirective, decorators: [{
|
100
|
+
type: Directive,
|
101
|
+
args: [{
|
102
|
+
selector: 'button[rdxCheckbox]',
|
103
|
+
standalone: true,
|
104
|
+
providers: [
|
105
|
+
{ provide: CheckboxToken, useExisting: CheckboxDirective },
|
106
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }
|
107
|
+
],
|
108
|
+
host: {
|
109
|
+
type: 'button',
|
110
|
+
role: 'checkbox',
|
111
|
+
'[disabled]': 'disabled',
|
112
|
+
'[attr.aria-checked]': 'indeterminate ? "mixed" : checked',
|
113
|
+
'[attr.data-disabled]': 'disabled ? "" : null',
|
114
|
+
'[attr.data-state]': 'state'
|
115
|
+
}
|
116
|
+
}]
|
117
|
+
}], propDecorators: { checked: [{
|
118
|
+
type: Input,
|
119
|
+
args: [{ transform: booleanAttribute }]
|
120
|
+
}], indeterminate: [{
|
121
|
+
type: Input,
|
122
|
+
args: [{ transform: booleanAttribute }]
|
123
|
+
}], disabled: [{
|
124
|
+
type: Input,
|
125
|
+
args: [{ transform: booleanAttribute }]
|
126
|
+
}], checkedChange: [{
|
127
|
+
type: Output
|
128
|
+
}], indeterminateChange: [{
|
129
|
+
type: Output
|
130
|
+
}], onKeydown: [{
|
131
|
+
type: HostListener,
|
132
|
+
args: ['keydown', ['$event']]
|
133
|
+
}], onClick: [{
|
134
|
+
type: HostListener,
|
135
|
+
args: ['click']
|
136
|
+
}], onBlur: [{
|
137
|
+
type: HostListener,
|
138
|
+
args: ['blur']
|
139
|
+
}] } });
|
140
|
+
|
141
|
+
class CheckboxIndicatorDirective {
|
142
|
+
constructor() {
|
143
|
+
this.checkbox = injectCheckbox();
|
144
|
+
}
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
146
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: CheckboxIndicatorDirective, isStandalone: true, selector: "[rdxCheckboxIndicator]", host: { properties: { "style.pointer-events": "\"none\"", "attr.data-state": "checkbox.state", "attr.data-disabled": "checkbox.disabled ? \"\" : null" } }, ngImport: i0 }); }
|
147
|
+
}
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CheckboxIndicatorDirective, decorators: [{
|
149
|
+
type: Directive,
|
150
|
+
args: [{
|
151
|
+
selector: '[rdxCheckboxIndicator]',
|
152
|
+
standalone: true,
|
153
|
+
host: {
|
154
|
+
'[style.pointer-events]': '"none"',
|
155
|
+
'[attr.data-state]': 'checkbox.state',
|
156
|
+
'[attr.data-disabled]': 'checkbox.disabled ? "" : null'
|
157
|
+
}
|
158
|
+
}]
|
159
|
+
}] });
|
160
|
+
|
161
|
+
/**
|
162
|
+
* Generated bundle index. Do not edit.
|
163
|
+
*/
|
164
|
+
|
165
|
+
export { CheckboxDirective, CheckboxIndicatorDirective, CheckboxToken, injectCheckbox };
|
166
|
+
//# sourceMappingURL=radix-ng-primitives-checkbox.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-checkbox.mjs","sources":["../../../packages/primitives/checkbox/src/checkbox.token.ts","../../../packages/primitives/checkbox/src/checkbox.directive.ts","../../../packages/primitives/checkbox/src/checkbox-indicator.directive.ts","../../../packages/primitives/checkbox/radix-ng-primitives-checkbox.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { CheckboxDirective } from './checkbox.directive';\n\nexport const CheckboxToken = new InjectionToken<CheckboxDirective>('CheckboxToken');\n\nexport function injectCheckbox(): CheckboxDirective {\n return inject(CheckboxToken);\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';\nimport { CheckboxToken } from './checkbox.token';\n\n@Directive({\n selector: 'button[rdxCheckbox]',\n standalone: true,\n providers: [\n { provide: CheckboxToken, useExisting: CheckboxDirective },\n { provide: NG_VALUE_ACCESSOR, useExisting: CheckboxDirective, multi: true }\n ],\n host: {\n type: 'button',\n role: 'checkbox',\n '[disabled]': 'disabled',\n '[attr.aria-checked]': 'indeterminate ? \"mixed\" : checked',\n '[attr.data-disabled]': 'disabled ? \"\" : null',\n '[attr.data-state]': 'state'\n }\n})\nexport class CheckboxDirective implements ControlValueAccessor {\n /**\n * Defines whether the checkbox is checked.\n */\n @Input({ transform: booleanAttribute }) checked = false;\n\n /**\n * Defines whether the checkbox is indeterminate.\n */\n @Input({ transform: booleanAttribute })\n indeterminate = false;\n\n /**\n * Defines whether the checkbox is disabled.\n */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * Event emitted when the checkbox checked state changes.\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n /**\n * Event emitted when the indeterminate state changes.\n */\n @Output() readonly indeterminateChange = new EventEmitter<boolean>();\n\n /**\n * Determine the state\n */\n get state(): 'checked' | 'unchecked' | 'indeterminate' {\n if (this.indeterminate) {\n return 'indeterminate';\n }\n return this.checked ? 'checked' : 'unchecked';\n }\n\n /**\n * Store the callback function that should be called when the checkbox checked state changes.\n * @internal\n */\n private onChange?: (checked: boolean) => void;\n\n /**\n * Store the callback function that should be called when the checkbox is blurred.\n * @internal\n */\n private onTouched?: () => void;\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n }\n\n @HostListener('click')\n onClick(): void {\n this.checked = this.indeterminate ? true : !this.checked;\n this.checkedChange.emit(this.checked);\n this.onChange?.(this.checked);\n\n // if the checkbox was indeterminate, it isn't anymore\n if (this.indeterminate) {\n this.indeterminate = false;\n this.indeterminateChange.emit(this.indeterminate);\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched?.();\n }\n\n /**\n * Sets the checked state of the checkbox.\n * @param checked The checked state of the checkbox.\n * @internal\n */\n writeValue(checked: boolean): void {\n this.checked = checked;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox checked state changes.\n * @param fn The callback function.\n * @internal\n */\n registerOnChange(fn: (checked: boolean) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a callback function that should be called when the checkbox is blurred.\n * @param fn The callback function.\n * @internal\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the checkbox.\n * @param isDisabled The disabled state of the checkbox.\n * @internal\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectCheckbox } from './checkbox.token';\n\n@Directive({\n selector: '[rdxCheckboxIndicator]',\n standalone: true,\n host: {\n '[style.pointer-events]': '\"none\"',\n '[attr.data-state]': 'checkbox.state',\n '[attr.data-disabled]': 'checkbox.disabled ? \"\" : null'\n }\n})\nexport class CheckboxIndicatorDirective {\n protected readonly checkbox = injectCheckbox();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { Directive, Optional, Input, HostListener } from '@angular/core';
|
3
|
+
|
4
|
+
class LabelDirective {
|
5
|
+
constructor(el) {
|
6
|
+
this.el = el;
|
7
|
+
/**
|
8
|
+
* The id of the element the label is associated with.
|
9
|
+
* @default '-'
|
10
|
+
*/
|
11
|
+
this.htmlFor = '';
|
12
|
+
}
|
13
|
+
// prevent text selection when double-clicking label
|
14
|
+
// The main problem with double-clicks in a web app is that
|
15
|
+
// you will have to create special code to handle this on touch enabled devices.
|
16
|
+
onMouseDown(event) {
|
17
|
+
const target = event.target;
|
18
|
+
// only prevent text selection if clicking inside the label itself
|
19
|
+
if (['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
// prevent text selection when double-clicking label
|
23
|
+
if (this.el.nativeElement.contains(target) && !event.defaultPrevented && event.detail > 1) {
|
24
|
+
event.preventDefault();
|
25
|
+
}
|
26
|
+
}
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LabelDirective, deps: [{ token: i0.ElementRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
28
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: LabelDirective, isStandalone: true, selector: "label[rdxLabel]", inputs: { htmlFor: "htmlFor" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "attr.for": "htmlFor ? htmlFor : null" } }, ngImport: i0 }); }
|
29
|
+
}
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LabelDirective, decorators: [{
|
31
|
+
type: Directive,
|
32
|
+
args: [{
|
33
|
+
selector: 'label[rdxLabel]',
|
34
|
+
standalone: true,
|
35
|
+
host: {
|
36
|
+
'[attr.for]': 'htmlFor ? htmlFor : null'
|
37
|
+
}
|
38
|
+
}]
|
39
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
40
|
+
type: Optional
|
41
|
+
}] }], propDecorators: { htmlFor: [{
|
42
|
+
type: Input
|
43
|
+
}], onMouseDown: [{
|
44
|
+
type: HostListener,
|
45
|
+
args: ['mousedown', ['$event']]
|
46
|
+
}] } });
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Generated bundle index. Do not edit.
|
50
|
+
*/
|
51
|
+
|
52
|
+
export { LabelDirective };
|
53
|
+
//# sourceMappingURL=radix-ng-primitives-label.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-label.mjs","sources":["../../../packages/primitives/label/src/label.directive.ts","../../../packages/primitives/label/radix-ng-primitives-label.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, Input, Optional } from '@angular/core';\n\n@Directive({\n selector: 'label[rdxLabel]',\n standalone: true,\n host: {\n '[attr.for]': 'htmlFor ? htmlFor : null'\n }\n})\nexport class LabelDirective {\n /**\n * The id of the element the label is associated with.\n * @default '-'\n */\n @Input() htmlFor = '';\n\n constructor(@Optional() private el: ElementRef) {}\n\n // prevent text selection when double-clicking label\n // The main problem with double-clicks in a web app is that\n // you will have to create special code to handle this on touch enabled devices.\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n\n // only prevent text selection if clicking inside the label itself\n if (['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {\n return;\n }\n\n // prevent text selection when double-clicking label\n if (this.el.nativeElement.contains(target) && !event.defaultPrevented && event.detail > 1) {\n event.preventDefault();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MASa,cAAc,CAAA;AAOvB,IAAA,WAAA,CAAgC,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAN9C;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;KAE4B;;;;AAMlD,IAAA,WAAW,CAAC,KAAiB,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;;AAG3C,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACpE,OAAO;SACV;;QAGD,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvF,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;8GAzBQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,YAAY,EAAE,0BAA0B;AAC3C,qBAAA;AACJ,iBAAA,CAAA;;0BAQgB,QAAQ;yCAFZ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAQN,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACrBzC;;AAEG;;;;"}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { InjectionToken, inject, Directive, numberAttribute, Input } from '@angular/core';
|
3
|
+
|
4
|
+
const ProgressToken = new InjectionToken('ProgressDirective');
|
5
|
+
function injectProgress() {
|
6
|
+
return inject(ProgressToken);
|
7
|
+
}
|
8
|
+
|
9
|
+
class ProgressIndicatorDirective {
|
10
|
+
constructor() {
|
11
|
+
this.progress = injectProgress();
|
12
|
+
}
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ProgressIndicatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
14
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: ProgressIndicatorDirective, isStandalone: true, selector: "[rdxProgressIndicator]", host: { properties: { "attr.data-state": "progress.state", "attr.data-value": "progress.value", "attr.data-max": "progress.max" } }, ngImport: i0 }); }
|
15
|
+
}
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ProgressIndicatorDirective, decorators: [{
|
17
|
+
type: Directive,
|
18
|
+
args: [{
|
19
|
+
selector: '[rdxProgressIndicator]',
|
20
|
+
standalone: true,
|
21
|
+
host: {
|
22
|
+
'[attr.data-state]': 'progress.state',
|
23
|
+
'[attr.data-value]': 'progress.value',
|
24
|
+
'[attr.data-max]': 'progress.max'
|
25
|
+
}
|
26
|
+
}]
|
27
|
+
}] });
|
28
|
+
|
29
|
+
class ProgressDirective {
|
30
|
+
constructor() {
|
31
|
+
/**
|
32
|
+
* Define the progress value.
|
33
|
+
*/
|
34
|
+
this.value = 0;
|
35
|
+
/**
|
36
|
+
* Define the progress max value.
|
37
|
+
* @default 100
|
38
|
+
*/
|
39
|
+
this.max = 100;
|
40
|
+
/**
|
41
|
+
* Define a function that returns the progress value label.
|
42
|
+
*/
|
43
|
+
this.valueLabel = (value, max) => `${Math.round((value / max) * 100)}%`;
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Get the state of the progress bar.
|
47
|
+
* @returns 'indeterminate' | 'loading' | 'complete'
|
48
|
+
* @internal
|
49
|
+
*/
|
50
|
+
get state() {
|
51
|
+
return this.value == null
|
52
|
+
? 'indeterminate'
|
53
|
+
: this.value === this.max
|
54
|
+
? 'complete'
|
55
|
+
: 'loading';
|
56
|
+
}
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ProgressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
58
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: ProgressDirective, isStandalone: true, selector: "[rdxProgress]", inputs: { value: ["rdxProgressValue", "value", numberAttribute], max: ["rdxProgressMax", "max", numberAttribute], valueLabel: ["rdxProgressValueLabel", "valueLabel"] }, host: { attributes: { "role": "progressbar" }, properties: { "attr.aria-valuemax": "max", "attr.aria-valuemin": "0", "attr.aria-valuenow": "value", "attr.aria-valuetext": "valueLabel(value, max)", "attr.data-state": "state", "attr.data-value": "value", "attr.data-max": "max" } }, providers: [{ provide: ProgressToken, useExisting: ProgressDirective }], ngImport: i0 }); }
|
59
|
+
}
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ProgressDirective, decorators: [{
|
61
|
+
type: Directive,
|
62
|
+
args: [{
|
63
|
+
selector: '[rdxProgress]',
|
64
|
+
standalone: true,
|
65
|
+
providers: [{ provide: ProgressToken, useExisting: ProgressDirective }],
|
66
|
+
host: {
|
67
|
+
role: 'progressbar',
|
68
|
+
'[attr.aria-valuemax]': 'max',
|
69
|
+
'[attr.aria-valuemin]': '0',
|
70
|
+
'[attr.aria-valuenow]': 'value',
|
71
|
+
'[attr.aria-valuetext]': 'valueLabel(value, max)',
|
72
|
+
'[attr.data-state]': 'state',
|
73
|
+
'[attr.data-value]': 'value',
|
74
|
+
'[attr.data-max]': 'max'
|
75
|
+
}
|
76
|
+
}]
|
77
|
+
}], propDecorators: { value: [{
|
78
|
+
type: Input,
|
79
|
+
args: [{ alias: 'rdxProgressValue', transform: numberAttribute }]
|
80
|
+
}], max: [{
|
81
|
+
type: Input,
|
82
|
+
args: [{ alias: 'rdxProgressMax', transform: numberAttribute }]
|
83
|
+
}], valueLabel: [{
|
84
|
+
type: Input,
|
85
|
+
args: ['rdxProgressValueLabel']
|
86
|
+
}] } });
|
87
|
+
|
88
|
+
/**
|
89
|
+
* Generated bundle index. Do not edit.
|
90
|
+
*/
|
91
|
+
|
92
|
+
export { ProgressDirective, ProgressIndicatorDirective };
|
93
|
+
//# sourceMappingURL=radix-ng-primitives-progress.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-progress.mjs","sources":["../../../packages/primitives/progress/src/progress.token.ts","../../../packages/primitives/progress/src/progress-indicator.directive.ts","../../../packages/primitives/progress/src/progress.directive.ts","../../../packages/primitives/progress/radix-ng-primitives-progress.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { ProgressDirective } from './progress.directive';\n\nexport const ProgressToken = new InjectionToken<ProgressDirective>('ProgressDirective');\n\nexport function injectProgress(): ProgressDirective {\n return inject(ProgressToken);\n}\n","import { Directive } from '@angular/core';\nimport { injectProgress } from './progress.token';\n\n@Directive({\n selector: '[rdxProgressIndicator]',\n standalone: true,\n host: {\n '[attr.data-state]': 'progress.state',\n '[attr.data-value]': 'progress.value',\n '[attr.data-max]': 'progress.max'\n }\n})\nexport class ProgressIndicatorDirective {\n protected readonly progress = injectProgress();\n}\n","import { Directive, Input, numberAttribute } from '@angular/core';\nimport { ProgressToken } from './progress.token';\n\n@Directive({\n selector: '[rdxProgress]',\n standalone: true,\n providers: [{ provide: ProgressToken, useExisting: ProgressDirective }],\n host: {\n role: 'progressbar',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-valuetext]': 'valueLabel(value, max)',\n '[attr.data-state]': 'state',\n '[attr.data-value]': 'value',\n '[attr.data-max]': 'max'\n }\n})\nexport class ProgressDirective {\n /**\n * Define the progress value.\n */\n @Input({ alias: 'rdxProgressValue', transform: numberAttribute }) value = 0;\n\n /**\n * Define the progress max value.\n * @default 100\n */\n @Input({ alias: 'rdxProgressMax', transform: numberAttribute }) max = 100;\n\n /**\n * Define a function that returns the progress value label.\n */\n @Input('rdxProgressValueLabel') valueLabel: (value: number, max: number) => string = (\n value,\n max\n ) => `${Math.round((value / max) * 100)}%`;\n\n /**\n * Get the state of the progress bar.\n * @returns 'indeterminate' | 'loading' | 'complete'\n * @internal\n */\n get state(): 'indeterminate' | 'loading' | 'complete' {\n return this.value == null\n ? 'indeterminate'\n : this.value === this.max\n ? 'complete'\n : 'loading';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|