@spartan-ng/brain 0.0.1-alpha.372
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 +7 -0
- package/checkbox/README.md +3 -0
- package/checkbox/index.d.ts +10 -0
- package/checkbox/lib/brn-checkbox.component.d.ts +61 -0
- package/esm2022/checkbox/index.mjs +18 -0
- package/esm2022/checkbox/lib/brn-checkbox.component.mjs +248 -0
- package/esm2022/checkbox/spartan-ng-brain-checkbox.mjs +5 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/spartan-ng-brain.mjs +5 -0
- package/fesm2022/spartan-ng-brain-checkbox.mjs +269 -0
- package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -0
- package/fesm2022/spartan-ng-brain.mjs +7 -0
- package/fesm2022/spartan-ng-brain.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/package.json +37 -0
package/README.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BrnCheckboxComponent } from './lib/brn-checkbox.component';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./lib/brn-checkbox.component";
|
|
4
|
+
export * from './lib/brn-checkbox.component';
|
|
5
|
+
export declare const BrnCheckboxImports: readonly [typeof BrnCheckboxComponent];
|
|
6
|
+
export declare class BrnCheckboxModule {
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BrnCheckboxModule, never>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<BrnCheckboxModule, never, [typeof i1.BrnCheckboxComponent], [typeof i1.BrnCheckboxComponent]>;
|
|
9
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<BrnCheckboxModule>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type AfterContentInit, ElementRef, type OnDestroy } from '@angular/core';
|
|
2
|
+
import { ChangeFn, TouchFn } from '@spartan-ng/ui-forms-brain';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare const BRN_CHECKBOX_VALUE_ACCESSOR: {
|
|
5
|
+
provide: import("@angular/core").InjectionToken<readonly import("@angular/forms").ControlValueAccessor[]>;
|
|
6
|
+
useExisting: import("@angular/core").Type<any>;
|
|
7
|
+
multi: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function indeterminateBooleanAttribute(value: unknown): boolean | 'indeterminate';
|
|
10
|
+
export declare class BrnCheckboxComponent implements AfterContentInit, OnDestroy {
|
|
11
|
+
private readonly _renderer;
|
|
12
|
+
private readonly _elementRef;
|
|
13
|
+
private readonly _focusMonitor;
|
|
14
|
+
private readonly _isBrowser;
|
|
15
|
+
private readonly _focusVisible;
|
|
16
|
+
readonly focusVisible: import("@angular/core").Signal<boolean>;
|
|
17
|
+
private readonly _focused;
|
|
18
|
+
readonly focused: import("@angular/core").Signal<boolean>;
|
|
19
|
+
readonly checked: import("@angular/core").ModelSignal<BrnCheckboxValue>;
|
|
20
|
+
readonly isChecked: import("@angular/core").Signal<BrnCheckboxValue>;
|
|
21
|
+
protected readonly _dataState: import("@angular/core").Signal<"indeterminate" | "checked" | "unchecked">;
|
|
22
|
+
protected readonly _ariaChecked: import("@angular/core").Signal<"mixed" | "true" | "false">;
|
|
23
|
+
protected readonly _value: import("@angular/core").Signal<"" | "on" | "off">;
|
|
24
|
+
/** Used to set the id on the underlying input element. */
|
|
25
|
+
readonly id: import("@angular/core").InputSignal<string | null>;
|
|
26
|
+
protected readonly hostId: import("@angular/core").Signal<string | null>;
|
|
27
|
+
/** Used to set the name attribute on the underlying input element. */
|
|
28
|
+
readonly name: import("@angular/core").InputSignal<string | null>;
|
|
29
|
+
protected readonly hostName: import("@angular/core").Signal<string | null>;
|
|
30
|
+
/** Used to set the aria-label attribute on the underlying input element. */
|
|
31
|
+
readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
|
|
32
|
+
/** Used to set the aria-labelledby attribute on the underlying input element. */
|
|
33
|
+
readonly ariaLabelledby: import("@angular/core").InputSignal<string | null>;
|
|
34
|
+
readonly ariaDescribedby: import("@angular/core").InputSignal<string | null>;
|
|
35
|
+
readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
36
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
37
|
+
protected readonly state: import("@angular/core").Signal<{
|
|
38
|
+
disabled: import("@angular/core").WritableSignal<boolean>;
|
|
39
|
+
}>;
|
|
40
|
+
protected _onChange: ChangeFn<BrnCheckboxValue>;
|
|
41
|
+
private _onTouched;
|
|
42
|
+
readonly checkbox: import("@angular/core").Signal<ElementRef<HTMLInputElement>>;
|
|
43
|
+
readonly changed: import("@angular/core").OutputEmitterRef<BrnCheckboxValue>;
|
|
44
|
+
constructor();
|
|
45
|
+
toggle(event: Event): void;
|
|
46
|
+
ngAfterContentInit(): void;
|
|
47
|
+
ngOnDestroy(): void;
|
|
48
|
+
writeValue(value: BrnCheckboxValue): void;
|
|
49
|
+
registerOnChange(fn: ChangeFn<BrnCheckboxValue>): void;
|
|
50
|
+
registerOnTouched(fn: TouchFn): void;
|
|
51
|
+
/** Implemented as a part of ControlValueAccessor. */
|
|
52
|
+
setDisabledState(isDisabled: boolean): void;
|
|
53
|
+
/**
|
|
54
|
+
* If the space key is pressed, prevent the default action to stop the page from scrolling.
|
|
55
|
+
*/
|
|
56
|
+
protected preventScrolling(event: KeyboardEvent): void;
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BrnCheckboxComponent, never>;
|
|
58
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BrnCheckboxComponent, "brn-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, ["*"], true, never>;
|
|
59
|
+
}
|
|
60
|
+
type BrnCheckboxValue = boolean | 'indeterminate';
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { BrnCheckboxComponent } from './lib/brn-checkbox.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export * from './lib/brn-checkbox.component';
|
|
5
|
+
export const BrnCheckboxImports = [BrnCheckboxComponent];
|
|
6
|
+
export class BrnCheckboxModule {
|
|
7
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule, imports: [BrnCheckboxComponent], exports: [BrnCheckboxComponent] });
|
|
9
|
+
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule });
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [...BrnCheckboxImports],
|
|
15
|
+
exports: [...BrnCheckboxImports],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2JyYWluL2NoZWNrYm94L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUVwRSxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsb0JBQW9CLENBQVUsQ0FBQztBQU1sRSxNQUFNLE9BQU8saUJBQWlCOzBIQUFqQixpQkFBaUI7MkhBQWpCLGlCQUFpQixZQU5LLG9CQUFvQixhQUFwQixvQkFBb0I7MkhBTTFDLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJybkNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9saWIvYnJuLWNoZWNrYm94LmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jybi1jaGVja2JveC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQnJuQ2hlY2tib3hJbXBvcnRzID0gW0JybkNoZWNrYm94Q29tcG9uZW50XSBhcyBjb25zdDtcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czogWy4uLkJybkNoZWNrYm94SW1wb3J0c10sXG5cdGV4cG9ydHM6IFsuLi5Ccm5DaGVja2JveEltcG9ydHNdLFxufSlcbmV4cG9ydCBjbGFzcyBCcm5DaGVja2JveE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
|
+
import { NgStyle, isPlatformBrowser } from '@angular/common';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, ElementRef, HostListener, PLATFORM_ID, Renderer2, ViewEncapsulation, booleanAttribute, computed, effect, forwardRef, inject, input, model, output, signal, viewChild, } from '@angular/core';
|
|
4
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export const BRN_CHECKBOX_VALUE_ACCESSOR = {
|
|
7
|
+
provide: NG_VALUE_ACCESSOR,
|
|
8
|
+
useExisting: forwardRef(() => BrnCheckboxComponent),
|
|
9
|
+
multi: true,
|
|
10
|
+
};
|
|
11
|
+
export function indeterminateBooleanAttribute(value) {
|
|
12
|
+
if (value === 'indeterminate')
|
|
13
|
+
return 'indeterminate';
|
|
14
|
+
return booleanAttribute(value);
|
|
15
|
+
}
|
|
16
|
+
const CONTAINER_POST_FIX = '-checkbox';
|
|
17
|
+
export class BrnCheckboxComponent {
|
|
18
|
+
_renderer = inject(Renderer2);
|
|
19
|
+
_elementRef = inject(ElementRef);
|
|
20
|
+
_focusMonitor = inject(FocusMonitor);
|
|
21
|
+
_isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
22
|
+
_focusVisible = signal(false);
|
|
23
|
+
focusVisible = this._focusVisible.asReadonly();
|
|
24
|
+
_focused = signal(false);
|
|
25
|
+
focused = this._focused.asReadonly();
|
|
26
|
+
checked = model(false);
|
|
27
|
+
isChecked = this.checked.asReadonly();
|
|
28
|
+
_dataState = computed(() => {
|
|
29
|
+
const checked = this.checked();
|
|
30
|
+
if (checked === 'indeterminate')
|
|
31
|
+
return 'indeterminate';
|
|
32
|
+
return checked ? 'checked' : 'unchecked';
|
|
33
|
+
});
|
|
34
|
+
_ariaChecked = computed(() => {
|
|
35
|
+
const checked = this.checked();
|
|
36
|
+
if (checked === 'indeterminate')
|
|
37
|
+
return 'mixed';
|
|
38
|
+
return checked ? 'true' : 'false';
|
|
39
|
+
});
|
|
40
|
+
_value = computed(() => {
|
|
41
|
+
const checked = this.checked();
|
|
42
|
+
if (checked === 'indeterminate')
|
|
43
|
+
return '';
|
|
44
|
+
return checked ? 'on' : 'off';
|
|
45
|
+
});
|
|
46
|
+
/** Used to set the id on the underlying input element. */
|
|
47
|
+
id = input(null);
|
|
48
|
+
hostId = computed(() => (this.id() ? this.id() + CONTAINER_POST_FIX : null));
|
|
49
|
+
/** Used to set the name attribute on the underlying input element. */
|
|
50
|
+
name = input(null);
|
|
51
|
+
hostName = computed(() => (this.name() ? this.name() + CONTAINER_POST_FIX : null));
|
|
52
|
+
/** Used to set the aria-label attribute on the underlying input element. */
|
|
53
|
+
ariaLabel = input(null, { alias: 'aria-label' });
|
|
54
|
+
/** Used to set the aria-labelledby attribute on the underlying input element. */
|
|
55
|
+
ariaLabelledby = input(null, { alias: 'aria-labelledby' });
|
|
56
|
+
ariaDescribedby = input(null, { alias: 'aria-describedby' });
|
|
57
|
+
required = input(false, { transform: booleanAttribute });
|
|
58
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
59
|
+
state = computed(() => ({
|
|
60
|
+
disabled: signal(this.disabled()),
|
|
61
|
+
}));
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
63
|
+
_onChange = () => { };
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
65
|
+
_onTouched = () => { };
|
|
66
|
+
checkbox = viewChild.required('checkBox');
|
|
67
|
+
changed = output();
|
|
68
|
+
constructor() {
|
|
69
|
+
effect(() => {
|
|
70
|
+
const parent = this._renderer.parentNode(this._elementRef.nativeElement);
|
|
71
|
+
if (!parent)
|
|
72
|
+
return;
|
|
73
|
+
// check if parent is a label and assume it is for this checkbox
|
|
74
|
+
if (parent?.tagName === 'LABEL') {
|
|
75
|
+
this._renderer.setAttribute(parent, 'data-disabled', this.state().disabled() ? 'true' : 'false');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!this._isBrowser)
|
|
79
|
+
return;
|
|
80
|
+
const label = parent?.querySelector(`label[for="${this.id()}"]`);
|
|
81
|
+
if (!label)
|
|
82
|
+
return;
|
|
83
|
+
this._renderer.setAttribute(label, 'data-disabled', this.state().disabled() ? 'true' : 'false');
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
toggle(event) {
|
|
87
|
+
if (this.state().disabled())
|
|
88
|
+
return;
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
const previousChecked = this.checked();
|
|
91
|
+
this.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked);
|
|
92
|
+
this._onChange(!previousChecked);
|
|
93
|
+
this.changed.emit(!previousChecked);
|
|
94
|
+
}
|
|
95
|
+
ngAfterContentInit() {
|
|
96
|
+
this._focusMonitor.monitor(this._elementRef, true).subscribe((focusOrigin) => {
|
|
97
|
+
if (focusOrigin)
|
|
98
|
+
this._focused.set(true);
|
|
99
|
+
if (focusOrigin === 'keyboard' || focusOrigin === 'program') {
|
|
100
|
+
this._focusVisible.set(true);
|
|
101
|
+
}
|
|
102
|
+
if (!focusOrigin) {
|
|
103
|
+
// When a focused element becomes disabled, the browser *immediately* fires a blur event.
|
|
104
|
+
// Angular does not expect events to be raised during change detection, so any state
|
|
105
|
+
// change (such as a form control's ng-touched) will cause a changed-after-checked error.
|
|
106
|
+
// See https://github.com/angular/angular/issues/17793. To work around this, we defer
|
|
107
|
+
// telling the form control it has been touched until the next tick.
|
|
108
|
+
Promise.resolve().then(() => {
|
|
109
|
+
this._focusVisible.set(false);
|
|
110
|
+
this._focused.set(false);
|
|
111
|
+
this._onTouched();
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
this.checkbox().nativeElement.indeterminate = this.checked() === 'indeterminate';
|
|
116
|
+
if (this.checkbox().nativeElement.indeterminate) {
|
|
117
|
+
this.checkbox().nativeElement.value = 'indeterminate';
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.checkbox().nativeElement.value = this.checked() ? 'on' : 'off';
|
|
121
|
+
}
|
|
122
|
+
this.checkbox().nativeElement.dispatchEvent(new Event('change'));
|
|
123
|
+
}
|
|
124
|
+
ngOnDestroy() {
|
|
125
|
+
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
126
|
+
}
|
|
127
|
+
writeValue(value) {
|
|
128
|
+
if (value === 'indeterminate') {
|
|
129
|
+
this.checked.set('indeterminate');
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.checked.set(!!value);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
registerOnChange(fn) {
|
|
136
|
+
this._onChange = fn;
|
|
137
|
+
}
|
|
138
|
+
registerOnTouched(fn) {
|
|
139
|
+
this._onTouched = fn;
|
|
140
|
+
}
|
|
141
|
+
/** Implemented as a part of ControlValueAccessor. */
|
|
142
|
+
setDisabledState(isDisabled) {
|
|
143
|
+
this.state().disabled.set(isDisabled);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* If the space key is pressed, prevent the default action to stop the page from scrolling.
|
|
147
|
+
*/
|
|
148
|
+
preventScrolling(event) {
|
|
149
|
+
event.preventDefault();
|
|
150
|
+
}
|
|
151
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.5", type: BrnCheckboxComponent, isStandalone: true, selector: "brn-checkbox", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", changed: "changed" }, host: { listeners: { "click": "toggle($event)", "keyup.space": "toggle($event)", "keyup.enter": "toggle($event)", "keydown.space": "preventScrolling($event)" }, properties: { "attr.tabindex": "state().disabled() ? \"-1\" : \"0\"", "attr.data-state": "_dataState()", "attr.data-focus-visible": "focusVisible()", "attr.data-focus": "focused()", "attr.data-disabled": "state().disabled()", "attr.aria-labelledby": "null", "attr.aria-label": "null", "attr.aria-describedby": "null", "attr.id": "hostId()", "attr.name": "hostName()" } }, providers: [BRN_CHECKBOX_VALUE_ACCESSOR], viewQueries: [{ propertyName: "checkbox", first: true, predicate: ["checkBox"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
153
|
+
<input
|
|
154
|
+
#checkBox
|
|
155
|
+
tabindex="-1"
|
|
156
|
+
type="checkbox"
|
|
157
|
+
role="checkbox"
|
|
158
|
+
[ngStyle]="{
|
|
159
|
+
position: 'absolute',
|
|
160
|
+
width: '1px',
|
|
161
|
+
height: '1px',
|
|
162
|
+
padding: '0',
|
|
163
|
+
margin: '-1px',
|
|
164
|
+
overflow: 'hidden',
|
|
165
|
+
clip: 'rect(0, 0, 0, 0)',
|
|
166
|
+
whiteSpace: 'nowrap',
|
|
167
|
+
borderWidth: '0',
|
|
168
|
+
}"
|
|
169
|
+
[id]="id() ?? ''"
|
|
170
|
+
[name]="name() ?? ''"
|
|
171
|
+
[value]="_value()"
|
|
172
|
+
[checked]="isChecked()"
|
|
173
|
+
[required]="required()"
|
|
174
|
+
[attr.aria-label]="ariaLabel()"
|
|
175
|
+
[attr.aria-labelledby]="ariaLabelledby()"
|
|
176
|
+
[attr.aria-describedby]="ariaDescribedby()"
|
|
177
|
+
[attr.aria-required]="required() || null"
|
|
178
|
+
[attr.aria-checked]="_ariaChecked()"
|
|
179
|
+
/>
|
|
180
|
+
<ng-content />
|
|
181
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
182
|
+
}
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxComponent, decorators: [{
|
|
184
|
+
type: Component,
|
|
185
|
+
args: [{
|
|
186
|
+
selector: 'brn-checkbox',
|
|
187
|
+
standalone: true,
|
|
188
|
+
imports: [NgStyle],
|
|
189
|
+
template: `
|
|
190
|
+
<input
|
|
191
|
+
#checkBox
|
|
192
|
+
tabindex="-1"
|
|
193
|
+
type="checkbox"
|
|
194
|
+
role="checkbox"
|
|
195
|
+
[ngStyle]="{
|
|
196
|
+
position: 'absolute',
|
|
197
|
+
width: '1px',
|
|
198
|
+
height: '1px',
|
|
199
|
+
padding: '0',
|
|
200
|
+
margin: '-1px',
|
|
201
|
+
overflow: 'hidden',
|
|
202
|
+
clip: 'rect(0, 0, 0, 0)',
|
|
203
|
+
whiteSpace: 'nowrap',
|
|
204
|
+
borderWidth: '0',
|
|
205
|
+
}"
|
|
206
|
+
[id]="id() ?? ''"
|
|
207
|
+
[name]="name() ?? ''"
|
|
208
|
+
[value]="_value()"
|
|
209
|
+
[checked]="isChecked()"
|
|
210
|
+
[required]="required()"
|
|
211
|
+
[attr.aria-label]="ariaLabel()"
|
|
212
|
+
[attr.aria-labelledby]="ariaLabelledby()"
|
|
213
|
+
[attr.aria-describedby]="ariaDescribedby()"
|
|
214
|
+
[attr.aria-required]="required() || null"
|
|
215
|
+
[attr.aria-checked]="_ariaChecked()"
|
|
216
|
+
/>
|
|
217
|
+
<ng-content />
|
|
218
|
+
`,
|
|
219
|
+
host: {
|
|
220
|
+
'[attr.tabindex]': 'state().disabled() ? "-1" : "0"',
|
|
221
|
+
'[attr.data-state]': '_dataState()',
|
|
222
|
+
'[attr.data-focus-visible]': 'focusVisible()',
|
|
223
|
+
'[attr.data-focus]': 'focused()',
|
|
224
|
+
'[attr.data-disabled]': 'state().disabled()',
|
|
225
|
+
'[attr.aria-labelledby]': 'null',
|
|
226
|
+
'[attr.aria-label]': 'null',
|
|
227
|
+
'[attr.aria-describedby]': 'null',
|
|
228
|
+
'[attr.id]': 'hostId()',
|
|
229
|
+
'[attr.name]': 'hostName()',
|
|
230
|
+
},
|
|
231
|
+
providers: [BRN_CHECKBOX_VALUE_ACCESSOR],
|
|
232
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
233
|
+
encapsulation: ViewEncapsulation.None,
|
|
234
|
+
}]
|
|
235
|
+
}], ctorParameters: () => [], propDecorators: { toggle: [{
|
|
236
|
+
type: HostListener,
|
|
237
|
+
args: ['click', ['$event']]
|
|
238
|
+
}, {
|
|
239
|
+
type: HostListener,
|
|
240
|
+
args: ['keyup.space', ['$event']]
|
|
241
|
+
}, {
|
|
242
|
+
type: HostListener,
|
|
243
|
+
args: ['keyup.enter', ['$event']]
|
|
244
|
+
}], preventScrolling: [{
|
|
245
|
+
type: HostListener,
|
|
246
|
+
args: ['keydown.space', ['$event']]
|
|
247
|
+
}] } });
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2hlY2tib3gvc3JjL2xpYi9icm4tY2hlY2tib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFFWixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR25ELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztJQUNuRCxLQUFLLEVBQUUsSUFBSTtDQUNYLENBQUM7QUFFRixNQUFNLFVBQVUsNkJBQTZCLENBQUMsS0FBYztJQUMzRCxJQUFJLEtBQUssS0FBSyxlQUFlO1FBQUUsT0FBTyxlQUFlLENBQUM7SUFDdEQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUM7QUFvRHZDLE1BQU0sT0FBTyxvQkFBb0I7SUFDZixTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLFdBQVcs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d0JBQ2pDLFdBQVcsRUFBRSxVQUFVO3dCQUN2QixhQUFhLEVBQUUsWUFBWTtxQkFDM0I7b0JBQ0QsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ3hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDckM7d0RBb0ZBLE1BQU07c0JBSEwsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoQyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3RDLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9FN0IsZ0JBQWdCO3NCQUR6QixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nU3R5bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdHR5cGUgQWZ0ZXJDb250ZW50SW5pdCxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RWxlbWVudFJlZixcblx0SG9zdExpc3RlbmVyLFxuXHR0eXBlIE9uRGVzdHJveSxcblx0UExBVEZPUk1fSUQsXG5cdFJlbmRlcmVyMixcblx0Vmlld0VuY2Fwc3VsYXRpb24sXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGZvcndhcmRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG1vZGVsLFxuXHRvdXRwdXQsXG5cdHNpZ25hbCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2hhbmdlRm4sIFRvdWNoRm4gfSBmcm9tICdAc3BhcnRhbi1uZy91aS1mb3Jtcy1icmFpbic7XG5cbmV4cG9ydCBjb25zdCBCUk5fQ0hFQ0tCT1hfVkFMVUVfQUNDRVNTT1IgPSB7XG5cdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCcm5DaGVja2JveENvbXBvbmVudCksXG5cdG11bHRpOiB0cnVlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluZGV0ZXJtaW5hdGVCb29sZWFuQXR0cmlidXRlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJyB7XG5cdGlmICh2YWx1ZSA9PT0gJ2luZGV0ZXJtaW5hdGUnKSByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuXHRyZXR1cm4gYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSk7XG59XG5cbmNvbnN0IENPTlRBSU5FUl9QT1NUX0ZJWCA9ICctY2hlY2tib3gnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdicm4tY2hlY2tib3gnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbTmdTdHlsZV0sXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGlucHV0XG5cdFx0XHQjY2hlY2tCb3hcblx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0dHlwZT1cImNoZWNrYm94XCJcblx0XHRcdHJvbGU9XCJjaGVja2JveFwiXG5cdFx0XHRbbmdTdHlsZV09XCJ7XG5cdFx0XHRcdHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuXHRcdFx0XHR3aWR0aDogJzFweCcsXG5cdFx0XHRcdGhlaWdodDogJzFweCcsXG5cdFx0XHRcdHBhZGRpbmc6ICcwJyxcblx0XHRcdFx0bWFyZ2luOiAnLTFweCcsXG5cdFx0XHRcdG92ZXJmbG93OiAnaGlkZGVuJyxcblx0XHRcdFx0Y2xpcDogJ3JlY3QoMCwgMCwgMCwgMCknLFxuXHRcdFx0XHR3aGl0ZVNwYWNlOiAnbm93cmFwJyxcblx0XHRcdFx0Ym9yZGVyV2lkdGg6ICcwJyxcblx0XHRcdH1cIlxuXHRcdFx0W2lkXT1cImlkKCkgPz8gJydcIlxuXHRcdFx0W25hbWVdPVwibmFtZSgpID8/ICcnXCJcblx0XHRcdFt2YWx1ZV09XCJfdmFsdWUoKVwiXG5cdFx0XHRbY2hlY2tlZF09XCJpc0NoZWNrZWQoKVwiXG5cdFx0XHRbcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXG5cdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCJcblx0XHRcdFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieSgpXCJcblx0XHRcdFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5KClcIlxuXHRcdFx0W2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCgpIHx8IG51bGxcIlxuXHRcdFx0W2F0dHIuYXJpYS1jaGVja2VkXT1cIl9hcmlhQ2hlY2tlZCgpXCJcblx0XHQvPlxuXHRcdDxuZy1jb250ZW50IC8+XG5cdGAsXG5cdGhvc3Q6IHtcblx0XHQnW2F0dHIudGFiaW5kZXhdJzogJ3N0YXRlKCkuZGlzYWJsZWQoKSA/IFwiLTFcIiA6IFwiMFwiJyxcblx0XHQnW2F0dHIuZGF0YS1zdGF0ZV0nOiAnX2RhdGFTdGF0ZSgpJyxcblx0XHQnW2F0dHIuZGF0YS1mb2N1cy12aXNpYmxlXSc6ICdmb2N1c1Zpc2libGUoKScsXG5cdFx0J1thdHRyLmRhdGEtZm9jdXNdJzogJ2ZvY3VzZWQoKScsXG5cdFx0J1thdHRyLmRhdGEtZGlzYWJsZWRdJzogJ3N0YXRlKCkuZGlzYWJsZWQoKScsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnbnVsbCcsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxdJzogJ251bGwnLFxuXHRcdCdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdudWxsJyxcblx0XHQnW2F0dHIuaWRdJzogJ2hvc3RJZCgpJyxcblx0XHQnW2F0dHIubmFtZV0nOiAnaG9zdE5hbWUoKScsXG5cdH0sXG5cdHByb3ZpZGVyczogW0JSTl9DSEVDS0JPWF9WQUxVRV9BQ0NFU1NPUl0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCcm5DaGVja2JveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzTW9uaXRvciA9IGluamVjdChGb2N1c01vbml0b3IpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3NlcihpbmplY3QoUExBVEZPUk1fSUQpKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9mb2N1c1Zpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuXHRwdWJsaWMgcmVhZG9ubHkgZm9jdXNWaXNpYmxlID0gdGhpcy5fZm9jdXNWaXNpYmxlLmFzUmVhZG9ubHkoKTtcblx0cHJpdmF0ZSByZWFkb25seSBfZm9jdXNlZCA9IHNpZ25hbChmYWxzZSk7XG5cdHB1YmxpYyByZWFkb25seSBmb2N1c2VkID0gdGhpcy5fZm9jdXNlZC5hc1JlYWRvbmx5KCk7XG5cblx0cHVibGljIHJlYWRvbmx5IGNoZWNrZWQgPSBtb2RlbDxCcm5DaGVja2JveFZhbHVlPihmYWxzZSk7XG5cdHB1YmxpYyByZWFkb25seSBpc0NoZWNrZWQgPSB0aGlzLmNoZWNrZWQuYXNSZWFkb25seSgpO1xuXG5cdHByb3RlY3RlZCByZWFkb25seSBfZGF0YVN0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNoZWNrZWQgPSB0aGlzLmNoZWNrZWQoKTtcblx0XHRpZiAoY2hlY2tlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnKSByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuXHRcdHJldHVybiBjaGVja2VkID8gJ2NoZWNrZWQnIDogJ3VuY2hlY2tlZCc7XG5cdH0pO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX2FyaWFDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNoZWNrZWQgPSB0aGlzLmNoZWNrZWQoKTtcblx0XHRpZiAoY2hlY2tlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnKSByZXR1cm4gJ21peGVkJztcblx0XHRyZXR1cm4gY2hlY2tlZCA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cdH0pO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX3ZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNoZWNrZWQgPSB0aGlzLmNoZWNrZWQoKTtcblx0XHRpZiAoY2hlY2tlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnKSByZXR1cm4gJyc7XG5cdFx0cmV0dXJuIGNoZWNrZWQgPyAnb24nIDogJ29mZic7XG5cdH0pO1xuXG5cdC8qKiBVc2VkIHRvIHNldCB0aGUgaWQgb24gdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudC4gKi9cblx0cHVibGljIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cdHByb3RlY3RlZCByZWFkb25seSBob3N0SWQgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pZCgpID8gdGhpcy5pZCgpICsgQ09OVEFJTkVSX1BPU1RfRklYIDogbnVsbCkpO1xuXG5cdC8qKiBVc2VkIHRvIHNldCB0aGUgbmFtZSBhdHRyaWJ1dGUgb24gdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudC4gKi9cblx0cHVibGljIHJlYWRvbmx5IG5hbWUgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGhvc3ROYW1lID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMubmFtZSgpID8gdGhpcy5uYW1lKCkgKyBDT05UQUlORVJfUE9TVF9GSVggOiBudWxsKSk7XG5cblx0LyoqIFVzZWQgdG8gc2V0IHRoZSBhcmlhLWxhYmVsIGF0dHJpYnV0ZSBvbiB0aGUgdW5kZXJseWluZyBpbnB1dCBlbGVtZW50LiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgYXJpYUxhYmVsID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCwgeyBhbGlhczogJ2FyaWEtbGFiZWwnIH0pO1xuXG5cdC8qKiBVc2VkIHRvIHNldCB0aGUgYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSBvbiB0aGUgdW5kZXJseWluZyBpbnB1dCBlbGVtZW50LiAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgYXJpYUxhYmVsbGVkYnkgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsLCB7IGFsaWFzOiAnYXJpYS1sYWJlbGxlZGJ5JyB9KTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgYXJpYURlc2NyaWJlZGJ5ID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCwgeyBhbGlhczogJ2FyaWEtZGVzY3JpYmVkYnknIH0pO1xuXG5cdHB1YmxpYyByZWFkb25seSByZXF1aXJlZCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IHN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHtcblx0XHRkaXNhYmxlZDogc2lnbmFsKHRoaXMuZGlzYWJsZWQoKSksXG5cdH0pKTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5cdHByb3RlY3RlZCBfb25DaGFuZ2U6IENoYW5nZUZuPEJybkNoZWNrYm94VmFsdWU+ID0gKCkgPT4ge307XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cblx0cHJpdmF0ZSBfb25Ub3VjaGVkOiBUb3VjaEZuID0gKCkgPT4ge307XG5cblx0cHVibGljIHJlYWRvbmx5IGNoZWNrYm94ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdjaGVja0JveCcpO1xuXG5cdHB1YmxpYyByZWFkb25seSBjaGFuZ2VkID0gb3V0cHV0PEJybkNoZWNrYm94VmFsdWU+KCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHBhcmVudCA9IHRoaXMuX3JlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHRcdGlmICghcGFyZW50KSByZXR1cm47XG5cdFx0XHQvLyBjaGVjayBpZiBwYXJlbnQgaXMgYSBsYWJlbCBhbmQgYXNzdW1lIGl0IGlzIGZvciB0aGlzIGNoZWNrYm94XG5cdFx0XHRpZiAocGFyZW50Py50YWdOYW1lID09PSAnTEFCRUwnKSB7XG5cdFx0XHRcdHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShwYXJlbnQsICdkYXRhLWRpc2FibGVkJywgdGhpcy5zdGF0ZSgpLmRpc2FibGVkKCkgPyAndHJ1ZScgOiAnZmFsc2UnKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGlzLl9pc0Jyb3dzZXIpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgbGFiZWwgPSBwYXJlbnQ/LnF1ZXJ5U2VsZWN0b3IoYGxhYmVsW2Zvcj1cIiR7dGhpcy5pZCgpfVwiXWApO1xuXHRcdFx0aWYgKCFsYWJlbCkgcmV0dXJuO1xuXHRcdFx0dGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGxhYmVsLCAnZGF0YS1kaXNhYmxlZCcsIHRoaXMuc3RhdGUoKS5kaXNhYmxlZCgpID8gJ3RydWUnIDogJ2ZhbHNlJyk7XG5cdFx0fSk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG5cdEBIb3N0TGlzdGVuZXIoJ2tleXVwLnNwYWNlJywgWyckZXZlbnQnXSlcblx0QEhvc3RMaXN0ZW5lcigna2V5dXAuZW50ZXInLCBbJyRldmVudCddKVxuXHR0b2dnbGUoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0aWYgKHRoaXMuc3RhdGUoKS5kaXNhYmxlZCgpKSByZXR1cm47XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRjb25zdCBwcmV2aW91c0NoZWNrZWQgPSB0aGlzLmNoZWNrZWQoKTtcblx0XHR0aGlzLmNoZWNrZWQuc2V0KHByZXZpb3VzQ2hlY2tlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnID8gdHJ1ZSA6ICFwcmV2aW91c0NoZWNrZWQpO1xuXHRcdHRoaXMuX29uQ2hhbmdlKCFwcmV2aW91c0NoZWNrZWQpO1xuXHRcdHRoaXMuY2hhbmdlZC5lbWl0KCFwcmV2aW91c0NoZWNrZWQpO1xuXHR9XG5cblx0bmdBZnRlckNvbnRlbnRJbml0KCkge1xuXHRcdHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZSgoZm9jdXNPcmlnaW4pID0+IHtcblx0XHRcdGlmIChmb2N1c09yaWdpbikgdGhpcy5fZm9jdXNlZC5zZXQodHJ1ZSk7XG5cdFx0XHRpZiAoZm9jdXNPcmlnaW4gPT09ICdrZXlib2FyZCcgfHwgZm9jdXNPcmlnaW4gPT09ICdwcm9ncmFtJykge1xuXHRcdFx0XHR0aGlzLl9mb2N1c1Zpc2libGUuc2V0KHRydWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFmb2N1c09yaWdpbikge1xuXHRcdFx0XHQvLyBXaGVuIGEgZm9jdXNlZCBlbGVtZW50IGJlY29tZXMgZGlzYWJsZWQsIHRoZSBicm93c2VyICppbW1lZGlhdGVseSogZmlyZXMgYSBibHVyIGV2ZW50LlxuXHRcdFx0XHQvLyBBbmd1bGFyIGRvZXMgbm90IGV4cGVjdCBldmVudHMgdG8gYmUgcmFpc2VkIGR1cmluZyBjaGFuZ2UgZGV0ZWN0aW9uLCBzbyBhbnkgc3RhdGVcblx0XHRcdFx0Ly8gY2hhbmdlIChzdWNoIGFzIGEgZm9ybSBjb250cm9sJ3MgbmctdG91Y2hlZCkgd2lsbCBjYXVzZSBhIGNoYW5nZWQtYWZ0ZXItY2hlY2tlZCBlcnJvci5cblx0XHRcdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE3NzkzLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBkZWZlclxuXHRcdFx0XHQvLyB0ZWxsaW5nIHRoZSBmb3JtIGNvbnRyb2wgaXQgaGFzIGJlZW4gdG91Y2hlZCB1bnRpbCB0aGUgbmV4dCB0aWNrLlxuXHRcdFx0XHRQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9mb2N1c1Zpc2libGUuc2V0KGZhbHNlKTtcblx0XHRcdFx0XHR0aGlzLl9mb2N1c2VkLnNldChmYWxzZSk7XG5cdFx0XHRcdFx0dGhpcy5fb25Ub3VjaGVkKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5jaGVja2JveCgpLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IHRoaXMuY2hlY2tlZCgpID09PSAnaW5kZXRlcm1pbmF0ZSc7XG5cdFx0aWYgKHRoaXMuY2hlY2tib3goKS5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUpIHtcblx0XHRcdHRoaXMuY2hlY2tib3goKS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJ2luZGV0ZXJtaW5hdGUnO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNoZWNrYm94KCkubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuY2hlY2tlZCgpID8gJ29uJyA6ICdvZmYnO1xuXHRcdH1cblx0XHR0aGlzLmNoZWNrYm94KCkubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpO1xuXHR9XG5cblx0d3JpdGVWYWx1ZSh2YWx1ZTogQnJuQ2hlY2tib3hWYWx1ZSk6IHZvaWQge1xuXHRcdGlmICh2YWx1ZSA9PT0gJ2luZGV0ZXJtaW5hdGUnKSB7XG5cdFx0XHR0aGlzLmNoZWNrZWQuc2V0KCdpbmRldGVybWluYXRlJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY2hlY2tlZC5zZXQoISF2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogQ2hhbmdlRm48QnJuQ2hlY2tib3hWYWx1ZT4pOiB2b2lkIHtcblx0XHR0aGlzLl9vbkNoYW5nZSA9IGZuO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IFRvdWNoRm4pOiB2b2lkIHtcblx0XHR0aGlzLl9vblRvdWNoZWQgPSBmbjtcblx0fVxuXG5cdC8qKiBJbXBsZW1lbnRlZCBhcyBhIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUoKS5kaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCk7XG5cdH1cblxuXHQvKipcblx0ICogSWYgdGhlIHNwYWNlIGtleSBpcyBwcmVzc2VkLCBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbiB0byBzdG9wIHRoZSBwYWdlIGZyb20gc2Nyb2xsaW5nLlxuXHQgKi9cblx0QEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScsIFsnJGV2ZW50J10pXG5cdHByb3RlY3RlZCBwcmV2ZW50U2Nyb2xsaW5nKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0fVxufVxuXG50eXBlIEJybkNoZWNrYm94VmFsdWUgPSBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi1jaGVja2JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vY2hlY2tib3gvc3JjL3NwYXJ0YW4tbmctYnJhaW4tY2hlY2tib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// this file can't be empty, otherwise the build will fail
|
|
2
|
+
export default true;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2JyYWluL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFDMUQsZUFBZSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0aGlzIGZpbGUgY2FuJ3QgYmUgZW1wdHksIG90aGVyd2lzZSB0aGUgYnVpbGQgd2lsbCBmYWlsXG5leHBvcnQgZGVmYXVsdCB0cnVlO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnRhbi1uZy1icmFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvYnJhaW4vc3JjL3NwYXJ0YW4tbmctYnJhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { forwardRef, booleanAttribute, inject, Renderer2, ElementRef, PLATFORM_ID, signal, model, computed, input, viewChild, output, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
4
|
+
import { isPlatformBrowser, NgStyle } from '@angular/common';
|
|
5
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
6
|
+
|
|
7
|
+
const BRN_CHECKBOX_VALUE_ACCESSOR = {
|
|
8
|
+
provide: NG_VALUE_ACCESSOR,
|
|
9
|
+
useExisting: forwardRef(() => BrnCheckboxComponent),
|
|
10
|
+
multi: true,
|
|
11
|
+
};
|
|
12
|
+
function indeterminateBooleanAttribute(value) {
|
|
13
|
+
if (value === 'indeterminate')
|
|
14
|
+
return 'indeterminate';
|
|
15
|
+
return booleanAttribute(value);
|
|
16
|
+
}
|
|
17
|
+
const CONTAINER_POST_FIX = '-checkbox';
|
|
18
|
+
class BrnCheckboxComponent {
|
|
19
|
+
_renderer = inject(Renderer2);
|
|
20
|
+
_elementRef = inject(ElementRef);
|
|
21
|
+
_focusMonitor = inject(FocusMonitor);
|
|
22
|
+
_isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
23
|
+
_focusVisible = signal(false);
|
|
24
|
+
focusVisible = this._focusVisible.asReadonly();
|
|
25
|
+
_focused = signal(false);
|
|
26
|
+
focused = this._focused.asReadonly();
|
|
27
|
+
checked = model(false);
|
|
28
|
+
isChecked = this.checked.asReadonly();
|
|
29
|
+
_dataState = computed(() => {
|
|
30
|
+
const checked = this.checked();
|
|
31
|
+
if (checked === 'indeterminate')
|
|
32
|
+
return 'indeterminate';
|
|
33
|
+
return checked ? 'checked' : 'unchecked';
|
|
34
|
+
});
|
|
35
|
+
_ariaChecked = computed(() => {
|
|
36
|
+
const checked = this.checked();
|
|
37
|
+
if (checked === 'indeterminate')
|
|
38
|
+
return 'mixed';
|
|
39
|
+
return checked ? 'true' : 'false';
|
|
40
|
+
});
|
|
41
|
+
_value = computed(() => {
|
|
42
|
+
const checked = this.checked();
|
|
43
|
+
if (checked === 'indeterminate')
|
|
44
|
+
return '';
|
|
45
|
+
return checked ? 'on' : 'off';
|
|
46
|
+
});
|
|
47
|
+
/** Used to set the id on the underlying input element. */
|
|
48
|
+
id = input(null);
|
|
49
|
+
hostId = computed(() => (this.id() ? this.id() + CONTAINER_POST_FIX : null));
|
|
50
|
+
/** Used to set the name attribute on the underlying input element. */
|
|
51
|
+
name = input(null);
|
|
52
|
+
hostName = computed(() => (this.name() ? this.name() + CONTAINER_POST_FIX : null));
|
|
53
|
+
/** Used to set the aria-label attribute on the underlying input element. */
|
|
54
|
+
ariaLabel = input(null, { alias: 'aria-label' });
|
|
55
|
+
/** Used to set the aria-labelledby attribute on the underlying input element. */
|
|
56
|
+
ariaLabelledby = input(null, { alias: 'aria-labelledby' });
|
|
57
|
+
ariaDescribedby = input(null, { alias: 'aria-describedby' });
|
|
58
|
+
required = input(false, { transform: booleanAttribute });
|
|
59
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
60
|
+
state = computed(() => ({
|
|
61
|
+
disabled: signal(this.disabled()),
|
|
62
|
+
}));
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
64
|
+
_onChange = () => { };
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
66
|
+
_onTouched = () => { };
|
|
67
|
+
checkbox = viewChild.required('checkBox');
|
|
68
|
+
changed = output();
|
|
69
|
+
constructor() {
|
|
70
|
+
effect(() => {
|
|
71
|
+
const parent = this._renderer.parentNode(this._elementRef.nativeElement);
|
|
72
|
+
if (!parent)
|
|
73
|
+
return;
|
|
74
|
+
// check if parent is a label and assume it is for this checkbox
|
|
75
|
+
if (parent?.tagName === 'LABEL') {
|
|
76
|
+
this._renderer.setAttribute(parent, 'data-disabled', this.state().disabled() ? 'true' : 'false');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (!this._isBrowser)
|
|
80
|
+
return;
|
|
81
|
+
const label = parent?.querySelector(`label[for="${this.id()}"]`);
|
|
82
|
+
if (!label)
|
|
83
|
+
return;
|
|
84
|
+
this._renderer.setAttribute(label, 'data-disabled', this.state().disabled() ? 'true' : 'false');
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
toggle(event) {
|
|
88
|
+
if (this.state().disabled())
|
|
89
|
+
return;
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
const previousChecked = this.checked();
|
|
92
|
+
this.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked);
|
|
93
|
+
this._onChange(!previousChecked);
|
|
94
|
+
this.changed.emit(!previousChecked);
|
|
95
|
+
}
|
|
96
|
+
ngAfterContentInit() {
|
|
97
|
+
this._focusMonitor.monitor(this._elementRef, true).subscribe((focusOrigin) => {
|
|
98
|
+
if (focusOrigin)
|
|
99
|
+
this._focused.set(true);
|
|
100
|
+
if (focusOrigin === 'keyboard' || focusOrigin === 'program') {
|
|
101
|
+
this._focusVisible.set(true);
|
|
102
|
+
}
|
|
103
|
+
if (!focusOrigin) {
|
|
104
|
+
// When a focused element becomes disabled, the browser *immediately* fires a blur event.
|
|
105
|
+
// Angular does not expect events to be raised during change detection, so any state
|
|
106
|
+
// change (such as a form control's ng-touched) will cause a changed-after-checked error.
|
|
107
|
+
// See https://github.com/angular/angular/issues/17793. To work around this, we defer
|
|
108
|
+
// telling the form control it has been touched until the next tick.
|
|
109
|
+
Promise.resolve().then(() => {
|
|
110
|
+
this._focusVisible.set(false);
|
|
111
|
+
this._focused.set(false);
|
|
112
|
+
this._onTouched();
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
this.checkbox().nativeElement.indeterminate = this.checked() === 'indeterminate';
|
|
117
|
+
if (this.checkbox().nativeElement.indeterminate) {
|
|
118
|
+
this.checkbox().nativeElement.value = 'indeterminate';
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.checkbox().nativeElement.value = this.checked() ? 'on' : 'off';
|
|
122
|
+
}
|
|
123
|
+
this.checkbox().nativeElement.dispatchEvent(new Event('change'));
|
|
124
|
+
}
|
|
125
|
+
ngOnDestroy() {
|
|
126
|
+
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
127
|
+
}
|
|
128
|
+
writeValue(value) {
|
|
129
|
+
if (value === 'indeterminate') {
|
|
130
|
+
this.checked.set('indeterminate');
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.checked.set(!!value);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
registerOnChange(fn) {
|
|
137
|
+
this._onChange = fn;
|
|
138
|
+
}
|
|
139
|
+
registerOnTouched(fn) {
|
|
140
|
+
this._onTouched = fn;
|
|
141
|
+
}
|
|
142
|
+
/** Implemented as a part of ControlValueAccessor. */
|
|
143
|
+
setDisabledState(isDisabled) {
|
|
144
|
+
this.state().disabled.set(isDisabled);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* If the space key is pressed, prevent the default action to stop the page from scrolling.
|
|
148
|
+
*/
|
|
149
|
+
preventScrolling(event) {
|
|
150
|
+
event.preventDefault();
|
|
151
|
+
}
|
|
152
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.5", type: BrnCheckboxComponent, isStandalone: true, selector: "brn-checkbox", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", changed: "changed" }, host: { listeners: { "click": "toggle($event)", "keyup.space": "toggle($event)", "keyup.enter": "toggle($event)", "keydown.space": "preventScrolling($event)" }, properties: { "attr.tabindex": "state().disabled() ? \"-1\" : \"0\"", "attr.data-state": "_dataState()", "attr.data-focus-visible": "focusVisible()", "attr.data-focus": "focused()", "attr.data-disabled": "state().disabled()", "attr.aria-labelledby": "null", "attr.aria-label": "null", "attr.aria-describedby": "null", "attr.id": "hostId()", "attr.name": "hostName()" } }, providers: [BRN_CHECKBOX_VALUE_ACCESSOR], viewQueries: [{ propertyName: "checkbox", first: true, predicate: ["checkBox"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
154
|
+
<input
|
|
155
|
+
#checkBox
|
|
156
|
+
tabindex="-1"
|
|
157
|
+
type="checkbox"
|
|
158
|
+
role="checkbox"
|
|
159
|
+
[ngStyle]="{
|
|
160
|
+
position: 'absolute',
|
|
161
|
+
width: '1px',
|
|
162
|
+
height: '1px',
|
|
163
|
+
padding: '0',
|
|
164
|
+
margin: '-1px',
|
|
165
|
+
overflow: 'hidden',
|
|
166
|
+
clip: 'rect(0, 0, 0, 0)',
|
|
167
|
+
whiteSpace: 'nowrap',
|
|
168
|
+
borderWidth: '0',
|
|
169
|
+
}"
|
|
170
|
+
[id]="id() ?? ''"
|
|
171
|
+
[name]="name() ?? ''"
|
|
172
|
+
[value]="_value()"
|
|
173
|
+
[checked]="isChecked()"
|
|
174
|
+
[required]="required()"
|
|
175
|
+
[attr.aria-label]="ariaLabel()"
|
|
176
|
+
[attr.aria-labelledby]="ariaLabelledby()"
|
|
177
|
+
[attr.aria-describedby]="ariaDescribedby()"
|
|
178
|
+
[attr.aria-required]="required() || null"
|
|
179
|
+
[attr.aria-checked]="_ariaChecked()"
|
|
180
|
+
/>
|
|
181
|
+
<ng-content />
|
|
182
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
183
|
+
}
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxComponent, decorators: [{
|
|
185
|
+
type: Component,
|
|
186
|
+
args: [{
|
|
187
|
+
selector: 'brn-checkbox',
|
|
188
|
+
standalone: true,
|
|
189
|
+
imports: [NgStyle],
|
|
190
|
+
template: `
|
|
191
|
+
<input
|
|
192
|
+
#checkBox
|
|
193
|
+
tabindex="-1"
|
|
194
|
+
type="checkbox"
|
|
195
|
+
role="checkbox"
|
|
196
|
+
[ngStyle]="{
|
|
197
|
+
position: 'absolute',
|
|
198
|
+
width: '1px',
|
|
199
|
+
height: '1px',
|
|
200
|
+
padding: '0',
|
|
201
|
+
margin: '-1px',
|
|
202
|
+
overflow: 'hidden',
|
|
203
|
+
clip: 'rect(0, 0, 0, 0)',
|
|
204
|
+
whiteSpace: 'nowrap',
|
|
205
|
+
borderWidth: '0',
|
|
206
|
+
}"
|
|
207
|
+
[id]="id() ?? ''"
|
|
208
|
+
[name]="name() ?? ''"
|
|
209
|
+
[value]="_value()"
|
|
210
|
+
[checked]="isChecked()"
|
|
211
|
+
[required]="required()"
|
|
212
|
+
[attr.aria-label]="ariaLabel()"
|
|
213
|
+
[attr.aria-labelledby]="ariaLabelledby()"
|
|
214
|
+
[attr.aria-describedby]="ariaDescribedby()"
|
|
215
|
+
[attr.aria-required]="required() || null"
|
|
216
|
+
[attr.aria-checked]="_ariaChecked()"
|
|
217
|
+
/>
|
|
218
|
+
<ng-content />
|
|
219
|
+
`,
|
|
220
|
+
host: {
|
|
221
|
+
'[attr.tabindex]': 'state().disabled() ? "-1" : "0"',
|
|
222
|
+
'[attr.data-state]': '_dataState()',
|
|
223
|
+
'[attr.data-focus-visible]': 'focusVisible()',
|
|
224
|
+
'[attr.data-focus]': 'focused()',
|
|
225
|
+
'[attr.data-disabled]': 'state().disabled()',
|
|
226
|
+
'[attr.aria-labelledby]': 'null',
|
|
227
|
+
'[attr.aria-label]': 'null',
|
|
228
|
+
'[attr.aria-describedby]': 'null',
|
|
229
|
+
'[attr.id]': 'hostId()',
|
|
230
|
+
'[attr.name]': 'hostName()',
|
|
231
|
+
},
|
|
232
|
+
providers: [BRN_CHECKBOX_VALUE_ACCESSOR],
|
|
233
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
234
|
+
encapsulation: ViewEncapsulation.None,
|
|
235
|
+
}]
|
|
236
|
+
}], ctorParameters: () => [], propDecorators: { toggle: [{
|
|
237
|
+
type: HostListener,
|
|
238
|
+
args: ['click', ['$event']]
|
|
239
|
+
}, {
|
|
240
|
+
type: HostListener,
|
|
241
|
+
args: ['keyup.space', ['$event']]
|
|
242
|
+
}, {
|
|
243
|
+
type: HostListener,
|
|
244
|
+
args: ['keyup.enter', ['$event']]
|
|
245
|
+
}], preventScrolling: [{
|
|
246
|
+
type: HostListener,
|
|
247
|
+
args: ['keydown.space', ['$event']]
|
|
248
|
+
}] } });
|
|
249
|
+
|
|
250
|
+
const BrnCheckboxImports = [BrnCheckboxComponent];
|
|
251
|
+
class BrnCheckboxModule {
|
|
252
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
253
|
+
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule, imports: [BrnCheckboxComponent], exports: [BrnCheckboxComponent] });
|
|
254
|
+
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule });
|
|
255
|
+
}
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnCheckboxModule, decorators: [{
|
|
257
|
+
type: NgModule,
|
|
258
|
+
args: [{
|
|
259
|
+
imports: [...BrnCheckboxImports],
|
|
260
|
+
exports: [...BrnCheckboxImports],
|
|
261
|
+
}]
|
|
262
|
+
}] });
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Generated bundle index. Do not edit.
|
|
266
|
+
*/
|
|
267
|
+
|
|
268
|
+
export { BRN_CHECKBOX_VALUE_ACCESSOR, BrnCheckboxComponent, BrnCheckboxImports, BrnCheckboxModule, indeterminateBooleanAttribute };
|
|
269
|
+
//# sourceMappingURL=spartan-ng-brain-checkbox.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-checkbox.mjs","sources":["../../../../libs/brain/checkbox/src/lib/brn-checkbox.component.ts","../../../../libs/brain/checkbox/src/index.ts","../../../../libs/brain/checkbox/src/spartan-ng-brain-checkbox.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { NgStyle, isPlatformBrowser } from '@angular/common';\nimport {\n\ttype AfterContentInit,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tHostListener,\n\ttype OnDestroy,\n\tPLATFORM_ID,\n\tRenderer2,\n\tViewEncapsulation,\n\tbooleanAttribute,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tinput,\n\tmodel,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/ui-forms-brain';\n\nexport const BRN_CHECKBOX_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnCheckboxComponent),\n\tmulti: true,\n};\n\nexport function indeterminateBooleanAttribute(value: unknown): boolean | 'indeterminate' {\n\tif (value === 'indeterminate') return 'indeterminate';\n\treturn booleanAttribute(value);\n}\n\nconst CONTAINER_POST_FIX = '-checkbox';\n\n@Component({\n\tselector: 'brn-checkbox',\n\tstandalone: true,\n\timports: [NgStyle],\n\ttemplate: `\n\t\t<input\n\t\t\t#checkBox\n\t\t\ttabindex=\"-1\"\n\t\t\ttype=\"checkbox\"\n\t\t\trole=\"checkbox\"\n\t\t\t[ngStyle]=\"{\n\t\t\t\tposition: 'absolute',\n\t\t\t\twidth: '1px',\n\t\t\t\theight: '1px',\n\t\t\t\tpadding: '0',\n\t\t\t\tmargin: '-1px',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tclip: 'rect(0, 0, 0, 0)',\n\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\tborderWidth: '0',\n\t\t\t}\"\n\t\t\t[id]=\"id() ?? ''\"\n\t\t\t[name]=\"name() ?? ''\"\n\t\t\t[value]=\"_value()\"\n\t\t\t[checked]=\"isChecked()\"\n\t\t\t[required]=\"required()\"\n\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby()\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedby()\"\n\t\t\t[attr.aria-required]=\"required() || null\"\n\t\t\t[attr.aria-checked]=\"_ariaChecked()\"\n\t\t/>\n\t\t<ng-content />\n\t`,\n\thost: {\n\t\t'[attr.tabindex]': 'state().disabled() ? \"-1\" : \"0\"',\n\t\t'[attr.data-state]': '_dataState()',\n\t\t'[attr.data-focus-visible]': 'focusVisible()',\n\t\t'[attr.data-focus]': 'focused()',\n\t\t'[attr.data-disabled]': 'state().disabled()',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t'[attr.id]': 'hostId()',\n\t\t'[attr.name]': 'hostName()',\n\t},\n\tproviders: [BRN_CHECKBOX_VALUE_ACCESSOR],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class BrnCheckboxComponent implements AfterContentInit, OnDestroy {\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _elementRef = inject(ElementRef);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n\tprivate readonly _focusVisible = signal(false);\n\tpublic readonly focusVisible = this._focusVisible.asReadonly();\n\tprivate readonly _focused = signal(false);\n\tpublic readonly focused = this._focused.asReadonly();\n\n\tpublic readonly checked = model<BrnCheckboxValue>(false);\n\tpublic readonly isChecked = this.checked.asReadonly();\n\n\tprotected readonly _dataState = computed(() => {\n\t\tconst checked = this.checked();\n\t\tif (checked === 'indeterminate') return 'indeterminate';\n\t\treturn checked ? 'checked' : 'unchecked';\n\t});\n\tprotected readonly _ariaChecked = computed(() => {\n\t\tconst checked = this.checked();\n\t\tif (checked === 'indeterminate') return 'mixed';\n\t\treturn checked ? 'true' : 'false';\n\t});\n\tprotected readonly _value = computed(() => {\n\t\tconst checked = this.checked();\n\t\tif (checked === 'indeterminate') return '';\n\t\treturn checked ? 'on' : 'off';\n\t});\n\n\t/** Used to set the id on the underlying input element. */\n\tpublic readonly id = input<string | null>(null);\n\tprotected readonly hostId = computed(() => (this.id() ? this.id() + CONTAINER_POST_FIX : null));\n\n\t/** Used to set the name attribute on the underlying input element. */\n\tpublic readonly name = input<string | null>(null);\n\tprotected readonly hostName = computed(() => (this.name() ? this.name() + CONTAINER_POST_FIX : null));\n\n\t/** Used to set the aria-label attribute on the underlying input element. */\n\tpublic readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n\t/** Used to set the aria-labelledby attribute on the underlying input element. */\n\tpublic readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n\tpublic readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n\n\tpublic readonly required = input(false, { transform: booleanAttribute });\n\n\tpublic readonly disabled = input(false, { transform: booleanAttribute });\n\n\tprotected readonly state = computed(() => ({\n\t\tdisabled: signal(this.disabled()),\n\t}));\n\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprotected _onChange: ChangeFn<BrnCheckboxValue> = () => {};\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate _onTouched: TouchFn = () => {};\n\n\tpublic readonly checkbox = viewChild.required<ElementRef<HTMLInputElement>>('checkBox');\n\n\tpublic readonly changed = output<BrnCheckboxValue>();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst parent = this._renderer.parentNode(this._elementRef.nativeElement);\n\t\t\tif (!parent) return;\n\t\t\t// check if parent is a label and assume it is for this checkbox\n\t\t\tif (parent?.tagName === 'LABEL') {\n\t\t\t\tthis._renderer.setAttribute(parent, 'data-disabled', this.state().disabled() ? 'true' : 'false');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!this._isBrowser) return;\n\n\t\t\tconst label = parent?.querySelector(`label[for=\"${this.id()}\"]`);\n\t\t\tif (!label) return;\n\t\t\tthis._renderer.setAttribute(label, 'data-disabled', this.state().disabled() ? 'true' : 'false');\n\t\t});\n\t}\n\n\t@HostListener('click', ['$event'])\n\t@HostListener('keyup.space', ['$event'])\n\t@HostListener('keyup.enter', ['$event'])\n\ttoggle(event: Event) {\n\t\tif (this.state().disabled()) return;\n\t\tevent.preventDefault();\n\t\tconst previousChecked = this.checked();\n\t\tthis.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked);\n\t\tthis._onChange(!previousChecked);\n\t\tthis.changed.emit(!previousChecked);\n\t}\n\n\tngAfterContentInit() {\n\t\tthis._focusMonitor.monitor(this._elementRef, true).subscribe((focusOrigin) => {\n\t\t\tif (focusOrigin) this._focused.set(true);\n\t\t\tif (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n\t\t\t\tthis._focusVisible.set(true);\n\t\t\t}\n\t\t\tif (!focusOrigin) {\n\t\t\t\t// When a focused element becomes disabled, the browser *immediately* fires a blur event.\n\t\t\t\t// Angular does not expect events to be raised during change detection, so any state\n\t\t\t\t// change (such as a form control's ng-touched) will cause a changed-after-checked error.\n\t\t\t\t// See https://github.com/angular/angular/issues/17793. To work around this, we defer\n\t\t\t\t// telling the form control it has been touched until the next tick.\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tthis._focusVisible.set(false);\n\t\t\t\t\tthis._focused.set(false);\n\t\t\t\t\tthis._onTouched();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.checkbox().nativeElement.indeterminate = this.checked() === 'indeterminate';\n\t\tif (this.checkbox().nativeElement.indeterminate) {\n\t\t\tthis.checkbox().nativeElement.value = 'indeterminate';\n\t\t} else {\n\t\t\tthis.checkbox().nativeElement.value = this.checked() ? 'on' : 'off';\n\t\t}\n\t\tthis.checkbox().nativeElement.dispatchEvent(new Event('change'));\n\t}\n\n\tngOnDestroy() {\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\twriteValue(value: BrnCheckboxValue): void {\n\t\tif (value === 'indeterminate') {\n\t\t\tthis.checked.set('indeterminate');\n\t\t} else {\n\t\t\tthis.checked.set(!!value);\n\t\t}\n\t}\n\n\tregisterOnChange(fn: ChangeFn<BrnCheckboxValue>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\t/** Implemented as a part of ControlValueAccessor. */\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.state().disabled.set(isDisabled);\n\t}\n\n\t/**\n\t * If the space key is pressed, prevent the default action to stop the page from scrolling.\n\t */\n\t@HostListener('keydown.space', ['$event'])\n\tprotected preventScrolling(event: KeyboardEvent): void {\n\t\tevent.preventDefault();\n\t}\n}\n\ntype BrnCheckboxValue = boolean | 'indeterminate';\n","import { NgModule } from '@angular/core';\n\nimport { BrnCheckboxComponent } from './lib/brn-checkbox.component';\n\nexport * from './lib/brn-checkbox.component';\n\nexport const BrnCheckboxImports = [BrnCheckboxComponent] as const;\n\n@NgModule({\n\timports: [...BrnCheckboxImports],\n\texports: [...BrnCheckboxImports],\n})\nexport class BrnCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain.mjs","sources":["../../../../libs/brain/src/index.ts","../../../../libs/brain/src/spartan-ng-brain.ts"],"sourcesContent":["// this file can't be empty, otherwise the build will fail\nexport default true;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;AACA,YAAe,IAAI;;ACDnB;;AAEG"}
|
package/index.d.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@spartan-ng/brain",
|
|
3
|
+
"version": "0.0.1-alpha.372",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": ">=18.0.0",
|
|
6
|
+
"@angular/core": ">=18.0.0",
|
|
7
|
+
"@angular/cdk": ">=18.0.0",
|
|
8
|
+
"@angular/forms": ">=18.0.0",
|
|
9
|
+
"@spartan-ng/ui-forms-brain": "0.0.1-alpha.372"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"tslib": "^2.3.0"
|
|
13
|
+
},
|
|
14
|
+
"sideEffects": false,
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"module": "fesm2022/spartan-ng-brain.mjs",
|
|
19
|
+
"typings": "index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
"./package.json": {
|
|
22
|
+
"default": "./package.json"
|
|
23
|
+
},
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./index.d.ts",
|
|
26
|
+
"esm2022": "./esm2022/spartan-ng-brain.mjs",
|
|
27
|
+
"esm": "./esm2022/spartan-ng-brain.mjs",
|
|
28
|
+
"default": "./fesm2022/spartan-ng-brain.mjs"
|
|
29
|
+
},
|
|
30
|
+
"./checkbox": {
|
|
31
|
+
"types": "./checkbox/index.d.ts",
|
|
32
|
+
"esm2022": "./esm2022/checkbox/spartan-ng-brain-checkbox.mjs",
|
|
33
|
+
"esm": "./esm2022/checkbox/spartan-ng-brain-checkbox.mjs",
|
|
34
|
+
"default": "./fesm2022/spartan-ng-brain-checkbox.mjs"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|