Ej1 api migration in React Menu component

30 Jan 202313 minutes to read

This article describes the API migration process of Menu component from Essential JS 1 to Essential JS 2.

Properties

Behavior API in Essential JS 1 API in Essential JS 2
Animation type on hover or click on the menu items Property: animationType

var animationType = ej.AnimationType.Default;
<EJ.Menu id="menu" animationType={animationType}></EJ.Menu>
Not applicable
Context menu target Property: contextMenuTarget

<EJ.Menu id="menu" contextMenuTarget="#target"></EJ.Menu>
Not applicable
Container element for submenu’s collision Property: container

<EJ.Menu id="menu" contextMenuTarget="#target" container="#target"></EJ.Menu>
Not applicable
Menu items Not applicable Property: items

<MenuComponent id="menu" items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menuItems = [
  {
    text: “File”, id: “file_id”
  },
  {
    text: “Edit”,
    id: “edit_id”,
    items: [
      { text” “Cut”, iconCss: “e-icons e-cut” },
      { text: “Copy”, iconCss: “e-icons e-copy” },
      { text: “Paste”, iconCss: “e-icons e-paste” }
    ]
  },
  {
    text: “view”, id: “view_id”, url: “#”
  },
  {
    text: “Help”, id: “help_id”
  }
];
}
Adding custom class Property: cssClass

<EJ.Menu id="menu" cssClass="custom-class"></EJ.Menu>
Property: cssClass

<MenuComponent id="menu" cssClass="custom-class" items={this.menuItems}></MenuComponent>
Enables or disables the animation on hover or click on the menu items Property: enableAnimation

<EJ.Menu id="menu" enableAnimation={true}></EJ.Menu>
Not applicable
Animation settings Not applicable Property: animationSettings

<MenuComponent id="menu" animationSettings={this.animation} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.animationSettings = { effect: ‘ZoomIn’ };
}
Root menu items to be aligned center in horizontal menu Property: enableCenterAlign

<EJ.Menu id="menu" enableCenterAlign={true}></EJ.Menu>
Not applicable
Disabled state Property: enabled

<EJ.Menu id="menu" enabled={false}></EJ.Menu>
Property: disabled

<MenuComponent id="menu" disabled={true} items={this.menuItems}></MenuComponent>
RTL Property: enableRTL

<EJ.Menu id="menu" enableRTL={true}></EJ.Menu>
Property: enableRtl

<MenuComponent id="menu" disabled={true} items={this.menuItems} enableRtl={true}></MenuComponent>
Enables/Disables the separator Property: enableSeparator

<EJ.Menu id="menu" enableSeparator={false}></EJ.Menu>
Not applicable
Menu Type Property: menuType

<EJ.Menu id="menu" menuType="contextmenu"></EJ.Menu>
Not applicable
Exclude target for context menu Property: excludeTarget

<EJ.Menu id="menu" menu-type="contextmenu" contextMenuTarget="#target" excludeTarget=".inner"></EJ.Menu>
Not applicable
Fields Property: fields

var data = [
  { id: “file_id”, text: “File”, parentId: null },
  { id: “edit_id”, text: “Edit”, parentId: null },
  { id: “view_id”, text: “View”, parentId: null },
  { id: “help_id”, text: “Help”, parentId: null }
];
<EJ.Menu id="menu" fields-dataSource={data} fields-id="id" fields-text="text" fields-parentid="parentId"></EJ.Menu>
Property: fields

<MenuComponent id="menu" disabled={true} items={this.menuItems} fields={this.menuFields}></MenuComponent>
constructor(props: {}) {
  this.menuFields = { text: [“text”], children: [“children”] };
}
Height Property: height

<EJ.Menu id="menu" height="50px"></EJ.Menu>
Not applicable
Width Property: width

<EJ.Menu id="menu" width="800px"></EJ.Menu>
Not applicable
HTML Attributes Property: htmlAttributes

var attributes = { “aria-label”:”menu” }
<EJ.Menu id="menu" htmlAttribute={attributes}></EJ.Menu>
Not applicable
Responsive Property: isResponsive

<EJ.Menu id="menu" isResponsive={true}></EJ.Menu>
Not applicable
Show item on click Property: openOnClick

<EJ.Menu id="menu" openOnClick={true}></EJ.Menu>
Property: showItemOnClick

<MenuComponent id="menu" showItemOnClick={true} items={this.menuItems}></MenuComponent>
Orientation Property: orientation

<EJ.Menu id="menu" orientation="vertical"></EJ.Menu>
Property: orientation

<MenuComponent id="menu" orientation="Vertical" items={this.menuItems}></MenuComponent>
Show root level arrows Property: showRootLevelArrows

<EJ.Menu id="menu" showRootLevelArrows={false}></EJ.Menu>
Not applicable
Show sub level arrows Property: showSubLevelArrows

<EJ.Menu id="menu" showSubLevelArrows={false}></EJ.Menu>
Not applicable
Sub menu direction Property: subMenuDirection

<EJ.Menu id="menu" subMenuDirection="left"></EJ.Menu>
Not applicable
Title Property: titleText

<EJ.Menu id="menu" titleText="Title of the Menu"></EJ.Menu>
Not applicable
Template Not applicable Property: template

<MenuComponent id="menu" items={this.data} fields={this.menuFields} template="#menuTemplate"></MenuComponent>
Pop up menu height Property: overflowHeight

<EJ.Menu id="menu" overflowHeight="200px"></EJ.Menu>
Not applicable

Methods

Behavior API in Essential JS 1 API in Essential JS 2
Disable Method Method: disable

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.disable();
Not applicable
Disable menu items Method: disableItem

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.disableItem(“File”);
Method: enableItems

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.enableItems(“File”, false);
}
Disable menu items by ID Method: disableItemByID

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.disableItemByID(“file_id”);
Method: enableItems

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.enableItems(“file_id”, false, true);
}
Enable Method Method: enable

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.enable();
Not applicable
Enable menu items Method: enableItem

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.enableItem(“File”);
Method: enableItems

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.enableItems(“File”, true);
}
Enable menu items by ID Method: enableItemByID

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.enableItemByID(“file_id”);
Method: enableItems

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.enableItems(“file_id”, true, true);
}
Hide Method Method: hide

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.hide();
Not applicable
Hide menu items Method: hideItems

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.hideItems([“#help_id”,”#edit_id”]);
Method: hideItems

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.hideItems([“edit_id”,”help_id”], true);
}
Insert menu items Method: insert

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.insert([{ id: “view_id”, text: “View” }], “#edit_id”);
Not applicable
Insert menu items after the specified menu item Method: insertAfter

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.insertAfter([{ id: “view_id”, text: “View” }], “#edit_id”);
Method: insertAfter

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.insertAfter([{ id: “view_id”, text: “View” }], “Edit”);
}
Insert menu items before the specified menu item Method: insertBefore

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.insertBefore([{ id: “view_id”, text: “View” }], “#help_id”);
Method: insertBefore

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.insertBefore([{ id: “view_id”, text: “View” }], “Help”);
}
Remove menu items Method: remove

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.remove([“#Edit”]);
Method: removeItems

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.removeItems([“Edit”]);
}
To show menu Method: show

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.show();
Not applicable
Destroy method Method: destroy

<EJ.Menu id="menu"></EJ.Menu>
var menu = $(‘#menu’).ejMenu(‘instance’);
menu.destroy();
Method: destroy

<MenuComponent id="menu" ref={(scope) => {this.menu = scope}} items={this.menuItems}></MenuComponent>
constructor(props: {}) {
  this.menu.destroy();
}

Events

Behavior API in Essential JS 1 API in Essential JS 2
Triggers before opening the menu Events: beforeOpen

<EJ.Menu id="menu" beforeOpen={beforeOpen}></EJ.Menu>
function beforeOpen(args) {
    /** code block */
}
Events: beforeOpen

<MenuComponent id="menu" items={this.menuItems} beforeOpen={this.beforeOpen.bind(this)}"></MenuComponent>
beforeOpen(args) {
    /** code block */
}
Triggers before closing the menu Not applicable Events: beforeClose

<MenuComponent id="menu" items={this.menuItems} beforeClose={this.beforeClose.bind(this)}></MenuComponent>
beforeClose(args) {
    /** code block */
}
Triggers before rendering each menu item Not applicable Events: beforeItemRender

<MenuComponent id="menu" items={this.menuItems} beforeItemRender={this.beforeItemRender.bind(this)}></MenuComponent>
beforeItemRender(args) {
    /** code block */
}
Triggers while selecting the menu item Events: click

<EJ.Menu id="menu" click={click}></EJ.Menu>
function click(args) {
    /** code block */
}
Events: select

<MenuComponent id="menu" items={this.menuItems} select={this.select.bind(this)}></MenuComponent>
select(args) {
    /** code block */
}
Triggers after closing the menu Events: close

<EJ.Menu id="menu" close={close}></EJ.Menu>
function close(args) {
    /** code block */
}
Events: onClose

<MenuComponent id="menu" items={this.menuItems} onClose={this.onClose.bind(this)}></MenuComponent>
onClose(args) {
    /** code block */
}
Triggers after opening the menu Events: open

<EJ.Menu id="menu" open={open}></EJ.Menu>
function open(args) {
    /** code block */
}
Events: onOpen

<MenuComponent id="menu" items={this.menuItems} onOpen={this.onOpen.bind(this)}></MenuComponent>
onOpen(args) {
    /** code block */
}
Triggers once the component rendering is completed Events: create

<EJ.Menu id="menu" create={create}></EJ.Menu>
function create(args) {
    /** code block */
}
Events: created

<MenuComponent id="menu" items={this.menuItems} created={this.created.bind(this)}></MenuComponent>
created() {
    /** code block */
}
Triggers once the component is destroyed Events: destroy

<EJ.Menu id="menu" destroy={destroy}></EJ.Menu>
function destroy(args) {
    /** code block */
}
Not applicable
Triggers when key down on menu items Events: keydown

<EJ.Menu id="menu" keydown={keydown}></EJ.Menu>
function keydown(args) {
    /** code block */
}
Not applicable
Triggers when mouse out from menu items Events: mouseout

<EJ.Menu id="menu" mouseout={mouseout}></EJ.Menu>
function mouseout(args) {
    /** code block */
}
Not applicable
Triggers when mouse over the Menu items Events: mouseover

<EJ.Menu id="menu" mouseover={mouseover}></EJ.Menu>
function mouseover(args) {
    /** code block */
}
Not applicable
Triggers when overflow popup menu opens Events: overflowOpen

<EJ.Menu id="menu" overflowOpen={overflowOpen}></EJ.Menu>
function overflowOpen(args) {
    /** code block */
}
Not applicable
Triggers when overflow popup menu closes Events: overflowClose

<EJ.Menu id="menu" overflowClose={overflowClose}></EJ.Menu>
function overflowClose(args) {
    /** code block */
}
Not applicable