on-codemerge
Version:
A WYSIWYG editor for on-codemerge is a user-friendly interface that allows users to edit and view their code in real time, exactly as it will appear in the final product
49 lines (48 loc) • 2.39 kB
JavaScript
import { createContainer as s, createLabel as h, createButton as m, createFileInput as x, createCheckbox as g, createSelectField as A, createTextarea as k, createInputField as L } from "../../../utils/helpers.mjs";
class S {
createField(f) {
var b;
const { type: c, label: t, options: e, validation: r } = f, l = s("form-field"), u = h(t, e == null ? void 0 : e.id);
let a = null;
switch (c) {
case "text":
case "email":
case "password":
case "number":
case "color":
case "date":
case "time":
case "range":
a = L(c, e == null ? void 0 : e.placeholder, e == null ? void 0 : e.value);
break;
case "textarea":
a = k(e == null ? void 0 : e.placeholder, e == null ? void 0 : e.value);
break;
case "select":
a = A(
((b = e == null ? void 0 : e.options) == null ? void 0 : b.map((d) => ({ value: d, label: d }))) || [],
e == null ? void 0 : e.value
), e != null && e.multiple && a.setAttribute("multiple", "true");
break;
case "checkbox":
case "radio":
a = g(t, (e == null ? void 0 : e.value) === "true"), e != null && e.name && a.setAttribute("name", e.name);
break;
case "file":
a = x(e == null ? void 0 : e.multiple);
break;
case "button":
case "submit":
case "reset":
a = m(t, () => {
}, c);
break;
default:
return null;
}
return e != null && e.autocomplete && (a == null || a.setAttribute("autocomplete", e.autocomplete)), e != null && e.readonly && (a == null || a.setAttribute("readonly", "true")), e != null && e.disabled && (a == null || a.setAttribute("disabled", "true")), r != null && r.pattern && (a == null || a.setAttribute("pattern", r.pattern)), r != null && r.minLength && (a == null || a.setAttribute("minlength", r.minLength.toString())), r != null && r.maxLength && (a == null || a.setAttribute("maxlength", r.maxLength.toString())), r != null && r.min && (a == null || a.setAttribute("min", r.min.toString())), r != null && r.max && (a == null || a.setAttribute("max", r.max.toString())), e != null && e.className && (a == null || a.classList.add(e.className)), e != null && e.id && (a == null || a.setAttribute("id", e.id)), l.appendChild(u), a && l.appendChild(a), l;
}
}
export {
S as FieldBuilder
};