ReactMaterial3/dist/form-associated-CyYeHPMb.mjs

67 lines
1.8 KiB
JavaScript

import { _ as i, n as l } from "./class-map-CwiboTfb.mjs";
import { i as a } from "./element-internals-3IY9gE4L.mjs";
/**
* @license
* Copyright 2023 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
const o = Symbol("getFormValue"), n = Symbol("getFormState");
function h(u) {
class r extends u {
get form() {
return this[a].form;
}
get labels() {
return this[a].labels;
}
// Use @property for the `name` and `disabled` properties to add them to the
// `observedAttributes` array and trigger `attributeChangedCallback()`.
//
// We don't use Lit's default getter/setter (`noAccessor: true`) because
// the attributes need to be updated synchronously to work with synchronous
// form APIs, and Lit updates attributes async by default.
get name() {
return this.getAttribute("name") ?? "";
}
set name(t) {
this.setAttribute("name", t);
}
get disabled() {
return this.hasAttribute("disabled");
}
set disabled(t) {
this.toggleAttribute("disabled", t);
}
attributeChangedCallback(t, e, s) {
if (t === "name" || t === "disabled") {
const d = t === "disabled" ? e !== null : e;
this.requestUpdate(t, d);
return;
}
super.attributeChangedCallback(t, e, s);
}
requestUpdate(t, e, s) {
super.requestUpdate(t, e, s), this[a].setFormValue(this[o](), this[n]());
}
[o]() {
throw new Error("Implement [getFormValue]");
}
[n]() {
return this[o]();
}
formDisabledCallback(t) {
this.disabled = t;
}
}
return r.formAssociated = !0, i([
l({ noAccessor: !0 })
], r.prototype, "name", null), i([
l({ type: Boolean, noAccessor: !0 })
], r.prototype, "disabled", null), r;
}
export {
n as a,
o as g,
h as m
};