krona-front/dist/assets/FormBuilder-d4z6JEl5.js

1 line
No EOL
20 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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-BCSfJ-2N.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{$ as ee,M as te,O as f,T as p,a as m,b as h,f as g,h as ne,ht as re,mt as ie,n as _,nt as v,u as y}from"./index-CrJKtV0u.js";var b={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`}]]};b.node;var x=r(b),S={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`}]]};S.node;var C=r(S),w=t(e(),1),T=a(),E=()=>{let{entityCode:e}=re(),t=ie(),{currentEntity:r,layouts:a,saveLayout:b}=v(e),{showToast:S}=o(),[E,D]=(0,w.useState)(`desktop`),[O,k]=(0,w.useState)(!1),[A,j]=(0,w.useState)(``),[M,N]=(0,w.useState)(null),[P,F]=(0,w.useState)({}),[I,L]=(0,w.useState)(null),[R,z]=(0,w.useState)(!1),[B,V]=(0,w.useState)([]),[H,U]=(0,w.useState)(-1);(0,w.useEffect)(()=>{r&&!I&&Promise.resolve().then(()=>{let t=a.find(t=>t.entityCode===e&&t.isDefault)||a[0];if(t)L(t),V([t]),U(0);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)}]};L(t),V([t]),U(0)}})},[r,a,e,I]);let W=(0,w.useCallback)(e=>{V(t=>{let n=[...t.slice(0,H+1),e];return n.length>50&&n.shift(),n}),U(e=>Math.min(e+1,49)),L(e),z(!0)},[H]),G=(0,w.useCallback)(()=>{if(H>0){let e=H-1;U(e),L(B[e]),z(!0)}},[H,B]),K=(0,w.useCallback)(()=>{if(H<B.length-1){let e=H+1;U(e),L(B[e]),z(!0)}},[H,B]);(0,w.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key===`z`&&!e.shiftKey?(e.preventDefault(),G()):((e.ctrlKey||e.metaKey)&&e.key===`y`||(e.ctrlKey||e.metaKey)&&e.shiftKey&&e.key===`z`)&&(e.preventDefault(),K())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[G,K]);let q=(0,w.useMemo)(()=>r?.fields||[],[r]),J=(0,w.useMemo)(()=>{let e=new Map;return q.forEach(t=>e.set(t.key,t)),e},[q]),ae=(0,w.useMemo)(()=>{let e=new Set;return I?.sections.forEach(t=>{t.fieldKeys.forEach(t=>e.add(t))}),e},[I]),oe=(0,w.useMemo)(()=>q.filter(e=>e.label.toLowerCase().includes(A.toLowerCase())||e.key.toLowerCase().includes(A.toLowerCase())||e.type.toLowerCase().includes(A.toLowerCase())),[q,A]),se=(e,t)=>{if(!I)return;let n=t?I.sections.find(e=>e.id===t):I.sections[0];if(!n)return;let r=I.sections.map(t=>t.id===n.id&&!t.fieldKeys.includes(e)?{...t,fieldKeys:[...t.fieldKeys,e]}:t);W({...I,sections:r})},ce=(e,t)=>{if(!I)return;let n=I.sections.map(n=>n.id===e?{...n,fieldKeys:n.fieldKeys.filter(e=>e!==t)}:n);M===t&&N(null),W({...I,sections:n})},Y=(e,t,n)=>{if(!I)return;let r=I.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});W({...I,sections:r})},le=(e,t,n)=>{if(!I||e===t)return;let r=I.sections.map(r=>r.id===e?{...r,fieldKeys:r.fieldKeys.filter(e=>e!==n)}:r.id===t?{...r,fieldKeys:[...r.fieldKeys,n]}:r);W({...I,sections:r})},ue=()=>{if(!I)return;let e={id:`sec_${Date.now().toString(36)}`,title:`Новая секция ${I.sections.length+1}`,columns:2,fieldKeys:[]};W({...I,sections:[...I.sections,e]})},X=(e,t)=>{if(!I)return;let n=I.sections.map(n=>n.id===e?{...n,...t}:n);W({...I,sections:n})},de=e=>{if(!I||I.sections.length<=1){S({type:`error`,title:`Форма должна содержать минимум одну секцию`});return}let t=I.sections.filter(t=>t.id!==e);W({...I,sections:t})},Z=(e,t)=>{if(!I)return;let n=[...I.sections],[r]=n.splice(e,1);n.splice(t,0,r),W({...I,sections:n})},fe=async()=>{if(I)try{await b(I),z(!1),S({type:`success`,title:`Макет формы успешно сохранён`})}catch(e){S({type:`error`,title:`Ошибка сохранения макета`,message:e instanceof Error?e.message:String(e)})}},pe={desktop:`w-full max-w-5xl`,tablet:`w-full max-w-[768px]`,mobile:`w-full max-w-[390px]`}[E],Q=M?J.get(M):null,$=M&&P[M]||{};return(0,T.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,T.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,T.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,T.jsxs)(n,{variant:`ghost`,size:`sm`,onClick:()=>t(`/settings/entities`),className:`p-1.5`,children:[(0,T.jsx)(ee,{className:`w-4 h-4 mr-1`}),`Каталог`]}),(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsxs)(`h1`,{className:`text-base font-bold text-krona-primary`,children:[`Конструктор форм: `,r?.name||e]}),R&&(0,T.jsx)(i,{variant:`warning`,size:`sm`,children:`Несохранённые изменения`})]}),(0,T.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Визуальное проектирование экранных форм, секций, колонок и адаптивности`})]})]}),(0,T.jsxs)(`div`,{className:`flex items-center flex-wrap gap-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center bg-krona-workspace rounded-lg border border-krona-border/80 p-0.5`,children:[(0,T.jsx)(`button`,{onClick:G,disabled:H<=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,T.jsx)(C,{className:`w-4 h-4`})}),(0,T.jsx)(`button`,{onClick:K,disabled:H>=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,T.jsx)(x,{className:`w-4 h-4`})})]}),(0,T.jsxs)(`div`,{className:`flex items-center bg-krona-workspace rounded-lg border border-krona-border/80 p-0.5`,children:[(0,T.jsx)(`button`,{onClick:()=>D(`desktop`),className:`p-1.5 rounded ${E===`desktop`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Десктоп (1440px)`,children:(0,T.jsx)(f,{className:`w-4 h-4`})}),(0,T.jsx)(`button`,{onClick:()=>D(`tablet`),className:`p-1.5 rounded ${E===`tablet`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Планшет (768px)`,children:(0,T.jsx)(g,{className:`w-4 h-4`})}),(0,T.jsx)(`button`,{onClick:()=>D(`mobile`),className:`p-1.5 rounded ${E===`mobile`?`bg-krona-surface text-krona-green shadow-sm`:`text-krona-secondary`}`,title:`Мобильный (390px)`,children:(0,T.jsx)(ne,{className:`w-4 h-4`})})]}),(0,T.jsxs)(n,{variant:O?`secondary`:`outline`,size:`sm`,onClick:()=>k(!O),children:[(0,T.jsx)(c,{className:`w-3.5 h-3.5 mr-1 text-krona-gold`}),O?`В редактор`:`Предпросмотр`]}),(0,T.jsxs)(n,{variant:`primary`,size:`sm`,onClick:fe,disabled:!R&&!I,children:[(0,T.jsx)(d,{className:`w-3.5 h-3.5 mr-1`}),`Сохранить`]})]})]}),(0,T.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-12 gap-4 items-start`,children:[!O&&(0,T.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,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`span`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider flex items-center gap-1.5`,children:[(0,T.jsx)(te,{className:`w-3.5 h-3.5 text-krona-green`}),`Палитра полей`]}),(0,T.jsx)(i,{variant:`neutral`,size:`sm`,children:q.length})]}),(0,T.jsx)(`div`,{className:`relative`,children:(0,T.jsx)(m,{value:A,onChange:e=>j(e.target.value),placeholder:`Поиск полей...`,icon:(0,T.jsx)(h,{className:`w-3 h-3`}),className:`text-xs py-1`})}),(0,T.jsx)(`div`,{className:`space-y-1.5 max-h-[520px] overflow-y-auto pr-1`,children:oe.map(e=>{let t=ae.has(e.key),n=s(e.type).icon;return(0,T.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,T.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,T.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,T.jsx)(n,{className:`w-3 h-3 text-krona-green`})}),(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`p`,{className:`font-medium text-krona-primary truncate leading-snug`,children:e.label}),(0,T.jsx)(`p`,{className:`font-mono text-[10px] text-krona-secondary truncate`,children:e.key})]})]}),(0,T.jsx)(`button`,{type:`button`,disabled:t,onClick:()=>se(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,T.jsx)(`div`,{className:`pt-2 border-t border-krona-border/60`,children:(0,T.jsxs)(n,{variant:`outline`,size:`sm`,className:`w-full text-xs`,onClick:ue,children:[(0,T.jsx)(p,{className:`w-3.5 h-3.5 mr-1`}),`Создать секцию`]})})]}),(0,T.jsx)(`div`,{className:`${O?`lg:col-span-12`:`lg:col-span-9`} flex flex-col items-center transition-all`,children:(0,T.jsxs)(`div`,{className:`${pe} transition-all duration-200 space-y-4`,children:[(0,T.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,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsxs)(`span`,{className:`font-semibold text-krona-primary capitalize`,children:[`Режим: `,E]}),(0,T.jsx)(`span`,{children:`•`}),(0,T.jsx)(`span`,{children:E===`desktop`?`1440px`:E===`tablet`?`768px`:`390px`})]}),O&&(0,T.jsx)(i,{variant:`gold`,size:`sm`,children:`Режим интерактивного тестирования`})]}),I?.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`}[E===`mobile`?1:e.columns];return(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pb-2 border-b border-krona-border/60`,children:[O?(0,T.jsx)(`h3`,{className:`font-semibold text-sm text-krona-primary`,children:e.title}):(0,T.jsx)(`div`,{className:`flex items-center gap-2 flex-1`,children:(0,T.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`})}),!O&&(0,T.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,T.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,T.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,T.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,T.jsx)(u,{className:`w-3.5 h-3.5`})}),(0,T.jsx)(`button`,{onClick:()=>Z(t,t+1),disabled:t===I.sections.length-1,className:`p-1 text-krona-secondary hover:text-krona-primary disabled:opacity-30`,title:`Переместить секцию вниз`,children:(0,T.jsx)(l,{className:`w-3.5 h-3.5`})}),(0,T.jsx)(`button`,{onClick:()=>de(e.id),className:`p-1 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Удалить секцию`,children:(0,T.jsx)(y,{className:`w-3.5 h-3.5`})})]})]}),(0,T.jsxs)(`div`,{className:`grid ${n} gap-3 min-h-[50px]`,children:[e.fieldKeys.map((t,n)=>{let r=J.get(t);if(!r)return null;let a=s(r.type),o=a.icon,c=P[t]||{},l=M===t;return O?(0,T.jsxs)(`div`,{className:`p-3 bg-krona-workspace/40 rounded-lg border border-krona-border/60 space-y-1`,children:[(0,T.jsxs)(`label`,{className:`text-xs font-semibold text-krona-primary block`,children:[c.label||r.label,(c.required??r.required)&&(0,T.jsx)(`span`,{className:`text-krona-danger ml-1`,children:`*`})]}),r.type===`status`||r.type===`select`?(0,T.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,T.jsx)(`option`,{value:``,children:`Выберите вариант...`}),r.options?.map(e=>(0,T.jsx)(`option`,{value:e.value,children:e.label},e.value))]}):r.type===`boolean`?(0,T.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,T.jsx)(`input`,{type:`checkbox`,className:`rounded text-krona-green`}),(0,T.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Да / Нет`})]}):r.type===`long_text`||r.type===`rich_text`?(0,T.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,T.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,T.jsx)(`p`,{className:`text-[10px] text-krona-secondary`,children:c.helpText||r.description})]},t):(0,T.jsxs)(`div`,{onClick:()=>N(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,T.jsxs)(`div`,{className:`flex items-start justify-between gap-1.5 mb-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,T.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,T.jsx)(o,{className:`w-3.5 h-3.5 text-krona-green`})}),(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsxs)(`span`,{className:`font-semibold text-krona-primary truncate block`,children:[c.label||r.label,(c.required??r.required)&&(0,T.jsx)(`span`,{className:`text-krona-danger ml-0.5`,children:`*`})]}),(0,T.jsx)(`span`,{className:`font-mono text-[10px] text-krona-secondary block truncate`,children:r.key})]})]}),(0,T.jsx)(i,{variant:`neutral`,size:`sm`,className:`text-[10px] shrink-0`,children:a.label})]}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between pt-1 border-t border-krona-border/40 text-[11px] text-krona-secondary`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,T.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,T.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,T.jsxs)(`div`,{className:`flex items-center gap-1`,children:[I.sections.length>1&&(0,T.jsxs)(`select`,{onClick:e=>e.stopPropagation(),onChange:n=>{le(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,T.jsx)(`option`,{value:``,disabled:!0,children:`Перенести...`}),I.sections.filter(t=>t.id!==e.id).map(e=>(0,T.jsx)(`option`,{value:e.id,children:e.title},e.id))]}),(0,T.jsx)(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),ce(e.id,t)},className:`p-0.5 text-krona-danger hover:bg-krona-danger/10 rounded`,title:`Убрать с формы`,children:(0,T.jsx)(y,{className:`w-3 h-3`})})]})]})]},t)}),e.fieldKeys.length===0&&!O&&(0,T.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,T.jsx)(_,{isOpen:!!Q&&!O,onClose:()=>N(null),title:Q?`Свойства поля: ${Q.label}`:`Свойства`,subtitle:`Код: ${M} | Тип: ${Q?.type}`,width:`md`,children:Q&&(0,T.jsxs)(`div`,{className:`space-y-4 text-xs`,children:[(0,T.jsx)(m,{label:`Пользовательский заголовок (Label Override)`,value:$.label??Q.label,onChange:e=>F(t=>({...t,[Q.key]:{...t[Q.key],label:e.target.value}})),placeholder:Q.label}),(0,T.jsx)(m,{label:`Подсказка (Placeholder)`,value:$.placeholder??Q.placeholder??``,onChange:e=>F(t=>({...t,[Q.key]:{...t[Q.key],placeholder:e.target.value}})),placeholder:`Введите текст подсказки...`}),(0,T.jsx)(m,{label:`Текст справки / описания`,value:$.helpText??Q.description??``,onChange:e=>F(t=>({...t,[Q.key]:{...t[Q.key],helpText:e.target.value}})),placeholder:`Пояснение для пользователя...`}),(0,T.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-2`,children:[(0,T.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer font-medium text-krona-primary`,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:$.required??Q.required??!1,onChange:e=>F(t=>({...t,[Q.key]:{...t[Q.key],required:e.target.checked}})),className:`rounded text-krona-green`}),`Обязательно для заполнения на этой форме`]}),(0,T.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer font-medium text-krona-primary`,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:$.readOnly??Q.readOnly??!1,onChange:e=>F(t=>({...t,[Q.key]:{...t[Q.key],readOnly:e.target.checked}})),className:`rounded text-krona-green`}),`Только чтение (Read-Only)`]})]}),(0,T.jsxs)(`div`,{className:`p-3 bg-krona-workspace rounded-lg border border-krona-border space-y-2`,children:[(0,T.jsx)(`span`,{className:`font-semibold text-krona-primary block`,children:`Условное отображение (Conditional Logic)`}),(0,T.jsx)(`p`,{className:`text-[11px] text-krona-secondary`,children:`Показывать поле только при соблюдении условия:`}),(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsxs)(`select`,{value:$.conditionFieldKey||``,onChange:e=>F(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,T.jsx)(`option`,{value:``,children:`Без условий (всегда отображать)`}),q.filter(e=>e.key!==Q.key).map(e=>(0,T.jsxs)(`option`,{value:e.key,children:[`Если `,e.label,` (`,e.key,`)`]},e.key))]}),$.conditionFieldKey&&(0,T.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,T.jsxs)(`select`,{value:$.conditionOperator||`eq`,onChange:e=>F(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,T.jsx)(`option`,{value:`eq`,children:`равно (=)`}),(0,T.jsx)(`option`,{value:`neq`,children:`не равно (≠)`}),(0,T.jsx)(`option`,{value:`contains`,children:`содержит`})]}),(0,T.jsx)(`input`,{type:`text`,placeholder:`Значение...`,value:$.conditionValue||``,onChange:e=>F(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,T.jsx)(`div`,{className:`flex justify-end gap-2 pt-3 border-t border-krona-border`,children:(0,T.jsx)(n,{variant:`primary`,size:`sm`,onClick:()=>N(null),children:`Готово`})})]})})]})};export{E as FormBuilder,E as default};