Disclosure

Maintainer:
Raubzeug
GitHub
size
disabled
arrowPosition
summary
children
import {Disclosure} from '@gravity-ui/uikit';

Disclosure — компонент раскрытия, который показывает и скрывает вложенный контент.

Управление состоянием раскрытия

Вы можете управлять состоянием раскрытия компонента, используя свойства expanded и onUpdate.

Пример управления состоянием:

Content

function ControlledDisclosure() {
  const [expanded, setExpanded] = React.useState(true);

  return (
    <Disclosure summary="Summary" expanded={expanded} onUpdate={setExpanded}>
      Content
    </Disclosure>
  );
}

Размер

Используйте свойство size для управления размером Disclosure. Размер по умолчанию — m.

Content

Content

Content

<Disclosure summary="Middle size" size="m">
  Content
</Disclosure>
<Disclosure summary="Large size" size="l">
  Content
</Disclosure>
<Disclosure summary="Extra large size" size="xl">
  Content
</Disclosure>

Позиция стрелки

start: Стрелка расположена в начале заголовка (используется по умолчанию).

end: Стрелка расположена в конце заголовка.

Content

Content

<Disclosure summary="Summary with start arrow" arrowPosition="start">
  Content
</Disclosure>
<Disclosure summary="Summary with end arrow" arrowPosition="end">
  Content
</Disclosure>

Пользовательский контент

Используйте компонент Disclosure.Summary для создания пользовательского заголовка и компонент Disclosure.Details для заполнения пользовательского контента.

Custom details
More custom details

Custom Details

<Disclosure>
  <Disclosure.Summary>
    {(props) => (
      <Button {...props}>
        <Icon data={Check} size={14} />
          Custom summary
        <Icon data={Check} size={14} />
      </Button>
    )}
  </Disclosure.Summary>
  <div>Custom details</div>
  <div>More custom details</div>
</Disclosure>
<Disclosure summary="Summary">
  <Disclosure.Summary>
    {(_props, defaultButton) => (
      <Flex gap={4}>
         {defaultButton}
        <Icon data={Check} size={14} />
      </Flex>
    )}
  </Disclosure.Summary>
  <Disclosure.Details>
    Custom Details
  </Disclosure.Details>
</Disclosure>

Отключенное состояние

Disclosure может быть отключен с помощью свойства disabled.

Content

<Disclosure summary="Summary" disabled>
  Content
</Disclosure>

Свойства

Disclosure

ИмяОписаниеТипЗначение по умолчанию
sizeРазмер компонента"m" "l" "xl""m"
classNameИмя CSS-класса корневого элементаstring
disabledОтключенное состояниеbooleanfalse
defaultExpandedСостояние раскрытия по умолчаниюbooleanfalse
expandedКонтролируемое состояние раскрытияboolean
arrowPositionПоложение контрола"start" "end""start"
summaryКраткое описание контентаReact.ReactNode
keepMountedСохранение контента в DOM при скрытииbooleantrue
onUpdateОбратный вызов, срабатывающий при изменении состояния раскрытия(expanded: boolean) => void
onSummaryKeyDownОбратный вызов, срабатывающий при фокусе заголовка(e: React.KeyboardEvent<HTMLButtonElement>) => void
childrenКонтентReact.ReactNode
qaИдентификатор для тестированияstring

Disclosure.Summary

ИмяОписаниеТипЗначение по умолчанию
childrenФункция рендеринга(props, defaultSummary) => React.ReactElement
qaИдентификатор для тестированияstringdisclosure-summary

Disclosure.Details

ИмяОписаниеТипЗначение по умолчанию
childrenКонтентReact.ReactNode
qaИдентификатор для тестированияstringdisclosure-details

CSS API

ИмяОписание
--g-disclosure-text-colorЦвет текста краткого описания контента
--g-disclosure-text-color-disabledЦвет текста краткого описания контента в заблокированном состоянии