UNPKG

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
/*! 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 };