mirror of
https://github.com/wasrusgen/zov-tech.git
synced 2026-06-03 17:04:48 +00:00
miniapp: compact pin layout for wizard steps without pictograms
- Steps with pict (1-3 fridge: install/chamber/size) keep grid cards - Steps without pict (4 features) render as flex-wrap pill pins - Auto-detect via options.some(o => o.pict)
This commit is contained in:
parent
17b112f061
commit
d289f7601e
@ -883,14 +883,21 @@
|
|||||||
color: var(--muted);
|
color: var(--muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Сетка карточек */
|
/* Сетка карточек (cards-режим — с пиктограммами) */
|
||||||
.wiz-grid {
|
.wiz-grid { gap: 10px; }
|
||||||
|
.wiz-grid--cards {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
gap: 10px;
|
|
||||||
}
|
}
|
||||||
@media (min-width: 540px) {
|
@media (min-width: 540px) {
|
||||||
.wiz-grid { grid-template-columns: repeat(3, 1fr); }
|
.wiz-grid--cards { grid-template-columns: repeat(3, 1fr); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Пин-режим (без пиктограмм, компактные таблетки) */
|
||||||
|
.wiz-grid--pins {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wiz-card {
|
.wiz-card {
|
||||||
@ -970,6 +977,41 @@
|
|||||||
}
|
}
|
||||||
.wiz-tick svg { width: 11px; height: 11px; stroke-width: 2.5; }
|
.wiz-tick svg { width: 11px; height: 11px; stroke-width: 2.5; }
|
||||||
|
|
||||||
|
/* Пин-карточка (компактная таблетка, без пиктограммы) */
|
||||||
|
.wiz-card--pin {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 9px 14px 9px 14px;
|
||||||
|
border-radius: var(--r-pill);
|
||||||
|
width: auto;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.wiz-card--pin .wiz-pict,
|
||||||
|
.wiz-card--pin .wiz-pict-placeholder { display: none; }
|
||||||
|
.wiz-card--pin .wiz-label {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
}
|
||||||
|
.wiz-card--pin .wiz-hint {
|
||||||
|
font-size: 9.5px;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
text-transform: none;
|
||||||
|
font-family: var(--font-sans);
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
.wiz-card--pin .wiz-tick {
|
||||||
|
position: static;
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
}
|
||||||
|
.wiz-card--pin .wiz-tick svg { width: 9px; height: 9px; }
|
||||||
|
.wiz-card--pin.star { padding-left: 26px; }
|
||||||
|
.wiz-card--pin.star::before { top: 50%; transform: translateY(-50%); }
|
||||||
|
|
||||||
/* Review-экран */
|
/* Review-экран */
|
||||||
.rev-list {
|
.rev-list {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|||||||
@ -352,15 +352,31 @@ const Podbor = (function () {
|
|||||||
return o ? `<span class="wiz-chip" data-jump="${s.key}">${o.label}</span>` : "";
|
return o ? `<span class="wiz-chip" data-jump="${s.key}">${o.label}</span>` : "";
|
||||||
}).join("");
|
}).join("");
|
||||||
|
|
||||||
|
// Определяем layout: если ни у одной опции нет pict — компактные пин-кнопки,
|
||||||
|
// иначе — крупные карточки с пиктограммами.
|
||||||
|
const hasPicts = options.some(o => o.pict && PODBOR_PICTS[o.pict]);
|
||||||
|
const gridMode = hasPicts ? "cards" : "pins";
|
||||||
|
|
||||||
const cardsHtml = options.map(o => {
|
const cardsHtml = options.map(o => {
|
||||||
const isOn = isMulti ? currentArr.includes(o.key) : currentVal === o.key;
|
const isOn = isMulti ? currentArr.includes(o.key) : currentVal === o.key;
|
||||||
const pict = o.pict && PODBOR_PICTS[o.pict];
|
const pict = o.pict && PODBOR_PICTS[o.pict];
|
||||||
|
const cardCls = "wiz-card" + (hasPicts ? "" : " wiz-card--pin") + (isOn ? " on" : "") + (o.star ? " star" : "");
|
||||||
|
if (hasPicts) {
|
||||||
|
return `
|
||||||
|
<button class="${cardCls}" data-val="${o.key}">
|
||||||
|
${pict ? `<div class="wiz-pict">${pict}</div>` : `<div class="wiz-pict wiz-pict-placeholder"></div>`}
|
||||||
|
<div class="wiz-label">${o.label}</div>
|
||||||
|
${o.hint ? `<div class="wiz-hint">${o.hint}</div>` : ""}
|
||||||
|
${isOn ? `<div class="wiz-tick">${ICONS.check}</div>` : ""}
|
||||||
|
</button>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
// Пин-режим: компактная inline-кнопка с label, опц. hint мелкий справа
|
||||||
return `
|
return `
|
||||||
<button class="wiz-card${isOn ? " on" : ""}${o.star ? " star" : ""}" data-val="${o.key}">
|
<button class="${cardCls}" data-val="${o.key}">
|
||||||
${pict ? `<div class="wiz-pict">${pict}</div>` : `<div class="wiz-pict wiz-pict-placeholder"></div>`}
|
<span class="wiz-label">${o.label}</span>
|
||||||
<div class="wiz-label">${o.label}</div>
|
${o.hint ? `<span class="wiz-hint">${o.hint}</span>` : ""}
|
||||||
${o.hint ? `<div class="wiz-hint">${o.hint}</div>` : ""}
|
${isOn ? `<span class="wiz-tick">${ICONS.check}</span>` : ""}
|
||||||
${isOn ? `<div class="wiz-tick">${ICONS.check}</div>` : ""}
|
|
||||||
</button>
|
</button>
|
||||||
`;
|
`;
|
||||||
}).join("");
|
}).join("");
|
||||||
@ -383,7 +399,7 @@ const Podbor = (function () {
|
|||||||
|
|
||||||
<h3 class="wiz-title">${step.title}${isMulti ? ' <span class="wiz-multi">· можно несколько</span>' : ""}</h3>
|
<h3 class="wiz-title">${step.title}${isMulti ? ' <span class="wiz-multi">· можно несколько</span>' : ""}</h3>
|
||||||
|
|
||||||
<div class="wiz-grid">${cardsHtml}</div>
|
<div class="wiz-grid wiz-grid--${gridMode}">${cardsHtml}</div>
|
||||||
|
|
||||||
<div class="podbor-cta-row">
|
<div class="podbor-cta-row">
|
||||||
${stepIdx > 0
|
${stepIdx > 0
|
||||||
|
|||||||
@ -12,8 +12,8 @@
|
|||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Geist:wght@400;500;600&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&display=swap">
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Geist:wght@400;500;600&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&display=swap">
|
||||||
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
||||||
<link rel="stylesheet" href="assets/styles.css?v=20260510b">
|
<link rel="stylesheet" href="assets/styles.css?v=20260511a">
|
||||||
<link rel="stylesheet" href="assets/podbor.css?v=20260510b">
|
<link rel="stylesheet" href="assets/podbor.css?v=20260511a">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main id="app">
|
<main id="app">
|
||||||
@ -21,10 +21,10 @@
|
|||||||
<div class="spinner"></div>
|
<div class="spinner"></div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<script src="assets/icons.js?v=20260510b"></script>
|
<script src="assets/icons.js?v=20260511a"></script>
|
||||||
<script src="assets/podbor.config.js?v=20260510b"></script>
|
<script src="assets/podbor.config.js?v=20260511a"></script>
|
||||||
<script src="assets/podbor.picts.js?v=20260510b"></script>
|
<script src="assets/podbor.picts.js?v=20260511a"></script>
|
||||||
<script src="assets/podbor.js?v=20260510b"></script>
|
<script src="assets/podbor.js?v=20260511a"></script>
|
||||||
<script src="assets/app.js?v=20260510b"></script>
|
<script src="assets/app.js?v=20260511a"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user