Update NODEDC admin content and modules
This commit is contained in:
+8
-1
@@ -1214,12 +1214,19 @@ body[data-file-picker-active="true"] .editor {
|
||||
}
|
||||
|
||||
.collection-drag-handle {
|
||||
letter-spacing: -0.12em;
|
||||
cursor: grab;
|
||||
touch-action: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.collection-drag-handle svg {
|
||||
display: block;
|
||||
width: 0.75rem;
|
||||
height: 1.125rem;
|
||||
fill: currentColor;
|
||||
opacity: 0.78;
|
||||
}
|
||||
|
||||
.collection-drag-handle:active {
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
+23
-13
@@ -93,7 +93,7 @@ const STATIC_FALLBACK = {
|
||||
{
|
||||
enabled: true,
|
||||
title: "NODE.DC",
|
||||
href: "#hero",
|
||||
href: "javascript:void(0)",
|
||||
linkTarget: "",
|
||||
targetId: "app-data",
|
||||
iconSrc: "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg",
|
||||
@@ -105,7 +105,7 @@ const STATIC_FALLBACK = {
|
||||
{
|
||||
enabled: true,
|
||||
title: "Корзина",
|
||||
href: "",
|
||||
href: "javascript:void(0)",
|
||||
linkTarget: "",
|
||||
targetId: "",
|
||||
iconSrc: "./assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif",
|
||||
@@ -166,7 +166,7 @@ const STATIC_FALLBACK = {
|
||||
{
|
||||
enabled: true,
|
||||
title: "Новое приложение",
|
||||
href: "#hero",
|
||||
href: "javascript:void(0)",
|
||||
linkTarget: "",
|
||||
targetId: "",
|
||||
iconSrc: "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg",
|
||||
@@ -207,7 +207,7 @@ const GROUP_COPY = {
|
||||
"Верхний информационный блок": "Верхняя пара: длинный текст и крупный заголовок над медиаслайдером.",
|
||||
"Нижний информационный блок": "Нижняя зеркальная пара: крупный заголовок и длинный текст под медиаслайдером.",
|
||||
"Тезисы первого экрана": "Четыре смысловых тезиса вокруг формы раннего доступа.",
|
||||
"Карточка доступа": "Логотипы, тексты и видимость центрального окна приложения.",
|
||||
"Карточка доступа": "Единый компонент окна заявки: редактируется здесь и повторяется в нижнем блоке запроса DEMO.",
|
||||
Форма: "Плейсхолдеры, кнопки, success/failure состояния формы.",
|
||||
"Юридический блок": "Политики, права и нижний текст формы.",
|
||||
"Видео-окно": "Окно демо-видео и подключенный медиа-файл.",
|
||||
@@ -220,11 +220,16 @@ const GROUP_COPY = {
|
||||
Отправитель: "Профиль отправителя в FAQ: аватар, имя и подписи письма.",
|
||||
FAQ: "Вопросы и ответы mail-интерфейса. Каждый пункт можно добавить, удалить и переставить.",
|
||||
CTA: "Финальный призыв к действию: заголовок, пояснение, кнопка и ссылка.",
|
||||
Тарифы: "Верхняя часть тарифной таблицы: заголовки, планы, цены, кнопки и примечания.",
|
||||
"Центральный текст": "Отдельный центрированный текстовый блок: надзаголовок, крупная строка и три подписи.",
|
||||
Тарифы: "Окно тарифной таблицы: планы, цены, кнопки и примечания.",
|
||||
"Строки тарифов": "Повторяемые строки тарифной таблицы и значения по каждому плану.",
|
||||
"Медиа-галерея": "Окна с изображениями, подписи файлов и связанные иконки.",
|
||||
"Карточки скриншотов": "Скриншоты в виде окон и файлов: каждый элемент можно скрыть, переставить, дублировать или удалить.",
|
||||
"TXT-файлы": "Список файлов листа ожидания: название окна, подпись и текст внутри файла.",
|
||||
Футер: "Нижняя навигация, контактные ссылки, политики и брендовый блок.",
|
||||
Футер: "Брендовый блок, копирайт и базовые ассеты футера.",
|
||||
"Навигация футера": "Ссылки навигационной колонки футера. Каждый пункт можно скрыть, переставить, дублировать или удалить.",
|
||||
"Контактные ссылки": "Ссылки контактной колонки футера. Каждый пункт можно скрыть, переставить, дублировать или удалить.",
|
||||
Политики: "Нижняя строка политик и условия отображения.",
|
||||
Контент: "Остальные typed-поля выбранного блока.",
|
||||
};
|
||||
|
||||
@@ -335,7 +340,7 @@ function inferFieldGroup(path) {
|
||||
if (path.startsWith("content.cards.")) return "Тезисы первого экрана";
|
||||
if (path.startsWith("content.app.") || path.startsWith("content.accessCard.")) return "Карточка доступа";
|
||||
if (path.startsWith("content.form.")) return "Форма";
|
||||
if (path === "content.legalHtml") return "Юридический блок";
|
||||
if (path === "content.legalHtml" || path.startsWith("content.legal.")) return "Юридический блок";
|
||||
if (path === "content.windowTitle" || path === "content.videoSrc") return "Видео-окно";
|
||||
if (path.startsWith("content.features.")) return "Пункты";
|
||||
if (path.startsWith("content.scroll.")) return "Скролл";
|
||||
@@ -347,8 +352,11 @@ function inferFieldGroup(path) {
|
||||
if (path.startsWith("content.cta.")) return "CTA";
|
||||
if (path.startsWith("content.plans.") || path.startsWith("content.pricing.")) return "Тарифы";
|
||||
if (path.startsWith("content.pricingCells.")) return "Строки тарифов";
|
||||
if (path.startsWith("content.galleryItems.")) return "Медиа-галерея";
|
||||
if (path.startsWith("content.files.")) return "TXT-файлы";
|
||||
if (path === "content.galleryItems" || path.startsWith("content.galleryItems.")) return "Карточки скриншотов";
|
||||
if (path === "content.filesEnabled" || path.startsWith("content.files.")) return "TXT-файлы";
|
||||
if (path === "content.footer.policyEnabled" || path === "content.footer.policyHtml") return "Политики";
|
||||
if (path.startsWith("content.footer.navLinks.")) return "Навигация футера";
|
||||
if (path.startsWith("content.footer.contactLinks.")) return "Контактные ссылки";
|
||||
if (path.startsWith("content.footer.")) return "Футер";
|
||||
if (path.startsWith("content.heading.") || path === "content.introHtml") return "Заголовок";
|
||||
return "Контент";
|
||||
@@ -359,7 +367,7 @@ function createDefaultDockItems(dock = {}, assets = {}) {
|
||||
{
|
||||
enabled: true,
|
||||
title: "NODE.DC",
|
||||
href: "#hero",
|
||||
href: "javascript:void(0)",
|
||||
linkTarget: "",
|
||||
targetId: dock.appTarget || "app-data",
|
||||
iconSrc: assets.appIconSrc || STATIC_FALLBACK.content.assets.appIconSrc,
|
||||
@@ -371,7 +379,7 @@ function createDefaultDockItems(dock = {}, assets = {}) {
|
||||
{
|
||||
enabled: true,
|
||||
title: "Корзина",
|
||||
href: "",
|
||||
href: "javascript:void(0)",
|
||||
linkTarget: "",
|
||||
targetId: "",
|
||||
iconSrc: "./assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif",
|
||||
@@ -575,6 +583,7 @@ function blockIcon(block) {
|
||||
const type = block.type || "";
|
||||
|
||||
if (id === "static-elements") return "SE";
|
||||
if (id.includes("gallery") || id.includes("screenshot")) return "SC";
|
||||
if (id.includes("hero")) return "H";
|
||||
if (id.includes("feature") || id.includes("video")) return "V";
|
||||
if (id.includes("component")) return "C";
|
||||
@@ -1797,13 +1806,13 @@ function renderCollectionField({ block, editableField, grid }) {
|
||||
dragHandle.type = "button";
|
||||
dragHandle.title = "Перетащить элемент";
|
||||
dragHandle.setAttribute("aria-label", "Перетащить элемент");
|
||||
dragHandle.textContent = "⋮⋮";
|
||||
dragHandle.innerHTML =
|
||||
'<svg viewBox="0 0 12 18" aria-hidden="true" focusable="false"><circle cx="4" cy="4" r="1.25"></circle><circle cx="8" cy="4" r="1.25"></circle><circle cx="4" cy="9" r="1.25"></circle><circle cx="8" cy="9" r="1.25"></circle><circle cx="4" cy="14" r="1.25"></circle><circle cx="8" cy="14" r="1.25"></circle></svg>';
|
||||
dragHandle.addEventListener("click", (event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
});
|
||||
dragHandle.addEventListener("pointerdown", (event) => startCollectionPointerDrag(event, details, items, index, rerender));
|
||||
controls.append(dragHandle);
|
||||
|
||||
if (hasVisibilityToggle) {
|
||||
if (!Object.prototype.hasOwnProperty.call(item, "enabled")) item.enabled = true;
|
||||
@@ -1865,6 +1874,7 @@ function renderCollectionField({ block, editableField, grid }) {
|
||||
});
|
||||
controls.append(button);
|
||||
});
|
||||
controls.append(dragHandle);
|
||||
|
||||
summary.append(summaryTitle, controls);
|
||||
body.className = "collection-item-body";
|
||||
|
||||
Reference in New Issue
Block a user