import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-NOj5DEP4.js";import{n as a,t as o}from"./SerializableSelect-B5-dIYx-.js";var s=e({AsyncReloadLike:()=>h,Controlled:()=>f,Disabled:()=>g,Placeholder:()=>p,WithCode:()=>m,__namedExportsOrder:()=>_,default:()=>d}),c,l,u,d,f,p,m,h,g,_,v=n((()=>{c=t(r(),1),a(),l=i(),u=[{id:10,name:`Продажи`,code:`SLS`,branch:`Екатеринбург`},{id:20,name:`Закупки`,code:`PRC`,branch:`Челябинск`},{id:30,name:`Логистика`,code:`LGS`,branch:`Новосибирск`},{id:40,name:`Сервис`,code:`SRV`,branch:`Москва`}],d={title:`Shared/UI/SerializableSelect`,component:o,args:{label:`Подразделение`,description:`Сериализуемая обёртка над Select для object-options и field-based конфигурации.`,placeholder:`Выберите подразделение`,options:u,optionKey:`id`,optionLabel:`name`,value:void 0,onChange:()=>{},size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Высокоуровневая обёртка над low-level Select. Принимает массив объектов, получает key и label по именам полей, а наружу возвращает только значение ключа. Нужна для сериализуемых конфигов, в том числе в src/shared/ui/controls/*.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда ключ ещё не выбран.`,control:`text`},options:{description:`Массив объектных option.`,control:!1},optionKey:{description:`Поле объекта, значение которого используется как ключ и отдаётся наружу через onChange.`,control:!1},optionLabel:{description:`Поле объекта, значение которого отображается как основной текст option.`,control:!1},renderCode:{description:`Если включено, справа от текста будет показан ключ optionKey.`,control:`boolean`},value:{description:`Текущий выбранный ключ option, а не вся option целиком.`,control:!1},onChange:{description:`Вызывается с новым значением optionKey.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`}}},f={name:`Выбор по ключу`,render:e=>{let[t,n]=(0,c.useState)(20);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},p={render:e=>{let[t,n]=(0,c.useState)(void 0);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},m={name:`С кодом`,render:e=>{let[t,n]=(0,c.useState)(10);return(0,l.jsx)(o,{...e,value:t,onChange:n,renderCode:!0})},args:{renderCode:!0}},h={name:`Смена набора опций`,render:e=>{let[t,n]=(0,c.useState)(30),[r,i]=(0,c.useState)(!1),a=(0,c.useMemo)(()=>r?u.filter(e=>e.id!==20):u,[r]);return(0,l.jsxs)(`div`,{style:{display:`grid`,gap:`12px`,maxWidth:`320px`},children:[(0,l.jsx)(`button`,{type:`button`,onClick:()=>i(e=>!e),children:r?`Показать полный список`:`Скрыть одну опцию`}),(0,l.jsx)(o,{...e,options:a,value:t,onChange:n})]})}},g={args:{disabled:!0,value:10}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
  name: "Выбор по ключу",
  render: args => {
    const [value, setValue] = useState<number | undefined>(20);
    return <SerializableSelect {...args} value={value} onChange={setValue} />;
  }
}`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
  render: args => {
    const [value, setValue] = useState<number | undefined>(undefined);
    return <SerializableSelect {...args} value={value} onChange={setValue} />;
  }
}`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
  name: "С кодом",
  render: args => {
    const [value, setValue] = useState<number | undefined>(10);
    return <SerializableSelect {...args} value={value} onChange={setValue} renderCode />;
  },
  args: {
    renderCode: true
  }
}`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
  name: "Смена набора опций",
  render: args => {
    const [value, setValue] = useState<number | undefined>(30);
    const [showShortList, setShowShortList] = useState(false);
    const options = useMemo(() => showShortList ? departmentOptions.filter(option => option.id !== 20) : departmentOptions, [showShortList]);
    return <div style={{
      display: "grid",
      gap: "12px",
      maxWidth: "320px"
    }}>
                <button type="button" onClick={() => setShowShortList(current => !current)}>
                    {showShortList ? "Показать полный список" : "Скрыть одну опцию"}
                </button>
                <SerializableSelect {...args} options={options} value={value} onChange={setValue} />
            </div>;
  }
}`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
  args: {
    disabled: true,
    value: 10
  }
}`,...g.parameters?.docs?.source}}},_=[`Controlled`,`Placeholder`,`WithCode`,`AsyncReloadLike`,`Disabled`]}));v();export{h as AsyncReloadLike,f as Controlled,g as Disabled,p as Placeholder,m as WithCode,_ as __namedExportsOrder,d as default,v as n,s as t};