1 line
No EOL
20 KiB
JavaScript
1 line
No EOL
20 KiB
JavaScript
import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{r as s}from"./fieldTypesMeta-BFbkZTaX.js";import{t as c}from"./eye-CkF1gwUX.js";import{n as l,t as u}from"./move-up-qiRY8MuU.js";import{t as d}from"./save-D8euL60I.js";import{B as f,C as ee,D as te,H as p,a as m,d as h,et as g,m as ne,n as re,tt as _,u as v,w as y,y as b}from"./index-CyHCRa3Z.js";var x={name:`redo-2`,size:24,node:[[`path`,{d:`m15 14 5-5-5-5`,key:`12vg1m`}],[`path`,{d:`M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13`,key:`6uklza`}]]};x.node;var S=r(x),C={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};C.node;var w=r(C),T=t(e(),1);function E(){let[e,t]=(0,T.useState)(null),[n,r]=(0,T.useState)(!1),[i,a]=(0,T.useState)([]),[o,s]=(0,T.useState)(-1),c=(0,T.useCallback)(e=>{t(e),a([e]),s(0),r(!1)},[]),l=(0,T.useCallback)(e=>{a(t=>{let n=[...t.slice(0,o+1),e];return n.length>50&&n.shift(),n}),s(e=>Math.min(e+1,49)),t(e),r(!0)},[o]),u=(0,T.useCallback)(()=>{if(o>0){let e=o-1;s(e),t(i[e]),r(!0)}},[o,i]),d=(0,T.useCallback)(()=>{if(o<i.length-1){let e=o+1;s(e),t(i[e]),r(!0)}},[o,i]);return(0,T.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key===`z`&&!e.shiftKey?(e.preventDefault(),u()):((e.ctrlKey||e.metaKey)&&e.key===`y`||(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.key===`z`)&&(e.preventDefault(),d())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u,d]),{currentLayout:e,setCurrentLayout:t,isDirty:n,setIsDirty:r,history:i,historyIndex:o,pushState:l,handleUndo:u,handleRedo:d,initHistory:c,canUndo:o>0,canRedo:o<i.length-1}}var D=a(),O=()=>{let{entityCode:e}=_(),t=g(),{currentEntity:r,layouts:a,saveLayout:x}=p(e),{showToast:C}=o(),[O,k]=(0,T.useState)(`desktop`),[A,j]=(0,T.useState)(!1),[M,ie]=(0,T.useState)(``),[N,P]=(0,T.useState)(null),[F,I]=(0,T.useState)({}),{currentLayout:L,isDirty:R,setIsDirty:z,history:B,historyIndex:V,pushState:H,handleUndo:U,handleRedo:W,initHistory:G}=E();(0,T.useEffect)(()=>{r&&!L&&Promise.resolve().then(()=>{let t=a.find(t=>t.entityCode===e&&t.isDefault)||a[0];if(t)G(t);else{let t={id:`layout_${e}_default`,entityCode:e||``,name:`Основная форма`,isDefault:!0,type:`form`,sections:[{id:`sec_main`,title:`Основные сведения`,columns:2,fieldKeys:r.fields.map(e=>e.key)}]};G(t)}})},[r,a,e,L,G]);let K=(0,T.useMemo)(()=>r?.fields||[],[r]),q=(0,T.useMemo)(()=>{let e=new Map;return K.forEach(t=>e.set(t.key,t)),e},[K]),J=(0,T.useMemo)(()=>{let e=new Set;return L?.sections.forEach(t=>{t.fieldKeys.forEach(t=>e.add(t))}),e},[L]),ae=(0,T.useMemo)(()=>K.filter(e=>e.label.toLowerCase().includes(M.toLowerCase())||e.key.toLowerCase().includes(M.toLowerCase())||e.type.toLowerCase().includes(M.toLowerCase())),[K,M]),oe=(e,t)=>{if(!L)return;let n=t?L.sections.find(e=>e.id===t):L.sections[0];if(!n)return;let r=L.sections.map(t=>t.id===n.id&&!t.fieldKeys.includes(e)?{...t,fieldKeys:[...t.fieldKeys,e]}:t);H({...L,sections:r})},se=(e,t)=>{if(!L)return;let n=L.sections.map(n=>n.id===e?{...n,fieldKeys:n.fieldKeys.filter(e=>e!==t)}:n);N===t&&P(null),H({...L,sections:n})},Y=(e,t,n)=>{if(!L)return;let r=L.sections.map(r=>{if(r.id===e){let e=[...r.fieldKeys],[i]=e.splice(t,1);return e.splice(n,0,i),{...r,fieldKeys:e}}return r});H({...L,sections:r})},ce=(e,t,n)=>{if(!L||e===t)return;let r=L.sections.map(r=>r.id===e?{...r,fieldKeys:r.fieldKeys.filter(e=>e!==n)}:r.id===t?{...r,fieldKeys:[...r.fieldKeys,n]}:r);H({...L,sections:r})},le=()=>{if(!L)return;let e={id:`sec_${Date.now().toString(36)}`,title:`Новая секция ${L.sections.length+1}`,columns:2,fieldKeys:[]};H({...L,sections:[...L.sections,e]})},X=(e,t)=>{if(!L)return;let n=L.sections.map(n=>n.id===e?{...n,...t}:n);H({...L,sections:n})},ue=e=>{if(!L||L.sections.length<=1){C({type:`error`,title:`Форма должна содержать минимум одну секцию`});return}let t=L.sections.filter(t=>t.id!==e);H({...L,sections:t})},Z=(e,t)=>{if(!L)return;let n=[...L.sections],[r]=n.splice(e,1);n.splice(t,0,r),H({...L,sections:n})},de=async()=>{if(L)try{await x(L),z(!1),C({type:`success`,title:`Макет формы успешно сохранён`})}catch(e){C({type:`error`,title:`Ошибка сохранения макета`,message:e instanceof Error?e.message:String(e)})}},fe={desktop:`w-full max-w-5xl`,tablet:`w-full max-w-[768px]`,mobile:`w-full max-w-[390px]`}[O],Q=N?q.get(N):null,$=N&&F[N]||{};return(0,D.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,D.jsxs)(`div`,{className:`flex flex-col md:flex-row md:items-center justify-between gap-3 p-4 bg-krona-surface border border-krona-border rounded-xl shadow-krona-soft`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsxs)(n,{variant:`ghost`,size:`sm`,onClick:()=>t(`/settings/entities`),className:`p-1.5`,children:[(0,D.jsx)(f,{className:`w-4 h-4 mr-1`}),`Каталог`]}),(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsxs)(`h1`,{className:`text-base font-bold text-krona-primary`,children:[`Конструктор форм: `,r?.name||e]}),R&&(0,D.jsx)(i,{variant:`warning`,size:`sm`,children:`Несохранённые изменения`})]}),(0,D.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Визуальное проектирование экранных форм, секций, колонок и адаптивности`})]})]}),(0,D.jsxs)(`div`,{className:`flex items-center flex-wrap gap-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center bg-krona-workspace rounded-lg border border-krona-border/80 p-0.5`,children:[(0,D.jsx)(`button`,{onClick:U,disabled:V<=0,className:`p-1.5 rounded text-krona-secondary hover:text-krona-primary disabled:opacity-30 disabled:cursor-not-allowed`,title:`Отменить (Ctrl+Z)`,children:(0,D.jsx)(w,{className:`w-4 h-4`})}),(0,D.jsx)(`button`,{onClick:W,disabled:V>=B.length-1,className:`p-1.5 rounded text-krona-secondary hover:text-krona-primary disabled:opacity-30 disabled:cursor-not-allowed`,title:`Повторить (Ctrl+Y)`,children:(0,D.jsx)(S,{className:`w-4 h-4`})})]}),(0,D.jsxs)(`div`,{className:`flex items-center bg-krona-workspace rounded-lg border border-krona-border/80 p-0.5`,children:[(0,D.jsx)(`button`,{onClick:()=>k(`desktop`),className:`p-1.5 rounded ${O===`desktop`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Десктоп (1440px)`,children:(0,D.jsx)(y,{className:`w-4 h-4`})}),(0,D.jsx)(`button`,{onClick:()=>k(`tablet`),className:`p-1.5 rounded ${O===`tablet`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Планшет (768px)`,children:(0,D.jsx)(h,{className:`w-4 h-4`})}),(0,D.jsx)(`button`,{onClick:()=>k(`mobile`),className:`p-1.5 rounded ${O===`mobile`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Мобильный (390px)`,children:(0,D.jsx)(ne,{className:`w-4 h-4`})})]}),(0,D.jsxs)(n,{variant:A?`secondary`:`outline`,size:`sm`,onClick:()=>j(!A),children:[(0,D.jsx)(c,{className:`w-3.5 h-3.5 mr-1 text-krona-gold`}),A?`В редактор`:`Предпросмотр`]}),(0,D.jsxs)(n,{variant:`primary`,size:`sm`,onClick:de,disabled:!R&&!L,children:[(0,D.jsx)(d,{className:`w-3.5 h-3.5 mr-1`}),`Сохранить`]})]})]}),(0,D.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-12 gap-4 items-start`,children:[!A&&(0,D.jsxs)(`div`,{className:`lg:col-span-3 bg-krona-surface border border-krona-border rounded-xl p-3.5 shadow-krona-soft space-y-3 sticky top-4`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,D.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,D.jsx)(te,{className:`w-3.5 h-3.5 text-krona-green`}),`Палитра полей`]}),(0,D.jsx)(i,{variant:`neutral`,size:`sm`,children:K.length})]}),(0,D.jsx)(`div`,{className:`relative`,children:(0,D.jsx)(m,{value:M,onChange:e=>ie(e.target.value),placeholder:`Поиск полей...`,icon:(0,D.jsx)(b,{className:`w-3 h-3`}),className:`text-xs py-1`})}),(0,D.jsx)(`div`,{className:`space-y-1.5 max-h-[520px] overflow-y-auto pr-1`,children:ae.map(e=>{let t=J.has(e.key),n=s(e.type).icon;return(0,D.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded-lg border text-xs transition-all ${t?`bg-krona-workspace/40 border-krona-border/40 opacity-60`:`bg-krona-surface border-krona-border hover:border-krona-green hover:shadow-xs`}`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,D.jsx)(`div`,{className:`w-6 h-6 rounded bg-krona-workspace flex items-center justify-center shrink-0 border border-krona-border/50`,children:(0,D.jsx)(n,{className:`w-3 h-3 text-krona-green`})}),(0,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.jsx)(`p`,{className:`font-medium text-krona-primary truncate leading-snug`,children:e.label}),(0,D.jsx)(`p`,{className:`font-mono text-[10px] text-krona-secondary truncate`,children:e.key})]})]}),(0,D.jsx)(`button`,{type:`button`,disabled:t,onClick:()=>oe(e.key),className:`px-2 py-1 rounded text-[10px] font-semibold shrink-0 cursor-pointer ${t?`text-krona-secondary cursor-not-allowed`:`bg-krona-green/10 text-krona-green hover:bg-krona-green hover:text-white`}`,title:t?`Уже на форме`:`Добавить в секцию`,children:t?`Добавлено`:`+ Добавить`})]},e.key)})}),(0,D.jsx)(`div`,{className:`pt-2 border-t border-krona-border/60`,children:(0,D.jsxs)(n,{variant:`outline`,size:`sm`,className:`w-full text-xs`,onClick:le,children:[(0,D.jsx)(ee,{className:`w-3.5 h-3.5 mr-1`}),`Создать секцию`]})})]}),(0,D.jsx)(`div`,{className:`${A?`lg:col-span-12`:`lg:col-span-9`} flex flex-col items-center transition-all`,children:(0,D.jsxs)(`div`,{className:`${fe} transition-all duration-200 space-y-4`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 bg-krona-surface-muted/60 border border-krona-border rounded-lg text-xs text-krona-secondary`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsxs)(`span`,{className:`font-semibold text-krona-primary capitalize`,children:[`Режим: `,O]}),(0,D.jsx)(`span`,{children:`•`}),(0,D.jsx)(`span`,{children:O===`desktop`?`1440px`:O===`tablet`?`768px`:`390px`})]}),A&&(0,D.jsx)(i,{variant:`gold`,size:`sm`,children:`Режим интерактивного тестирования`})]}),L?.sections.map((e,t)=>{let n={1:`grid-cols-1`,2:`grid-cols-1 md:grid-cols-2`,3:`grid-cols-1 md:grid-cols-3`,4:`grid-cols-1 md:grid-cols-4`}[O===`mobile`?1:e.columns];return(0,D.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pb-2 border-b border-krona-border/60`,children:[A?(0,D.jsx)(`h3`,{className:`font-semibold text-sm text-krona-primary`,children:e.title}):(0,D.jsx)(`div`,{className:`flex items-center gap-2 flex-1`,children:(0,D.jsx)(`input`,{type:`text`,value:e.title,onChange:t=>X(e.id,{title:t.target.value}),className:`font-semibold text-sm text-krona-primary bg-transparent border-b border-transparent hover:border-krona-border focus:border-krona-green focus:outline-none px-1 py-0.5 rounded`})}),!A&&(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(`div`,{className:`flex items-center gap-1 bg-krona-workspace rounded p-0.5 border border-krona-border`,children:[1,2,3,4].map(t=>(0,D.jsxs)(`button`,{onClick:()=>X(e.id,{columns:t}),className:`px-1.5 py-0.5 text-[10px] font-bold rounded ${e.columns===t?`bg-krona-green text-white`:`text-krona-secondary hover:text-krona-primary`}`,title:`${t} колонок`,children:[t,`C`]},t))}),(0,D.jsx)(`button`,{onClick:()=>Z(t,t-1),disabled:t===0,className:`p-1 text-krona-secondary hover:text-krona-primary disabled:opacity-30`,title:`Переместить секцию вверх`,children:(0,D.jsx)(u,{className:`w-3.5 h-3.5`})}),(0,D.jsx)(`button`,{onClick:()=>Z(t,t+1),disabled:t===L.sections.length-1,className:`p-1 text-krona-secondary hover:text-krona-primary disabled:opacity-30`,title:`Переместить секцию вниз`,children:(0,D.jsx)(l,{className:`w-3.5 h-3.5`})}),(0,D.jsx)(`button`,{onClick:()=>ue(e.id),className:`p-1 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Удалить секцию`,children:(0,D.jsx)(v,{className:`w-3.5 h-3.5`})})]})]}),(0,D.jsxs)(`div`,{className:`grid ${n} gap-3 min-h-[50px]`,children:[e.fieldKeys.map((t,n)=>{let r=q.get(t);if(!r)return null;let a=s(r.type),o=a.icon,c=F[t]||{},l=N===t;return A?(0,D.jsxs)(`div`,{className:`p-3 bg-krona-workspace/40 rounded-lg border border-krona-border/60 space-y-1`,children:[(0,D.jsxs)(`label`,{className:`text-xs font-semibold text-krona-primary block`,children:[c.label||r.label,(c.required??r.required)&&(0,D.jsx)(`span`,{className:`text-krona-danger ml-1`,children:`*`})]}),r.type===`status`||r.type===`select`?(0,D.jsxs)(`select`,{className:`w-full bg-krona-surface border border-krona-border rounded-md px-2.5 py-1.5 text-xs text-krona-primary`,children:[(0,D.jsx)(`option`,{value:``,children:`Выберите вариант...`}),r.options?.map(e=>(0,D.jsx)(`option`,{value:e.value,children:e.label},e.value))]}):r.type===`boolean`?(0,D.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,D.jsx)(`input`,{type:`checkbox`,className:`rounded text-krona-green`}),(0,D.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Да / Нет`})]}):r.type===`long_text`||r.type===`rich_text`?(0,D.jsx)(`textarea`,{placeholder:c.placeholder||r.placeholder||`Введите текст...`,className:`w-full bg-krona-surface border border-krona-border rounded-md px-2.5 py-1.5 text-xs text-krona-primary`,rows:2}):(0,D.jsx)(`input`,{type:r.type===`number`||r.type===`integer`?`number`:`text`,placeholder:c.placeholder||r.placeholder||`Значение...`,className:`w-full bg-krona-surface border border-krona-border rounded-md px-2.5 py-1.5 text-xs text-krona-primary`}),(c.helpText||r.description)&&(0,D.jsx)(`p`,{className:`text-[10px] text-krona-secondary`,children:c.helpText||r.description})]},t):(0,D.jsxs)(`div`,{onClick:()=>P(t),className:`flex flex-col justify-between p-3 rounded-lg border text-xs cursor-pointer transition-all ${l?`bg-krona-green/5 border-krona-green ring-1 ring-krona-green`:`bg-krona-workspace/60 border-krona-border hover:border-krona-secondary`}`,children:[(0,D.jsxs)(`div`,{className:`flex items-start justify-between gap-1.5 mb-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,D.jsx)(`div`,{className:`w-6 h-6 rounded bg-krona-surface flex items-center justify-center border border-krona-border/60 shrink-0`,children:(0,D.jsx)(o,{className:`w-3.5 h-3.5 text-krona-green`})}),(0,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.jsxs)(`span`,{className:`font-semibold text-krona-primary truncate block`,children:[c.label||r.label,(c.required??r.required)&&(0,D.jsx)(`span`,{className:`text-krona-danger ml-0.5`,children:`*`})]}),(0,D.jsx)(`span`,{className:`font-mono text-[10px] text-krona-secondary block truncate`,children:r.key})]})]}),(0,D.jsx)(i,{variant:`neutral`,size:`sm`,className:`text-[10px] shrink-0`,children:a.label})]}),(0,D.jsxs)(`div`,{className:`flex items-center justify-between pt-1 border-t border-krona-border/40 text-[11px] text-krona-secondary`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,D.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),Y(e.id,n,Math.max(0,n-1))},disabled:n===0,className:`p-0.5 hover:text-krona-primary disabled:opacity-20`,title:`Переместить влево/вверх`,children:`←`}),(0,D.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),Y(e.id,n,Math.min(e.fieldKeys.length-1,n+1))},disabled:n===e.fieldKeys.length-1,className:`p-0.5 hover:text-krona-primary disabled:opacity-20`,title:`Переместить вправо/вниз`,children:`→`})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,children:[L.sections.length>1&&(0,D.jsxs)(`select`,{onClick:e=>e.stopPropagation(),onChange:n=>{ce(e.id,n.target.value,t)},value:``,className:`text-[10px] bg-krona-surface border border-krona-border rounded px-1 py-0.5`,title:`Перенести в другую секцию`,children:[(0,D.jsx)(`option`,{value:``,disabled:!0,children:`Перенести...`}),L.sections.filter(t=>t.id!==e.id).map(e=>(0,D.jsx)(`option`,{value:e.id,children:e.title},e.id))]}),(0,D.jsx)(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),se(e.id,t)},className:`p-0.5 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Убрать с формы`,children:(0,D.jsx)(v,{className:`w-3 h-3`})})]})]})]},t)}),e.fieldKeys.length===0&&!A&&(0,D.jsx)(`div`,{className:`col-span-full py-6 text-center border border-dashed border-krona-border rounded-lg text-xs text-krona-secondary`,children:`Секция пуста. Нажмите «+ Добавить» в левой палитре полей.`})]})]},e.id)})]})})]}),(0,D.jsx)(re,{isOpen:!!Q&&!A,onClose:()=>P(null),title:Q?`Свойства поля: ${Q.label}`:`Свойства`,subtitle:`Код: ${N} | Тип: ${Q?.type}`,width:`md`,children:Q&&(0,D.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,D.jsx)(m,{label:`Пользовательский заголовок (Label Override)`,value:$.label??Q.label,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],label:e.target.value}})),placeholder:Q.label}),(0,D.jsx)(m,{label:`Подсказка (Placeholder)`,value:$.placeholder??Q.placeholder??``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],placeholder:e.target.value}})),placeholder:`Введите текст подсказки...`}),(0,D.jsx)(m,{label:`Текст справки / описания`,value:$.helpText??Q.description??``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],helpText:e.target.value}})),placeholder:`Пояснение для пользователя...`}),(0,D.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-2`,children:[(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer font-medium text-krona-primary`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:$.required??Q.required??!1,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],required:e.target.checked}})),className:`rounded text-krona-green`}),`Обязательно для заполнения на этой форме`]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer font-medium text-krona-primary`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:$.readOnly??Q.readOnly??!1,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],readOnly:e.target.checked}})),className:`rounded text-krona-green`}),`Только чтение (Read-Only)`]})]}),(0,D.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-2`,children:[(0,D.jsx)(`span`,{className:`font-semibold text-krona-primary block`,children:`Условное отображение (Conditional Logic)`}),(0,D.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Показывать поле только при соблюдении условия:`}),(0,D.jsxs)(`div`,{className:`space-y-2`,children:[(0,D.jsxs)(`select`,{value:$.conditionFieldKey||``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],conditionFieldKey:e.target.value}})),className:`w-full bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1`,children:[(0,D.jsx)(`option`,{value:``,children:`Без условий (всегда отображать)`}),K.filter(e=>e.key!==Q.key).map(e=>(0,D.jsxs)(`option`,{value:e.key,children:[`Если `,e.label,` (`,e.key,`)`]},e.key))]}),$.conditionFieldKey&&(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,D.jsxs)(`select`,{value:$.conditionOperator||`eq`,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],conditionOperator:e.target.value}})),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1`,children:[(0,D.jsx)(`option`,{value:`eq`,children:`равно (=)`}),(0,D.jsx)(`option`,{value:`neq`,children:`не равно (≠)`}),(0,D.jsx)(`option`,{value:`contains`,children:`содержит`})]}),(0,D.jsx)(`input`,{type:`text`,placeholder:`Значение...`,value:$.conditionValue||``,onChange:e=>I(t=>({...t,[Q.key]:{...t[Q.key],conditionValue:e.target.value}})),className:`bg-krona-surface text-krona-primary border border-krona-border rounded px-2 py-1`})]})]})]}),(0,D.jsx)(`div`,{className:`flex justify-end gap-2 pt-3 border-t border-krona-border`,children:(0,D.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>P(null),children:`Готово`})})]})})]})};export{O as FormBuilder,O as default}; |