Menu
Отображает меню
Имеет следующие режимы работы:
- Custom: отображает произвольные элементы управления.
- Dropdown: отображает раскрывающийся список пунктов меню.
- Icons: отображает панель быстрого доступа со значками.
  <Menu Mode="Custom">
    <Text Value="trigger" />
    <Group >
      <Text Value="option1" />
      <Text Value="option2" />
      <Text Value="option3" />
    </Group>
  </Menu>
  
 <Menu 
  Mode="Icons" 
  State={[{
      text: 'Некоторый текст',
      label: 'необязательный заголовок опции',
      value: '2',
      icon: '/static/icons/copy.svg',
    },
    {
      text: 'Некоторый текст',
      value: '5',
      icon: 'static/icons/copy.svg',
    },
  ]} 
 />
Свойства
| Имя | Описание | Тип | Значение по умолчанию | Возможные значения | 
|---|---|---|---|---|
| AutoHighlightOnHover | Признак автоматической подсветки пункта меню при наведении указателя мыши | boolean | True | |
| Badge | Количественная информация в компонентах Menu, Accordion, Link, Text. В качестве значения может использоваться объект с полями: counter (число), position ("post" или "pre"), color (цвет) | any | ||
| CSS | Массив строк-классов CSS-стилей компонента | array | ||
| CloseOnItemClick | Признак закрытия компонента по щелчку мыши по пункту меню | boolean | True | |
| CombineConfig | Конфигурация всех событий компонента. Служебное свойство для генерации фрагментов кода в в изуальном режиме редактора форм. Не рекомендуется указывать значение вручную | object | ||
| Coordinates | Координаты для отображения меню без использования триггера открытия меню: объект вида {x: , y: } | object | ||
| ForceCloseOnClick | Признак закрытия меню при нажатии мышью в области компонента | boolean | True | |
| Hidden | Признак состояния компонента Скрыт | boolean | False | |
| Hint | Всплывающая подсказка над компонентом, чаще используемая для подробного пояснения краткого текста | any | ||
| IconField | Переопределение ключа для связи данных со значением, соответствующим значкам в меню | string | icon | |
| Id | Идентификатор компонента для навигации к нему на HTML-странице | string | ||
| LabelField | Переопределение ключа для метки пункта меню | string | label | |
| ManualShowControl | Признак ручного управления отрисовкой | boolean | False | |
| Mode | Режим работы | enum | Custom | Custom- Произвольное содержимоеDropdown- Раскрывающийся список пунктов. Получает данные из свойства State:массив значений вида [{text:'text', value:'value', icon:'/icons/some.svg'}]. Вложенные массивы — группы, отделяемые друг от друга горизонтальной чертой: [['необязательный заголовок группы. Строка',{text:'text', label:'необязательное имя варианта',value:'value', disabled:'true', icon:'/icons/some.svg'}], [{text:'text', value:'value', icon:'/icons/some.svg'}]] Icons- Панель быстрого доступа со значками. Получает данные из свойства State:массив значений вида [{value:'value', icon:'/icons/some.svg'}]. Вложенные массивы — группы, отделяемые друг от друга вертикальной чертой: [[{value:'value', icon:'/icons/some.svg'}],[{value:'value', icon:'/icons/some.svg'}]] | 
| Multiple | Признак возможности выбора нескольких значений | boolean | False | |
| NoPaddings | Признак отсутствия стандартного отступа у компонента | boolean | False | |
| Offset | Отступ от триггера открытия меню: объект вида {x: , y: } | object | <pre>{ "x": 0, "y": 0 }</pre> | |
| OnClick | Обработчик события нажатия кнопки мыши | undefined | ||
| OnKeyDown | Обраб отчик события KeyDown | undefined | ||
| OnKeyUp | Обработчик события KeyUp | undefined | ||
| OnMouseDown | Обработчик события MouseDown | undefined | ||
| OnMouseEnter | Обработчик события MouseEnter | undefined | ||
| OnMouseLeave | Обработчик события MouseLeave | undefined | ||
| OnMouseMove | Обработчик события MouseMove | undefined | ||
| OnMouseOut | Обработчик события MouseOut | undefined | ||
| OnMouseOver | Обработчик события MouseOver | undefined | ||
| OnMouseUp | Обработчик события MouseUp | undefined | ||
| OnUnmount | Обработчик события Unmount | undefined | ||
| OptionalOpen | Признак отображения меню без использования триггера открытия меню. Вместо этого свойства рекомендуется использовать ManualShowControl | boolean | False | |
| OutputOptionalOpen | Признак привязки значения для отрисовки меню без использования триггера открытия меню | boolean | False | |
| OutputState | Массив объектов допустимых выходных значений | array | ||
| OutputValue | Привязка отрисованного компонента к модели | any | ||
| RenderInPortal | Признак отр исовки меню в отдельном элементе | boolean | True | |
| SelectedField | Переопределение ключа для выбранного пункта меню | string | selected | |
| ShowControl | Признак открытия и скрытия меню при условии ManualShowControl=true | boolean | False | |
| ShowGroupSeparator | Признак отображения границы между группами | boolean | True | |
| Slot | Метка для динамического добавления другого компонента по его идентификатору | string | ||
| State | Массив объектов допустимых входных значений | array | ||
| TextField | Переопределение ключа для связи данных с отображаемым значением выбранного пункта меню | string | text | |
| Tooltip | Всплывающая подсказка над компонентом, чаще используемая для пояснения назначения значка | any | ||
| TraceId | Идентификатор для отслеживания состояния компонента исходя из хронологической последовательности: создание, отрисовка, обновление, удаление; используется для выполнения фрагмента кода по изменению состояния компонента | string | ||
| UseSelection | Признак отображения выбранных пунктов меню | boolean | False | |
| Value | Привязка модели к отрисованному компоненту | any | ||
| ValueField | Переопределение ключа для связи данных со значением, которое записывается в переменные состояния экранной формы | string | value | |
| Visible | Признак инверсии состояния компонента Скрыт | boolean | True | 
Примеры
Данные:
  "menuData1": [{
              "text": "Bool",
              "value": "2"
            },
            {
              "text": "String",
              "value": "3"
            },
            {
              "text": "Link",
              "value": "4",
              "disabled": true
            },
            {
              "text": "Test",
              "value": "5"
            }
        ], "menuData2": [{
              "text": "Bool",
              "value": "2"
            },
            {
              "text": "String",
              "value": "3"
            },
            {
              "text": "Link",
              "value": "4",
              "disabled": true
            },
            {
              "text": "Test",
              "value": "5"
            }
        ], "menuData3": [[{
          "text": "Create folder",
          "value": "1",
          "icon": "static/examples/9.svg"
        }, {
          "text": "Create file",
          "value": "1",
          "icon": "static/examples/10.svg"
        }], [{
          "text": "Upload files",
          "value": "1",
          "icon": "static/examples/11.svg"
        }, {
          "text": "Download files",
          "value": "1",
          "icon": "static/examples/12.svg"
        }], [{
          "text": "Copy",
          "value": "1",
          "icon": "static/examples/5.svg"
        }, {
          "text": "Cut",
          "value": "1",
          "icon": "static/examples/7.svg"
        },{
          "text": "Paste",
          "value": "1",
          "icon": "static/examples/6.svg"
        },{
          "text": "Rename",
          "value": "1",
          "icon": "static/examples/13.svg",
          "disabled": true
        }],{
          "text": "Delete",
          "value": "1",
          "icon": "static/examples/8.svg",
          "red": true
        }
        ],"menuData4": [["Title 1",{
          "text": "Bool",
          "value": "1"
        },{
          "text": "Number",
          "value": "1"
        },{
          "text": "Link",
          "value": "1"
        }],["Title 2",{
          "text": "Secure",
          "value": "1"
        },{
          "text": "Configuration",
          "value": "1",
          "disabled": true
        },{
          "text": "Link",
          "value": "1"
        }]
        ],"menuData5": [{
              "text": "г.Москва",
              "value": "2",
              "label": "Москва"
            },{
              "text": "Московская область",
              "value": "2",
              "label": "Можайск"
            },{
              "text": "Мурманская область",
              "value": "2",
              "label": "Мончегорск",
              "disabled": true
            },{
              "text": "г. Москва, Московское поселение",
              "value": "2",
              "label": "Московский"
            },{
              "text": "г. Москва, Рязановское поселение",
              "value": "2",
              "label": "Мостовское"
            },{
              "text": "г. Москва, Морозовское поселение",
              "value": "2",
              "label": "Морозовск"
            },{
              "text": "г. Москва, Филимоновское поселение",
              "value": "2",
              "label": "Марьино"
            }
        ],"menuData6": [[{
          "text": "Alam! Alarm!",
          "value": "1",
          "icon": "static/examples/1.svg"
        }],[{
          "text": "Alam! Alarm!",
          "value": "1",
          "icon": "static/examples/2.svg"
        }],[{
          "text": "Alam! Alarm!",
          "value": "1",
          "icon": "static/examples/3.svg"
        },{
          "text": "Alam! Alarm!",
          "value": "1",
          "icon": "static/examples/4.svg"
        }],[{
          "text": "Alam! Alarm!",
          "value": "1",
          "icon": "static/examples/5.svg"
        },{
          "text": "Alam! Alarm!",
          "value": "1",
          "icon": "static/examples/6.svg"
        },{
          "text": "Alam! Alarm!",
          "value": "1",
          "icon": "static/examples/7.svg",
          "disabled": true
        },],{
          "text": "Some text",
          "value": "1",
          "icon": "static/examples/8.svg",
          "red": true
        }
        ]
}
JSX:
<Group Mode={"Column"}>
<Text Value="1. Mode=Custom" Mode="Medium_16"/>
<Text Value="Произвольные контролы внутри."  CSS={['my-8', 'ml-16']}/>
  <Menu
    Model-var="test"
    CSS={['my-16', 'ml-16']}
    Badge={{
      counter: 8,
      position: "post",
      color: "default",
    }}
  >
    <Text Value="Click Me" Mode="Bold_12" Tooltip="Нажмите сюда" />
    <Group Mode={'Column'} Width="200px">
      <Group Mode={'Row'} Align="Start" Height="32px">
        <Group Mode={'Row'} Width="38px"><Switcher Value-var={'ddd1'} OutputValue-var={'ddd1'}/></Group>
        <Text Value="Option 1" WhiteSpace="nowrap" />
      </Group>
      <Group Mode={'Row'} Align="Start" Height="32px">
        <Group Mode={'Row'} Width="38px"><Switcher Value-var={'ddd2'} OutputValue-var={'ddd2'}/></Group>
        <Text Value="Option 2" WhiteSpace="nowrap" />
      </Group>
      <Separator/>
      <Group Mode={'Row'} Align="Start" Height="32px">
        <Group Mode={'Row'} Width="38px"><Switcher Value-var={'ddd'} OutputValue-var={'ddd'}/></Group>
        <Text Value="Option 3" WhiteSpace="nowrap" />
      </Group>
      <Group Mode={'Row'} Align="Start" Height="32px">
        <Group Mode={'Row'} Width="38px"><Switcher Value-var={'ddd3'} OutputValue-var={'ddd3'}/></Group>
        <Text Value="Option 4" WhiteSpace="nowrap" />
      </Group>
    </Group>
  </Menu>
<Text Value="2. Mode=Dropdown" Mode="Medium_16" CSS={['my-16']}/>
  <Menu 
    Mode={'Dropdown'}
    CSS={['mb-16', 'ml-16']}
    CloseOnItemClick={false}
    OutputValue-var={'testtt'}
    Value-var={'testtt'}
    State-var="menuData1"
    OutputState-var="menuData1"
    Multiple={false}
    UseSelection={true}
  >
    <Text Mode="Bold_12" Value="Text (UseSelection, OutputState)" Tooltip="Нажмите сюда"/>
  </Menu>
  <Menu 
    Mode={'Dropdown'}
    CSS={['mb-16', 'ml-16']}
    CloseOnItemClick={false}
    OutputValue-var={'testtt'}
    Value-var={'testtt'}
    State-var="menuData2"
    OutputState-var="menuData2"
    Multiple={true}
    UseSelection={true}
  >
    <Text Mode="Bold_12" Value="Text  (Multiple, UseSelection, OutputState)" Tooltip="Нажмите сюда"/>
  </Menu>
   <Menu 
    Mode={'Dropdown'}
    CSS={['mb-16', 'ml-16']}
    CloseOnItemClick={true}
    OutputValue-var={'testtt'}
    Value-var={'testtt'}
    State-var="menuData3"
  >
    <Text Mode="Bold_12" Value="Text + Icon (CloseOnItemClick, Grouped )" Tooltip="Нажмите сюда"/>
  </Menu>
   <Menu 
    Mode={'Dropdown'}
    CSS={['mb-16', 'ml-16']}
    CloseOnItemClick={false}
    OutputValue-var={'testtt'}
    Value-var={'testtt'}
    State-var="menuData4"
    OutputState-var="menuData4"
    UseSelection={true}
    ShowGroupSeparator={false}
  >
    <Text Mode="Bold_12" Value="Header + Text (UseSelection, OutputState, ShowGroupSeparator=false)" Tooltip="Нажмите сюда"/>
  </Menu>
   <Menu 
    Mode={'Dropdown'}
    CSS={['mb-16', 'ml-16']}
    CloseOnItemClick={false}
    OutputValue-var={'testtt'}
    Value-var={'testtt'}
    State-var="menuData5"
    OutputState-var="menuData5"
    UseSelection={true}
  >
    <Text Mode="Bold_12" Value="Label + Text (UseSelection)" Tooltip="Нажмите сюда"/>
  </Menu>
   <Menu 
    Mode={'Dropdown'}
    CSS={['mb-16', 'ml-16']}
    CloseOnItemClick={false}
    OutputValue-var={'testtt'}
    Value-var={'testtt'}
    State-var="menuData5"
    OutputState-var="menuData5"
    UseSelection={true}
    Offset={{x:140,y:-40}}
  >
    <Button><Text Mode="Bold_12" Value="Offset={{x:140,y:-40}}" Tooltip="Нажмите сюда"/></Button>
  </Menu>
  <Text Value="3. Mode=Icons" Mode="Medium_16" CSS={['my-16']}/>
  <Menu 
    Mode={'Icons'}
    CSS={['mb-16', 'ml-16']}
    CloseOnItemClick={true}
    OutputValue-var={'testtt'}
    Value-var={'testtt'}
    State-var="menuData6"
    >
      <Text Mode="Bold_12" Value="Menu Mode=Icons" Tooltip="Нажмите сюда"/>
    </Menu>
</Group>