@syncfusion/ej2-navigations 17.3.9-beta → 17.3.14-96615

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/.eslintrc.json +244 -0
  2. package/CHANGELOG.md +898 -800
  3. package/README.md +163 -163
  4. package/dist/ej2-navigations.umd.min.js +1 -10
  5. package/dist/ej2-navigations.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-navigations.es2015.js +325 -170
  7. package/dist/es6/ej2-navigations.es2015.js.map +1 -1
  8. package/dist/es6/ej2-navigations.es5.js +455 -300
  9. package/dist/es6/ej2-navigations.es5.js.map +1 -1
  10. package/dist/global/ej2-navigations.min.js +1 -10
  11. package/dist/global/ej2-navigations.min.js.map +1 -1
  12. package/dist/global/index.d.ts +0 -9
  13. package/dist/ts/accordion/accordion.ts +1312 -0
  14. package/dist/ts/common/h-scroll.ts +459 -0
  15. package/dist/ts/common/menu-base.ts +2131 -0
  16. package/dist/ts/common/v-scroll.ts +430 -0
  17. package/dist/ts/context-menu/context-menu.ts +119 -0
  18. package/dist/ts/menu/menu.ts +270 -0
  19. package/dist/ts/sidebar/sidebar.ts +817 -0
  20. package/dist/ts/tab/tab.ts +1761 -0
  21. package/dist/ts/toolbar/toolbar.ts +2076 -0
  22. package/dist/ts/treeview/treeview.ts +5050 -0
  23. package/helpers/e2e/index.js +3 -3
  24. package/license +10 -10
  25. package/package.json +135 -149
  26. package/src/accordion/accordion-model.d.ts +156 -156
  27. package/src/accordion/accordion.d.ts +1 -0
  28. package/src/accordion/accordion.js +40 -41
  29. package/src/common/h-scroll-model.d.ts +5 -5
  30. package/src/common/h-scroll.js +19 -20
  31. package/src/common/menu-base-model.d.ts +157 -157
  32. package/src/common/menu-base.d.ts +19 -0
  33. package/src/common/menu-base.js +94 -24
  34. package/src/common/v-scroll-model.d.ts +5 -5
  35. package/src/common/v-scroll.js +19 -19
  36. package/src/context-menu/context-menu-model.d.ts +15 -15
  37. package/src/context-menu/context-menu.js +19 -19
  38. package/src/menu/menu-model.d.ts +30 -30
  39. package/src/menu/menu.js +19 -19
  40. package/src/sidebar/sidebar-model.d.ts +136 -136
  41. package/src/sidebar/sidebar.js +19 -19
  42. package/src/tab/tab-model.d.ts +215 -215
  43. package/src/tab/tab.d.ts +3 -0
  44. package/src/tab/tab.js +117 -82
  45. package/src/toolbar/toolbar-model.d.ts +175 -175
  46. package/src/toolbar/toolbar.d.ts +1 -0
  47. package/src/toolbar/toolbar.js +30 -24
  48. package/src/treeview/treeview-model.d.ts +323 -323
  49. package/src/treeview/treeview.js +79 -33
  50. package/styles/accordion/_all.scss +2 -2
  51. package/styles/accordion/_bootstrap-dark-definition.scss +69 -69
  52. package/styles/accordion/_bootstrap-definition.scss +76 -76
  53. package/styles/accordion/_bootstrap4-definition.scss +82 -82
  54. package/styles/accordion/_fabric-dark-definition.scss +74 -74
  55. package/styles/accordion/_fabric-definition.scss +78 -78
  56. package/styles/accordion/_highcontrast-definition.scss +106 -106
  57. package/styles/accordion/_highcontrast-light-definition.scss +104 -104
  58. package/styles/accordion/_layout.scss +447 -447
  59. package/styles/accordion/_material-dark-definition.scss +75 -75
  60. package/styles/accordion/_material-definition.scss +72 -72
  61. package/styles/accordion/_theme.scss +479 -479
  62. package/styles/accordion/icons/_bootstrap-dark.scss +17 -17
  63. package/styles/accordion/icons/_bootstrap.scss +17 -17
  64. package/styles/accordion/icons/_bootstrap4.scss +17 -17
  65. package/styles/accordion/icons/_fabric-dark.scss +17 -17
  66. package/styles/accordion/icons/_fabric.scss +17 -17
  67. package/styles/accordion/icons/_highcontrast-light.scss +17 -17
  68. package/styles/accordion/icons/_highcontrast.scss +17 -17
  69. package/styles/accordion/icons/_material-dark.scss +17 -17
  70. package/styles/accordion/icons/_material.scss +17 -17
  71. package/styles/bootstrap-dark.css +7 -9
  72. package/styles/bootstrap.css +7 -9
  73. package/styles/bootstrap4.css +7 -9
  74. package/styles/bootstrap5-dark.css +0 -0
  75. package/styles/bootstrap5-dark.scss +0 -0
  76. package/styles/bootstrap5.css +0 -0
  77. package/styles/bootstrap5.scss +0 -0
  78. package/styles/context-menu/_all.scss +2 -2
  79. package/styles/context-menu/_bootstrap-dark-definition.scss +54 -54
  80. package/styles/context-menu/_bootstrap-definition.scss +52 -52
  81. package/styles/context-menu/_bootstrap4-definition.scss +52 -52
  82. package/styles/context-menu/_fabric-dark-definition.scss +54 -54
  83. package/styles/context-menu/_fabric-definition.scss +52 -52
  84. package/styles/context-menu/_highcontrast-definition.scss +52 -52
  85. package/styles/context-menu/_highcontrast-light-definition.scss +54 -54
  86. package/styles/context-menu/_layout-mixin.scss +175 -175
  87. package/styles/context-menu/_layout.scss +70 -70
  88. package/styles/context-menu/_material-dark-definition.scss +54 -54
  89. package/styles/context-menu/_material-definition.scss +52 -52
  90. package/styles/context-menu/_theme-mixin.scss +59 -59
  91. package/styles/context-menu/_theme.scss +36 -36
  92. package/styles/context-menu/bootstrap-dark.css +0 -1
  93. package/styles/context-menu/bootstrap.css +0 -1
  94. package/styles/context-menu/bootstrap4.css +0 -1
  95. package/styles/context-menu/fabric-dark.css +0 -1
  96. package/styles/context-menu/fabric.css +0 -1
  97. package/styles/context-menu/highcontrast-light.css +0 -1
  98. package/styles/context-menu/highcontrast.css +0 -1
  99. package/styles/context-menu/icons/_bootstrap-dark.scss +30 -30
  100. package/styles/context-menu/icons/_bootstrap.scss +30 -30
  101. package/styles/context-menu/icons/_bootstrap4.scss +30 -30
  102. package/styles/context-menu/icons/_fabric-dark.scss +30 -30
  103. package/styles/context-menu/icons/_fabric.scss +30 -30
  104. package/styles/context-menu/icons/_highcontrast-light.scss +30 -30
  105. package/styles/context-menu/icons/_highcontrast.scss +30 -30
  106. package/styles/context-menu/icons/_material-dark.scss +30 -30
  107. package/styles/context-menu/icons/_material.scss +30 -30
  108. package/styles/context-menu/material-dark.css +0 -1
  109. package/styles/context-menu/material.css +3 -4
  110. package/styles/fabric-dark.css +7 -9
  111. package/styles/fabric.css +7 -9
  112. package/styles/h-scroll/_all.scss +2 -2
  113. package/styles/h-scroll/_bootstrap-dark-definition.scss +49 -49
  114. package/styles/h-scroll/_bootstrap-definition.scss +50 -50
  115. package/styles/h-scroll/_bootstrap4-definition.scss +49 -49
  116. package/styles/h-scroll/_fabric-dark-definition.scss +50 -50
  117. package/styles/h-scroll/_fabric-definition.scss +48 -48
  118. package/styles/h-scroll/_highcontrast-definition.scss +52 -52
  119. package/styles/h-scroll/_highcontrast-light-definition.scss +54 -54
  120. package/styles/h-scroll/_layout.scss +198 -198
  121. package/styles/h-scroll/_material-dark-definition.scss +77 -77
  122. package/styles/h-scroll/_material-definition.scss +77 -77
  123. package/styles/h-scroll/_theme.scss +157 -157
  124. package/styles/h-scroll/icons/_bootstrap-dark.scss +49 -49
  125. package/styles/h-scroll/icons/_bootstrap.scss +49 -49
  126. package/styles/h-scroll/icons/_bootstrap4.scss +49 -49
  127. package/styles/h-scroll/icons/_fabric-dark.scss +49 -49
  128. package/styles/h-scroll/icons/_fabric.scss +49 -49
  129. package/styles/h-scroll/icons/_highcontrast-light.scss +49 -49
  130. package/styles/h-scroll/icons/_highcontrast.scss +49 -49
  131. package/styles/h-scroll/icons/_material-dark.scss +49 -49
  132. package/styles/h-scroll/icons/_material.scss +49 -49
  133. package/styles/highcontrast-light.css +7 -9
  134. package/styles/highcontrast.css +7 -9
  135. package/styles/material-dark.css +7 -9
  136. package/styles/material.css +21 -14
  137. package/styles/menu/_all.scss +2 -2
  138. package/styles/menu/_bootstrap-dark-definition.scss +63 -63
  139. package/styles/menu/_bootstrap-definition.scss +65 -65
  140. package/styles/menu/_bootstrap4-definition.scss +64 -64
  141. package/styles/menu/_fabric-dark-definition.scss +63 -63
  142. package/styles/menu/_fabric-definition.scss +64 -64
  143. package/styles/menu/_highcontrast-definition.scss +65 -65
  144. package/styles/menu/_highcontrast-light-definition.scss +61 -61
  145. package/styles/menu/_layout.scss +638 -638
  146. package/styles/menu/_material-dark-definition.scss +63 -63
  147. package/styles/menu/_material-definition.scss +64 -64
  148. package/styles/menu/_theme.scss +243 -243
  149. package/styles/menu/bootstrap-dark.css +0 -1
  150. package/styles/menu/bootstrap.css +0 -1
  151. package/styles/menu/bootstrap.scss +1 -0
  152. package/styles/menu/bootstrap4.css +0 -1
  153. package/styles/menu/fabric-dark.css +0 -1
  154. package/styles/menu/fabric.css +0 -1
  155. package/styles/menu/fabric.scss +1 -0
  156. package/styles/menu/highcontrast-light.css +0 -1
  157. package/styles/menu/highcontrast.css +0 -1
  158. package/styles/menu/highcontrast.scss +1 -0
  159. package/styles/menu/icons/_bootstrap-dark.scss +127 -127
  160. package/styles/menu/icons/_bootstrap.scss +127 -127
  161. package/styles/menu/icons/_bootstrap4.scss +127 -127
  162. package/styles/menu/icons/_fabric-dark.scss +127 -127
  163. package/styles/menu/icons/_fabric.scss +127 -127
  164. package/styles/menu/icons/_highcontrast-light.scss +127 -127
  165. package/styles/menu/icons/_highcontrast.scss +127 -127
  166. package/styles/menu/icons/_material-dark.scss +127 -127
  167. package/styles/menu/icons/_material.scss +127 -127
  168. package/styles/menu/material-dark.css +0 -1
  169. package/styles/menu/material.css +2 -3
  170. package/styles/menu/material.scss +1 -0
  171. package/styles/sidebar/_all.scss +3 -3
  172. package/styles/sidebar/_bootstrap-dark-definition.scss +4 -4
  173. package/styles/sidebar/_bootstrap-definition.scss +4 -4
  174. package/styles/sidebar/_bootstrap4-definition.scss +4 -4
  175. package/styles/sidebar/_fabric-dark-definition.scss +4 -4
  176. package/styles/sidebar/_fabric-definition.scss +6 -6
  177. package/styles/sidebar/_highcontrast-definition.scss +4 -4
  178. package/styles/sidebar/_highcontrast-light-definition.scss +4 -4
  179. package/styles/sidebar/_icons.scss +1 -1
  180. package/styles/sidebar/_material-dark-definition.scss +4 -4
  181. package/styles/sidebar/_material-definition.scss +6 -6
  182. package/styles/sidebar/_theme.scss +168 -168
  183. package/styles/sidebar/bootstrap-dark.css +0 -1
  184. package/styles/sidebar/bootstrap.css +0 -1
  185. package/styles/sidebar/bootstrap4.css +0 -1
  186. package/styles/sidebar/fabric-dark.css +0 -1
  187. package/styles/sidebar/fabric.css +0 -1
  188. package/styles/sidebar/highcontrast-light.css +0 -1
  189. package/styles/sidebar/highcontrast.css +0 -1
  190. package/styles/sidebar/material-dark.css +0 -1
  191. package/styles/sidebar/material.css +0 -1
  192. package/styles/tab/_all.scss +2 -2
  193. package/styles/tab/_bootstrap-dark-definition.scss +386 -386
  194. package/styles/tab/_bootstrap-definition.scss +396 -396
  195. package/styles/tab/_bootstrap4-definition.scss +401 -401
  196. package/styles/tab/_fabric-dark-definition.scss +394 -394
  197. package/styles/tab/_fabric-definition.scss +410 -410
  198. package/styles/tab/_highcontrast-definition.scss +434 -434
  199. package/styles/tab/_highcontrast-light-definition.scss +423 -423
  200. package/styles/tab/_icons.scss +43 -43
  201. package/styles/tab/_layout.scss +3528 -3521
  202. package/styles/tab/_material-dark-definition.scss +407 -407
  203. package/styles/tab/_material-definition.scss +416 -416
  204. package/styles/tab/_theme.scss +1751 -1751
  205. package/styles/tab/bootstrap-dark.css +7 -2
  206. package/styles/tab/bootstrap.css +7 -2
  207. package/styles/tab/bootstrap4.css +7 -2
  208. package/styles/tab/fabric-dark.css +7 -2
  209. package/styles/tab/fabric.css +7 -2
  210. package/styles/tab/highcontrast-light.css +7 -2
  211. package/styles/tab/highcontrast.css +7 -2
  212. package/styles/tab/icons/_bootstrap-dark.scss +132 -132
  213. package/styles/tab/icons/_bootstrap.scss +132 -132
  214. package/styles/tab/icons/_bootstrap4.scss +132 -132
  215. package/styles/tab/icons/_fabric-dark.scss +132 -132
  216. package/styles/tab/icons/_fabric.scss +132 -132
  217. package/styles/tab/icons/_highcontrast-light.scss +132 -132
  218. package/styles/tab/icons/_highcontrast.scss +132 -132
  219. package/styles/tab/icons/_material-dark.scss +132 -132
  220. package/styles/tab/icons/_material.scss +132 -132
  221. package/styles/tab/material-dark.css +7 -2
  222. package/styles/tab/material.css +7 -2
  223. package/styles/tailwind-dark.css +0 -0
  224. package/styles/tailwind-dark.scss +0 -0
  225. package/styles/tailwind.css +0 -0
  226. package/styles/tailwind.scss +0 -0
  227. package/styles/toolbar/_all.scss +2 -2
  228. package/styles/toolbar/_bootstrap-dark-definition.scss +135 -135
  229. package/styles/toolbar/_bootstrap-definition.scss +134 -134
  230. package/styles/toolbar/_bootstrap4-definition.scss +139 -139
  231. package/styles/toolbar/_fabric-dark-definition.scss +155 -155
  232. package/styles/toolbar/_fabric-definition.scss +139 -139
  233. package/styles/toolbar/_highcontrast-definition.scss +149 -149
  234. package/styles/toolbar/_highcontrast-light-definition.scss +164 -164
  235. package/styles/toolbar/_layout.scss +1460 -1460
  236. package/styles/toolbar/_material-dark-definition.scss +180 -180
  237. package/styles/toolbar/_material-definition.scss +164 -164
  238. package/styles/toolbar/_theme.scss +451 -451
  239. package/styles/toolbar/bootstrap-dark.css +0 -1
  240. package/styles/toolbar/bootstrap.css +0 -1
  241. package/styles/toolbar/bootstrap.scss +1 -0
  242. package/styles/toolbar/bootstrap4.css +0 -1
  243. package/styles/toolbar/fabric-dark.css +0 -1
  244. package/styles/toolbar/fabric.css +0 -1
  245. package/styles/toolbar/fabric.scss +1 -0
  246. package/styles/toolbar/highcontrast-light.css +0 -1
  247. package/styles/toolbar/highcontrast.css +0 -1
  248. package/styles/toolbar/highcontrast.scss +1 -0
  249. package/styles/toolbar/icons/_bootstrap-dark.scss +16 -16
  250. package/styles/toolbar/icons/_bootstrap.scss +16 -16
  251. package/styles/toolbar/icons/_bootstrap4.scss +16 -16
  252. package/styles/toolbar/icons/_fabric-dark.scss +16 -16
  253. package/styles/toolbar/icons/_fabric.scss +16 -16
  254. package/styles/toolbar/icons/_highcontrast-light.scss +16 -16
  255. package/styles/toolbar/icons/_highcontrast.scss +16 -16
  256. package/styles/toolbar/icons/_material-dark.scss +16 -16
  257. package/styles/toolbar/icons/_material.scss +16 -16
  258. package/styles/toolbar/material-dark.css +0 -1
  259. package/styles/toolbar/material.css +0 -1
  260. package/styles/toolbar/material.scss +1 -0
  261. package/styles/treeview/_all.scss +2 -2
  262. package/styles/treeview/_bootstrap-dark-definition.scss +131 -131
  263. package/styles/treeview/_bootstrap-definition.scss +127 -127
  264. package/styles/treeview/_bootstrap4-definition.scss +153 -153
  265. package/styles/treeview/_fabric-dark-definition.scss +130 -130
  266. package/styles/treeview/_fabric-definition.scss +126 -126
  267. package/styles/treeview/_highcontrast-definition.scss +132 -132
  268. package/styles/treeview/_highcontrast-light-definition.scss +137 -137
  269. package/styles/treeview/_layout.scss +551 -551
  270. package/styles/treeview/_material-dark-definition.scss +126 -126
  271. package/styles/treeview/_material-definition.scss +126 -126
  272. package/styles/treeview/_theme.scss +331 -331
  273. package/styles/treeview/bootstrap-dark.css +0 -3
  274. package/styles/treeview/bootstrap.css +0 -3
  275. package/styles/treeview/bootstrap4.css +0 -3
  276. package/styles/treeview/fabric-dark.css +0 -3
  277. package/styles/treeview/fabric.css +0 -3
  278. package/styles/treeview/highcontrast-light.css +0 -3
  279. package/styles/treeview/highcontrast.css +0 -3
  280. package/styles/treeview/icons/_bootstrap-dark.scss +39 -39
  281. package/styles/treeview/icons/_bootstrap.scss +39 -39
  282. package/styles/treeview/icons/_bootstrap4.scss +39 -39
  283. package/styles/treeview/icons/_fabric-dark.scss +43 -43
  284. package/styles/treeview/icons/_fabric.scss +43 -43
  285. package/styles/treeview/icons/_highcontrast-light.scss +43 -43
  286. package/styles/treeview/icons/_highcontrast.scss +43 -43
  287. package/styles/treeview/icons/_material-dark.scss +43 -43
  288. package/styles/treeview/icons/_material.scss +43 -43
  289. package/styles/treeview/material-dark.css +0 -3
  290. package/styles/treeview/material.css +9 -3
  291. package/styles/v-scroll/_all.scss +2 -2
  292. package/styles/v-scroll/_bootstrap-dark-definition.scss +50 -50
  293. package/styles/v-scroll/_bootstrap-definition.scss +49 -49
  294. package/styles/v-scroll/_bootstrap4-definition.scss +49 -49
  295. package/styles/v-scroll/_fabric-dark-definition.scss +51 -51
  296. package/styles/v-scroll/_fabric-definition.scss +50 -50
  297. package/styles/v-scroll/_highcontrast-definition.scss +51 -51
  298. package/styles/v-scroll/_highcontrast-light-definition.scss +52 -52
  299. package/styles/v-scroll/_layout.scss +162 -162
  300. package/styles/v-scroll/_material-dark-definition.scss +78 -78
  301. package/styles/v-scroll/_material-definition.scss +77 -77
  302. package/styles/v-scroll/_theme.scss +133 -133
  303. package/styles/v-scroll/icons/_bootstrap-dark.scss +26 -26
  304. package/styles/v-scroll/icons/_bootstrap.scss +26 -26
  305. package/styles/v-scroll/icons/_bootstrap4.scss +26 -26
  306. package/styles/v-scroll/icons/_fabric-dark.scss +26 -26
  307. package/styles/v-scroll/icons/_fabric.scss +26 -26
  308. package/styles/v-scroll/icons/_highcontrast-light.scss +26 -26
  309. package/styles/v-scroll/icons/_highcontrast.scss +26 -26
  310. package/styles/v-scroll/icons/_material-dark.scss +26 -26
  311. package/styles/v-scroll/icons/_material.scss +26 -26
  312. package/tslint.json +111 -0
  313. package/.gitlab/merge_request_templates/Bug.md +0 -63
  314. package/.gitlab/merge_request_templates/feature.md +0 -39
@@ -0,0 +1,270 @@
1
+ /// <reference path='../common/menu-base-model.d.ts'/>
2
+ import { attributes, NotifyPropertyChanges, INotifyPropertyChanged, Property } from '@syncfusion/ej2-base';
3
+ import { Browser, Complex, getUniqueID } from '@syncfusion/ej2-base';
4
+ import { MenuBase, FieldSettings } from '../common/menu-base';
5
+ import { MenuItemModel, FieldSettingsModel } from '../common/menu-base-model';
6
+ import { MenuModel } from './menu-model';
7
+
8
+ const VMENU: string = 'e-vertical';
9
+
10
+ const SCROLLABLE: string = 'e-scrollable';
11
+
12
+ const HAMBURGER: string = 'e-hamburger';
13
+
14
+ /**
15
+ * Specifies the option for orientation mode of Menu. By default, component rendered in Horizontal orientation mode.
16
+ */
17
+ export type Orientation = 'Horizontal' | 'Vertical';
18
+
19
+ type objColl = { [key: string]: Object }[];
20
+ type obj = { [key: string]: Object };
21
+
22
+ /**
23
+ * The Menu is a graphical user interface that serve as navigation headers for your application or site.
24
+ * ```html
25
+ * <ul id = 'menu'></ul>
26
+ * ```
27
+ * ```typescript
28
+ * <script>
29
+ * var menuObj = new Menu({ items: [{ text: 'Home' }, { text: 'Contact Us' },{ text: 'Login' }]});
30
+ * menuObj.appendTo("#menu");
31
+ * </script>
32
+ * ```
33
+ */
34
+ @NotifyPropertyChanges
35
+ export class Menu extends MenuBase implements INotifyPropertyChanged {
36
+ private tempItems: objColl = [];
37
+
38
+ /**
39
+ * Specified the orientation of Menu whether it can be horizontal or vertical.
40
+ * @default 'Horizontal'
41
+ */
42
+ @Property('Horizontal')
43
+ public orientation: Orientation;
44
+
45
+ /**
46
+ * Specifies target element to open/close Menu while click in Hamburger mode.
47
+ * @default ''
48
+ */
49
+ @Property('')
50
+ public target: string;
51
+
52
+ /**
53
+ * Specifies the template for Menu item.
54
+ * @default null
55
+ */
56
+ @Property(null)
57
+ public template: string;
58
+
59
+ /**
60
+ * Specifies whether to enable / disable the scrollable option in Menu.
61
+ * @default false
62
+ */
63
+ @Property(false)
64
+ public enableScrolling: boolean;
65
+
66
+ /**
67
+ * Specifies whether to enable / disable the hamburger mode in Menu.
68
+ * @default false
69
+ */
70
+ @Property(false)
71
+ public hamburgerMode: boolean;
72
+
73
+ /**
74
+ * Specifies the title text for hamburger mode in Menu.
75
+ * @default 'Menu'
76
+ */
77
+ @Property('Menu')
78
+ public title: string;
79
+
80
+ /**
81
+ * Specifies mapping fields from the dataSource.
82
+ * @default { itemId: "id", text: "text", parentId: "parentId", iconCss: "iconCss", url: "url", separator: "separator",
83
+ * children: "items" }
84
+ */
85
+ @Complex<FieldSettingsModel>({}, FieldSettings)
86
+ public fields: FieldSettingsModel;
87
+
88
+ /**
89
+ * Constructor for creating the component.
90
+ * @private
91
+ */
92
+ constructor(options?: MenuModel, element?: string | HTMLUListElement) {
93
+ super(options, <HTMLUListElement | string>element);
94
+ }
95
+
96
+ /**
97
+ * Get module name.
98
+ * @returns string
99
+ * @private
100
+ */
101
+ protected getModuleName(): string {
102
+ return 'menu';
103
+ }
104
+
105
+ /**
106
+ * For internal use only - prerender processing.
107
+ * @private
108
+ */
109
+ protected preRender(): void {
110
+ this.isMenu = true;
111
+ this.element.id = this.element.id || getUniqueID('ej2-menu');
112
+ if (this.template) {
113
+ try {
114
+ if (document.querySelectorAll(this.template).length) {
115
+ this.template = document.querySelector(this.template).innerHTML.trim();
116
+ this.clearChanges();
117
+ }
118
+ } catch (e) {
119
+ /* action on catch */
120
+ }
121
+ } else {
122
+ this.updateMenuItems(this.items);
123
+ }
124
+ super.preRender();
125
+ }
126
+
127
+ protected initialize(): void {
128
+ super.initialize();
129
+ attributes(this.element, <{ [key: string]: string }>{ 'role': 'menubar', 'tabindex': '0' });
130
+ if (this.orientation === 'Vertical') {
131
+ this.element.classList.add(VMENU);
132
+ if (this.hamburgerMode && !this.target) {
133
+ this.element.previousElementSibling.classList.add(VMENU);
134
+ }
135
+ this.element.setAttribute('aria-orientation', 'vertical');
136
+ } else {
137
+ if (Browser.isDevice && !this.enableScrolling) {
138
+ this.element.parentElement.classList.add(SCROLLABLE);
139
+ }
140
+ }
141
+ if (this.hamburgerMode) {
142
+ this.element.parentElement.classList.add(HAMBURGER);
143
+ if (this.orientation === 'Horizontal') {
144
+ this.element.classList.add('e-hide-menu');
145
+ }
146
+ }
147
+ }
148
+
149
+ private updateMenuItems(items: MenuItemModel[]): void {
150
+ this.tempItems = items as objColl;
151
+ this.items = [];
152
+ this.tempItems.map(this.createMenuItems, this);
153
+ this.setProperties({ items: this.items }, true);
154
+ this.tempItems = [];
155
+ }
156
+
157
+ /**
158
+ * Called internally if any of the property value changed
159
+ * @private
160
+ * @param {MenuModel} newProp
161
+ * @param {MenuModel} oldProp
162
+ * @returns void
163
+ */
164
+ public onPropertyChanged(newProp: MenuModel, oldProp: MenuModel): void {
165
+ for (let prop of Object.keys(newProp)) {
166
+ switch (prop) {
167
+ case 'orientation':
168
+ if (newProp.orientation === 'Vertical') {
169
+ this.element.classList.add(VMENU);
170
+ if (this.hamburgerMode) {
171
+ if (!this.target) { this.element.previousElementSibling.classList.add(VMENU); }
172
+ this.element.classList.remove('e-hide-menu');
173
+ }
174
+ this.element.setAttribute('aria-orientation', 'vertical');
175
+ } else {
176
+ this.element.classList.remove(VMENU);
177
+ if (this.hamburgerMode) {
178
+ if (!this.target) { this.element.previousElementSibling.classList.remove(VMENU); }
179
+ this.element.classList.add('e-hide-menu');
180
+ }
181
+ this.element.removeAttribute('aria-orientation');
182
+ }
183
+ break;
184
+ case 'items':
185
+ if (!Object.keys(oldProp.items).length) { this.updateMenuItems(newProp.items); }
186
+ break;
187
+ case 'hamburgerMode':
188
+ if (!this.element.previousElementSibling) {
189
+ super.createHeaderContainer();
190
+ }
191
+ if (newProp.hamburgerMode) {
192
+ this.element.parentElement.classList.add(HAMBURGER);
193
+ } else {
194
+ this.element.parentElement.classList.remove(HAMBURGER);
195
+ }
196
+ if (this.orientation === 'Vertical') {
197
+ if (!this.target) { this.element.previousElementSibling.classList.add(VMENU); }
198
+ this.element.classList.remove('e-hide-menu');
199
+ } else {
200
+ if (this.target) {
201
+ this.element.previousElementSibling.classList.add(VMENU);
202
+ } else {
203
+ this.element.previousElementSibling.classList.remove(VMENU);
204
+ }
205
+ this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');
206
+ }
207
+ break;
208
+ case 'title':
209
+ if (this.hamburgerMode && this.element.previousElementSibling) {
210
+ this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;
211
+ }
212
+ break;
213
+ case 'target':
214
+ if (this.hamburgerMode) {
215
+ this.unWireEvents(oldProp.target);
216
+ this.wireEvents();
217
+ if (this.orientation === 'Horizontal') {
218
+ if (!newProp.target) {
219
+ if (!this.element.previousElementSibling) {
220
+ super.createHeaderContainer();
221
+ }
222
+ this.element.previousElementSibling.classList.remove(VMENU);
223
+ } else {
224
+ this.element.previousElementSibling.classList.add(VMENU);
225
+ }
226
+ this.element.classList.add('e-hide-menu');
227
+ }
228
+ }
229
+ break;
230
+ }
231
+ }
232
+ super.onPropertyChanged(newProp, oldProp);
233
+ }
234
+
235
+ private createMenuItems(item: obj): void {
236
+ let pIdField: string;
237
+ let idx: number[];
238
+ let i: number;
239
+ let items: MenuItemModel[] = this.items as objColl;
240
+ pIdField = this.getField('parentId');
241
+ if (item[pIdField]) {
242
+ idx = this.getIndex(item[pIdField].toString(), true);
243
+ for (i = 0; i < idx.length; i++) {
244
+ if (!items[idx[i]].items) {
245
+ items[idx[i]].items = [];
246
+ }
247
+ items = items[idx[i]].items;
248
+ }
249
+ items.push(item);
250
+ } else {
251
+ (<MenuItemModel[]>this.items).push(item);
252
+ }
253
+ }
254
+
255
+ /**
256
+ * This method is used to open the Menu in hamburger mode.
257
+ * @method open
258
+ * @returns void
259
+ */
260
+ public open(): void {
261
+ super.openHamburgerMenu();
262
+ }
263
+
264
+ /**
265
+ * Closes the Menu if it is opened in hamburger mode.
266
+ */
267
+ public close(): void {
268
+ super.closeHamburgerMenu();
269
+ }
270
+ }