diff --git a/public/funnels/soulmate.json b/public/funnels/soulmate.json
index bfc045c..1ef75d5 100644
--- a/public/funnels/soulmate.json
+++ b/public/funnels/soulmate.json
@@ -124,7 +124,7 @@
},
"navigation": {
"rules": [],
- "defaultNextScreenId": "relationship-status",
+ "defaultNextScreenId": "partner-gender",
"isEndScreen": false
},
"list": {
@@ -147,6 +147,50 @@
},
"variants": []
},
+ {
+ "id": "partner-gender",
+ "template": "list",
+ "header": {
+ "showBackButton": true,
+ "show": true
+ },
+ "title": {
+ "text": "Кто вас интересует?",
+ "show": true,
+ "font": "manrope",
+ "weight": "bold",
+ "size": "2xl",
+ "align": "left",
+ "color": "default"
+ },
+ "bottomActionButton": {
+ "show": false,
+ "cornerRadius": "3xl",
+ "showPrivacyTermsConsent": false
+ },
+ "navigation": {
+ "rules": [],
+ "defaultNextScreenId": "relationship-status",
+ "isEndScreen": false
+ },
+ "list": {
+ "selectionType": "single",
+ "options": [
+ {
+ "id": "male",
+ "label": "Male",
+ "disabled": false
+ },
+ {
+ "id": "female",
+ "label": "Female",
+ "disabled": false
+ }
+ ],
+ "registrationFieldKey": "partner.gender"
+ },
+ "variants": []
+ },
{
"id": "relationship-status",
"template": "list",
@@ -2268,10 +2312,6 @@
"cornerRadius": "3xl",
"showPrivacyTermsConsent": false
},
- "navigation": {
- "rules": [],
- "isEndScreen": false
- },
"variants": [],
"headerBlock": {
"text": {
diff --git a/src/components/admin/builder/Sidebar/BuilderSidebar.tsx b/src/components/admin/builder/Sidebar/BuilderSidebar.tsx
index 3c08c27..98cd925 100644
--- a/src/components/admin/builder/Sidebar/BuilderSidebar.tsx
+++ b/src/components/admin/builder/Sidebar/BuilderSidebar.tsx
@@ -28,7 +28,7 @@ export function BuilderSidebar() {
const dispatch = useBuilderDispatch();
const selectedScreen = useBuilderSelectedScreen();
- const [activeTab, setActiveTab] = useState<"funnel" | "screen">(
+ const [activeTab, setActiveTab] = useState<"funnel" | "screen" | "data">(
selectedScreen ? "screen" : "funnel"
);
const selectedScreenId = selectedScreen?.id ?? null;
@@ -360,6 +360,18 @@ export function BuilderSidebar() {
>
Экран
+
@@ -478,6 +490,40 @@ export function BuilderSidebar() {
+ ) : activeTab === "data" ? (
+
+
+ {state.screens
+ .filter((screen) => screen.template === "list")
+ .map((screen) => (
+
+
+ {screen.id}
+
+
+ {isListScreen(screen) &&
+ screen.list.options.map((option) => (
+
+ {option.id}
+
+ ))}
+
+
+ ))}
+ {state.screens.filter((screen) => screen.template === "list")
+ .length === 0 && (
+
+ Нет list экранов
+
+ )}
+
+
) : selectedScreen ? (
{/* Валидация всегда вверху, без заголовка */}
diff --git a/src/components/funnel/templates/ListTemplate/ListTemplate.tsx b/src/components/funnel/templates/ListTemplate/ListTemplate.tsx
index 771acc9..6b646e9 100644
--- a/src/components/funnel/templates/ListTemplate/ListTemplate.tsx
+++ b/src/components/funnel/templates/ListTemplate/ListTemplate.tsx
@@ -67,13 +67,6 @@ export function ListTemplate({
? buttons.filter((button) => selectionSet.has(String(button.id)))
: null;
- const handleRadioChange: RadioAnswersListProps["onChangeSelectedAnswer"] = (
- answer
- ) => {
- const id = stringId(answer?.id);
- onSelectionChange(id ? [id] : []);
- };
-
const handleRadioAnswerClick: RadioAnswersListProps["onAnswerClick"] = (
answer
) => {
@@ -93,7 +86,8 @@ export function ListTemplate({
const radioContent: RadioAnswersListProps = {
answers: buttons,
activeAnswer,
- onChangeSelectedAnswer: handleRadioChange,
+ // Не передаем onChangeSelectedAnswer чтобы избежать двойного вызова при клике
+ // onAnswerClick достаточно для обработки выбора
onAnswerClick: handleRadioAnswerClick,
};
diff --git a/src/lib/funnel/bakedFunnels.ts b/src/lib/funnel/bakedFunnels.ts
index 00e7294..efad31b 100644
--- a/src/lib/funnel/bakedFunnels.ts
+++ b/src/lib/funnel/bakedFunnels.ts
@@ -433,7 +433,7 @@ export const BAKED_FUNNELS: Record = {
},
"navigation": {
"rules": [],
- "defaultNextScreenId": "relationship-status",
+ "defaultNextScreenId": "partner-gender",
"isEndScreen": false
},
"list": {
@@ -456,6 +456,50 @@ export const BAKED_FUNNELS: Record = {
},
"variants": []
},
+ {
+ "id": "partner-gender",
+ "template": "list",
+ "header": {
+ "showBackButton": true,
+ "show": true
+ },
+ "title": {
+ "text": "Кто вас интересует?",
+ "show": true,
+ "font": "manrope",
+ "weight": "bold",
+ "size": "2xl",
+ "align": "left",
+ "color": "default"
+ },
+ "bottomActionButton": {
+ "show": false,
+ "cornerRadius": "3xl",
+ "showPrivacyTermsConsent": false
+ },
+ "navigation": {
+ "rules": [],
+ "defaultNextScreenId": "relationship-status",
+ "isEndScreen": false
+ },
+ "list": {
+ "selectionType": "single",
+ "options": [
+ {
+ "id": "male",
+ "label": "Male",
+ "disabled": false
+ },
+ {
+ "id": "female",
+ "label": "Female",
+ "disabled": false
+ }
+ ],
+ "registrationFieldKey": "partner.gender"
+ },
+ "variants": []
+ },
{
"id": "relationship-status",
"template": "list",
@@ -2577,10 +2621,6 @@ export const BAKED_FUNNELS: Record = {
"cornerRadius": "3xl",
"showPrivacyTermsConsent": false
},
- "navigation": {
- "rules": [],
- "isEndScreen": false
- },
"variants": [],
"headerBlock": {
"text": {