[ELMA4] Сворачиваемая панель (CollapsiblePanel)

Контент с заголовком, который может сворачиваться/разворачиваться при нажатии на заголовок. Имеет следующие параметры:

Id идентификатор панели на странице.

Заголовок:

  • Header простой текстовый заголовок;
  • LinkHeader ссылка, по которой осуществляется переход при нажатии на заголовок;
  • HeaderExt заголовок, который может содержать html-разметку;
  • ImageUrl иконка перед заголовком.

Контент. Существует два варианта задания контента панели:

  • Content контент панели, который задается при определении панели. Представляет собой html-разметку;
  • Url ссылка на контент панели для его динамической загрузки.

Html-атрибуты:

  • Style html-атрибуты;
  • Class html-class, который добавляется на заголовок.

Состояние панели:

  • Expanded флаг состояния панели. Если true, то панель развернута, false – свернута;
  • SaveState флаг, задающий возможность сохранения состояния панели. Если установлен true, то при следующем открытии страницы с панелью она будет развернута/свернута в зависимости от ее предыдущего состояния;
  • OnExpand JavaScript функция, которая срабатывает при развертывании/свертывании панели.

Существует несколько способов объявления панели в зависимости от контента:

1.Контент передается в билдер панели, в метод Content. Нельзя использовать этот способ, если панель объявляется внутри обертки @<text></text>.

@(Html.CollapsiblePanel()
    .Id("ExamplePanel")
    .Header(SR.T("Дополнительная информация"))
    .SaveState(true)
    .Expanded(true)
    .Class("separator-gray")
    .Content(@<text><div>Контент</div></text>).Render())

2. Контент панели оборачивается в директиву using. Нельзя использовать этот способ, если панель объявляется внутри обертки @<text></text>.

var cp = new CollapsiblePanel()
{
    Id = "ExamplePanel",
    Header = SR.T("Дополнительная информация"),
    SaveState = true,
    Expanded = true,
    Class = "separator-gray"
};

@using (Html.CollapsiblePanel(cp))
{
    <div>Контент</div>
}

3. Панель объявляется с помощью методов Html.CollapsiblePanelBegin и Html.CollapsiblePanelEnd, между которыми располагается контент панели. Это единственный способ, который можно использовать, если панель объявляется внутри обертки @<text></text>.

var cp = new CollapsiblePanel()
{
    Id = "ExamplePanel",
    Header = SR.T("Дополнительная информация"),
    SaveState = true,
    Expanded = true,
    Class = "separator-gray"
};

@Html.CollapsiblePanelBegin(cp)
    <div>Контент</div>
@Html.CollapsiblePanelEnd(cp)

Основные изменения в сворачиваемых панелях в ELMA4 по сравнению с ELMA3

1. Внешний вид.
Cворачиваемая панель в ELMA3:

Cворачиваемая панель в ELMA4:

2. Использование серого цвета заголовка панелей для соответствия общему стилю.

// bad
@(Html.CollapsiblePanel()
    .Header(SR.T("Панель"))
    .Class("separator-red")
    .Content(@<text><div>Контент</div></text>).Render())

// good
    @(Html.CollapsiblePanel()
    .Header(SR.T("Панель"))
    .Class("separator-gray")
    .Content(@<text><div>Контент</div></text>).Render())

3. Отступы контента панелей изменились на 16px сверху и снизу, 8px по бокам.