@syncfusion/ej2-ribbon 22.2.11 → 23.1.36

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 (126) hide show
  1. package/CHANGELOG.md +0 -16
  2. package/dist/ej2-ribbon.umd.min.js +2 -2
  3. package/dist/ej2-ribbon.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-ribbon.es2015.js +1739 -192
  5. package/dist/es6/ej2-ribbon.es2015.js.map +1 -1
  6. package/dist/es6/ej2-ribbon.es5.js +1800 -135
  7. package/dist/es6/ej2-ribbon.es5.js.map +1 -1
  8. package/dist/global/ej2-ribbon.min.js +2 -2
  9. package/dist/global/ej2-ribbon.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +13 -13
  12. package/src/global.js +1 -1
  13. package/src/ribbon/base/constant.d.ts +40 -0
  14. package/src/ribbon/base/constant.js +40 -0
  15. package/src/ribbon/base/interface.d.ts +49 -2
  16. package/src/ribbon/base/interface.js +19 -1
  17. package/src/ribbon/base/ribbon-model.d.ts +25 -1
  18. package/src/ribbon/base/ribbon.d.ts +108 -3
  19. package/src/ribbon/base/ribbon.js +434 -61
  20. package/src/ribbon/items/index.d.ts +1 -0
  21. package/src/ribbon/items/index.js +1 -0
  22. package/src/ribbon/items/ribbon-button.js +3 -0
  23. package/src/ribbon/items/ribbon-colorpicker.js +1 -1
  24. package/src/ribbon/items/ribbon-dropdown.js +2 -1
  25. package/src/ribbon/items/ribbon-groupbutton.d.ts +69 -0
  26. package/src/ribbon/items/ribbon-groupbutton.js +444 -0
  27. package/src/ribbon/models/index.d.ts +10 -0
  28. package/src/ribbon/models/index.js +5 -0
  29. package/src/ribbon/models/ribbon-back-button-model.d.ts +29 -0
  30. package/src/ribbon/models/ribbon-back-button.d.ts +24 -0
  31. package/src/ribbon/models/ribbon-back-button.js +40 -0
  32. package/src/ribbon/models/ribbon-back-stage-settings-model.d.ts +76 -0
  33. package/src/ribbon/models/ribbon-back-stage-settings.d.ts +75 -0
  34. package/src/ribbon/models/ribbon-back-stage-settings.js +70 -0
  35. package/src/ribbon/models/ribbon-backstage-item-model.d.ts +62 -0
  36. package/src/ribbon/models/ribbon-backstage-item.d.ts +74 -0
  37. package/src/ribbon/models/ribbon-backstage-item.js +52 -0
  38. package/src/ribbon/models/ribbon-combobox-settings-model.d.ts +15 -0
  39. package/src/ribbon/models/ribbon-combobox-settings.d.ts +15 -0
  40. package/src/ribbon/models/ribbon-dropdown-settings-model.d.ts +7 -0
  41. package/src/ribbon/models/ribbon-dropdown-settings.d.ts +6 -0
  42. package/src/ribbon/models/ribbon-dropdown-settings.js +3 -0
  43. package/src/ribbon/models/ribbon-file-menu-settings-model.d.ts +6 -0
  44. package/src/ribbon/models/ribbon-file-menu-settings.d.ts +6 -0
  45. package/src/ribbon/models/ribbon-group-button-item-model.d.ts +50 -0
  46. package/src/ribbon/models/ribbon-group-button-item.d.ts +44 -0
  47. package/src/ribbon/models/ribbon-group-button-item.js +50 -0
  48. package/src/ribbon/models/ribbon-group-button-settings-model.d.ts +25 -0
  49. package/src/ribbon/models/ribbon-group-button-settings.d.ts +23 -0
  50. package/src/ribbon/models/ribbon-group-button-settings.js +38 -0
  51. package/src/ribbon/models/ribbon-item-model.d.ts +11 -1
  52. package/src/ribbon/models/ribbon-item.d.ts +10 -0
  53. package/src/ribbon/models/ribbon-item.js +4 -0
  54. package/src/ribbon/modules/index.d.ts +1 -0
  55. package/src/ribbon/modules/index.js +1 -0
  56. package/src/ribbon/modules/ribbon-backstage.d.ts +112 -0
  57. package/src/ribbon/modules/ribbon-backstage.js +554 -0
  58. package/styles/bootstrap-dark.css +511 -8
  59. package/styles/bootstrap.css +511 -8
  60. package/styles/bootstrap4.css +511 -8
  61. package/styles/bootstrap5-dark.css +511 -8
  62. package/styles/bootstrap5.css +511 -8
  63. package/styles/fabric-dark.css +511 -8
  64. package/styles/fabric.css +511 -8
  65. package/styles/fluent-dark.css +511 -8
  66. package/styles/fluent.css +511 -8
  67. package/styles/highcontrast-light.css +511 -8
  68. package/styles/highcontrast.css +511 -8
  69. package/styles/material-dark.css +511 -9
  70. package/styles/material.css +512 -9
  71. package/styles/material3-dark.css +511 -9
  72. package/styles/material3-dark.scss +1 -1
  73. package/styles/material3.css +511 -9
  74. package/styles/material3.scss +1 -1
  75. package/styles/ribbon/_bootstrap-dark-definition.scss +65 -0
  76. package/styles/ribbon/_bootstrap-definition.scss +65 -0
  77. package/styles/ribbon/_bootstrap4-definition.scss +65 -0
  78. package/styles/ribbon/_bootstrap5-definition.scss +65 -0
  79. package/styles/ribbon/_fabric-dark-definition.scss +65 -0
  80. package/styles/ribbon/_fabric-definition.scss +65 -0
  81. package/styles/ribbon/_fluent-definition.scss +65 -0
  82. package/styles/ribbon/_fusionnew-definition.scss +65 -0
  83. package/styles/ribbon/_highcontrast-definition.scss +65 -0
  84. package/styles/ribbon/_highcontrast-light-definition.scss +65 -0
  85. package/styles/ribbon/_layout.scss +280 -5
  86. package/styles/ribbon/_material-dark-definition.scss +65 -0
  87. package/styles/ribbon/_material-definition.scss +65 -0
  88. package/styles/ribbon/_material3-definition.scss +66 -0
  89. package/styles/ribbon/_tailwind-definition.scss +65 -0
  90. package/styles/ribbon/_theme.scss +144 -1
  91. package/styles/ribbon/bootstrap-dark.css +511 -8
  92. package/styles/ribbon/bootstrap-dark.scss +1 -1
  93. package/styles/ribbon/bootstrap.css +511 -8
  94. package/styles/ribbon/bootstrap.scss +1 -1
  95. package/styles/ribbon/bootstrap4.css +511 -8
  96. package/styles/ribbon/bootstrap4.scss +1 -1
  97. package/styles/ribbon/bootstrap5-dark.css +511 -8
  98. package/styles/ribbon/bootstrap5-dark.scss +1 -1
  99. package/styles/ribbon/bootstrap5.css +511 -8
  100. package/styles/ribbon/bootstrap5.scss +1 -1
  101. package/styles/ribbon/fabric-dark.css +511 -8
  102. package/styles/ribbon/fabric-dark.scss +1 -1
  103. package/styles/ribbon/fabric.css +511 -8
  104. package/styles/ribbon/fabric.scss +1 -1
  105. package/styles/ribbon/fluent-dark.css +511 -8
  106. package/styles/ribbon/fluent-dark.scss +1 -1
  107. package/styles/ribbon/fluent.css +511 -8
  108. package/styles/ribbon/fluent.scss +1 -1
  109. package/styles/ribbon/highcontrast-light.css +511 -8
  110. package/styles/ribbon/highcontrast-light.scss +1 -1
  111. package/styles/ribbon/highcontrast.css +511 -8
  112. package/styles/ribbon/highcontrast.scss +1 -1
  113. package/styles/ribbon/material-dark.css +511 -9
  114. package/styles/ribbon/material-dark.scss +1 -1
  115. package/styles/ribbon/material.css +512 -9
  116. package/styles/ribbon/material.scss +1 -1
  117. package/styles/ribbon/material3-dark.css +511 -9
  118. package/styles/ribbon/material3-dark.scss +1 -1
  119. package/styles/ribbon/material3.css +511 -9
  120. package/styles/ribbon/material3.scss +1 -1
  121. package/styles/ribbon/tailwind-dark.css +511 -9
  122. package/styles/ribbon/tailwind-dark.scss +1 -1
  123. package/styles/ribbon/tailwind.css +511 -9
  124. package/styles/ribbon/tailwind.scss +1 -1
  125. package/styles/tailwind-dark.css +511 -9
  126. package/styles/tailwind.css +511 -9
@@ -0,0 +1,554 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ extendStatics(d, b);
10
+ function __() { this.constructor = d; }
11
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
+ };
13
+ })();
14
+ import { remove, append, Component, EventHandler } from '@syncfusion/ej2-base';
15
+ import { Menu } from '@syncfusion/ej2-navigations';
16
+ import { getIndex } from '../base/index';
17
+ import { getTemplateFunction, isTooltipPresent } from '../base/utils';
18
+ import * as constants from '../base/constant';
19
+ import { Button } from '@syncfusion/ej2-buttons';
20
+ import { Popup } from '@syncfusion/ej2-popups';
21
+ /**
22
+ * Defines the items of Ribbon.
23
+ */
24
+ var RibbonBackstage = /** @class */ (function (_super) {
25
+ __extends(RibbonBackstage, _super);
26
+ function RibbonBackstage(parent) {
27
+ var _this = _super.call(this) || this;
28
+ _this.parent = parent;
29
+ return _this;
30
+ }
31
+ /**
32
+ * @private
33
+ * @returns {void}
34
+ */
35
+ RibbonBackstage.prototype.render = function () {
36
+ // render code
37
+ };
38
+ /**
39
+ * @private
40
+ * @returns {void}
41
+ */
42
+ RibbonBackstage.prototype.preRender = function () {
43
+ // pre render code
44
+ };
45
+ RibbonBackstage.prototype.getPersistData = function () {
46
+ return '';
47
+ };
48
+ /**
49
+ * This method is abstract member of the Component<HTMLElement>.
50
+ *
51
+ * @private
52
+ * @returns {void}
53
+ */
54
+ RibbonBackstage.prototype.onPropertyChanged = function () {
55
+ // onProperty changes code
56
+ };
57
+ RibbonBackstage.prototype.getModuleName = function () {
58
+ return 'ribbonBackstage';
59
+ };
60
+ RibbonBackstage.prototype.destroy = function () {
61
+ if (this.backstageButton) {
62
+ this.destroyDDB();
63
+ }
64
+ this.parent = null;
65
+ };
66
+ /**
67
+ * Creates Backstage Menu
68
+ *
69
+ * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage.
70
+ * @returns {void}
71
+ * @hidden
72
+ */
73
+ RibbonBackstage.prototype.createBackStage = function (backStageOptions) {
74
+ var _this = this;
75
+ if (!backStageOptions.visible) {
76
+ return;
77
+ }
78
+ this.backstageButtonEle = this.parent.createElement('button', {
79
+ id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID
80
+ });
81
+ var tabEle = this.parent.tabObj.element;
82
+ var toolbarEle = tabEle.querySelector('.e-toolbar');
83
+ tabEle.insertBefore(this.backstageButtonEle, toolbarEle);
84
+ this.backstageButton = new Button({
85
+ content: backStageOptions.text,
86
+ enableRtl: this.parent.enableRtl,
87
+ cssClass: constants.RIBBON_BACKSTAGE,
88
+ created: function () {
89
+ tabEle.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, _this.backstageButtonEle.offsetWidth + 'px');
90
+ }
91
+ }, this.backstageButtonEle);
92
+ this.createBackStagePopup(backStageOptions);
93
+ if (this.parent.backStageMenu.template) {
94
+ this.createBackStageTemplate(this.parent.backStageMenu.template);
95
+ }
96
+ else {
97
+ var footerItemCount = 0;
98
+ var itemCount = 0;
99
+ for (var i = 0; i < backStageOptions.items.length; i++) {
100
+ var item = backStageOptions.items[parseInt(i.toString(), 10)];
101
+ if (item.isFooter) {
102
+ footerItemCount++;
103
+ }
104
+ else {
105
+ itemCount++;
106
+ }
107
+ }
108
+ if (itemCount > 0) {
109
+ this.createBackstageMenu(backStageOptions, false);
110
+ }
111
+ if (footerItemCount > 0) {
112
+ this.createBackstageMenu(backStageOptions, true);
113
+ }
114
+ if (this.menuCtrl) {
115
+ this.checkMenuItems(this.menuCtrl.items);
116
+ }
117
+ if (this.footerMenuCtrl) {
118
+ this.checkMenuItems(this.footerMenuCtrl.items);
119
+ }
120
+ }
121
+ this.backstageButtonEle.onclick = function (e) {
122
+ e.stopPropagation();
123
+ _this.showBackstage();
124
+ _this.popupHTMLElement.classList.add(constants.RIBBON_BACKSTAGE_OPEN);
125
+ var menuItem = _this.menuWrapper.querySelector('.e-menu-item.e-selected');
126
+ if (menuItem) {
127
+ menuItem.classList.remove('e-selected');
128
+ }
129
+ for (var i = 0; i < backStageOptions.items.length; i++) {
130
+ var item = backStageOptions.items[parseInt(i.toString(), 10)];
131
+ if (!item.isFooter && _this.menuCtrl.items[0].text === item.text) {
132
+ var firstMenuEle = _this.popupHTMLElement.querySelector('#' + _this.menuCtrl.items[0].id);
133
+ if (firstMenuEle) {
134
+ firstMenuEle.classList.add('e-selected');
135
+ firstMenuEle.focus();
136
+ }
137
+ _this.createBackStageContent(_this.menuCtrl.items[0].id, item.content);
138
+ break;
139
+ }
140
+ else {
141
+ continue;
142
+ }
143
+ }
144
+ };
145
+ this.parent.tabObj.refreshActiveTabBorder();
146
+ this.addBackStageMenuTooltip(backStageOptions);
147
+ EventHandler.add(document, 'click', this.onClickEvent, this);
148
+ };
149
+ RibbonBackstage.prototype.onClickEvent = function (e) {
150
+ var targetEle = e.target;
151
+ if (this.popupHTMLElement.contains(targetEle)) {
152
+ return;
153
+ }
154
+ else {
155
+ this.hideBackstage();
156
+ }
157
+ };
158
+ RibbonBackstage.prototype.addBackStageMenuTooltip = function (backStageOptions) {
159
+ if (isTooltipPresent(backStageOptions.ribbonTooltipSettings)) {
160
+ this.backstageButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);
161
+ this.parent.tooltipData.push({ id: this.backstageButtonEle.id, data: backStageOptions.ribbonTooltipSettings });
162
+ }
163
+ };
164
+ RibbonBackstage.prototype.checkMenuItems = function (backStageItems) {
165
+ for (var i = 0; i < backStageItems.length; i++) {
166
+ var item = backStageItems[parseInt(i.toString(), 10)];
167
+ if (!item.iconCss) {
168
+ var menuItemEle = this.popupHTMLElement.querySelector('#' + item.id);
169
+ menuItemEle.classList.add(constants.RIBBON_BACKSTAGE_TEXT_MENU);
170
+ }
171
+ }
172
+ };
173
+ RibbonBackstage.prototype.createBackStagePopup = function (backStageOptions) {
174
+ var _this = this;
175
+ this.popupHTMLElement = this.parent.createElement('div', {
176
+ id: this.parent.element.id + constants.RIBBON_BACKSTAGE_POPUP_ID,
177
+ className: constants.RIBBON_BACKSTAGE_POPUP
178
+ });
179
+ var targetEle;
180
+ if (backStageOptions.target) {
181
+ targetEle = backStageOptions.target instanceof HTMLElement ? backStageOptions.target : document.querySelector(backStageOptions.target);
182
+ targetEle.appendChild(this.popupHTMLElement);
183
+ }
184
+ else {
185
+ this.parent.element.appendChild(this.popupHTMLElement);
186
+ }
187
+ this.popupEle = new Popup(this.popupHTMLElement, {
188
+ height: backStageOptions.height,
189
+ width: backStageOptions.width,
190
+ relateTo: backStageOptions.target || this.parent.element,
191
+ enableRtl: this.parent.enableRtl
192
+ });
193
+ if (this.parent.enableRtl) {
194
+ this.updatePopupPositionOnRtl(this.parent.enableRtl);
195
+ }
196
+ this.popupHTMLElement.onkeydown = function (e) { if (e.code === 'Escape') {
197
+ _this.hideBackstage();
198
+ } };
199
+ this.hideBackstage();
200
+ };
201
+ RibbonBackstage.prototype.updatePopupPositionOnRtl = function (enableRtl) {
202
+ var popupStyle = this.popupHTMLElement.style;
203
+ if (enableRtl) {
204
+ popupStyle.right = popupStyle.left;
205
+ popupStyle.left = 'unset';
206
+ }
207
+ else {
208
+ popupStyle.left = popupStyle.right;
209
+ popupStyle.right = 'unset';
210
+ }
211
+ };
212
+ RibbonBackstage.prototype.createBackstageMenu = function (menuOptions, isFooter) {
213
+ var _this = this;
214
+ var wrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_wrapper');
215
+ if (!wrapperEle) {
216
+ this.menuWrapper = this.parent.createElement('div', {
217
+ id: this.parent.element.id + '_wrapper',
218
+ className: constants.RIBBON_BACKSTAGE_MENU_WRAPPER
219
+ });
220
+ this.popupHTMLElement.appendChild(this.menuWrapper);
221
+ }
222
+ if (menuOptions.backButton.visible && !isFooter) {
223
+ var closeBtnEle = this.parent.createElement('button', {
224
+ id: this.parent.element.id + '_close',
225
+ className: 'e-ribbon-close-btn'
226
+ });
227
+ this.closeBtn = new Button({
228
+ content: menuOptions.backButton.text,
229
+ iconCss: menuOptions.backButton.iconCss ? menuOptions.backButton.iconCss : constants.BACKSTAGE_CLOSE_ICON,
230
+ enableRtl: this.parent.enableRtl
231
+ }, closeBtnEle);
232
+ this.menuWrapper.append(closeBtnEle);
233
+ closeBtnEle.onclick = function () {
234
+ _this.popupHTMLElement.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);
235
+ _this.hideBackstage();
236
+ _this.isBackButtonClicked = true;
237
+ };
238
+ }
239
+ var itemsWrapperEle = this.popupHTMLElement.querySelector('#' + this.parent.element.id + '_itemswrapper');
240
+ if (!itemsWrapperEle) {
241
+ this.itemsWrapperEle = this.parent.createElement('div', {
242
+ id: this.parent.element.id + '_itemswrapper',
243
+ className: constants.RIBBON_BACKSTAGE_ITEMS_WRAPPER
244
+ });
245
+ this.menuWrapper.append(this.itemsWrapperEle);
246
+ }
247
+ var ulFooterElem;
248
+ if (isFooter) {
249
+ ulFooterElem = this.parent.createElement('ul', {
250
+ id: this.parent.element.id + constants.RIBBON_FOOTER_MENU_LIST
251
+ });
252
+ this.itemsWrapperEle.appendChild(ulFooterElem);
253
+ }
254
+ else {
255
+ this.ulMenuElem = this.parent.createElement('ul', {
256
+ id: this.parent.element.id + constants.RIBBON_MENU_LIST
257
+ });
258
+ this.itemsWrapperEle.appendChild(this.ulMenuElem);
259
+ }
260
+ if (!isFooter) {
261
+ this.menuCtrl = new Menu({
262
+ orientation: 'Vertical',
263
+ enableRtl: this.parent.enableRtl,
264
+ cssClass: constants.RIBBON_BACKSTAGE_MENU,
265
+ items: this.cloneMenuItem(menuOptions.items),
266
+ select: this.menuSelect.bind(this, menuOptions)
267
+ }, this.ulMenuElem);
268
+ }
269
+ else {
270
+ this.footerMenuCtrl = new Menu({
271
+ orientation: 'Vertical',
272
+ enableRtl: this.parent.enableRtl,
273
+ cssClass: constants.RIBBON_BACKSTAGE_MENU,
274
+ items: this.cloneFooterMenuItem(menuOptions.items),
275
+ select: this.menuSelect.bind(this, menuOptions)
276
+ }, ulFooterElem);
277
+ }
278
+ };
279
+ RibbonBackstage.prototype.cloneMenuItem = function (items) {
280
+ var itemsList = [];
281
+ for (var i = 0; i < items.length; i++) {
282
+ var item = items[parseInt(i.toString(), 10)];
283
+ if (item.isFooter) {
284
+ continue;
285
+ }
286
+ else {
287
+ itemsList.push({
288
+ id: item.id,
289
+ iconCss: item.iconCss,
290
+ separator: item.separator,
291
+ text: item.text
292
+ });
293
+ }
294
+ }
295
+ return itemsList;
296
+ };
297
+ RibbonBackstage.prototype.cloneFooterMenuItem = function (items) {
298
+ var itemsList = [];
299
+ for (var i = 0; i < items.length; i++) {
300
+ var item = items[parseInt(i.toString(), 10)];
301
+ if (!item.isFooter) {
302
+ continue;
303
+ }
304
+ else {
305
+ itemsList.push({
306
+ id: item.id,
307
+ iconCss: item.iconCss,
308
+ separator: item.separator,
309
+ text: item.text
310
+ });
311
+ }
312
+ }
313
+ return itemsList;
314
+ };
315
+ RibbonBackstage.prototype.createBackStageContent = function (itemId, content) {
316
+ var templateName = 'backstageContent';
317
+ this.clearTemplate([templateName]);
318
+ if (!this.backstageContentEle) {
319
+ this.backstageContentEle = this.parent.createElement('div', {
320
+ id: itemId + constants.CONTENT_ID,
321
+ className: constants.RIBBON_BACKSTAGE_CONTENT
322
+ });
323
+ }
324
+ else {
325
+ this.backstageContentEle.innerHTML = '';
326
+ this.backstageContentEle.id = itemId + constants.CONTENT_ID;
327
+ }
328
+ var templateFunction = getTemplateFunction(content);
329
+ append(templateFunction({}, this, templateName, 'backstageContent', this.parent.isStringTemplate), this.backstageContentEle);
330
+ if (content) {
331
+ this.popupHTMLElement.append(this.backstageContentEle);
332
+ }
333
+ this.renderReactTemplates();
334
+ return templateFunction;
335
+ };
336
+ RibbonBackstage.prototype.createBackStageTemplate = function (template) {
337
+ var templateName = 'backstageTemplate';
338
+ this.clearTemplate([templateName]);
339
+ this.backstageTempEle = this.parent.createElement('div', {
340
+ id: this.parent.element.id + constants.RIBBON_BACKSTAGE_MENU_ID + '_template',
341
+ className: constants.RIBBON_BACKSTAGE_TEMPLATE
342
+ });
343
+ var templateFunction = getTemplateFunction(template);
344
+ append(templateFunction({}, this, templateName, 'backstageTemplate', this.parent.isStringTemplate), this.backstageTempEle);
345
+ this.popupHTMLElement.append(this.backstageTempEle);
346
+ this.renderReactTemplates();
347
+ return templateFunction;
348
+ };
349
+ RibbonBackstage.prototype.menuSelect = function (menuOptions, args) {
350
+ for (var i = 0; i < menuOptions.items.length; i++) {
351
+ var item = menuOptions.items[parseInt(i.toString(), 10)];
352
+ if (item.text === args.item.text) {
353
+ this.contentItem = item;
354
+ break;
355
+ }
356
+ }
357
+ this.createBackStageContent(args.item.id, this.contentItem.content);
358
+ var eventArgs = { cancel: false, target: args.element, item: this.contentItem, isBackButton: this.isBackButtonClicked };
359
+ if (this.contentItem.backStageItemClick) {
360
+ this.contentItem.backStageItemClick.call(this, eventArgs);
361
+ }
362
+ if (eventArgs.cancel) {
363
+ return;
364
+ }
365
+ };
366
+ /**
367
+ * setRtl
368
+ *
369
+ * @param {commonProperties} commonProp - Get the common property of ribbon.
370
+ * @returns {void}
371
+ * @hidden
372
+ */
373
+ RibbonBackstage.prototype.setCommonProperties = function (commonProp) {
374
+ if (this.backstageButton) {
375
+ this.backstageButton.setProperties(commonProp);
376
+ if (this.popupEle) {
377
+ this.popupEle.setProperties(commonProp);
378
+ if (this.popupHTMLElement)
379
+ this.updatePopupPositionOnRtl(commonProp.enableRtl);
380
+ if (this.menuCtrl) {
381
+ this.menuCtrl.setProperties(commonProp);
382
+ if (this.closeBtn) {
383
+ this.closeBtn.setProperties(commonProp);
384
+ }
385
+ }
386
+ }
387
+ }
388
+ };
389
+ /**
390
+ * Update Backstage menu
391
+ *
392
+ * @param {BackStageMenuModel} backStageOptions - Gets the property of backstage menu.
393
+ * @returns {void}
394
+ * @hidden
395
+ */
396
+ RibbonBackstage.prototype.updateBackStageMenu = function (backStageOptions) {
397
+ if (backStageOptions.visible) {
398
+ if (this.backstageButton) {
399
+ if (backStageOptions.text) {
400
+ this.backstageButton.setProperties({
401
+ content: backStageOptions.text
402
+ });
403
+ this.parent.tabObj.element.style.setProperty(constants.RIBBON_FILE_MENU_WIDTH, this.backstageButtonEle.offsetWidth + 'px');
404
+ }
405
+ if (this.popupEle) {
406
+ this.popupEle.setProperties({
407
+ height: backStageOptions.height,
408
+ width: backStageOptions.width,
409
+ target: backStageOptions.target || this.parent.element,
410
+ });
411
+ }
412
+ if (backStageOptions.template) {
413
+ if (this.backstageTempEle) {
414
+ remove(this.backstageTempEle);
415
+ this.backstageTempEle = null;
416
+ }
417
+ this.createBackStageTemplate(backStageOptions.template);
418
+ }
419
+ else {
420
+ if (this.menuCtrl) {
421
+ this.menuCtrl.setProperties({
422
+ items: this.cloneMenuItem(backStageOptions.items)
423
+ });
424
+ }
425
+ if (this.footerMenuCtrl) {
426
+ this.footerMenuCtrl.setProperties({
427
+ items: this.cloneFooterMenuItem(backStageOptions.items)
428
+ });
429
+ }
430
+ else {
431
+ var footerItemCount = 0;
432
+ var itemCount = 0;
433
+ for (var i = 0; i < backStageOptions.items.length; i++) {
434
+ var item = backStageOptions.items[parseInt(i.toString(), 10)];
435
+ if (item.isFooter) {
436
+ footerItemCount++;
437
+ }
438
+ else {
439
+ itemCount++;
440
+ }
441
+ }
442
+ if (itemCount > 0) {
443
+ this.createBackstageMenu(backStageOptions, false);
444
+ }
445
+ if (footerItemCount > 0) {
446
+ this.createBackstageMenu(backStageOptions, true);
447
+ }
448
+ }
449
+ }
450
+ this.removeBackstageMenuTooltip();
451
+ this.addBackStageMenuTooltip(backStageOptions);
452
+ }
453
+ else {
454
+ this.createBackStage(backStageOptions);
455
+ }
456
+ }
457
+ else if (this.backstageButton) {
458
+ this.destroyDDB();
459
+ }
460
+ this.parent.tabObj.refreshActiveTabBorder();
461
+ };
462
+ RibbonBackstage.prototype.destroyMenu = function () {
463
+ if (this.menuCtrl) {
464
+ this.menuCtrl.destroy();
465
+ this.menuCtrl = null;
466
+ }
467
+ };
468
+ RibbonBackstage.prototype.destroyDDB = function () {
469
+ this.removeBackstageMenuTooltip();
470
+ var tabEle = this.parent.tabObj.element;
471
+ tabEle.style.removeProperty(constants.RIBBON_FILE_MENU_WIDTH);
472
+ this.destroyMenu();
473
+ this.backstageButton.destroy();
474
+ this.backstageButton = null;
475
+ remove(this.backstageButtonEle);
476
+ this.backstageButtonEle = null;
477
+ EventHandler.remove(document, 'click', this.onClickEvent);
478
+ };
479
+ RibbonBackstage.prototype.removeBackstageMenuTooltip = function () {
480
+ var _this = this;
481
+ var index = getIndex(this.parent.tooltipData, function (e) { return e.id === _this.backstageButtonEle.id; });
482
+ if (index !== -1) {
483
+ this.backstageButtonEle.classList.remove(constants.RIBBON_TOOLTIP_TARGET);
484
+ this.parent.tooltipData.splice(index, 1);
485
+ }
486
+ };
487
+ /**
488
+ * Add items to Backstage Menu.
489
+ *
490
+ * @param {BackstageItemModel[]} items - Gets the items to be added.
491
+ * @param {string} target - Gets the target item to add the items.
492
+ * @param {boolean} isAfter - Gets the boolean value to add the items after or before the target item.
493
+ * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.
494
+ * @returns {void}
495
+ */
496
+ RibbonBackstage.prototype.addBackstageItems = function (items, target, isAfter, isUniqueId) {
497
+ for (var i = 0; i < items.length; i++) {
498
+ var item = items[parseInt(i.toString(), 10)];
499
+ if (item.isFooter) {
500
+ isAfter ? this.footerMenuCtrl.insertAfter(items, target, isUniqueId) : this.footerMenuCtrl.insertBefore(items, target, isUniqueId);
501
+ }
502
+ else {
503
+ isAfter ? this.menuCtrl.insertAfter(items, target, isUniqueId) : this.menuCtrl.insertBefore(items, target, isUniqueId);
504
+ }
505
+ }
506
+ var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);
507
+ var backStageOptions = this.parent.backStageMenu;
508
+ for (var i = 0; i < backStageOptions.items.length; i++) {
509
+ var item = backStageOptions.items[parseInt(i.toString(), 10)];
510
+ for (var i_1 = 0; i_1 < backstageItems.length; i_1++) {
511
+ var item1 = backstageItems[parseInt(i_1.toString(), 10)];
512
+ if (item.text === item1.text) {
513
+ item1.content = item.content;
514
+ break;
515
+ }
516
+ }
517
+ }
518
+ this.parent.backStageMenu.setProperties({ items: backstageItems }, true);
519
+ };
520
+ /**
521
+ * Remove items from Backstage Menu.
522
+ *
523
+ * @param {string[]} items - Gets the items to be removed.
524
+ * @param {boolean} isUniqueId - Gets whether the target provided is uniqueId or not.
525
+ * @returns {void}
526
+ */
527
+ RibbonBackstage.prototype.removeBackstageItems = function (items, isUniqueId) {
528
+ this.menuCtrl.removeItems(items, isUniqueId);
529
+ this.footerMenuCtrl.removeItems(items, isUniqueId);
530
+ var backstageItems = [].concat(this.menuCtrl.items, this.footerMenuCtrl.items);
531
+ this.parent.backStageMenu.setProperties({ items: backstageItems }, true);
532
+ };
533
+ /**
534
+ * Renders the backstage dynamically.
535
+ *
536
+ * @returns {void}
537
+ */
538
+ RibbonBackstage.prototype.showBackstage = function () {
539
+ this.popupEle.show();
540
+ };
541
+ /**
542
+ * Hides the backstage dynamically.
543
+ *
544
+ * @returns {void}
545
+ */
546
+ RibbonBackstage.prototype.hideBackstage = function () {
547
+ if (this.popupEle.element.classList.contains(constants.RIBBON_BACKSTAGE_OPEN)) {
548
+ this.popupEle.element.classList.remove(constants.RIBBON_BACKSTAGE_OPEN);
549
+ }
550
+ this.popupEle.hide();
551
+ };
552
+ return RibbonBackstage;
553
+ }(Component));
554
+ export { RibbonBackstage };