@cute-widgets/base 20.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/LICENSE.md +191 -0
- package/README.md +190 -0
- package/abstract/index.d.ts +327 -0
- package/alert/index.d.ts +68 -0
- package/autocomplete/index.d.ts +442 -0
- package/badge/index.d.ts +26 -0
- package/bottom-sheet/index.d.ts +231 -0
- package/button/index.d.ts +182 -0
- package/button-toggle/index.d.ts +225 -0
- package/card/index.d.ts +163 -0
- package/checkbox/index.d.ts +174 -0
- package/chips/index.d.ts +963 -0
- package/collapse/index.d.ts +97 -0
- package/core/animation/index.d.ts +43 -0
- package/core/datetime/index.d.ts +404 -0
- package/core/directives/index.d.ts +168 -0
- package/core/error/index.d.ts +74 -0
- package/core/index.d.ts +1039 -0
- package/core/interfaces/index.d.ts +114 -0
- package/core/layout/index.d.ts +53 -0
- package/core/line/index.d.ts +37 -0
- package/core/nav/index.d.ts +321 -0
- package/core/observers/index.d.ts +124 -0
- package/core/option/index.d.ts +185 -0
- package/core/pipes/index.d.ts +53 -0
- package/core/ripple/index.d.ts +66 -0
- package/core/testing/index.d.ts +154 -0
- package/core/theming/index.d.ts +118 -0
- package/core/types/index.d.ts +53 -0
- package/core/utils/index.d.ts +129 -0
- package/cute-widgets-base-20.0.1.tgz +0 -0
- package/datepicker/index.d.ts +1817 -0
- package/dialog/index.d.ts +484 -0
- package/divider/index.d.ts +24 -0
- package/expansion/README.md +8 -0
- package/expansion/index.d.ts +308 -0
- package/fesm2022/cute-widgets-base-abstract.mjs +547 -0
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-alert.mjs +198 -0
- package/fesm2022/cute-widgets-base-alert.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs +1217 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-badge.mjs +75 -0
- package/fesm2022/cute-widgets-base-badge.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs +416 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs +640 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button.mjs +546 -0
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-card.mjs +471 -0
- package/fesm2022/cute-widgets-base-card.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs +390 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-chips.mjs +2360 -0
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-collapse.mjs +259 -0
- package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs +53 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs +568 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs +404 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-error.mjs +105 -0
- package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs +74 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-line.mjs +87 -0
- package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs +863 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs +304 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-option.mjs +373 -0
- package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs +97 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs +172 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs +210 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs +314 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-types.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-types.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs +257 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core.mjs +1600 -0
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs +4827 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-dialog.mjs +1046 -0
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-divider.mjs +86 -0
- package/fesm2022/cute-widgets-base-divider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-expansion.mjs +623 -0
- package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-form-field.mjs +969 -0
- package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs +715 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-icon.mjs +1105 -0
- package/fesm2022/cute-widgets-base-icon.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-input.mjs +726 -0
- package/fesm2022/cute-widgets-base-input.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs +95 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs +166 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout.mjs +250 -0
- package/fesm2022/cute-widgets-base-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-list.mjs +1557 -0
- package/fesm2022/cute-widgets-base-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-menu.mjs +1283 -0
- package/fesm2022/cute-widgets-base-menu.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-navbar.mjs +359 -0
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-paginator.mjs +485 -0
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-progress.mjs +321 -0
- package/fesm2022/cute-widgets-base-progress.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-radio.mjs +637 -0
- package/fesm2022/cute-widgets-base-radio.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-select.mjs +1208 -0
- package/fesm2022/cute-widgets-base-select.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs +1095 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-slider.mjs +99 -0
- package/fesm2022/cute-widgets-base-slider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs +897 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sort.mjs +639 -0
- package/fesm2022/cute-widgets-base-sort.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-spinner.mjs +154 -0
- package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-stepper.mjs +673 -0
- package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-table.mjs +1023 -0
- package/fesm2022/cute-widgets-base-table.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tabs.mjs +729 -0
- package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs +965 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs +120 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs +947 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tree.mjs +598 -0
- package/fesm2022/cute-widgets-base-tree.mjs.map +1 -0
- package/fesm2022/cute-widgets-base.mjs +68 -0
- package/fesm2022/cute-widgets-base.mjs.map +1 -0
- package/form-field/index.d.ts +401 -0
- package/grid-list/index.d.ts +361 -0
- package/icon/index.d.ts +477 -0
- package/index.d.ts +3 -0
- package/input/index.d.ts +256 -0
- package/layout/container/index.d.ts +31 -0
- package/layout/index.d.ts +78 -0
- package/layout/stack/index.d.ts +52 -0
- package/list/index.d.ts +659 -0
- package/menu/index.d.ts +497 -0
- package/navbar/index.d.ts +91 -0
- package/package.json +279 -0
- package/paginator/index.d.ts +216 -0
- package/progress/index.d.ts +130 -0
- package/radio/index.d.ts +259 -0
- package/select/index.d.ts +426 -0
- package/sidenav/index.d.ts +369 -0
- package/slider/index.d.ts +48 -0
- package/snack-bar/index.d.ts +374 -0
- package/sort/index.d.ts +334 -0
- package/spinner/index.d.ts +70 -0
- package/stepper/index.d.ts +295 -0
- package/table/index.d.ts +395 -0
- package/tabs/index.d.ts +307 -0
- package/timepicker/index.d.ts +350 -0
- package/toolbar/index.d.ts +36 -0
- package/tooltip/index.d.ts +299 -0
- package/tree/index.d.ts +314 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, EventEmitter, forwardRef, booleanAttribute, ViewChild, Output, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive, NgModule } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
|
|
4
|
+
import { CuteInputControl } from '@cute-widgets/base/abstract';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @license Apache-2.0
|
|
9
|
+
*
|
|
10
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
11
|
+
*
|
|
12
|
+
* You may not use this file except in compliance with the License
|
|
13
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* This code is a modification of the `@angular/material` original
|
|
16
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
17
|
+
*/
|
|
18
|
+
/** Injection token to be used to override the default options for `cute-checkbox`. */
|
|
19
|
+
const CUTE_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken('cute-checkbox-default-options', {
|
|
20
|
+
providedIn: 'root',
|
|
21
|
+
factory: CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY,
|
|
22
|
+
});
|
|
23
|
+
/** @docs-private */
|
|
24
|
+
function CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY() {
|
|
25
|
+
return {
|
|
26
|
+
color: 'primary',
|
|
27
|
+
clickAction: 'check-indeterminate',
|
|
28
|
+
disabledInteractive: false,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @license Apache-2.0
|
|
34
|
+
*
|
|
35
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
36
|
+
*
|
|
37
|
+
* You may not use this file except in compliance with the License
|
|
38
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
39
|
+
*
|
|
40
|
+
* This code is a modification of the `@angular/material` original
|
|
41
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
42
|
+
*/
|
|
43
|
+
// Increasing integer for generating unique ids for checkbox components.
|
|
44
|
+
let nextUniqueId = 0;
|
|
45
|
+
// Default checkbox configuration.
|
|
46
|
+
const defaults = CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY();
|
|
47
|
+
class CuteCheckbox extends CuteInputControl {
|
|
48
|
+
get value() { return this._value; }
|
|
49
|
+
set value(v) { this._value = v; }
|
|
50
|
+
get valueOn() { return this._valueOn; }
|
|
51
|
+
set valueOn(v) { this._valueOn = v; }
|
|
52
|
+
get valueOff() { return this._valueOff; }
|
|
53
|
+
set valueOff(v) { this._valueOff = v; }
|
|
54
|
+
/** Whether the checkbox is checked. */
|
|
55
|
+
get checked() { return this._checked; }
|
|
56
|
+
set checked(newVal) {
|
|
57
|
+
if (newVal != this.checked) {
|
|
58
|
+
this._checked = newVal;
|
|
59
|
+
//this.value = this.checked ? this.valueOn : this.valueOff;
|
|
60
|
+
this.markForCheck();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Whether the checkbox is indeterminate. This is also known as "mixed" mode and can be used to
|
|
65
|
+
* represent a checkbox with three states, e.g. a checkbox that represents a nested list of
|
|
66
|
+
* checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately
|
|
67
|
+
* set to false.
|
|
68
|
+
*/
|
|
69
|
+
get indeterminate() { return this._indeterminate; }
|
|
70
|
+
set indeterminate(value) {
|
|
71
|
+
const changed = value != this._indeterminate;
|
|
72
|
+
this._indeterminate = value;
|
|
73
|
+
if (changed) {
|
|
74
|
+
this.indeterminateChange.emit(this._indeterminate);
|
|
75
|
+
}
|
|
76
|
+
this._syncIndeterminate(this._indeterminate);
|
|
77
|
+
}
|
|
78
|
+
constructor() {
|
|
79
|
+
super();
|
|
80
|
+
this._options = inject(CUTE_CHECKBOX_DEFAULT_OPTIONS, {
|
|
81
|
+
optional: true,
|
|
82
|
+
});
|
|
83
|
+
this._validatorChangeFn = () => { };
|
|
84
|
+
/** Group checkboxes on the same horizontal row */
|
|
85
|
+
this.inline = false;
|
|
86
|
+
this._checked = false;
|
|
87
|
+
this._indeterminate = false;
|
|
88
|
+
/** Whether the label should appear after or before the checkbox. Defaults to 'after' */
|
|
89
|
+
this.labelPosition = 'after';
|
|
90
|
+
/** Whether the checkbox should remain interactive when it is disabled. */
|
|
91
|
+
this.disabledInteractive = false;
|
|
92
|
+
/** Relative size of the checkbox icon. */
|
|
93
|
+
this.iconSize = "middle";
|
|
94
|
+
/** Event emitted when the checkbox's `checked` value changes. */
|
|
95
|
+
this.change = new EventEmitter();
|
|
96
|
+
/** Event emitted when the checkbox's `indeterminate` value changes. */
|
|
97
|
+
this.indeterminateChange = new EventEmitter();
|
|
98
|
+
this._options = this._options || defaults;
|
|
99
|
+
this.color = this._options.color || defaults.color;
|
|
100
|
+
this.disabledInteractive = this._options?.disabledInteractive ?? false;
|
|
101
|
+
//++ CWT
|
|
102
|
+
if (this._nativeElement.nodeName.toLowerCase() === "cute-slide-toggle") {
|
|
103
|
+
this.role = "switch";
|
|
104
|
+
}
|
|
105
|
+
//this.value = this.valueOn = "on";
|
|
106
|
+
//this.valueOff = "off";
|
|
107
|
+
//--
|
|
108
|
+
}
|
|
109
|
+
ngOnChanges(changes) {
|
|
110
|
+
super.ngOnChanges(changes);
|
|
111
|
+
if (changes['required']) {
|
|
112
|
+
this._validatorChangeFn();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
ngAfterViewInit() {
|
|
116
|
+
super.ngAfterViewInit();
|
|
117
|
+
this._syncIndeterminate(this._indeterminate);
|
|
118
|
+
}
|
|
119
|
+
// Implemented as a part of Validator.
|
|
120
|
+
validate(control) {
|
|
121
|
+
return this.required && control.value !== true ? { 'required': true } : null;
|
|
122
|
+
}
|
|
123
|
+
// Implemented as a part of Validator.
|
|
124
|
+
registerOnValidatorChange(fn) {
|
|
125
|
+
this._validatorChangeFn = fn;
|
|
126
|
+
}
|
|
127
|
+
writeValue(value) {
|
|
128
|
+
this.checked = !!value;
|
|
129
|
+
}
|
|
130
|
+
generateId() {
|
|
131
|
+
return `cute-checkbox-${nextUniqueId++}`;
|
|
132
|
+
}
|
|
133
|
+
_emitChangeEvent() {
|
|
134
|
+
this._onChange(this.checked);
|
|
135
|
+
this.change.emit(this._createChangeEvent(this.checked));
|
|
136
|
+
// Assigning the value again here is redundant, but we have to do it in case it was
|
|
137
|
+
// changed inside the `change` listener which will cause the input to be out of sync.
|
|
138
|
+
if (this._inputElement) {
|
|
139
|
+
this._inputElement.nativeElement.checked = this.checked;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** Toggles the `checked` state of the checkbox. */
|
|
143
|
+
toggle() {
|
|
144
|
+
this.checked = !this.checked;
|
|
145
|
+
this._onChange(this.checked);
|
|
146
|
+
}
|
|
147
|
+
/** Sets the `checked` state of the checkbox. */
|
|
148
|
+
check() {
|
|
149
|
+
this.checked = true;
|
|
150
|
+
this._onChange(this.checked);
|
|
151
|
+
}
|
|
152
|
+
/** Clears the `checked` state of the checkbox. */
|
|
153
|
+
uncheck() {
|
|
154
|
+
this.checked = false;
|
|
155
|
+
this._onChange(this.checked);
|
|
156
|
+
}
|
|
157
|
+
_handleInputClick() {
|
|
158
|
+
const clickAction = this._options?.clickAction;
|
|
159
|
+
// If resetIndeterminate is false, and the current state is indeterminate, do nothing on click
|
|
160
|
+
if (!this.disabled && clickAction !== 'noop') {
|
|
161
|
+
// When a user manually clicks on the checkbox, `indeterminate` is set to false.
|
|
162
|
+
if (this.indeterminate && clickAction !== 'check') {
|
|
163
|
+
Promise.resolve().then(() => {
|
|
164
|
+
this._indeterminate = false;
|
|
165
|
+
this.indeterminateChange.emit(this._indeterminate);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
this._checked = !this._checked;
|
|
169
|
+
// Emit our custom change event if the native input emitted one.
|
|
170
|
+
// It is important to only emit it, if the native input triggered one, because
|
|
171
|
+
// we don't want to trigger a change event, when the `checked` variable changes for example.
|
|
172
|
+
this._emitChangeEvent();
|
|
173
|
+
}
|
|
174
|
+
else if (((this.disabled && this.disabledInteractive) ||
|
|
175
|
+
(!this.disabled && clickAction === 'noop')) && this._inputElement) {
|
|
176
|
+
// Reset native input when clicked with noop. The native checkbox becomes checked after
|
|
177
|
+
// click, reset it to be aligned with `checked` value of `cute-checkbox`.
|
|
178
|
+
this._inputElement.nativeElement.checked = this.checked;
|
|
179
|
+
this._inputElement.nativeElement.indeterminate = this.indeterminate;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/** Method being called whenever the label text changes. */
|
|
183
|
+
_onLabelTextChange() {
|
|
184
|
+
// Since the event of the `cdkObserveContent` directive runs outside the zone, the checkbox
|
|
185
|
+
// component will be only marked for check, but no actual change detection runs automatically.
|
|
186
|
+
// Instead of going back into the zone in order to trigger a change detection which causes
|
|
187
|
+
// *all* components to be checked (if explicitly marked or not using OnPush), we only trigger
|
|
188
|
+
// an explicit change detection for the checkbox view and its children.
|
|
189
|
+
this._changeDetectorRef.detectChanges();
|
|
190
|
+
}
|
|
191
|
+
_onInputChange(event) {
|
|
192
|
+
// We always have to stop propagation on the change event.
|
|
193
|
+
// Otherwise, the change event from the input element will bubble up and
|
|
194
|
+
// emit its event object to the `change` output.
|
|
195
|
+
event.stopPropagation();
|
|
196
|
+
}
|
|
197
|
+
_onInputBlur(event) {
|
|
198
|
+
// When a focused element becomes disabled, the browser *immediately* fires a blur event.
|
|
199
|
+
// Angular does not expect events to be raised during change detection, so any state change
|
|
200
|
+
// (such as a form control's 'ng-touched') will cause a changed-after-checked error.
|
|
201
|
+
// See https://github.com/angular/angular/issues/17793. To work around this, we defer
|
|
202
|
+
// telling the form control it has been touched until the next tick.
|
|
203
|
+
Promise.resolve().then(() => {
|
|
204
|
+
this._onTouched();
|
|
205
|
+
this.markForCheck();
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
_onInputClick(event) {
|
|
209
|
+
this._handleInputClick();
|
|
210
|
+
}
|
|
211
|
+
_onTouchTargetClick(event) {
|
|
212
|
+
this._handleInputClick();
|
|
213
|
+
if (!this.disabled) {
|
|
214
|
+
// Normally, the input should be focused already, but if the click
|
|
215
|
+
// comes from the touch target, then we might have to focus it ourselves.
|
|
216
|
+
this._inputElement?.nativeElement.focus();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Prevent click events that come from the `<label/>` element from bubbling. This prevents the
|
|
221
|
+
* click handler on the host from triggering twice when clicking on the `<label/>` element. After
|
|
222
|
+
* the click event on the `<label/>` propagates, the browsers dispatches click on the associated
|
|
223
|
+
* `<input/>`. By preventing clicks on the label by bubbling, we ensure only one click event
|
|
224
|
+
* bubbles when the label is clicked.
|
|
225
|
+
*/
|
|
226
|
+
_preventBubblingFromLabel(event) {
|
|
227
|
+
if (!!event.target && this._labelElement.nativeElement.contains(event.target)) {
|
|
228
|
+
event.stopPropagation();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Syncs the indeterminate value with the checkbox DOM node.
|
|
233
|
+
*
|
|
234
|
+
* We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a
|
|
235
|
+
* property is supported on an element boils down to `if (propName in an element)`. Domino's
|
|
236
|
+
* HTMLInputElement doesn't have an `indeterminate` property, so Ivy will warn during
|
|
237
|
+
* server-side rendering.
|
|
238
|
+
*/
|
|
239
|
+
_syncIndeterminate(value) {
|
|
240
|
+
const nativeCheckbox = this._inputElement;
|
|
241
|
+
if (nativeCheckbox) {
|
|
242
|
+
nativeCheckbox.nativeElement.indeterminate = value;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/** Creates the change event that will be emitted by the checkbox. */
|
|
246
|
+
_createChangeEvent(isChecked) {
|
|
247
|
+
return { source: this, checked: isChecked };
|
|
248
|
+
}
|
|
249
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
250
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.15", type: CuteCheckbox, isStandalone: true, selector: "cute-checkbox, cute-slide-toggle:not([cuteToggleSwitch])", inputs: { ariaExpanded: ["aria-expanded", "ariaExpanded", booleanAttribute], ariaControls: ["aria-controls", "ariaControls"], ariaOwns: ["aria-owns", "ariaOwns"], value: "value", valueOn: "valueOn", valueOff: "valueOff", inline: ["inline", "inline", booleanAttribute], checked: ["checked", "checked", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], labelPosition: "labelPosition", disabledInteractive: ["disabledInteractive", "disabledInteractive", booleanAttribute], iconSize: "iconSize" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "class.cute-checkbox-disabled": "disabled", "class.cute-checkbox-disabled-interactive": "disabledInteractive", "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.role": "null", "id": "id" }, classAttribute: "cute-checkbox" }, providers: [
|
|
251
|
+
{
|
|
252
|
+
provide: NG_VALUE_ACCESSOR,
|
|
253
|
+
useExisting: forwardRef(() => CuteCheckbox),
|
|
254
|
+
multi: true,
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
provide: NG_VALIDATORS,
|
|
258
|
+
useExisting: CuteCheckbox,
|
|
259
|
+
multi: true,
|
|
260
|
+
},
|
|
261
|
+
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["input"], descendants: true }, { propertyName: "_labelElement", first: true, predicate: ["label"], descendants: true }], exportAs: ["cuteCheckbox"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-check\"\r\n [class.form-check-reverse]=\"labelPosition == 'before'\"\r\n [class.form-check-inline]=\"inline\"\r\n [class.form-switch]=\"role == 'switch'\"\r\n (click)=\"_preventBubblingFromLabel($event)\"\r\n >\r\n <input #input type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [class.icon-small]=\"iconSize=='small'\"\r\n [class.icon-large]=\"iconSize=='large'\"\r\n [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\r\n [attr.aria-controls]=\"ariaControls\"\r\n [attr.aria-disabled]=\"disabled && disabledInteractive ? true : null\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-owns]=\"ariaOwns\"\r\n [attr.role]=\"role\"\r\n [attr.name] = \"name\"\r\n [attr.value]=\"value\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\r\n [indeterminate]=\"indeterminate\"\r\n [autocomplete]=\"false\"\r\n (blur)=\"_onInputBlur($event)\"\r\n (click)=\"_onInputClick($event)\"\r\n (change)=\"_onInputChange($event)\"\r\n />\r\n <label #label\r\n class=\"form-check-label\"\r\n [for]=\"inputId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</div>\r\n", styles: [".cute-checkbox{position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.cute-checkbox .form-check .form-check-input{cursor:pointer}.cute-checkbox .form-check .form-check-input.icon-small{font-size:.875em;transform:translate(-2px,2px)}.cute-checkbox .form-check .form-check-input.icon-large{font-size:1.375em;margin-right:1.125em;transform:translate(.45em,-.125em)}[dir=rtl] .cute-checkbox .form-check .form-check-input.icon-large{transform:translate(1.125em,-.125em)}[dir=rtl] .cute-checkbox .form-check.form-switch .form-check-input{transform:rotate(180deg)}.cute-checkbox .form-check .form-check-label{cursor:pointer}.cute-checkbox .form-check .form-check-label:empty{display:none}.cute-checkbox.cute-checkbox-disabled .form-check-label{cursor:default}.cute-checkbox.cute-checkbox-disabled.cute-checkbox-disabled-interactive{pointer-events:auto}.cute-checkbox.cute-checkbox-disabled.cute-checkbox-disabled-interactive input{cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
262
|
+
}
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCheckbox, decorators: [{
|
|
264
|
+
type: Component,
|
|
265
|
+
args: [{ selector: 'cute-checkbox, cute-slide-toggle:not([cuteToggleSwitch])', exportAs: "cuteCheckbox", host: {
|
|
266
|
+
'class': 'cute-checkbox',
|
|
267
|
+
'[class.cute-checkbox-disabled]': 'disabled',
|
|
268
|
+
'[class.cute-checkbox-disabled-interactive]': 'disabledInteractive',
|
|
269
|
+
'[attr.tabindex]': 'null',
|
|
270
|
+
'[attr.aria-label]': 'null',
|
|
271
|
+
'[attr.aria-labelledby]': 'null',
|
|
272
|
+
'[attr.role]': 'null',
|
|
273
|
+
'[id]': 'id',
|
|
274
|
+
}, imports: [CommonModule], providers: [
|
|
275
|
+
{
|
|
276
|
+
provide: NG_VALUE_ACCESSOR,
|
|
277
|
+
useExisting: forwardRef(() => CuteCheckbox),
|
|
278
|
+
multi: true,
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
provide: NG_VALIDATORS,
|
|
282
|
+
useExisting: CuteCheckbox,
|
|
283
|
+
multi: true,
|
|
284
|
+
},
|
|
285
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-check\"\r\n [class.form-check-reverse]=\"labelPosition == 'before'\"\r\n [class.form-check-inline]=\"inline\"\r\n [class.form-switch]=\"role == 'switch'\"\r\n (click)=\"_preventBubblingFromLabel($event)\"\r\n >\r\n <input #input type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [class.icon-small]=\"iconSize=='small'\"\r\n [class.icon-large]=\"iconSize=='large'\"\r\n [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\r\n [attr.aria-controls]=\"ariaControls\"\r\n [attr.aria-disabled]=\"disabled && disabledInteractive ? true : null\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-owns]=\"ariaOwns\"\r\n [attr.role]=\"role\"\r\n [attr.name] = \"name\"\r\n [attr.value]=\"value\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\r\n [indeterminate]=\"indeterminate\"\r\n [autocomplete]=\"false\"\r\n (blur)=\"_onInputBlur($event)\"\r\n (click)=\"_onInputClick($event)\"\r\n (change)=\"_onInputChange($event)\"\r\n />\r\n <label #label\r\n class=\"form-check-label\"\r\n [for]=\"inputId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</div>\r\n", styles: [".cute-checkbox{position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.cute-checkbox .form-check .form-check-input{cursor:pointer}.cute-checkbox .form-check .form-check-input.icon-small{font-size:.875em;transform:translate(-2px,2px)}.cute-checkbox .form-check .form-check-input.icon-large{font-size:1.375em;margin-right:1.125em;transform:translate(.45em,-.125em)}[dir=rtl] .cute-checkbox .form-check .form-check-input.icon-large{transform:translate(1.125em,-.125em)}[dir=rtl] .cute-checkbox .form-check.form-switch .form-check-input{transform:rotate(180deg)}.cute-checkbox .form-check .form-check-label{cursor:pointer}.cute-checkbox .form-check .form-check-label:empty{display:none}.cute-checkbox.cute-checkbox-disabled .form-check-label{cursor:default}.cute-checkbox.cute-checkbox-disabled.cute-checkbox-disabled-interactive{pointer-events:auto}.cute-checkbox.cute-checkbox-disabled.cute-checkbox-disabled-interactive input{cursor:default}\n"] }]
|
|
286
|
+
}], ctorParameters: () => [], propDecorators: { ariaExpanded: [{
|
|
287
|
+
type: Input,
|
|
288
|
+
args: [{ alias: 'aria-expanded', transform: booleanAttribute }]
|
|
289
|
+
}], ariaControls: [{
|
|
290
|
+
type: Input,
|
|
291
|
+
args: ['aria-controls']
|
|
292
|
+
}], ariaOwns: [{
|
|
293
|
+
type: Input,
|
|
294
|
+
args: ['aria-owns']
|
|
295
|
+
}], value: [{
|
|
296
|
+
type: Input
|
|
297
|
+
}], valueOn: [{
|
|
298
|
+
type: Input
|
|
299
|
+
}], valueOff: [{
|
|
300
|
+
type: Input
|
|
301
|
+
}], inline: [{
|
|
302
|
+
type: Input,
|
|
303
|
+
args: [{ transform: booleanAttribute }]
|
|
304
|
+
}], checked: [{
|
|
305
|
+
type: Input,
|
|
306
|
+
args: [{ transform: booleanAttribute }]
|
|
307
|
+
}], indeterminate: [{
|
|
308
|
+
type: Input,
|
|
309
|
+
args: [{ transform: booleanAttribute }]
|
|
310
|
+
}], labelPosition: [{
|
|
311
|
+
type: Input
|
|
312
|
+
}], disabledInteractive: [{
|
|
313
|
+
type: Input,
|
|
314
|
+
args: [{ transform: booleanAttribute }]
|
|
315
|
+
}], iconSize: [{
|
|
316
|
+
type: Input
|
|
317
|
+
}], change: [{
|
|
318
|
+
type: Output
|
|
319
|
+
}], indeterminateChange: [{
|
|
320
|
+
type: Output
|
|
321
|
+
}], _inputElement: [{
|
|
322
|
+
type: ViewChild,
|
|
323
|
+
args: ['input']
|
|
324
|
+
}], _labelElement: [{
|
|
325
|
+
type: ViewChild,
|
|
326
|
+
args: ['label']
|
|
327
|
+
}] } });
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* @license Apache-2.0
|
|
331
|
+
*
|
|
332
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
333
|
+
*
|
|
334
|
+
* You may not use this file except in compliance with the License
|
|
335
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
336
|
+
*/
|
|
337
|
+
/**
|
|
338
|
+
* A switch has the markup of a custom checkbox but uses the .form-switch class to render a toggle switch.
|
|
339
|
+
*/
|
|
340
|
+
class CuteToggleSwitch {
|
|
341
|
+
constructor() {
|
|
342
|
+
this._checkBox = inject(CuteCheckbox);
|
|
343
|
+
this._checkBox.role = "switch";
|
|
344
|
+
}
|
|
345
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteToggleSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
346
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteToggleSwitch, isStandalone: true, selector: "cute-checkbox[cuteToggleSwitch]", exportAs: ["cuteToggleSwitch"], ngImport: i0 }); }
|
|
347
|
+
}
|
|
348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteToggleSwitch, decorators: [{
|
|
349
|
+
type: Directive,
|
|
350
|
+
args: [{
|
|
351
|
+
selector: 'cute-checkbox[cuteToggleSwitch]',
|
|
352
|
+
exportAs: 'cuteToggleSwitch',
|
|
353
|
+
standalone: true,
|
|
354
|
+
}]
|
|
355
|
+
}], ctorParameters: () => [] });
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* @license Apache-2.0
|
|
359
|
+
*
|
|
360
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
361
|
+
*
|
|
362
|
+
* You may not use this file except in compliance with the License
|
|
363
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
364
|
+
*/
|
|
365
|
+
const TYPES = [
|
|
366
|
+
CuteCheckbox,
|
|
367
|
+
CuteToggleSwitch,
|
|
368
|
+
];
|
|
369
|
+
class CuteCheckboxModule {
|
|
370
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
371
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteCheckboxModule, imports: [CommonModule, CuteCheckbox,
|
|
372
|
+
CuteToggleSwitch], exports: [CuteCheckbox,
|
|
373
|
+
CuteToggleSwitch] }); }
|
|
374
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCheckboxModule, imports: [CommonModule, CuteCheckbox] }); }
|
|
375
|
+
}
|
|
376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCheckboxModule, decorators: [{
|
|
377
|
+
type: NgModule,
|
|
378
|
+
args: [{
|
|
379
|
+
imports: [CommonModule, ...TYPES],
|
|
380
|
+
exports: TYPES,
|
|
381
|
+
declarations: [],
|
|
382
|
+
}]
|
|
383
|
+
}] });
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Generated bundle index. Do not edit.
|
|
387
|
+
*/
|
|
388
|
+
|
|
389
|
+
export { CUTE_CHECKBOX_DEFAULT_OPTIONS, CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY, CuteCheckbox, CuteCheckboxModule, CuteToggleSwitch };
|
|
390
|
+
//# sourceMappingURL=cute-widgets-base-checkbox.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cute-widgets-base-checkbox.mjs","sources":["../../../../projects/cute-widgets/base/checkbox/src/checkbox.config.ts","../../../../projects/cute-widgets/base/checkbox/src/checkbox.component.ts","../../../../projects/cute-widgets/base/checkbox/src/checkbox.component.html","../../../../projects/cute-widgets/base/checkbox/src/toggleswitch.directive.ts","../../../../projects/cute-widgets/base/checkbox/src/checkbox.module.ts","../../../../projects/cute-widgets/base/checkbox/cute-widgets-base-checkbox.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {InjectionToken} from '@angular/core';\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Checkbox click action when a user clicks on an input element.\r\n * noop: Do not toggle checked or indeterminate.\r\n * check: Only toggle checked status, ignore indeterminate.\r\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\r\n * undefined: Same as `check-indeterminate`.\r\n */\r\nexport type CuteCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\r\n\r\n/** Default `cute-checkbox` options that can be overridden. */\r\nexport interface CuteCheckboxDefaultOptions {\r\n /** Default theme color palette to be used for checkboxes. */\r\n color?: ThemeColor;\r\n /** Default checkbox click action for checkboxes. */\r\n clickAction?: CuteCheckboxClickAction;\r\n /** Whether disabled checkboxes should be interactive. */\r\n disabledInteractive?: boolean;\r\n}\r\n\r\n/** Injection token to be used to override the default options for `cute-checkbox`. */\r\nexport const CUTE_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken<CuteCheckboxDefaultOptions>(\r\n 'cute-checkbox-default-options',\r\n {\r\n providedIn: 'root',\r\n factory: CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY,\r\n },\r\n);\r\n\r\n/** @docs-private */\r\nexport function CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY(): CuteCheckboxDefaultOptions {\r\n return {\r\n color: 'primary',\r\n clickAction: 'check-indeterminate',\r\n disabledInteractive: false,\r\n };\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef, inject,\r\n Input,\r\n Output, SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator} from \"@angular/forms\";\r\nimport {\r\n CUTE_CHECKBOX_DEFAULT_OPTIONS,\r\n CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY,\r\n CuteCheckboxDefaultOptions\r\n} from \"./checkbox.config\";\r\nimport {CuteInputControl} from '@cute-widgets/base/abstract';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {RelativeSize} from \"@cute-widgets/base/core\";\r\n\r\n/** Change event object emitted by checkbox. */\r\nexport interface CuteCheckboxChange {\r\n /** The source checkbox of the event. */\r\n source: CuteCheckbox;\r\n /** The new `checked` value of the checkbox. */\r\n checked: boolean;\r\n}\r\n// Increasing integer for generating unique ids for checkbox components.\r\nlet nextUniqueId = 0;\r\n\r\n// Default checkbox configuration.\r\nconst defaults = CUTE_CHECKBOX_DEFAULT_OPTIONS_FACTORY();\r\n\r\n@Component({\r\n selector: 'cute-checkbox, cute-slide-toggle:not([cuteToggleSwitch])',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n exportAs: \"cuteCheckbox\",\r\n host: {\r\n 'class': 'cute-checkbox',\r\n '[class.cute-checkbox-disabled]': 'disabled',\r\n '[class.cute-checkbox-disabled-interactive]': 'disabledInteractive',\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.role]': 'null',\r\n '[id]': 'id',\r\n },\r\n imports: [CommonModule],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CuteCheckbox),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: CuteCheckbox,\r\n multi: true,\r\n },\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteCheckbox extends CuteInputControl implements Validator {\r\n\r\n private readonly _options = inject<CuteCheckboxDefaultOptions>(CUTE_CHECKBOX_DEFAULT_OPTIONS, {\r\n optional: true,\r\n });\r\n\r\n private _validatorChangeFn = () => {};\r\n\r\n /** Users can specify the `aria-expanded` attribute which will be forwarded to the input element */\r\n @Input({alias: 'aria-expanded', transform: booleanAttribute}) ariaExpanded: boolean | undefined;\r\n\r\n /** Users can specify the `aria-controls` attribute which will be forwarded to the input element */\r\n @Input('aria-controls') ariaControls: string | undefined;\r\n\r\n /** Users can specify the `aria-owns` attribute which will be forwarded to the input element */\r\n @Input('aria-owns') ariaOwns: string | undefined;\r\n\r\n @Input()\r\n override get value(): any {return this._value}\r\n override set value(v: any) {this._value = v;}\r\n private _value: any;\r\n\r\n @Input()\r\n get valueOn(): unknown {return this._valueOn;}\r\n set valueOn(v: unknown) {this._valueOn = v;}\r\n private _valueOn: unknown;\r\n\r\n @Input()\r\n get valueOff(): unknown {return this._valueOff;}\r\n set valueOff(v: unknown) {this._valueOff = v;}\r\n private _valueOff: unknown;\r\n\r\n /** Group checkboxes on the same horizontal row */\r\n @Input({transform: booleanAttribute})\r\n inline: boolean = false;\r\n\r\n /** Whether the checkbox is checked. */\r\n @Input({transform: booleanAttribute})\r\n get checked(): boolean { return this._checked; }\r\n set checked(newVal: boolean) {\r\n if (newVal != this.checked) {\r\n this._checked = newVal;\r\n //this.value = this.checked ? this.valueOn : this.valueOff;\r\n this.markForCheck();\r\n }\r\n }\r\n private _checked: boolean = false;\r\n /**\r\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\r\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\r\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\r\n * set to false.\r\n */\r\n @Input({transform: booleanAttribute})\r\n get indeterminate(): boolean { return this._indeterminate; }\r\n set indeterminate(value: boolean) {\r\n const changed = value != this._indeterminate;\r\n this._indeterminate = value;\r\n\r\n if (changed) {\r\n this.indeterminateChange.emit(this._indeterminate);\r\n }\r\n\r\n this._syncIndeterminate(this._indeterminate);\r\n }\r\n private _indeterminate: boolean = false;\r\n\r\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\r\n @Input()\r\n labelPosition: 'before' | 'after' = 'after';\r\n\r\n /** Whether the checkbox should remain interactive when it is disabled. */\r\n @Input({transform: booleanAttribute})\r\n disabledInteractive: boolean = false;\r\n\r\n /** Relative size of the checkbox icon. */\r\n @Input() iconSize: RelativeSize = \"middle\";\r\n\r\n /** Event emitted when the checkbox's `checked` value changes. */\r\n @Output() readonly change = new EventEmitter<CuteCheckboxChange>();\r\n\r\n /** Event emitted when the checkbox's `indeterminate` value changes. */\r\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /** The native `<input type=\"checkbox\">` element */\r\n @ViewChild('input')\r\n readonly _inputElement: ElementRef<HTMLInputElement> | undefined;\r\n\r\n /** The native `<label>` element */\r\n @ViewChild('label')\r\n private _labelElement!: ElementRef<HTMLInputElement>;\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n this._options = this._options || defaults;\r\n this.color = this._options.color || defaults.color;\r\n this.disabledInteractive = this._options?.disabledInteractive ?? false;\r\n //++ CWT\r\n if (this._nativeElement.nodeName.toLowerCase()===\"cute-slide-toggle\") {\r\n this.role = \"switch\";\r\n }\r\n //this.value = this.valueOn = \"on\";\r\n //this.valueOff = \"off\";\r\n //--\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes['required']) {\r\n this._validatorChangeFn();\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this._syncIndeterminate(this._indeterminate);\r\n }\r\n\r\n // Implemented as a part of Validator.\r\n validate(control: AbstractControl<boolean>): ValidationErrors | null {\r\n return this.required && control.value !== true ? {'required': true} : null;\r\n }\r\n\r\n // Implemented as a part of Validator.\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._validatorChangeFn = fn;\r\n }\r\n\r\n override writeValue(value: any) {\r\n this.checked = !!value;\r\n }\r\n\r\n override generateId(): string {\r\n return `cute-checkbox-${nextUniqueId++}`;\r\n }\r\n\r\n private _emitChangeEvent() {\r\n this._onChange(this.checked);\r\n this.change.emit(this._createChangeEvent(this.checked));\r\n\r\n // Assigning the value again here is redundant, but we have to do it in case it was\r\n // changed inside the `change` listener which will cause the input to be out of sync.\r\n if (this._inputElement) {\r\n this._inputElement.nativeElement.checked = this.checked;\r\n }\r\n }\r\n\r\n /** Toggles the `checked` state of the checkbox. */\r\n toggle(): void {\r\n this.checked = !this.checked;\r\n this._onChange(this.checked);\r\n }\r\n\r\n /** Sets the `checked` state of the checkbox. */\r\n check(): void {\r\n this.checked = true;\r\n this._onChange(this.checked);\r\n }\r\n\r\n /** Clears the `checked` state of the checkbox. */\r\n uncheck(): void {\r\n this.checked = false;\r\n this._onChange(this.checked);\r\n }\r\n\r\n private _handleInputClick() {\r\n const clickAction = this._options?.clickAction;\r\n\r\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\r\n if (!this.disabled && clickAction !== 'noop') {\r\n // When a user manually clicks on the checkbox, `indeterminate` is set to false.\r\n if (this.indeterminate && clickAction !== 'check') {\r\n Promise.resolve().then(() => {\r\n this._indeterminate = false;\r\n this.indeterminateChange.emit(this._indeterminate);\r\n });\r\n }\r\n\r\n this._checked = !this._checked;\r\n\r\n // Emit our custom change event if the native input emitted one.\r\n // It is important to only emit it, if the native input triggered one, because\r\n // we don't want to trigger a change event, when the `checked` variable changes for example.\r\n this._emitChangeEvent();\r\n } else if (\r\n ((this.disabled && this.disabledInteractive) ||\r\n (!this.disabled && clickAction === 'noop')) && this._inputElement\r\n ) {\r\n // Reset native input when clicked with noop. The native checkbox becomes checked after\r\n // click, reset it to be aligned with `checked` value of `cute-checkbox`.\r\n this._inputElement.nativeElement.checked = this.checked;\r\n this._inputElement.nativeElement.indeterminate = this.indeterminate;\r\n }\r\n }\r\n\r\n /** Method being called whenever the label text changes. */\r\n _onLabelTextChange() {\r\n // Since the event of the `cdkObserveContent` directive runs outside the zone, the checkbox\r\n // component will be only marked for check, but no actual change detection runs automatically.\r\n // Instead of going back into the zone in order to trigger a change detection which causes\r\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\r\n // an explicit change detection for the checkbox view and its children.\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n\r\n protected _onInputChange(event: Event): void {\r\n // We always have to stop propagation on the change event.\r\n // Otherwise, the change event from the input element will bubble up and\r\n // emit its event object to the `change` output.\r\n event.stopPropagation();\r\n }\r\n\r\n protected _onInputBlur(event: Event):void {\r\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\r\n // Angular does not expect events to be raised during change detection, so any state change\r\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\r\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\r\n // telling the form control it has been touched until the next tick.\r\n Promise.resolve().then(() => {\r\n this._onTouched();\r\n this.markForCheck();\r\n });\r\n }\r\n\r\n protected _onInputClick(event: Event): void {\r\n this._handleInputClick();\r\n }\r\n\r\n protected _onTouchTargetClick(event: Event): void {\r\n this._handleInputClick();\r\n\r\n if (!this.disabled) {\r\n // Normally, the input should be focused already, but if the click\r\n // comes from the touch target, then we might have to focus it ourselves.\r\n this._inputElement?.nativeElement.focus();\r\n }\r\n }\r\n /**\r\n * Prevent click events that come from the `<label/>` element from bubbling. This prevents the\r\n * click handler on the host from triggering twice when clicking on the `<label/>` element. After\r\n * the click event on the `<label/>` propagates, the browsers dispatches click on the associated\r\n * `<input/>`. By preventing clicks on the label by bubbling, we ensure only one click event\r\n * bubbles when the label is clicked.\r\n */\r\n protected _preventBubblingFromLabel(event: MouseEvent) {\r\n if (!!event.target && this._labelElement.nativeElement.contains(event.target as HTMLElement)) {\r\n event.stopPropagation();\r\n }\r\n }\r\n /**\r\n * Syncs the indeterminate value with the checkbox DOM node.\r\n *\r\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\r\n * property is supported on an element boils down to `if (propName in an element)`. Domino's\r\n * HTMLInputElement doesn't have an `indeterminate` property, so Ivy will warn during\r\n * server-side rendering.\r\n */\r\n private _syncIndeterminate(value: boolean) {\r\n const nativeCheckbox = this._inputElement;\r\n\r\n if (nativeCheckbox) {\r\n nativeCheckbox.nativeElement.indeterminate = value;\r\n }\r\n }\r\n\r\n /** Creates the change event that will be emitted by the checkbox. */\r\n protected _createChangeEvent(isChecked: boolean): CuteCheckboxChange {\r\n return {source: this, checked: isChecked};\r\n }\r\n\r\n}\r\n","<div class=\"form-check\"\r\n [class.form-check-reverse]=\"labelPosition == 'before'\"\r\n [class.form-check-inline]=\"inline\"\r\n [class.form-switch]=\"role == 'switch'\"\r\n (click)=\"_preventBubblingFromLabel($event)\"\r\n >\r\n <input #input type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [class.icon-small]=\"iconSize=='small'\"\r\n [class.icon-large]=\"iconSize=='large'\"\r\n [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\r\n [attr.aria-controls]=\"ariaControls\"\r\n [attr.aria-disabled]=\"disabled && disabledInteractive ? true : null\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-owns]=\"ariaOwns\"\r\n [attr.role]=\"role\"\r\n [attr.name] = \"name\"\r\n [attr.value]=\"value\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\r\n [indeterminate]=\"indeterminate\"\r\n [autocomplete]=\"false\"\r\n (blur)=\"_onInputBlur($event)\"\r\n (click)=\"_onInputClick($event)\"\r\n (change)=\"_onInputChange($event)\"\r\n />\r\n <label #label\r\n class=\"form-check-label\"\r\n [for]=\"inputId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</div>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive, inject} from '@angular/core';\r\nimport {CuteCheckbox} from './checkbox.component';\r\n\r\n/**\r\n * A switch has the markup of a custom checkbox but uses the .form-switch class to render a toggle switch.\r\n */\r\n@Directive({\r\n selector: 'cute-checkbox[cuteToggleSwitch]',\r\n exportAs: 'cuteToggleSwitch',\r\n standalone: true,\r\n})\r\nexport class CuteToggleSwitch {\r\n private _checkBox = inject(CuteCheckbox);\r\n\r\n constructor() {\r\n this._checkBox.role = \"switch\"\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteCheckbox} from \"./checkbox.component\";\r\nimport {CuteToggleSwitch} from \"./toggleswitch.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteCheckbox,\r\n CuteToggleSwitch,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteCheckboxModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|