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
108 lines (107 loc) • 2.82 kB
JavaScript
/*! on-codemerge v1.3.1 @author Pavel Kuzmin @license MIT @homepage https://s00d.github.io/on-codemerge/ @repository git+https://github.com/s00d/on-codemerge.git Copyright (c) 2026 Pavel Kuzmin - Built on 2026-07-02T13:39:17.947Z */
class u {
/**
* Создает поле с предустановленными настройками
*/
createPresetField(e, r, a, l) {
const t = this.generateFieldId();
return {
id: t,
type: e,
label: r,
options: {
id: t,
name: t,
className: "form-input",
placeholder: this.getDefaultPlaceholder(e),
...this.getDefaultOptions(e),
...a
},
validation: {
...this.getDefaultValidation(e),
...l
}
};
}
/**
* Генерирует уникальный ID для поля
*/
generateFieldId() {
return `field_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
}
/**
* Get default placeholder for field type
*/
getDefaultPlaceholder(e) {
return {
text: "Enter text",
textarea: "Enter text",
email: "example@email.com",
password: "Enter password",
number: "Enter number",
tel: "+1 (555) 123-4567",
url: "https://example.com",
date: "Select date",
time: "Select time",
"datetime-local": "Select date and time",
month: "Select month",
week: "Select week",
color: "#000000",
range: "Select value",
select: "Select option",
checkbox: "",
radio: "",
button: "",
submit: "",
reset: "",
file: "Choose file",
hidden: "",
image: ""
}[e] || "";
}
/**
* Получает опции по умолчанию для типа поля
*/
getDefaultOptions(e) {
switch (e) {
case "email":
return { autocomplete: "email" };
case "password":
return { autocomplete: "current-password" };
case "tel":
return { autocomplete: "tel" };
case "url":
return { autocomplete: "url" };
case "file":
return { accept: "*/*" };
case "range":
return { min: 0, max: 100, step: 1 };
case "number":
return { min: 0, step: 1 };
default:
return {};
}
}
/**
* Получает валидацию по умолчанию для типа поля
*/
getDefaultValidation(e) {
switch (e) {
case "email":
return { required: !0, email: !0 };
case "password":
return { required: !0, minLength: 6 };
case "tel":
return { pattern: "^[+]?[0-9\\s\\-\\(\\)]{10,}$" };
case "url":
return { url: !0 };
case "number":
return { numeric: !0 };
default:
return {};
}
}
}
export {
u as FieldBuilder
};