@m3e/checkbox 1.0.0-rc.1 → 1.0.0-rc.3
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 +1 -2
- package/dist/custom-elements.json +3204 -89
- package/dist/html-custom-data.json +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +3 -3
- package/dist/index.min.js.map +1 -1
- package/dist/src/CheckboxElement.d.ts +2 -1
- package/dist/src/CheckboxElement.d.ts.map +1 -1
- package/package.json +3 -3
- package/cem.config.mjs +0 -16
- package/demo/index.html +0 -74
- package/eslint.config.mjs +0 -13
- package/rollup.config.js +0 -32
- package/src/CheckboxElement.ts +0 -362
- package/src/index.ts +0 -1
- package/tsconfig.json +0 -9
package/src/CheckboxElement.ts
DELETED
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
import { css, CSSResultGroup, html, LitElement, nothing, PropertyValues } from "lit";
|
|
2
|
-
import { customElement, property, query } from "lit/decorators.js";
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
Labelled,
|
|
6
|
-
CheckedIndeterminate,
|
|
7
|
-
ConstraintValidation,
|
|
8
|
-
DesignToken,
|
|
9
|
-
Dirty,
|
|
10
|
-
Disabled,
|
|
11
|
-
FormAssociated,
|
|
12
|
-
formValue,
|
|
13
|
-
Required,
|
|
14
|
-
RequiredConstraintValidation,
|
|
15
|
-
Touched,
|
|
16
|
-
AttachInternals,
|
|
17
|
-
Role,
|
|
18
|
-
M3eFocusRingElement,
|
|
19
|
-
M3eRippleElement,
|
|
20
|
-
M3eStateLayerElement,
|
|
21
|
-
KeyboardClick,
|
|
22
|
-
Focusable,
|
|
23
|
-
HoverController,
|
|
24
|
-
PressedController,
|
|
25
|
-
} from "@m3e/core";
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @summary
|
|
29
|
-
* A checkbox that allows a user to select one or more options from a limited number of choices.
|
|
30
|
-
*
|
|
31
|
-
* @description
|
|
32
|
-
* The `m3e-checkbox` component enables users to select one or more options from a set. It supports selected,
|
|
33
|
-
* unselected, and indeterminate states, and communicates selection through visual cues and accessible semantics.
|
|
34
|
-
* This component reflects user intent, form participation, and validation feedback, adapting to disabled and
|
|
35
|
-
* required contexts. It emits `input` and `change` events to signal state transitions and integrates with form
|
|
36
|
-
* submission via `name` and `value`.
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* The following example illustrates wrapping a `m3e-checkbox` within a `label`.
|
|
40
|
-
* ```html
|
|
41
|
-
* <label>
|
|
42
|
-
* <m3e-checkbox></m3e-checkbox>
|
|
43
|
-
* Checkbox label
|
|
44
|
-
* </label>
|
|
45
|
-
* ```
|
|
46
|
-
* @example
|
|
47
|
-
* The next example illustrates use of the `for` attribute to label a checkbox.
|
|
48
|
-
* ```html
|
|
49
|
-
* <m3e-checkbox id="chk"></m3e-checkbox>
|
|
50
|
-
* <label for="chk">Checkbox label </label>
|
|
51
|
-
* ```
|
|
52
|
-
*
|
|
53
|
-
* @tag m3e-checkbox
|
|
54
|
-
*
|
|
55
|
-
* @attr checked - Whether the element is checked.
|
|
56
|
-
* @attr disabled - Whether the element is disabled.
|
|
57
|
-
* @attr indeterminate - Whether the element's checked state is indeterminate.
|
|
58
|
-
* @attr name - The name that identifies the element when submitting the associated form.
|
|
59
|
-
* @attr required - Whether the element is required.
|
|
60
|
-
* @attr value - A string representing the value of the checkbox.
|
|
61
|
-
*
|
|
62
|
-
* @fires input - Emitted when the checked state changes.
|
|
63
|
-
* @fires change - Emitted when the checked state changes.
|
|
64
|
-
*
|
|
65
|
-
* @cssprop --m3e-checkbox-icon-size - Size of the checkbox icon inside the container.
|
|
66
|
-
* @cssprop --m3e-checkbox-container-size - Base size of the checkbox container.
|
|
67
|
-
* @cssprop --m3e-checkbox-container-shape - Border radius of the icon container.
|
|
68
|
-
* @cssprop --m3e-checkbox-unselected-outline-thickness - Border thickness for unselected state.
|
|
69
|
-
* @cssprop --m3e-checkbox-unselected-outline-color - Border color for unselected state.
|
|
70
|
-
* @cssprop --m3e-checkbox-unselected-hover-outline-color - Border color on hover when unselected.
|
|
71
|
-
* @cssprop --m3e-checkbox-unselected-disabled-outline-color - Base color for disabled unselected outline.
|
|
72
|
-
* @cssprop --m3e-checkbox-unselected-disabled-outline-opacity - Opacity for disabled unselected outline.
|
|
73
|
-
* @cssprop --m3e-checkbox-unselected-error-outline-color - Border color for invalid unselected state.
|
|
74
|
-
* @cssprop --m3e-checkbox-selected-container-color - Background color for selected container.
|
|
75
|
-
* @cssprop --m3e-checkbox-selected-icon-color - Icon color for selected state.
|
|
76
|
-
* @cssprop --m3e-checkbox-selected-disabled-container-color - Base color for disabled selected container.
|
|
77
|
-
* @cssprop --m3e-checkbox-selected-disabled-container-opacity - Opacity for disabled selected container.
|
|
78
|
-
* @cssprop --m3e-checkbox-selected-disabled-icon-color - Base color for disabled selected icon.
|
|
79
|
-
* @cssprop --m3e-checkbox-selected-disabled-icon-opacity - Opacity for disabled selected icon.
|
|
80
|
-
* @cssprop --m3e-checkbox-unselected-hover-color - Ripple hover color for unselected state.
|
|
81
|
-
* @cssprop --m3e-checkbox-unselected-focus-color - Ripple focus color for unselected state.
|
|
82
|
-
* @cssprop --m3e-checkbox-unselected-ripple-color - Ripple base color for unselected state.
|
|
83
|
-
* @cssprop --m3e-checkbox-selected-hover-color - Ripple hover color for selected state.
|
|
84
|
-
* @cssprop --m3e-checkbox-selected-focus-color - Ripple focus color for selected state.
|
|
85
|
-
* @cssprop --m3e-checkbox-selected-ripple-color - Ripple base color for selected state.
|
|
86
|
-
* @cssprop --m3e-checkbox-unselected-error-hover-color - Ripple hover color for invalid unselected state.
|
|
87
|
-
* @cssprop --m3e-checkbox-unselected-error-focus-color - Ripple focus color for invalid unselected state.
|
|
88
|
-
* @cssprop --m3e-checkbox-unselected-error-ripple-color - Ripple base color for invalid unselected state.
|
|
89
|
-
* @cssprop --m3e-checkbox-selected-error-hover-color - Ripple hover color for invalid selected state.
|
|
90
|
-
* @cssprop --m3e-checkbox-selected-error-focus-color - Ripple focus color for invalid selected state.
|
|
91
|
-
* @cssprop --m3e-checkbox-selected-error-ripple-color - Ripple base color for invalid selected state.
|
|
92
|
-
*/
|
|
93
|
-
@customElement("m3e-checkbox")
|
|
94
|
-
export class M3eCheckboxElement extends Labelled(
|
|
95
|
-
RequiredConstraintValidation(
|
|
96
|
-
Dirty(
|
|
97
|
-
Touched(
|
|
98
|
-
Required(
|
|
99
|
-
ConstraintValidation(
|
|
100
|
-
CheckedIndeterminate(
|
|
101
|
-
FormAssociated(KeyboardClick(Focusable(Disabled(AttachInternals(Role(LitElement, "checkbox")))), false))
|
|
102
|
-
)
|
|
103
|
-
)
|
|
104
|
-
)
|
|
105
|
-
)
|
|
106
|
-
)
|
|
107
|
-
)
|
|
108
|
-
) {
|
|
109
|
-
/** The styles of the element. */
|
|
110
|
-
static override styles: CSSResultGroup = css`
|
|
111
|
-
:host {
|
|
112
|
-
display: inline-block;
|
|
113
|
-
outline: none;
|
|
114
|
-
width: fit-content;
|
|
115
|
-
height: fit-content;
|
|
116
|
-
vertical-align: middle;
|
|
117
|
-
}
|
|
118
|
-
:host(:not([aria-disabled="true"])) {
|
|
119
|
-
cursor: pointer;
|
|
120
|
-
}
|
|
121
|
-
.base {
|
|
122
|
-
box-sizing: border-box;
|
|
123
|
-
vertical-align: middle;
|
|
124
|
-
display: inline-flex;
|
|
125
|
-
align-items: center;
|
|
126
|
-
justify-content: center;
|
|
127
|
-
position: relative;
|
|
128
|
-
border-radius: 50%;
|
|
129
|
-
width: calc(var(--m3e-checkbox-container-size, 2.5rem) + ${DesignToken.density.calc(-3)});
|
|
130
|
-
height: calc(var(--m3e-checkbox-container-size, 2.5rem) + ${DesignToken.density.calc(-3)});
|
|
131
|
-
}
|
|
132
|
-
.touch {
|
|
133
|
-
position: absolute;
|
|
134
|
-
height: 3rem;
|
|
135
|
-
width: 3rem;
|
|
136
|
-
margin: auto;
|
|
137
|
-
}
|
|
138
|
-
.wrapper {
|
|
139
|
-
box-sizing: border-box;
|
|
140
|
-
pointer-events: none;
|
|
141
|
-
width: var(--m3e-checkbox-icon-size, 1.125rem);
|
|
142
|
-
height: var(--m3e-checkbox-icon-size, 1.125rem);
|
|
143
|
-
border-radius: var(--m3e-checkbox-container-shape, 0.125rem);
|
|
144
|
-
}
|
|
145
|
-
:host(:not([checked]):not([indeterminate])) .wrapper {
|
|
146
|
-
border-width: var(--m3e-checkbox-unselected-outline-thickness, 0.125rem);
|
|
147
|
-
border-style: solid;
|
|
148
|
-
}
|
|
149
|
-
:host(:not(.-touched.-invalid):not([indeterminate]):not([checked])) .base {
|
|
150
|
-
--m3e-state-layer-hover-color: var(--m3e-checkbox-unselected-hover-color, ${DesignToken.color.onSurface});
|
|
151
|
-
--m3e-state-layer-focus-color: var(--m3e-checkbox-unselected-focus-color, ${DesignToken.color.onSurface});
|
|
152
|
-
--m3e-ripple-color: var(--m3e-checkbox-unselected-ripple-color, ${DesignToken.color.onSurface});
|
|
153
|
-
}
|
|
154
|
-
:host(:not(.-touched.-invalid)[checked]) .base,
|
|
155
|
-
:host(:not(.-touched.-invalid)[indeterminate]) .base {
|
|
156
|
-
--m3e-state-layer-hover-color: var(--m3e-checkbox-selected-hover-color, ${DesignToken.color.primary});
|
|
157
|
-
--m3e-state-layer-focus-color: var(--m3e-checkbox-selected-focus-color, ${DesignToken.color.primary});
|
|
158
|
-
--m3e-ripple-color: var(--m3e-checkbox-selected-ripple-color, ${DesignToken.color.primary});
|
|
159
|
-
}
|
|
160
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid)[checked]) .wrapper,
|
|
161
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid)[indeterminate]) .wrapper {
|
|
162
|
-
background-color: var(--m3e-checkbox-selected-container-color, ${DesignToken.color.primary});
|
|
163
|
-
color: var(--m3e-checkbox-selected-icon-color, ${DesignToken.color.onPrimary});
|
|
164
|
-
}
|
|
165
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid):not([checked]):not([indeterminate]):not(:hover))
|
|
166
|
-
.wrapper {
|
|
167
|
-
border-color: var(--m3e-checkbox-unselected-outline-color, ${DesignToken.color.onSurfaceVariant});
|
|
168
|
-
}
|
|
169
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid):not([checked]):not([indeterminate]):hover) .wrapper {
|
|
170
|
-
border-color: var(--m3e-checkbox-unselected-hover-outline-color, ${DesignToken.color.onSurface});
|
|
171
|
-
}
|
|
172
|
-
:host([aria-disabled="true"]:not([checked]):not([indeterminate])) .wrapper {
|
|
173
|
-
border-color: color-mix(
|
|
174
|
-
in srgb,
|
|
175
|
-
var(--m3e-checkbox-unselected-disabled-outline-color, ${DesignToken.color.onSurface})
|
|
176
|
-
var(--m3e-checkbox-unselected-disabled-outline-opacity, 38%),
|
|
177
|
-
transparent
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
:host([aria-disabled="true"][checked]) .wrapper,
|
|
181
|
-
:host([aria-disabled="true"][indeterminate]) .wrapper {
|
|
182
|
-
background-color: color-mix(
|
|
183
|
-
in srgb,
|
|
184
|
-
var(--m3e-checkbox-selected-disabled-container-color, ${DesignToken.color.onSurface})
|
|
185
|
-
var(--m3e-checkbox-selected-disabled-container-opacity, 38%),
|
|
186
|
-
transparent
|
|
187
|
-
);
|
|
188
|
-
color: color-mix(
|
|
189
|
-
in srgb,
|
|
190
|
-
var(--m3e-checkbox-selected-disabled-icon-color, ${DesignToken.color.surface})
|
|
191
|
-
var(--m3e-checkbox-selected-disabled-icon-opacity, 100%),
|
|
192
|
-
transparent
|
|
193
|
-
);
|
|
194
|
-
}
|
|
195
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid:not([checked]):not([indeterminate])) .base {
|
|
196
|
-
--m3e-state-layer-hover-color: var(--m3e-checkbox-unselected-error-hover-color, ${DesignToken.color.error});
|
|
197
|
-
--m3e-state-layer-focus-color: var(--m3e-checkbox-unselected-error-focus-color, ${DesignToken.color.error});
|
|
198
|
-
--m3e-ripple-color: var(--m3e-checkbox-unselected-error-ripple-color, ${DesignToken.color.error});
|
|
199
|
-
}
|
|
200
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid[checked]) .base,
|
|
201
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid[indeterminate]) .base {
|
|
202
|
-
--m3e-state-layer-hover-color: var(--m3e-checkbox-selected-error-hover-color, ${DesignToken.color.onError});
|
|
203
|
-
--m3e-state-layer-focus-color: var(--m3e-checkbox-selected-error-focus-color, ${DesignToken.color.onError});
|
|
204
|
-
--m3e-ripple-color: var(--m3e-checkbox-selected-error-ripple-color, ${DesignToken.color.onError});
|
|
205
|
-
}
|
|
206
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid:not([checked]):not([indeterminate])) .wrapper {
|
|
207
|
-
border-color: var(--m3e-checkbox-unselected-error-outline-color, ${DesignToken.color.error});
|
|
208
|
-
}
|
|
209
|
-
@media (forced-colors: active) {
|
|
210
|
-
:host(:not(.-touched.-invalid):not([indeterminate]):not([checked])) .base,
|
|
211
|
-
:host(:not(.-touched.-invalid)[checked]) .base,
|
|
212
|
-
:host(:not(.-touched.-invalid)[indeterminate]) .base {
|
|
213
|
-
--m3e-state-layer-hover-color: CanvasText;
|
|
214
|
-
--m3e-state-layer-focus-color: CanvasText;
|
|
215
|
-
--m3e-ripple-color: CanvasText;
|
|
216
|
-
}
|
|
217
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid):not([checked]):not([indeterminate]):not(:hover))
|
|
218
|
-
.wrapper,
|
|
219
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid):not([checked]):not([indeterminate]):hover) .wrapper {
|
|
220
|
-
border-color: CanvasText;
|
|
221
|
-
}
|
|
222
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid)[checked]) .wrapper,
|
|
223
|
-
:host(:not([aria-disabled="true"]):not(.-touched.-invalid)[indeterminate]) .wrapper {
|
|
224
|
-
background-color: CanvasText;
|
|
225
|
-
color: Canvas;
|
|
226
|
-
}
|
|
227
|
-
:host([aria-disabled="true"]:not([checked]):not([indeterminate])) .wrapper {
|
|
228
|
-
border-color: GrayText;
|
|
229
|
-
}
|
|
230
|
-
:host([aria-disabled="true"][checked]) .wrapper,
|
|
231
|
-
:host([aria-disabled="true"][indeterminate]) .wrapper {
|
|
232
|
-
background-color: GrayText;
|
|
233
|
-
color: Canvas;
|
|
234
|
-
}
|
|
235
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid:not([checked]):not([indeterminate])) .wrapper {
|
|
236
|
-
border-color: Highlight;
|
|
237
|
-
}
|
|
238
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid:not([checked]):not([indeterminate])) .base,
|
|
239
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid[checked]) .base,
|
|
240
|
-
:host(:not([aria-disabled="true"]).-touched.-invalid[indeterminate]) .base {
|
|
241
|
-
--m3e-state-layer-hover-color: Highlight;
|
|
242
|
-
--m3e-state-layer-focus-color: Highlight;
|
|
243
|
-
--m3e-ripple-color: Highlight;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
`;
|
|
247
|
-
|
|
248
|
-
/** @private */ @query(".focus-ring") private readonly _focusRing?: M3eFocusRingElement;
|
|
249
|
-
/** @private */ @query(".state-layer") private readonly _stateLayer?: M3eStateLayerElement;
|
|
250
|
-
/** @private */ @query(".ripple") private readonly _ripple?: M3eRippleElement;
|
|
251
|
-
/** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);
|
|
252
|
-
|
|
253
|
-
/** @private */ readonly #hoverController = new HoverController(this, {
|
|
254
|
-
target: null,
|
|
255
|
-
callback: (hovering) => {
|
|
256
|
-
if (this.disabled) return;
|
|
257
|
-
if (hovering) {
|
|
258
|
-
this._stateLayer?.show("hover");
|
|
259
|
-
} else {
|
|
260
|
-
this._stateLayer?.hide("hover");
|
|
261
|
-
}
|
|
262
|
-
},
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
/** @private */ readonly #pressedController = new PressedController(this, {
|
|
266
|
-
target: null,
|
|
267
|
-
callback: (pressed) => {
|
|
268
|
-
if (this.disabled) return;
|
|
269
|
-
if (pressed) {
|
|
270
|
-
this._ripple?.show(0, 0, true);
|
|
271
|
-
} else {
|
|
272
|
-
this._ripple?.hide();
|
|
273
|
-
}
|
|
274
|
-
},
|
|
275
|
-
});
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* A string representing the value of the checkbox.
|
|
279
|
-
* @default "on"
|
|
280
|
-
*/
|
|
281
|
-
@property() value = "on";
|
|
282
|
-
|
|
283
|
-
/** @inheritdoc @private */
|
|
284
|
-
override get [formValue](): string | File | FormData | null {
|
|
285
|
-
return !this.checked || this.indeterminate ? null : this.value;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
/** @inheritdoc */
|
|
289
|
-
override connectedCallback(): void {
|
|
290
|
-
super.connectedCallback();
|
|
291
|
-
|
|
292
|
-
this.addEventListener("click", this.#clickHandler);
|
|
293
|
-
for (const label of this.labels) {
|
|
294
|
-
this.#hoverController.observe(label);
|
|
295
|
-
this.#pressedController.observe(label);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
/** @inheritdoc */
|
|
300
|
-
override disconnectedCallback(): void {
|
|
301
|
-
super.disconnectedCallback();
|
|
302
|
-
|
|
303
|
-
this.removeEventListener("click", this.#clickHandler);
|
|
304
|
-
for (const label of this.labels) {
|
|
305
|
-
this.#hoverController.unobserve(label);
|
|
306
|
-
this.#pressedController.unobserve(label);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/** @inheritdoc */
|
|
311
|
-
protected override firstUpdated(_changedProperties: PropertyValues<this>): void {
|
|
312
|
-
super.firstUpdated(_changedProperties);
|
|
313
|
-
[this._focusRing, this._stateLayer, this._ripple].forEach((x) => x?.attach(this));
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
/** @inheritdoc */
|
|
317
|
-
protected override render(): unknown {
|
|
318
|
-
return html`<div class="base">
|
|
319
|
-
<m3e-state-layer class="state-layer" ?disabled="${this.disabled}"></m3e-state-layer>
|
|
320
|
-
<m3e-focus-ring class="focus-ring" ?disabled="${this.disabled}"></m3e-focus-ring>
|
|
321
|
-
<m3e-ripple class="ripple" centered disable-enter ?disabled="${this.disabled}"></m3e-ripple>
|
|
322
|
-
<div class="touch" aria-hidden="true"></div>
|
|
323
|
-
<div class="wrapper" aria-hidden="true">${this.#renderIcon()}</div>
|
|
324
|
-
</div>`;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
/** @private */
|
|
328
|
-
#renderIcon(): unknown {
|
|
329
|
-
if (this.indeterminate) {
|
|
330
|
-
return html`<svg viewBox="0 -960 960 960" fill="currentColor">
|
|
331
|
-
<path Required d="M240-440v-80h480v80H240Z" />
|
|
332
|
-
</svg>`;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
if (this.checked) {
|
|
336
|
-
return html`<svg viewBox="0 -960 960 960" fill="currentColor">
|
|
337
|
-
<path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z" />
|
|
338
|
-
</svg>`;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
return nothing;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
/** @private */
|
|
345
|
-
#handleClick(e: Event): void {
|
|
346
|
-
if (e.defaultPrevented) return;
|
|
347
|
-
|
|
348
|
-
this.checked = !this.checked;
|
|
349
|
-
if (this.dispatchEvent(new Event("input", { bubbles: true, composed: true, cancelable: true }))) {
|
|
350
|
-
this.indeterminate = false;
|
|
351
|
-
this.dispatchEvent(new Event("change", { bubbles: true }));
|
|
352
|
-
} else {
|
|
353
|
-
this.checked = !this.checked;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
declare global {
|
|
359
|
-
interface HTMLElementTagNameMap {
|
|
360
|
-
"m3e-checkbox": M3eCheckboxElement;
|
|
361
|
-
}
|
|
362
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./CheckboxElement";
|