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-BWfaDuCZ.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{D as ee,Z as te,a as f,d as p,et as m,ft as h,j as g,m as ne,n as re,pt as ie,u as _,w as v,y}from"./index-CNnq9VO5.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}=ie(),t=h(),{currentEntity:r,layouts:a,saveLayout:b}=m(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)(te,{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)(ee,{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)(p,{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)(g,{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)(f,{value:A,onChange:e=>j(e.target.value),placeholder:`Поиск полей...`,icon:(0,T.jsx)(y,{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)(v,{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)(_,{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)(_,{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)(re,{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)(f,{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)(f,{label:`Подсказка (Placeholder)`,value:$.placeholder??Q.placeholder??``,onChange:e=>F(t=>({...t,[Q.key]:{...t[Q.key],placeholder:e.target.value}})),placeholder:`Введите текст подсказки...`}),(0,T.jsx)(f,{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}; |