Due to recent changes to the keyboard accessibility of the RadMenu (i.e. it is now only accessible using the arrow keys instead of moving around using tabs), mega menus are no longer keyboard accessible. We have designed a mega menu using a telerik RadSiteMap embedded in a RadMenu control, as suggested in the Telerik Demo site: http://demos.telerik.com/aspnet-ajax/menu/examples/megadropdown/defaultcs.aspx However, this is no longer accessible. Previously, you could open the dropdown by pressing the down button, then move around in the dropdown using tab. Now, however, pressing tab just closes the dropdown. We need the menu to be accessible in one way or another.
Rendering and tabbing through the menus goes well BUT - the following was reported:
The BIG issue seems to be the lack of indication that a SubMenu exists - is this a known issue? Am I not enabling something I should be?
Current RadMenu config:
<telerik:RadMenu AriaSettings-Label="Manage a Business Menu" runat="server" ID="m" Width="100%" Skin="Simple" Flow="Horizontal" RenderMode="Lightweight"
EnableAriaSupport="true" CausesValidation="false" EnableOverlay="false">
<KeyboardNavigationSettings CommandKey="Alt" FocusKey="M" />
</telerik:RadMenu>
The default behavior of the mobile menu is the following: when popup with root items is opened, its height is calculated depend on root items count and their height. After opening a sub-menu, where items count is different, the popup height is not updated. The suggestion is to add a functionality to popup menu to update its height every time after opening a next item.
Basically, I would like to be able to set a default state for the menu (which menu is open and which menu item has focus) in code behind (like the Page Load event). The menu would start off showing the designated menu as open and the designated menu item would have focus but the user would still be able to hover over other menus to open them (the default open menu would then collapse). If the user ends up moving the mouse off the menu without clicking anything, the menu would then automatically revert to the default state set in Page Load. Currently, the only way to implement this functionality is to use hidden fields to store the open menu/focused menu item info (on Page Load) and then capture a bunch of JavaScript client events to setup the default menu state, collapse the menu when a different menu is hovered over and reset the menu to the default state when the mouse moves away without clicking. It works but it's a lot of client code and occasionally the JavaScript events don't fire correctly (or in the correct sequence) and the menu won't reset properly or maybe the sub menus will overdraw each other. It's a lot of work for something that I think should be built into the core RadMenu control. I'm also concerned about using so much JavaScript because I've been developing web apps for 15 years (using Telerik for 10 years) and every few years all my JavaScript code breaks (due to browser changes) and has to be rewritten. I'd much rather just set the relevant properties in code behind and let you guys worry about updating the client code. It would be great to just set the default state in code behind and have the menu reset to that state when it loses focus. You could also have a reset timeout so that the menu will reset after the mouse is off the menu for a set number of seconds. A quick Google search shows that people have been asking for an easy way to implement this for years.
Reproduction - http://somup.com/crVYIDot19
Setup to reproduce:
<telerik:RadContextMenu ID="RadContextMenu1" runat="server">
<Targets>
<telerik:ContextMenuDocumentTarget />
</Targets>
<Items>
<telerik:RadMenuItem Text="item">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" />
</ItemTemplate>
</telerik:RadMenuItem>
</Items>
</telerik:RadContextMenu>
<telerik:RadButton runat="server" ID="RadButton2" Text="Postback" AutoPostBack="true" />
Steps to reproduce:
The boundary detection is not applied to the ContentTemplate of a ContextMenu item:
<telerik:RadContextMenu runat="server" ID="RadContextMenu1" EnableScreenBoundaryDetection="true" >
<Items>
<telerik:RadMenuItem Text="Item 1" Value="1">
</telerik:RadMenuItem>
<telerik:RadMenuItem Text="Item 2" Value="2" >
<GroupSettings Width="400px" />
<ContentTemplate>
<div style="width: 400px;">
some content here
</div>
</ContentTemplate>
</telerik:RadMenuItem>
</Items>
</telerik:RadContextMenu>
Currently the Menu with RenderMode="Mobile" expands only in one direction(down) and disregarding the value of the DefaultGroupSettings-ExpandDirection property.