@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
@@ -4,3 +4,4 @@ export * from './ribbon-colorpicker';
4
4
  export * from './ribbon-combobox';
5
5
  export * from './ribbon-dropdown';
6
6
  export * from './ribbon-splitbutton';
7
+ export * from './ribbon-groupbutton';
@@ -4,3 +4,4 @@ export * from './ribbon-colorpicker';
4
4
  export * from './ribbon-combobox';
5
5
  export * from './ribbon-dropdown';
6
6
  export * from './ribbon-splitbutton';
7
+ export * from './ribbon-groupbutton';
@@ -125,6 +125,9 @@ var RibbonButton = /** @class */ (function () {
125
125
  return;
126
126
  }
127
127
  var buttonObj = getComponent(buttonEle, Button);
128
+ if (prop.isToggle) {
129
+ buttonEle.classList.add('e-active');
130
+ }
128
131
  if (prop.cssClass) {
129
132
  prop.cssClass = (ITEM_VERTICAL_CENTER + SPACE + RIBBON_CONTROL + SPACE + prop.cssClass).trim();
130
133
  }
@@ -123,7 +123,7 @@ var RibbonColorPicker = /** @class */ (function () {
123
123
  var splitBtn = colorPickerObj['splitBtn'];
124
124
  //Accessing the private property 'splitBtn' of ColorPicker component to get the colorpicker instance as there is no close event in colorpicker.
125
125
  splitBtn.close = null;
126
- colorPickerObj.beforeClose = function (e) {
126
+ colorPickerObj.beforeClose = function () {
127
127
  colorPickerObj.element.parentElement.classList.remove(RIBBON_POPUP_OPEN);
128
128
  if (item.colorPickerSettings.beforeClose) {
129
129
  item.colorPickerSettings.beforeClose.call(_this);
@@ -45,6 +45,7 @@ var RibbonDropDown = /** @class */ (function () {
45
45
  iconCss: dropDownSettings.iconCss,
46
46
  items: dropDownSettings.items,
47
47
  target: dropDownSettings.target,
48
+ createPopupOnClick: dropDownSettings.createPopupOnClick,
48
49
  beforeClose: function (e) {
49
50
  if (dropDownSettings.beforeClose) {
50
51
  dropDownSettings.beforeClose.call(_this, e);
@@ -60,7 +61,7 @@ var RibbonDropDown = /** @class */ (function () {
60
61
  created: dropDownSettings.created,
61
62
  open: dropDownSettings.open,
62
63
  select: dropDownSettings.select
63
- }, buttonEle);
64
+ }).appendTo(buttonEle);
64
65
  };
65
66
  /**
66
67
  * Adds the additional event handlers as the item moved into overflow popup.
@@ -0,0 +1,69 @@
1
+ import { Ribbon } from '../base/ribbon';
2
+ import { RibbonItemModel } from '../models';
3
+ /**
4
+ * Defines the items of Ribbon.
5
+ */
6
+ export declare class RibbonGroupButton {
7
+ private parent;
8
+ private count;
9
+ private isSelected;
10
+ private grpBtnIndex;
11
+ constructor(parent: Ribbon);
12
+ protected getModuleName(): string;
13
+ protected destroy(): void;
14
+ /**
15
+ * Creates Group Button
16
+ *
17
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
18
+ * @param {HTMLElement} itemElement - Gets the ribbon item element.
19
+ * @returns {void}
20
+ * @hidden
21
+ */
22
+ createGroupButton(item: RibbonItemModel, itemElement: HTMLElement): void;
23
+ private groupButtonClicked;
24
+ /**
25
+ * updates group button in mode switching
26
+ *
27
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
28
+ * @param {HTMLElement} itemElement - Gets the ribbon item element.
29
+ * @returns {void}
30
+ * @hidden
31
+ */
32
+ switchGroupButton(item: RibbonItemModel, itemElement: HTMLElement): void;
33
+ private handleGroupButtonNavigation;
34
+ /**
35
+ * Adds the additional event handlers as the item moved into overflow popup.
36
+ *
37
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
38
+ * @param {HTMLElement} itemEle - Gets the ribbon item element.
39
+ * @returns {void}
40
+ * @hidden
41
+ */
42
+ addOverFlowEvents(item: RibbonItemModel, itemEle: HTMLElement): void;
43
+ /**
44
+ * Removes the additional event handlers as the item moved into overflow popup.
45
+ *
46
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
47
+ * @param {HTMLElement} itemEle - Gets the ribbon item element.
48
+ * @returns {void}
49
+ * @hidden
50
+ */
51
+ removeOverFlowEvents(item: RibbonItemModel, itemEle: HTMLElement): void;
52
+ /**
53
+ * Removes DropDown.
54
+ *
55
+ * @param {RibbonItemModel} item - Gets the ribbon item.
56
+ * @returns {void}
57
+ * @hidden
58
+ */
59
+ destroyDropDown(item: RibbonItemModel): void;
60
+ /**
61
+ * Updates the group button size.
62
+ *
63
+ * @param {HTMLElement} itemElement - Gets the group button container element.
64
+ * @param {RibbonItemModel} item - Gets the ribbon item.
65
+ * @returns {void}
66
+ * @hidden
67
+ */
68
+ updateGroupButtonSize(itemElement: HTMLElement, item: RibbonItemModel): void;
69
+ }
@@ -0,0 +1,444 @@
1
+ import { EventHandler, getComponent, remove } from '@syncfusion/ej2-base';
2
+ import * as constants from '../base/constant';
3
+ import { Button } from '@syncfusion/ej2-buttons';
4
+ import { RibbonGroupButtonSelection, RibbonItemSize } from '../base/interface';
5
+ import { DropDownButton } from '@syncfusion/ej2-splitbuttons';
6
+ import { createTooltip, isTooltipPresent } from '../base/utils';
7
+ import { Tooltip } from '@syncfusion/ej2-popups';
8
+ /**
9
+ * Defines the items of Ribbon.
10
+ */
11
+ var RibbonGroupButton = /** @class */ (function () {
12
+ function RibbonGroupButton(parent) {
13
+ this.parent = parent;
14
+ this.isSelected = false;
15
+ }
16
+ RibbonGroupButton.prototype.getModuleName = function () {
17
+ return 'ribbonGroupButton';
18
+ };
19
+ RibbonGroupButton.prototype.destroy = function () {
20
+ this.parent = null;
21
+ };
22
+ /**
23
+ * Creates Group Button
24
+ *
25
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
26
+ * @param {HTMLElement} itemElement - Gets the ribbon item element.
27
+ * @returns {void}
28
+ * @hidden
29
+ */
30
+ RibbonGroupButton.prototype.createGroupButton = function (item, itemElement) {
31
+ var _this = this;
32
+ var groupBtnSettings = item.groupButtonSettings;
33
+ this.count = 0;
34
+ var btnContainerEle = this.parent.createElement('div', {
35
+ id: item.id + constants.RIBBON_GROUP_BUTTON_ID,
36
+ className: 'e-btn-group'
37
+ });
38
+ itemElement.appendChild(btnContainerEle);
39
+ for (var i = 0; i < groupBtnSettings.items.length; i++) {
40
+ if ((groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss)) {
41
+ var groupButtonEle = this.parent.createElement('button', {
42
+ id: item.id + constants.RIBBON_GROUP_BUTTON_ID + i,
43
+ className: constants.RIBBON_GROUP_BUTTON
44
+ });
45
+ btnContainerEle.appendChild(groupButtonEle);
46
+ new Button({
47
+ iconCss: groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss,
48
+ disabled: item.disabled,
49
+ enableRtl: this.parent.enableRtl,
50
+ content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content,
51
+ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left'
52
+ }, groupButtonEle);
53
+ var buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);
54
+ if (groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {
55
+ btnContainerEle.classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);
56
+ }
57
+ else {
58
+ btnContainerEle.classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);
59
+ }
60
+ if (groupBtnSettings.items[parseInt(i.toString(), 10)].selected) {
61
+ if (groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {
62
+ buttonEle.classList.add('e-active');
63
+ }
64
+ else {
65
+ if (this.count < 1) {
66
+ buttonEle.classList.add('e-active');
67
+ this.count++;
68
+ }
69
+ }
70
+ }
71
+ if (groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings &&
72
+ isTooltipPresent(groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings)) {
73
+ groupButtonEle.classList.add(constants.RIBBON_TOOLTIP_TARGET);
74
+ this.parent.tooltipData.push({
75
+ id: groupButtonEle.id, data: groupBtnSettings.items[parseInt(i.toString(), 10)].ribbonTooltipSettings
76
+ });
77
+ }
78
+ EventHandler.add(buttonEle, 'click', this.groupButtonClicked.bind(this, i, item, groupBtnSettings), this);
79
+ }
80
+ }
81
+ if (this.parent.activeLayout === 'Simplified') {
82
+ var dropdownIcon = void 0;
83
+ var activeEleCount = 0;
84
+ var count = 0;
85
+ var buttonEle = this.parent.createElement('button', {
86
+ id: item.id
87
+ });
88
+ itemElement.appendChild(buttonEle);
89
+ for (var i = 0; i < groupBtnSettings.items.length; i++) {
90
+ if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&
91
+ !this.isSelected && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {
92
+ dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;
93
+ this.isSelected = true;
94
+ }
95
+ else if (item.groupButtonSettings.items[parseInt(i.toString(), 10)].selected &&
96
+ groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {
97
+ activeEleCount++;
98
+ if (activeEleCount === 1) {
99
+ dropdownIcon = item.groupButtonSettings.items[parseInt(i.toString(), 10)].iconCss;
100
+ }
101
+ else {
102
+ dropdownIcon = null;
103
+ }
104
+ }
105
+ }
106
+ while (count < item.groupButtonSettings.items.length && !this.isSelected && !dropdownIcon) {
107
+ if (item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss) {
108
+ dropdownIcon = item.groupButtonSettings.items[parseInt(count.toString(), 10)].iconCss;
109
+ this.isSelected = true;
110
+ }
111
+ count++;
112
+ }
113
+ new DropDownButton({
114
+ iconCss: dropdownIcon,
115
+ target: btnContainerEle,
116
+ enableRtl: this.parent.enableRtl,
117
+ cssClass: 'e-ribbon-dropdown-group-button',
118
+ disabled: item.disabled
119
+ }, buttonEle);
120
+ buttonEle.onclick = buttonEle.onkeydown = function () {
121
+ if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {
122
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();
123
+ _this.grpBtnIndex = 0;
124
+ }
125
+ };
126
+ btnContainerEle.onkeydown = function (e) {
127
+ if (_this.parent.activeLayout === 'Simplified') {
128
+ _this.handleGroupButtonNavigation(e, item);
129
+ }
130
+ };
131
+ createTooltip(btnContainerEle, this.parent);
132
+ this.isSelected = false;
133
+ }
134
+ };
135
+ RibbonGroupButton.prototype.groupButtonClicked = function (itemIndex, item, grpBtnSettings) {
136
+ var previousItems = [], selectingItems = [], selectedItems = [];
137
+ var groupButtonEle;
138
+ var dropdown;
139
+ for (var j = 0; j < grpBtnSettings.items.length; j++) {
140
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j)) {
141
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {
142
+ previousItems.push(grpBtnSettings.items[parseInt(j.toString(), 10)]);
143
+ }
144
+ }
145
+ }
146
+ if (!(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {
147
+ selectingItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);
148
+ }
149
+ var eventArgs = {
150
+ cancel: false, previousItems: previousItems, selectingItems: selectingItems
151
+ };
152
+ if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick) {
153
+ grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].beforeClick.call(this, eventArgs);
154
+ }
155
+ if (eventArgs.cancel) {
156
+ return;
157
+ }
158
+ else {
159
+ if (grpBtnSettings.selection === RibbonGroupButtonSelection.Single) {
160
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_MULTIPLE_BUTTON_SELECTION)) {
161
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);
162
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_SINGLE_BUTTON_SELECTION);
163
+ }
164
+ for (var j = 0; j < grpBtnSettings.items.length; j++) {
165
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.contains('e-active')) {
166
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + j).classList.remove('e-active');
167
+ }
168
+ }
169
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');
170
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active') && this.parent.activeLayout === 'Simplified') {
171
+ this.grpBtnIndex = itemIndex;
172
+ groupButtonEle = document.querySelector('#' + item.id);
173
+ dropdown = getComponent(groupButtonEle, DropDownButton);
174
+ dropdown.setProperties({
175
+ iconCss: grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss
176
+ });
177
+ }
178
+ }
179
+ else {
180
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.contains(constants.RIBBON_SINGLE_BUTTON_SELECTION)) {
181
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.remove(constants.RIBBON_SINGLE_BUTTON_SELECTION);
182
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID).classList.add(constants.RIBBON_MULTIPLE_BUTTON_SELECTION);
183
+ }
184
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.toggle('e-active');
185
+ var activeEleCount = 0;
186
+ for (var n = 0; n < grpBtnSettings.items.length; n++) {
187
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active') && this.parent.activeLayout === 'Simplified' && n !== itemIndex) {
188
+ this.isSelected = true;
189
+ activeEleCount++;
190
+ }
191
+ }
192
+ if (this.parent.activeLayout === 'Simplified') {
193
+ var dropdownIcon = null;
194
+ var itemsCount = 0;
195
+ groupButtonEle = document.querySelector('#' + item.id);
196
+ dropdown = getComponent(groupButtonEle, DropDownButton);
197
+ if (!this.isSelected) {
198
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {
199
+ dropdownIcon = grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].iconCss;
200
+ }
201
+ }
202
+ else {
203
+ if (activeEleCount === 1 && !(document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active'))) {
204
+ for (var n = 0; n < grpBtnSettings.items.length; n++) {
205
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n) && document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + n).classList.contains('e-active')) {
206
+ dropdownIcon = grpBtnSettings.items[parseInt(n.toString(), 10)].iconCss;
207
+ }
208
+ }
209
+ }
210
+ }
211
+ while (itemsCount < grpBtnSettings.items.length && !dropdownIcon) {
212
+ if (grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {
213
+ dropdownIcon = grpBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;
214
+ }
215
+ itemsCount++;
216
+ }
217
+ dropdown.setProperties({ iconCss: dropdownIcon });
218
+ this.grpBtnIndex = itemIndex;
219
+ }
220
+ this.isSelected = false;
221
+ }
222
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + itemIndex).classList.contains('e-active')) {
223
+ selectedItems.push(grpBtnSettings.items[parseInt(itemIndex.toString(), 10)]);
224
+ }
225
+ var eventArgs_1 = { previousItems: previousItems, selectedItems: selectedItems };
226
+ if (grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click) {
227
+ grpBtnSettings.items[parseInt(itemIndex.toString(), 10)].click.call(this, eventArgs_1);
228
+ }
229
+ }
230
+ };
231
+ /**
232
+ * updates group button in mode switching
233
+ *
234
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
235
+ * @param {HTMLElement} itemElement - Gets the ribbon item element.
236
+ * @returns {void}
237
+ * @hidden
238
+ */
239
+ RibbonGroupButton.prototype.switchGroupButton = function (item, itemElement) {
240
+ var _this = this;
241
+ var groupBtnSettings = item.groupButtonSettings;
242
+ var dropdownIcon = null;
243
+ var activeEleCount = 0;
244
+ var itemsCount = 0;
245
+ if (this.parent.activeLayout === 'Simplified') {
246
+ var containerEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID);
247
+ var buttonEle = this.parent.createElement('button', {
248
+ id: item.id
249
+ });
250
+ itemElement.appendChild(buttonEle);
251
+ for (var i = 0; i < groupBtnSettings.items.length; i++) {
252
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i)) {
253
+ if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Single) {
254
+ dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;
255
+ }
256
+ else if (document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i).classList.contains('e-active') && groupBtnSettings.selection === RibbonGroupButtonSelection.Multiple) {
257
+ activeEleCount++;
258
+ if (activeEleCount === 1) {
259
+ dropdownIcon = groupBtnSettings.items[parseInt(i.toString(), 10)].iconCss;
260
+ }
261
+ else if (activeEleCount > 1) {
262
+ dropdownIcon = null;
263
+ }
264
+ }
265
+ }
266
+ }
267
+ while (itemsCount < groupBtnSettings.items.length && !dropdownIcon) {
268
+ if (groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss) {
269
+ dropdownIcon = groupBtnSettings.items[parseInt(itemsCount.toString(), 10)].iconCss;
270
+ }
271
+ itemsCount++;
272
+ }
273
+ new DropDownButton({
274
+ iconCss: dropdownIcon,
275
+ target: containerEle,
276
+ enableRtl: this.parent.enableRtl,
277
+ cssClass: 'e-ribbon-dropdown-group-button',
278
+ disabled: item.disabled
279
+ }, buttonEle);
280
+ buttonEle.onclick = buttonEle.onkeydown = function () {
281
+ if (itemElement.querySelector('#' + item.id).classList.contains('e-active')) {
282
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + 0).focus();
283
+ _this.grpBtnIndex = 0;
284
+ }
285
+ };
286
+ containerEle.onkeydown = function (e) {
287
+ if (_this.parent.activeLayout === 'Simplified') {
288
+ _this.handleGroupButtonNavigation(e, item);
289
+ }
290
+ };
291
+ createTooltip(containerEle, this.parent);
292
+ }
293
+ else {
294
+ var groupButtonEle = itemElement.querySelector('#' + item.id);
295
+ var dropdown = getComponent(groupButtonEle, DropDownButton);
296
+ itemElement.appendChild(dropdown.target);
297
+ if (groupButtonEle) {
298
+ dropdown.destroy();
299
+ remove(groupButtonEle);
300
+ }
301
+ }
302
+ };
303
+ RibbonGroupButton.prototype.handleGroupButtonNavigation = function (e, item) {
304
+ var groupButtonEle = document.querySelector('#' + item.id);
305
+ var dropdown = getComponent(groupButtonEle, DropDownButton);
306
+ var targetEle = dropdown.target;
307
+ var isOverflowPopup = false;
308
+ if (this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {
309
+ isOverflowPopup = true;
310
+ }
311
+ if (e.key === 'Tab') {
312
+ e.preventDefault();
313
+ }
314
+ var groupBtnSettings = item.groupButtonSettings;
315
+ if ((e.key === 'ArrowRight' && !isOverflowPopup) || (e.key === 'ArrowDown' && isOverflowPopup)) {
316
+ if (!this.parent.enableRtl || (e.key === 'ArrowDown' && isOverflowPopup)) {
317
+ this.grpBtnIndex++;
318
+ if (this.grpBtnIndex < groupBtnSettings.items.length) {
319
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
320
+ }
321
+ else {
322
+ this.grpBtnIndex = 0;
323
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
324
+ }
325
+ }
326
+ else {
327
+ if (this.grpBtnIndex === 0) {
328
+ this.grpBtnIndex = groupBtnSettings.items.length - 1;
329
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
330
+ }
331
+ else {
332
+ this.grpBtnIndex--;
333
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
334
+ }
335
+ }
336
+ }
337
+ else if ((e.key === 'ArrowLeft' && !isOverflowPopup) || (e.key === 'ArrowUp' && isOverflowPopup)) {
338
+ if (!this.parent.enableRtl || (e.key === 'ArrowUp' && isOverflowPopup)) {
339
+ if (this.grpBtnIndex === 0) {
340
+ this.grpBtnIndex = groupBtnSettings.items.length - 1;
341
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
342
+ }
343
+ else {
344
+ this.grpBtnIndex--;
345
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
346
+ }
347
+ }
348
+ else {
349
+ this.grpBtnIndex++;
350
+ if (this.grpBtnIndex < groupBtnSettings.items.length) {
351
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
352
+ }
353
+ else {
354
+ this.grpBtnIndex = 0;
355
+ document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + (this.grpBtnIndex)).focus();
356
+ }
357
+ }
358
+ }
359
+ };
360
+ /**
361
+ * Adds the additional event handlers as the item moved into overflow popup.
362
+ *
363
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
364
+ * @param {HTMLElement} itemEle - Gets the ribbon item element.
365
+ * @returns {void}
366
+ * @hidden
367
+ */
368
+ RibbonGroupButton.prototype.addOverFlowEvents = function (item, itemEle) {
369
+ var _this = this;
370
+ var groupButtonEle = itemEle.querySelector('#' + item.id);
371
+ var dropdown = getComponent(groupButtonEle, DropDownButton);
372
+ dropdown.setProperties({ cssClass: dropdown.cssClass + constants.SPACE + constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP });
373
+ var targetEle = dropdown.target;
374
+ targetEle.onclick = function () {
375
+ if (_this.parent.activeLayout === 'Simplified' && targetEle.closest('.e-ribbon-dropdown-group-button').classList.contains(constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP)) {
376
+ dropdown.element.focus();
377
+ dropdown.toggle();
378
+ }
379
+ };
380
+ };
381
+ /**
382
+ * Removes the additional event handlers as the item moved into overflow popup.
383
+ *
384
+ * @param {RibbonItemModel} item - Gets the ribbon item model.
385
+ * @param {HTMLElement} itemEle - Gets the ribbon item element.
386
+ * @returns {void}
387
+ * @hidden
388
+ */
389
+ RibbonGroupButton.prototype.removeOverFlowEvents = function (item, itemEle) {
390
+ var groupButtonEle = itemEle.querySelector('#' + item.id);
391
+ if (groupButtonEle) {
392
+ var dropdown = getComponent(groupButtonEle, DropDownButton);
393
+ var cssClass = dropdown.cssClass.split(constants.SPACE);
394
+ cssClass = cssClass.filter(function (value) { return value !== constants.RIBBON_GROUP_BUTTON_OVERFLOW_POPUP; });
395
+ dropdown.setProperties({ cssClass: cssClass.join(constants.SPACE) });
396
+ }
397
+ };
398
+ /**
399
+ * Removes DropDown.
400
+ *
401
+ * @param {RibbonItemModel} item - Gets the ribbon item.
402
+ * @returns {void}
403
+ * @hidden
404
+ */
405
+ RibbonGroupButton.prototype.destroyDropDown = function (item) {
406
+ var groupButtonEle = document.querySelector('#' + item.id);
407
+ if (groupButtonEle) {
408
+ var dropdown = getComponent(groupButtonEle, DropDownButton);
409
+ var tooltip = getComponent(dropdown.target, Tooltip);
410
+ tooltip.destroy();
411
+ dropdown.destroy();
412
+ remove(groupButtonEle);
413
+ }
414
+ };
415
+ /**
416
+ * Updates the group button size.
417
+ *
418
+ * @param {HTMLElement} itemElement - Gets the group button container element.
419
+ * @param {RibbonItemModel} item - Gets the ribbon item.
420
+ * @returns {void}
421
+ * @hidden
422
+ */
423
+ RibbonGroupButton.prototype.updateGroupButtonSize = function (itemElement, item) {
424
+ var groupBtnSettings = item.groupButtonSettings;
425
+ var buttonEle;
426
+ for (var i = 0; i < groupBtnSettings.items.length; i++) {
427
+ if (this.parent.activeLayout === 'Classic') {
428
+ buttonEle = itemElement.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);
429
+ }
430
+ else {
431
+ buttonEle = document.querySelector('#' + item.id + constants.RIBBON_GROUP_BUTTON_ID + i);
432
+ }
433
+ if (buttonEle) {
434
+ var buttonObj = getComponent(buttonEle, Button);
435
+ buttonObj.setProperties({
436
+ iconPosition: item.activeSize === RibbonItemSize.Large ? 'Top' : 'Left',
437
+ content: item.activeSize === RibbonItemSize.Small ? '' : groupBtnSettings.items[parseInt(i.toString(), 10)].content
438
+ });
439
+ }
440
+ }
441
+ };
442
+ return RibbonGroupButton;
443
+ }());
444
+ export { RibbonGroupButton };
@@ -9,9 +9,19 @@ export * from './ribbon-combobox-settings';
9
9
  export * from './ribbon-dropdown-settings';
10
10
  export * from './ribbon-splitbutton-settings';
11
11
  export * from './ribbon-file-menu-settings';
12
+ export * from './ribbon-back-stage-settings';
13
+ export * from './ribbon-back-button';
14
+ export * from './ribbon-backstage-item';
12
15
  export * from './ribbon-tooltip';
16
+ export * from './ribbon-group-button-settings';
17
+ export * from './ribbon-group-button-item';
18
+ export * from './ribbon-group-button-item-model';
19
+ export * from './ribbon-group-button-settings-model';
13
20
  export * from './ribbon-tooltip-model';
14
21
  export * from './ribbon-file-menu-settings-model';
22
+ export * from './ribbon-back-stage-settings-model';
23
+ export * from './ribbon-back-button-model';
24
+ export * from './ribbon-backstage-item-model';
15
25
  export * from './ribbon-tab-model';
16
26
  export * from './ribbon-group-model';
17
27
  export * from './ribbon-collection-model';
@@ -10,4 +10,9 @@ export * from './ribbon-combobox-settings';
10
10
  export * from './ribbon-dropdown-settings';
11
11
  export * from './ribbon-splitbutton-settings';
12
12
  export * from './ribbon-file-menu-settings';
13
+ export * from './ribbon-back-stage-settings';
14
+ export * from './ribbon-back-button';
15
+ export * from './ribbon-backstage-item';
13
16
  export * from './ribbon-tooltip';
17
+ export * from './ribbon-group-button-settings';
18
+ export * from './ribbon-group-button-item';
@@ -0,0 +1,29 @@
1
+ import { ChildProperty, Property } from '@syncfusion/ej2-base';
2
+
3
+ /**
4
+ * Interface for a class BackstageBackButton
5
+ */
6
+ export interface BackstageBackButtonModel {
7
+
8
+ /**
9
+ * Specifies the text for backstage back button.
10
+ *
11
+ * @default ''
12
+ */
13
+ text?: string;
14
+
15
+ /**
16
+ * Specifies the icon css class for backstage back button.
17
+ *
18
+ * @default ''
19
+ */
20
+ iconCss?: string;
21
+
22
+ /**
23
+ * Specifies whether to show the backstage back button or not.
24
+ *
25
+ * @default true
26
+ */
27
+ visible?: boolean;
28
+
29
+ }
@@ -0,0 +1,24 @@
1
+ import { ChildProperty } from '@syncfusion/ej2-base';
2
+ /**
3
+ * Defines the ribbon backstage back button.
4
+ */
5
+ export declare class BackstageBackButton extends ChildProperty<BackstageBackButton> {
6
+ /**
7
+ * Specifies the text for backstage back button.
8
+ *
9
+ * @default ''
10
+ */
11
+ text: string;
12
+ /**
13
+ * Specifies the icon css class for backstage back button.
14
+ *
15
+ * @default ''
16
+ */
17
+ iconCss: string;
18
+ /**
19
+ * Specifies whether to show the backstage back button or not.
20
+ *
21
+ * @default true
22
+ */
23
+ visible: boolean;
24
+ }