import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-GmIo3IOR.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-0RiOsxIK.js";import{t as f}from"./mdx-react-shim-DQ40dZsI.js";import{ControlledObjects as p,CustomOptionLayout as m,Disabled as h,GroupedOptions as g,Placeholder as _,PrimitiveOptions as v,n as y,t as b}from"./Select.stories-D-onxXmT.js";function x(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(o,{of:b,parameters:{docs:{toc:!0}}}),`
`,(0,C.jsx)(l,{children:`Select`}),`
`,(0,C.jsx)(a,{children:`Getter-based select для примитивов и сложных объектных option`}),`
`,(0,C.jsx)(t.p,{children:`Select уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
Ниже можно быстро проверить базовый сценарий, а затем перейти к отдельным режимам использования и состояниям компонента. Отдельно разобраны заблокированные состояния.`}),`
`,(0,C.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
`,(0,C.jsx)(d,{}),`
`,(0,C.jsx)(r,{of:p}),`
`,(0,C.jsx)(t.pre,{children:(0,C.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";

import { Select } from "@/shared/ui";

const options = [
	{ id: 1, name: "Отдел продаж", code: "SLS" },
	{ id: 2, name: "Закупки", code: "PRC" }
];

export function Example() {
	const [value, setValue] = useState(undefined);

	return (
		<Select
			label="Подразделение"
			value={value}
			onChange={setValue}
			options={options}
			getOptionKey={(option) => option.id}
			getOptionLabel={(option) => option.name}
			getOptionCode={(option) => option.code}
		/>
	);
}
`})}),`
`,(0,C.jsx)(t.h2,{id:`практические-рекомендации`,children:`Практические рекомендации`}),`
`,(0,C.jsxs)(t.ul,{children:[`
`,(0,C.jsx)(t.li,{children:`Заблокированное состояние лучше проверять отдельно, чтобы убедиться, что визуально и поведенчески оно остается понятным.`}),`
`]}),`
`,(0,C.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
`,(0,C.jsx)(t.h3,{id:`работа-с-объектами-как-со-значениями-option`,children:`Работа с объектами как со значениями option`}),`
`,(0,C.jsx)(t.p,{children:`Работа с объектами как со значениями option.`}),`
`,(0,C.jsx)(u,{of:p}),`
`,(0,C.jsx)(t.h3,{id:`работа-с-примитивными-option`,children:`Работа с примитивными option`}),`
`,(0,C.jsx)(t.p,{children:`Работа с примитивными option.`}),`
`,(0,C.jsx)(u,{of:v}),`
`,(0,C.jsx)(t.h3,{id:`поведение-без-выбранного-значения`,children:`Поведение без выбранного значения`}),`
`,(0,C.jsx)(t.p,{children:`Поведение без выбранного значения.`}),`
`,(0,C.jsx)(u,{of:_}),`
`,(0,C.jsx)(t.h3,{id:`группировка-опций`,children:`Группировка опций`}),`
`,(0,C.jsxs)(t.p,{children:[(0,C.jsx)(t.code,{children:`getOptionGroup`}),` объединяет соседние опции с одинаковым `,(0,C.jsx)(t.code,{children:`key`}),` под доступным заголовком. Опции без группы остаются обычными элементами списка.
Для длинных заголовков ширину popup можно ограничить через `,(0,C.jsx)(t.code,{children:`optionsMaxWidth`}),`, например `,(0,C.jsx)(t.code,{children:`optionsMaxWidth="40rem"`}),`.`]}),`
`,(0,C.jsx)(u,{of:g}),`
`,(0,C.jsx)(t.h3,{id:`кастомный-рендер-option-и-выбранного-значения`,children:`Кастомный рендер option и выбранного значения`}),`
`,(0,C.jsx)(t.p,{children:`Кастомный рендер option и выбранного значения.`}),`
`,(0,C.jsx)(u,{of:m}),`
`,(0,C.jsx)(t.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
`,(0,C.jsx)(t.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
`,(0,C.jsx)(u,{of:h}),`
`,(0,C.jsx)(t.h2,{id:`api`,children:`API`}),`
`,(0,C.jsx)(c,{of:b}),`
`,(0,C.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
`,(0,C.jsx)(i,{includePrimary:!1})]})}function S(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,C.jsx)(t,{...e,children:(0,C.jsx)(x,{...e})}):x(e)}var C;e((()=>{C=t(),f(),s(),y()}))();export{S as default};