@mgdis/mg-components 5.6.0 → 5.7.0

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 (184) hide show
  1. package/dist/cjs/{index-4dcc1812.js → index-5e7ede97.js} +109 -3
  2. package/dist/cjs/loader.cjs.js +4 -3
  3. package/dist/cjs/{mg-badge_30.cjs.entry.js → mg-action-more_31.cjs.entry.js} +623 -445
  4. package/dist/cjs/mg-components.cjs.js +7 -3
  5. package/dist/collection/collection-manifest.json +5 -4
  6. package/dist/collection/components/atoms/mg-badge/mg-badge.js +1 -1
  7. package/dist/collection/components/atoms/mg-button/mg-button.css +7 -21
  8. package/dist/collection/components/atoms/mg-button/mg-button.js +1 -1
  9. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js +27 -27
  10. package/dist/collection/components/atoms/mg-icon/mg-icon.js +3 -3
  11. package/dist/collection/components/atoms/mg-tag/mg-tag.js +1 -1
  12. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +12 -15
  13. package/dist/collection/components/molecules/inputs/MgInput.js +6 -1
  14. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.css +4 -3
  15. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +3 -2
  16. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.css +4 -0
  17. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +1 -1
  18. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.css +4 -0
  19. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +1 -1
  20. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.css +4 -0
  21. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.css +4 -3
  22. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +2 -1
  23. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.css +4 -0
  24. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +1 -1
  25. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.css +4 -0
  26. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.css +4 -0
  27. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +1 -1
  28. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.css +4 -4
  29. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +2 -3
  30. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.css +2 -1
  31. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +31 -11
  32. package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js +1 -0
  33. package/dist/collection/components/molecules/mg-action-more/mg-action-more.css +38 -0
  34. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +252 -0
  35. package/dist/collection/components/molecules/mg-form/mg-form.js +2 -2
  36. package/dist/collection/components/molecules/mg-message/mg-message.js +1 -1
  37. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +19 -1
  38. package/dist/collection/components/molecules/mg-panel/mg-panel.js +2 -2
  39. package/dist/collection/components/molecules/mg-popover/mg-popover.css +0 -1
  40. package/dist/collection/components/molecules/mg-popover/mg-popover.js +17 -4
  41. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +2 -1
  42. package/dist/collection/components/molecules/mg-tabs/mg-tabs.css +2 -1
  43. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +9 -8
  44. package/dist/collection/locales/en/messages.json +6 -1
  45. package/dist/collection/locales/fr/messages.json +6 -1
  46. package/dist/collection/locales/index.js +1 -1
  47. package/dist/collection/styles/mg-icon-animation.scss +6 -0
  48. package/dist/collection/styles/navigation-button.scss +2 -1
  49. package/dist/collection/utils/behaviors.utils.js +16 -34
  50. package/dist/collection/utils/components.utils.js +3 -1
  51. package/dist/collection/utils/locale.utils.js +9 -9
  52. package/dist/collection/utils/unit.test.utils.js +32 -4
  53. package/dist/collection/variables.css +2 -1
  54. package/dist/components/MgInput.js +6 -1
  55. package/dist/components/components.utils.js +3 -1
  56. package/dist/components/index.d.ts +10 -0
  57. package/dist/components/index.js +2 -1
  58. package/dist/components/index2.js +26 -14
  59. package/dist/components/mg-action-more.d.ts +11 -0
  60. package/dist/components/mg-action-more.js +215 -0
  61. package/dist/components/mg-badge2.js +1 -1
  62. package/dist/components/mg-button2.js +2 -2
  63. package/dist/components/mg-form.js +2 -2
  64. package/dist/components/mg-icon2.js +30 -30
  65. package/dist/components/mg-input-checkbox.js +3 -3
  66. package/dist/components/mg-input-date.js +2 -2
  67. package/dist/components/mg-input-numeric.js +2 -2
  68. package/dist/components/mg-input-password.js +1 -1
  69. package/dist/components/mg-input-radio.js +2 -2
  70. package/dist/components/mg-input-select2.js +2 -2
  71. package/dist/components/mg-input-text2.js +1 -1
  72. package/dist/components/mg-input-textarea.js +2 -2
  73. package/dist/components/mg-input-toggle.js +1 -1
  74. package/dist/components/mg-menu-item2.js +75 -72
  75. package/dist/components/mg-menu.js +1 -246
  76. package/dist/components/mg-menu2.js +247 -0
  77. package/dist/components/mg-message.js +1 -1
  78. package/dist/components/mg-pagination.js +3 -1
  79. package/dist/components/mg-panel.js +2 -2
  80. package/dist/components/mg-popover2.js +17 -3
  81. package/dist/components/mg-skip-links.js +1 -1
  82. package/dist/components/mg-tabs.js +10 -9
  83. package/dist/components/mg-tag.js +1 -1
  84. package/dist/components/mg-tooltip2.js +12 -15
  85. package/dist/esm/{index-dc9a2348.js → index-03cceb11.js} +109 -4
  86. package/dist/esm/loader.js +4 -3
  87. package/dist/esm/{mg-badge_30.entry.js → mg-action-more_31.entry.js} +623 -446
  88. package/dist/esm/mg-components.js +4 -3
  89. package/dist/mg-components/locales/en/messages.json +6 -1
  90. package/dist/mg-components/locales/fr/messages.json +6 -1
  91. package/dist/mg-components/mg-components.css +1 -1
  92. package/dist/mg-components/mg-components.esm.js +1 -1
  93. package/dist/mg-components/p-4cfd5423.entry.js +1 -0
  94. package/dist/mg-components/p-e126dd84.js +2 -0
  95. package/dist/mg-components/styles/mg-icon-animation.scss +6 -0
  96. package/dist/mg-components/styles/navigation-button.scss +2 -1
  97. package/dist/mg-components/variables.css +2 -1
  98. package/dist/types/components/molecules/inputs/mg-input-textarea/mg-input-textarea.d.ts +1 -1
  99. package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +7 -1
  100. package/dist/types/components/molecules/mg-action-more/mg-action-more.conf.d.ts +42 -0
  101. package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +81 -0
  102. package/dist/types/components/molecules/mg-pagination/mg-pagination.d.ts +4 -0
  103. package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +2 -1
  104. package/dist/types/components.d.ts +54 -0
  105. package/dist/types/locales/index.d.ts +12 -2
  106. package/dist/types/stencil-public-runtime.d.ts +9 -0
  107. package/dist/types/utils/behaviors.utils.d.ts +1 -7
  108. package/dist/types/utils/locale.utils.d.ts +5 -5
  109. package/dist/types/utils/unit.test.utils.d.ts +20 -2
  110. package/loader/index.d.ts +9 -0
  111. package/package.json +17 -16
  112. package/readme.md +0 -18
  113. package/dist/.storybook/utils.js +0 -24
  114. package/dist/collection/components/atoms/mg-badge/doc/mg-badge.stories.js +0 -27
  115. package/dist/collection/components/atoms/mg-button/doc/mg-button.stories.js +0 -38
  116. package/dist/collection/components/atoms/mg-card/doc/mg-card.stories.js +0 -18
  117. package/dist/collection/components/atoms/mg-character-left/doc/mg-character-left.stories.js +0 -20
  118. package/dist/collection/components/atoms/mg-divider/doc/mg-divider.stories.js +0 -18
  119. package/dist/collection/components/atoms/mg-icon/doc/mg-icon.stories.js +0 -41
  120. package/dist/collection/components/atoms/mg-input-title/doc/mg-input-title.stories.js +0 -21
  121. package/dist/collection/components/atoms/mg-tag/doc/mg-tag.stories.js +0 -22
  122. package/dist/collection/components/atoms/mg-tooltip/doc/mg-tooltip.stories.js +0 -50
  123. package/dist/collection/components/molecules/inputs/mg-input-checkbox/doc/mg-input-checkbox.stories.js +0 -50
  124. package/dist/collection/components/molecules/inputs/mg-input-date/doc/mg-input-date.stories.js +0 -43
  125. package/dist/collection/components/molecules/inputs/mg-input-numeric/doc/mg-input-numeric.stories.js +0 -68
  126. package/dist/collection/components/molecules/inputs/mg-input-password/doc/mg-input-password.stories.js +0 -46
  127. package/dist/collection/components/molecules/inputs/mg-input-radio/doc/mg-input-radio.stories.js +0 -59
  128. package/dist/collection/components/molecules/inputs/mg-input-select/doc/mg-input-select.stories.js +0 -77
  129. package/dist/collection/components/molecules/inputs/mg-input-text/doc/mg-input-text.stories.js +0 -110
  130. package/dist/collection/components/molecules/inputs/mg-input-textarea/doc/mg-input-textarea.stories.js +0 -54
  131. package/dist/collection/components/molecules/inputs/mg-input-toggle/doc/mg-input-toggle.stories.js +0 -51
  132. package/dist/collection/components/molecules/menu/mg-menu/doc/mg-menu.stories.js +0 -119
  133. package/dist/collection/components/molecules/menu/mg-menu-item/doc/mg-menu-item.stories.js +0 -34
  134. package/dist/collection/components/molecules/mg-details/doc/mg-details.stories.js +0 -24
  135. package/dist/collection/components/molecules/mg-form/doc/mg-form.stories.js +0 -47
  136. package/dist/collection/components/molecules/mg-illustrated-message/doc/mg-illustrated-message.stories.js +0 -19
  137. package/dist/collection/components/molecules/mg-message/doc/mg-message.stories.js +0 -39
  138. package/dist/collection/components/molecules/mg-modal/doc/mg-modal.stories.js +0 -39
  139. package/dist/collection/components/molecules/mg-pagination/doc/mg-pagination.stories.js +0 -20
  140. package/dist/collection/components/molecules/mg-panel/doc/mg-panel.stories.js +0 -22
  141. package/dist/collection/components/molecules/mg-popover/doc/mg-popover.stories.js +0 -34
  142. package/dist/collection/components/molecules/mg-skip-links/doc/mg-skip-links.stories.js +0 -24
  143. package/dist/collection/components/molecules/mg-tabs/doc/mg-tabs.stories.js +0 -53
  144. package/dist/collection/stories/grids.stories.js +0 -7
  145. package/dist/collection/stories/helpers.stories.js +0 -23
  146. package/dist/collection/stories/icons.stories.js +0 -25
  147. package/dist/collection/stories/typography.stories.js +0 -24
  148. package/dist/mg-components/p-182bd802.js +0 -2
  149. package/dist/mg-components/p-f7da9dd2.entry.js +0 -1
  150. package/dist/types/components/atoms/mg-badge/doc/mg-badge.stories.d.ts +0 -13
  151. package/dist/types/components/atoms/mg-button/doc/mg-button.stories.d.ts +0 -16
  152. package/dist/types/components/atoms/mg-card/doc/mg-card.stories.d.ts +0 -6
  153. package/dist/types/components/atoms/mg-character-left/doc/mg-character-left.stories.d.ts +0 -6
  154. package/dist/types/components/atoms/mg-divider/doc/mg-divider.stories.d.ts +0 -6
  155. package/dist/types/components/atoms/mg-icon/doc/mg-icon.stories.d.ts +0 -26
  156. package/dist/types/components/atoms/mg-input-title/doc/mg-input-title.stories.d.ts +0 -6
  157. package/dist/types/components/atoms/mg-tag/doc/mg-tag.stories.d.ts +0 -6
  158. package/dist/types/components/atoms/mg-tooltip/doc/mg-tooltip.stories.d.ts +0 -18
  159. package/dist/types/components/molecules/inputs/mg-input-checkbox/doc/mg-input-checkbox.stories.d.ts +0 -11
  160. package/dist/types/components/molecules/inputs/mg-input-date/doc/mg-input-date.stories.d.ts +0 -12
  161. package/dist/types/components/molecules/inputs/mg-input-numeric/doc/mg-input-numeric.stories.d.ts +0 -32
  162. package/dist/types/components/molecules/inputs/mg-input-password/doc/mg-input-password.stories.d.ts +0 -22
  163. package/dist/types/components/molecules/inputs/mg-input-radio/doc/mg-input-radio.stories.d.ts +0 -20
  164. package/dist/types/components/molecules/inputs/mg-input-select/doc/mg-input-select.stories.d.ts +0 -34
  165. package/dist/types/components/molecules/inputs/mg-input-text/doc/mg-input-text.stories.d.ts +0 -39
  166. package/dist/types/components/molecules/inputs/mg-input-textarea/doc/mg-input-textarea.stories.d.ts +0 -19
  167. package/dist/types/components/molecules/inputs/mg-input-toggle/doc/mg-input-toggle.stories.d.ts +0 -12
  168. package/dist/types/components/molecules/menu/mg-menu/doc/mg-menu.stories.d.ts +0 -22
  169. package/dist/types/components/molecules/menu/mg-menu-item/doc/mg-menu-item.stories.d.ts +0 -12
  170. package/dist/types/components/molecules/mg-details/doc/mg-details.stories.d.ts +0 -11
  171. package/dist/types/components/molecules/mg-form/doc/mg-form.stories.d.ts +0 -11
  172. package/dist/types/components/molecules/mg-illustrated-message/doc/mg-illustrated-message.stories.d.ts +0 -6
  173. package/dist/types/components/molecules/mg-message/doc/mg-message.stories.d.ts +0 -26
  174. package/dist/types/components/molecules/mg-modal/doc/mg-modal.stories.d.ts +0 -13
  175. package/dist/types/components/molecules/mg-pagination/doc/mg-pagination.stories.d.ts +0 -11
  176. package/dist/types/components/molecules/mg-panel/doc/mg-panel.stories.d.ts +0 -11
  177. package/dist/types/components/molecules/mg-popover/doc/mg-popover.stories.d.ts +0 -22
  178. package/dist/types/components/molecules/mg-skip-links/doc/mg-skip-links.stories.d.ts +0 -11
  179. package/dist/types/components/molecules/mg-tabs/doc/mg-tabs.stories.d.ts +0 -20
  180. package/dist/types/home/runner/work/mg-components/mg-components/.stencil/.storybook/utils.d.ts +0 -1
  181. package/dist/types/stories/grids.stories.d.ts +0 -5
  182. package/dist/types/stories/helpers.stories.d.ts +0 -13
  183. package/dist/types/stories/icons.stories.d.ts +0 -13
  184. package/dist/types/stories/typography.stories.d.ts +0 -5
@@ -26,6 +26,32 @@ var Status;
26
26
  Status["ACTIVE"] = "active";
27
27
  })(Status || (Status = {}));
28
28
 
29
+ /**
30
+ * Menu direction type
31
+ */
32
+ var Direction;
33
+ (function (Direction) {
34
+ Direction["VERTICAL"] = "vertical";
35
+ Direction["HORIZONTAL"] = "horizontal";
36
+ })(Direction || (Direction = {}));
37
+ /**
38
+ * More item type guard
39
+ *
40
+ * @param {unknown} element element to control
41
+ * @returns {boolean} truthy if element is more-item
42
+ */
43
+ const isMoreItem = (element) => {
44
+ var _a, _b, _c;
45
+ const item = element;
46
+ return (item === undefined ||
47
+ (typeof item === 'object' &&
48
+ (typeof item.size === 'string' || typeof ((_a = item.mgIcon) === null || _a === void 0 ? void 0 : _a.icon) === 'string' || typeof ((_b = item.slotLabel) === null || _b === void 0 ? void 0 : _b.label) === 'string' || typeof ((_c = item.slotLabel) === null || _c === void 0 ? void 0 : _c.display) === 'boolean')));
49
+ };
50
+ /**
51
+ * List of all possibles sizes
52
+ */
53
+ const sizes = ['regular', 'medium', 'large'];
54
+
29
55
  /**
30
56
  * MgMenuItem type guard
31
57
  *
@@ -54,15 +80,6 @@ class OverflowBehavior {
54
80
  this.disconnect = () => {
55
81
  this.resizeObserver.disconnect();
56
82
  };
57
- /**
58
- * Update more element status if active child
59
- *
60
- * @returns {void}
61
- */
62
- this.updateActiveStatus = () => {
63
- const hasActiveChild = Array.from(this.moreELement.querySelector('mg-menu').children).some(element => element.nodeName === 'MG-MENU-ITEM' && element.getAttribute('status') === Status.ACTIVE && element.getAttribute('hidden') === null);
64
- this.moreELement.setAttribute('status', hasActiveChild ? Status.ACTIVE : Status.VISIBLE);
65
- };
66
83
  /************
67
84
  * Internal *
68
85
  ************/
@@ -73,28 +90,26 @@ class OverflowBehavior {
73
90
  * @returns {void}
74
91
  */
75
92
  this.run = (width) => {
76
- if (this.moreELement === undefined) {
93
+ if (this.moreElement === undefined) {
77
94
  // set moreElement
78
- this.moreELement = this.render();
79
- this.moreELement.setAttribute(OverflowBehaviorElements.MORE, '');
95
+ this.moreElement = this.render();
96
+ this.moreElement.setAttribute(OverflowBehaviorElements.MORE, '');
80
97
  // set children
81
98
  this.children = Array.from(this.element.children);
82
- let moreELementChildren;
99
+ let moreElementChildren;
83
100
  const allowedElements = ['MG-MENU-ITEM', 'MG-BUTTON'];
84
- if (isMgMenuItem(this.moreELement)) {
85
- moreELementChildren = Array.from(this.moreELement.querySelector('mg-menu').children).filter(element => allowedElements.includes(element.nodeName));
101
+ if (isMgMenuItem(this.moreElement)) {
102
+ moreElementChildren = Array.from(this.moreElement.querySelector('mg-menu').children).filter(element => allowedElements.includes(element.nodeName));
86
103
  }
87
104
  this.children.forEach((child, index) => {
88
105
  child.setAttribute(OverflowBehaviorElements.BASE_INDEX, `${index}`);
89
106
  if (child.getAttribute(OverflowBehaviorElements.MORE) === null) {
90
107
  // set moreElement children
91
- moreELementChildren[index].setAttribute(OverflowBehaviorElements.PROXY_INDEX, `${index}`);
108
+ moreElementChildren[index].setAttribute(OverflowBehaviorElements.PROXY_INDEX, `${index}`);
92
109
  }
93
110
  });
94
111
  }
95
112
  this.updateDisplayedItems(width);
96
- if (isMgMenuItem(this.moreELement))
97
- this.updateActiveStatus();
98
113
  };
99
114
  /**
100
115
  * Update displayed items in container from a given available space
@@ -104,24 +119,18 @@ class OverflowBehavior {
104
119
  */
105
120
  this.updateDisplayedItems = (availableWidth) => {
106
121
  this.restoreItems();
107
- this.children.reduce((acc, curr) => {
108
- acc.accWidth += curr.offsetWidth;
122
+ const acc = { accWidth: 0, previousItem: null };
123
+ this.children.forEach((child) => {
124
+ acc.accWidth += child.offsetWidth;
109
125
  const isPreviousItemHidden = acc.previousItem !== null && acc.previousItem.getAttribute('hidden') !== null;
110
126
  // if previous item is hidden AND is NOT more element we hidde current
111
127
  // OR if item has an overflow we hidde current
112
128
  // OR if current item is more element AND have NOT previous hidden items, current more element item is an hidden item
113
129
  // ELSE current is a display item
114
- if ((isPreviousItemHidden && !this.isMoreElement(curr)) ||
115
- this.isOverflowElement(acc.accWidth, curr, availableWidth) ||
116
- (this.isMoreElement(curr) && !isPreviousItemHidden)) {
117
- this.toggleItem(curr, true);
118
- }
119
- else
120
- this.toggleItem(curr, false);
130
+ this.toggleItem(child, (isPreviousItemHidden && !this.isMoreElement(child)) || this.isOverflowElement(acc.accWidth, child, availableWidth) || (this.isMoreElement(child) && !isPreviousItemHidden));
121
131
  // update previous item with current item
122
- acc.previousItem = curr;
123
- return acc;
124
- }, { accWidth: 0, previousItem: null });
132
+ acc.previousItem = child;
133
+ });
125
134
  };
126
135
  /**
127
136
  * Utility method to know if item overflow partialy or totaly in the container
@@ -135,7 +144,7 @@ class OverflowBehavior {
135
144
  if (item.previousElementSibling === null || this.isMoreElement(item))
136
145
  return false;
137
146
  else if (!this.isMoreElement(item.nextElementSibling))
138
- return cumulateWidth + this.moreELement.offsetWidth > availableWidth;
147
+ return cumulateWidth + this.moreElement.offsetWidth > availableWidth;
139
148
  else
140
149
  return cumulateWidth > availableWidth;
141
150
  };
@@ -156,10 +165,10 @@ class OverflowBehavior {
156
165
  this.toggleItem = (item, isHidden) => {
157
166
  const mgActionMenuindex = Number(item.getAttribute(OverflowBehaviorElements.BASE_INDEX));
158
167
  if (this.isMoreElement(item))
159
- this.toggleElement(this.moreELement, isHidden);
168
+ this.toggleElement(this.moreElement, isHidden);
160
169
  else if (mgActionMenuindex >= 0) {
161
170
  this.toggleElement(item, isHidden);
162
- this.toggleElement(this.moreELement.querySelector(`[${OverflowBehaviorElements.PROXY_INDEX}="${mgActionMenuindex}"]`), !isHidden);
171
+ this.toggleElement(this.moreElement.querySelector(`[${OverflowBehaviorElements.PROXY_INDEX}="${mgActionMenuindex}"]`), !isHidden);
163
172
  }
164
173
  };
165
174
  /**
@@ -195,33 +204,7 @@ class OverflowBehavior {
195
204
  }
196
205
  }
197
206
 
198
- /**
199
- * Menu direction type
200
- */
201
- var Direction;
202
- (function (Direction) {
203
- Direction["VERTICAL"] = "vertical";
204
- Direction["HORIZONTAL"] = "horizontal";
205
- })(Direction || (Direction = {}));
206
- /**
207
- * More item type guard
208
- *
209
- * @param {unknown} element element to control
210
- * @returns {boolean} truthy if element is more-item
211
- */
212
- const isMoreItem = (element) => {
213
- var _a, _b, _c;
214
- const item = element;
215
- return (item === undefined ||
216
- (typeof item === 'object' &&
217
- (typeof item.size === 'string' || typeof ((_a = item.mgIcon) === null || _a === void 0 ? void 0 : _a.icon) === 'string' || typeof ((_b = item.slotLabel) === null || _b === void 0 ? void 0 : _b.label) === 'string' || typeof ((_c = item.slotLabel) === null || _c === void 0 ? void 0 : _c.display) === 'boolean')));
218
- };
219
- /**
220
- * List of all possibles sizes
221
- */
222
- const sizes = ['regular', 'medium', 'large'];
223
-
224
- const mgMenuItemCss = ".sr-only{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){.mg-a11y-animation{animation:none !important;transition:none !important}}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding:1rem 2rem;height:calc(3.8rem)}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button,.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button ::slotted([slot=label]),.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button ::slotted([slot=metadata]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular ::slotted([slot=label]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular ::slotted([slot=metadata]){font-size:var(--font-size)}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular.mg-menu-item__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular.mg-menu-item__navigation-button--vertical{padding-left:calc(2rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding:1rem 3rem;height:calc(5.1rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button,.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button ::slotted([slot=label]),.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button ::slotted([slot=metadata]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium ::slotted([slot=label]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium ::slotted([slot=metadata]){font-size:calc(var(--font-size) + 0.2rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium.mg-menu-item__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium.mg-menu-item__navigation-button--vertical{padding-left:calc(3rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding:1rem 4rem;height:calc(7.1rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button,.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button ::slotted([slot=label]),.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button ::slotted([slot=metadata]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large ::slotted([slot=label]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large ::slotted([slot=metadata]){font-size:calc(var(--font-size) + 0.2rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large.mg-menu-item__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large.mg-menu-item__navigation-button--vertical{padding-left:calc(4rem - 0.3rem)}.mg-menu-item__navigation-button{display:flex;align-items:center;column-gap:var(--mg-menu-item-navigation-button-column-gap, 1rem);background-color:unset;border:none;font-family:var(--font-family);color:hsl(var(--mg-menu-item-color-hsl, var(--color-dark)));line-height:var(--line-height);text-decoration:none;white-space:nowrap;box-sizing:border-box;cursor:pointer}.mg-menu-item__navigation-button:disabled,.mg-menu-item__navigation-button--disabled{cursor:default;opacity:0.3}.mg-menu-item__navigation-button:focus-visible{z-index:10}.mg-menu-item__navigation-button:hover:not(.mg-menu-item__navigation-button--disabled),.mg-menu-item__navigation-button:focus-visible:not(.mg-menu-item__navigation-button--disabled){background-color:hsl(var(--mg-menu-item-focused-background-color-hsl), 0.1)}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--active{color:hsl(var(--mg-menu-item-color-active-hsl));font-weight:600}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--active.mg-menu-item__navigation-button--horizontal{border-bottom-color:hsl(var(--mg-menu-item-border-color-active-hsl))}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--active.mg-menu-item__navigation-button--vertical{border-left-color:hsl(var(--mg-menu-item-border-color-active-hsl))}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--hidden{display:none}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal{border-bottom:0.3rem solid transparent}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical{border-left:0.3rem solid transparent}:host([data-style-direction-vertical][data-level=\"1\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(1 * 2rem - 0.3rem)}:host([data-level=\"1\"]) .mg-menu-item__collapse-container{z-index:calc(1 * 10)}:host([data-style-direction-vertical][data-level=\"2\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(2 * 2rem - 0.3rem)}:host([data-level=\"2\"]) .mg-menu-item__collapse-container{z-index:calc(2 * 10)}:host([data-style-direction-vertical][data-level=\"3\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(3 * 2rem - 0.3rem)}:host([data-level=\"3\"]) .mg-menu-item__collapse-container{z-index:calc(3 * 10)}:host([data-style-direction-vertical][data-level=\"4\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(4 * 2rem - 0.3rem)}:host([data-level=\"4\"]) .mg-menu-item__collapse-container{z-index:calc(4 * 10)}:host([data-style-direction-vertical][data-level=\"5\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(5 * 2rem - 0.3rem)}:host([data-level=\"5\"]) .mg-menu-item__collapse-container{z-index:calc(5 * 10)}:host([data-style-direction-vertical][data-level=\"6\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(6 * 2rem - 0.3rem)}:host([data-level=\"6\"]) .mg-menu-item__collapse-container{z-index:calc(6 * 10)}:host([data-style-direction-vertical][data-level=\"1\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(1 * 3rem - 0.3rem)}:host([data-level=\"1\"]) .mg-menu-item__collapse-container{z-index:calc(1 * 10)}:host([data-style-direction-vertical][data-level=\"2\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(2 * 3rem - 0.3rem)}:host([data-level=\"2\"]) .mg-menu-item__collapse-container{z-index:calc(2 * 10)}:host([data-style-direction-vertical][data-level=\"3\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(3 * 3rem - 0.3rem)}:host([data-level=\"3\"]) .mg-menu-item__collapse-container{z-index:calc(3 * 10)}:host([data-style-direction-vertical][data-level=\"4\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(4 * 3rem - 0.3rem)}:host([data-level=\"4\"]) .mg-menu-item__collapse-container{z-index:calc(4 * 10)}:host([data-style-direction-vertical][data-level=\"5\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(5 * 3rem - 0.3rem)}:host([data-level=\"5\"]) .mg-menu-item__collapse-container{z-index:calc(5 * 10)}:host([data-style-direction-vertical][data-level=\"6\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(6 * 3rem - 0.3rem)}:host([data-level=\"6\"]) .mg-menu-item__collapse-container{z-index:calc(6 * 10)}:host([data-style-direction-vertical][data-level=\"1\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(1 * 4rem - 0.3rem)}:host([data-level=\"1\"]) .mg-menu-item__collapse-container{z-index:calc(1 * 10)}:host([data-style-direction-vertical][data-level=\"2\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(2 * 4rem - 0.3rem)}:host([data-level=\"2\"]) .mg-menu-item__collapse-container{z-index:calc(2 * 10)}:host([data-style-direction-vertical][data-level=\"3\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(3 * 4rem - 0.3rem)}:host([data-level=\"3\"]) .mg-menu-item__collapse-container{z-index:calc(3 * 10)}:host([data-style-direction-vertical][data-level=\"4\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(4 * 4rem - 0.3rem)}:host([data-level=\"4\"]) .mg-menu-item__collapse-container{z-index:calc(4 * 10)}:host([data-style-direction-vertical][data-level=\"5\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(5 * 4rem - 0.3rem)}:host([data-level=\"5\"]) .mg-menu-item__collapse-container{z-index:calc(5 * 10)}:host([data-style-direction-vertical][data-level=\"6\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(6 * 4rem - 0.3rem)}:host([data-level=\"6\"]) .mg-menu-item__collapse-container{z-index:calc(6 * 10)}:host{position:relative;display:flex;--mg-popover-padding-vertical:0;--mg-popover-padding-horizontal:0}:host([data-style-direction-vertical]){flex-direction:column}:host([data-style-direction-vertical]) .mg-menu-item__navigation-button{width:100%}:host([data-style-direction-vertical]) .mg-menu-item__collapse-container{left:unset;top:unset;position:unset;width:unset}:host([data-style-direction-vertical]) .mg-menu-item-chevron{margin-left:auto}:host([data-style-direction-horizontal]) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level{background-color:hsl(var(--color-light))}:host([data-style-direction-horizontal]) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level ::slotted(mg-menu){padding:1rem 0}:host([data-overflow-more]){--mg-menu-item-navigation-button-column-gap:0}:host([data-overflow-more]) .mg-menu-item__navigation-button-chevron{display:none}:host([data-overflow-more]) .mg-menu-item__navigation-button-text-content ::slotted([slot=information]){margin-left:0}:host([data-overflow-more]) ::slotted(mg-menu){--mg-menu-item-navigation-button-column-gap:1rem}.mg-menu-item{max-width:var(--mg-menu-item-navigation-button-max-width)}.mg-menu-item__collapse-container{width:max-content;z-index:10}.mg-menu-item__navigation-button-center{min-width:0}.mg-menu-item__navigation-button-text-content{width:100%;display:flex;align-items:center}.mg-menu-item__navigation-button-text-content-notification,.mg-menu-item__navigation-button-text-content ::slotted([slot=information]){margin-left:1rem;font-size:var(--font-size)}.mg-menu-item__navigation-button-chevron{margin-left:auto;transition:200ms}.mg-menu-item__navigation-button-chevron--rotate.mg-menu-item__navigation-button-chevron{transform:rotate(180deg)}::slotted([slot=label]),::slotted([slot=metadata]){display:block;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::slotted(*){display:flex;flex-direction:column}:host([status=disabled]){pointer-events:none}:host([hidden]){display:none}";
207
+ const mgMenuItemCss = ".sr-only{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){.mg-a11y-animation{animation:none !important;transition:none !important}}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding:1rem 2rem;height:calc(3.8rem)}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button,.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button ::slotted([slot=label]),.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button ::slotted([slot=metadata]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular ::slotted([slot=label]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular ::slotted([slot=metadata]){font-size:var(--font-size)}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular.mg-menu-item__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular.mg-menu-item__navigation-button--vertical{padding-left:calc(2rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding:1rem 3rem;height:calc(5.1rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button,.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button ::slotted([slot=label]),.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button ::slotted([slot=metadata]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium ::slotted([slot=label]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium ::slotted([slot=metadata]){font-size:calc(var(--font-size) + 0.2rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium.mg-menu-item__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-medium .mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium.mg-menu-item__navigation-button--vertical{padding-left:calc(3rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding:1rem 4rem;height:calc(7.1rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button,.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button ::slotted([slot=label]),.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button ::slotted([slot=metadata]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large ::slotted([slot=label]),.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large ::slotted([slot=metadata]){font-size:calc(var(--font-size) + 0.2rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large.mg-menu-item__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-menu-item.mg-menu-item--size-large .mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical,.mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large.mg-menu-item__navigation-button--vertical{padding-left:calc(4rem - 0.3rem)}.mg-menu-item__navigation-button{display:flex;align-items:center;column-gap:var(--mg-menu-item-navigation-button-column-gap, 1rem);background-color:unset;border:none;font-family:var(--font-family);font-weight:400;color:hsl(var(--mg-menu-item-color-hsl, var(--color-dark)));line-height:var(--line-height);text-decoration:none;white-space:nowrap;box-sizing:border-box;cursor:pointer}.mg-menu-item__navigation-button:disabled,.mg-menu-item__navigation-button--disabled{cursor:default;opacity:var(--mg-disabled-opacity)}.mg-menu-item__navigation-button:focus-visible{z-index:10}.mg-menu-item__navigation-button:hover:not(.mg-menu-item__navigation-button--disabled),.mg-menu-item__navigation-button:focus-visible:not(.mg-menu-item__navigation-button--disabled){background-color:hsl(var(--mg-menu-item-focused-background-color-hsl), 0.1)}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--active{color:hsl(var(--mg-menu-item-color-active-hsl));font-weight:600}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--active.mg-menu-item__navigation-button--horizontal{border-bottom-color:hsl(var(--mg-menu-item-border-color-active-hsl))}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--active.mg-menu-item__navigation-button--vertical{border-left-color:hsl(var(--mg-menu-item-border-color-active-hsl))}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--hidden{display:none}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--horizontal{border-bottom:0.3rem solid transparent}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--vertical{border-left:0.3rem solid transparent}:host([data-style-direction-vertical][data-level=\"1\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(1 * 2rem - 0.3rem)}:host([data-level=\"1\"]) .mg-menu-item__collapse-container{z-index:calc(1 * 10)}:host([data-style-direction-vertical][data-level=\"2\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(2 * 2rem - 0.3rem)}:host([data-level=\"2\"]) .mg-menu-item__collapse-container{z-index:calc(2 * 10)}:host([data-style-direction-vertical][data-level=\"3\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(3 * 2rem - 0.3rem)}:host([data-level=\"3\"]) .mg-menu-item__collapse-container{z-index:calc(3 * 10)}:host([data-style-direction-vertical][data-level=\"4\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(4 * 2rem - 0.3rem)}:host([data-level=\"4\"]) .mg-menu-item__collapse-container{z-index:calc(4 * 10)}:host([data-style-direction-vertical][data-level=\"5\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(5 * 2rem - 0.3rem)}:host([data-level=\"5\"]) .mg-menu-item__collapse-container{z-index:calc(5 * 10)}:host([data-style-direction-vertical][data-level=\"6\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular{padding-left:calc(6 * 2rem - 0.3rem)}:host([data-level=\"6\"]) .mg-menu-item__collapse-container{z-index:calc(6 * 10)}:host([data-style-direction-vertical][data-level=\"1\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(1 * 3rem - 0.3rem)}:host([data-level=\"1\"]) .mg-menu-item__collapse-container{z-index:calc(1 * 10)}:host([data-style-direction-vertical][data-level=\"2\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(2 * 3rem - 0.3rem)}:host([data-level=\"2\"]) .mg-menu-item__collapse-container{z-index:calc(2 * 10)}:host([data-style-direction-vertical][data-level=\"3\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(3 * 3rem - 0.3rem)}:host([data-level=\"3\"]) .mg-menu-item__collapse-container{z-index:calc(3 * 10)}:host([data-style-direction-vertical][data-level=\"4\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(4 * 3rem - 0.3rem)}:host([data-level=\"4\"]) .mg-menu-item__collapse-container{z-index:calc(4 * 10)}:host([data-style-direction-vertical][data-level=\"5\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(5 * 3rem - 0.3rem)}:host([data-level=\"5\"]) .mg-menu-item__collapse-container{z-index:calc(5 * 10)}:host([data-style-direction-vertical][data-level=\"6\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium{padding-left:calc(6 * 3rem - 0.3rem)}:host([data-level=\"6\"]) .mg-menu-item__collapse-container{z-index:calc(6 * 10)}:host([data-style-direction-vertical][data-level=\"1\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(1 * 4rem - 0.3rem)}:host([data-level=\"1\"]) .mg-menu-item__collapse-container{z-index:calc(1 * 10)}:host([data-style-direction-vertical][data-level=\"2\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(2 * 4rem - 0.3rem)}:host([data-level=\"2\"]) .mg-menu-item__collapse-container{z-index:calc(2 * 10)}:host([data-style-direction-vertical][data-level=\"3\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(3 * 4rem - 0.3rem)}:host([data-level=\"3\"]) .mg-menu-item__collapse-container{z-index:calc(3 * 10)}:host([data-style-direction-vertical][data-level=\"4\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(4 * 4rem - 0.3rem)}:host([data-level=\"4\"]) .mg-menu-item__collapse-container{z-index:calc(4 * 10)}:host([data-style-direction-vertical][data-level=\"5\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(5 * 4rem - 0.3rem)}:host([data-level=\"5\"]) .mg-menu-item__collapse-container{z-index:calc(5 * 10)}:host([data-style-direction-vertical][data-level=\"6\"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large{padding-left:calc(6 * 4rem - 0.3rem)}:host([data-level=\"6\"]) .mg-menu-item__collapse-container{z-index:calc(6 * 10)}:host{position:relative;display:flex;--mg-popover-padding-vertical:0;--mg-popover-padding-horizontal:0}:host([data-style-direction-vertical]){flex-direction:column}:host([data-style-direction-vertical]) .mg-menu-item__navigation-button{width:100%}:host([data-style-direction-vertical]) .mg-menu-item__collapse-container{left:unset;top:unset;position:unset;width:unset}:host([data-style-direction-vertical]) .mg-menu-item-chevron{margin-left:auto}:host([data-style-direction-horizontal]) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level{background-color:hsl(var(--color-light))}:host([data-style-direction-horizontal]) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level ::slotted(mg-menu){padding:1rem 0}:host([data-overflow-more]){--mg-menu-item-navigation-button-column-gap:0}:host([data-overflow-more]) .mg-menu-item__navigation-button-chevron{display:none}:host([data-overflow-more]) .mg-menu-item__navigation-button-text-content ::slotted([slot=information]){margin-left:0}:host([data-overflow-more]) ::slotted(mg-menu){--mg-menu-item-navigation-button-column-gap:1rem}.mg-menu-item{max-width:var(--mg-menu-item-navigation-button-max-width)}.mg-menu-item__collapse-container{width:max-content;z-index:10}.mg-menu-item__navigation-button-center{min-width:0}.mg-menu-item__navigation-button-text-content{width:100%;display:flex;align-items:center}.mg-menu-item__navigation-button-text-content-notification,.mg-menu-item__navigation-button-text-content ::slotted([slot=information]){margin-left:1rem;font-size:var(--font-size)}.mg-menu-item__navigation-button-chevron{margin-left:auto;transition:200ms}.mg-menu-item__navigation-button-chevron--rotate.mg-menu-item__navigation-button-chevron{transform:rotate(180deg)}::slotted([slot=label]),::slotted([slot=metadata]){display:block;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::slotted(*){display:flex;flex-direction:column}:host([status=disabled]){pointer-events:none}:host([hidden]){display:none}";
225
208
 
226
209
  const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
227
210
  constructor() {
@@ -248,11 +231,11 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
248
231
  /**
249
232
  * Does an Element have given Status
250
233
  *
251
- * @param {Element} element to parse
234
+ * @param {HTMLMgMenuItemElement} mgMenuItemElement to parse
252
235
  * @param {MgMenuItem['status']} status to check
253
236
  * @returns {boolean} true if element with status is found
254
237
  */
255
- this.hasStatus = (element, status) => element.querySelector(`${this.name}[status="${status}"]`) !== null;
238
+ this.hasStatus = (mgMenuItemElement, status) => mgMenuItemElement.status === status;
256
239
  /**
257
240
  * Is component contextual direction match the given direction
258
241
  *
@@ -299,6 +282,17 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
299
282
  childMenu !== null &&
300
283
  Array.from(childMenu.children).some((subItem) => subItem.querySelector('mg-badge') !== null && subItem.getAttribute('hidden') === null);
301
284
  };
285
+ /**
286
+ * Method to control if one of component children have active status
287
+ *
288
+ * @returns {boolean} truthy if component has active child
289
+ */
290
+ this.hasActiveChild = () => {
291
+ var _a;
292
+ return Array.from(((_a = this.element.querySelector('mg-menu')) === null || _a === void 0 ? void 0 : _a.children) || [])
293
+ .filter(element => element.nodeName === 'MG-MENU-ITEM')
294
+ .some((element) => this.hasStatus(element, Status.ACTIVE) && element.getAttribute('hidden') === null);
295
+ };
302
296
  /**
303
297
  * Render slot
304
298
  *
@@ -334,7 +328,7 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
334
328
  item.expanded = false;
335
329
  });
336
330
  }
337
- else if (this.hasStatus(this.element, Status.ACTIVE)) {
331
+ else if (this.element.querySelector(`${this.name}[status="${Status.ACTIVE}"]`) !== null) {
338
332
  // - when expanded and contain an active item parents are expended too
339
333
  subItems.forEach(item => {
340
334
  if (this.hasStatus(item, Status.ACTIVE)) {
@@ -401,10 +395,10 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
401
395
  this.isInMainMenu = this.element.parentElement.closest('mg-menu-item') === null;
402
396
  // when main menu item contain an active item it will get the active style
403
397
  // AND if item is in vertical menu it will be expanded
404
- const hasActiveChild = Array.from(this.element.children).some(element => this.hasStatus(element, Status.ACTIVE) && element.getAttribute('hidden') === null);
405
- if (this.isInMainMenu && hasActiveChild) {
398
+ if (this.hasActiveChild()) {
406
399
  this.status = Status.ACTIVE;
407
- this.expanded = this.isDirection(Direction.VERTICAL);
400
+ if (this.isInMainMenu)
401
+ this.expanded = this.isDirection(Direction.VERTICAL);
408
402
  }
409
403
  // manage menu items style depending to parent menu horientation
410
404
  this.element.setAttribute(`data-style-direction-${this.direction}`, '');
@@ -413,15 +407,24 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
413
407
  // manage all sub levels child menu-items level with data-level attribut
414
408
  if (this.isDirection(Direction.VERTICAL)) {
415
409
  Array.from(this.element.querySelectorAll('mg-menu-item')).forEach(item => {
416
- const itemLevel = Number(item.getAttribute('data-level')) || 1;
417
- item.setAttribute('data-level', `${itemLevel + 1}`);
410
+ item.dataset.level = `${(Number(item.dataset.level) || 1) + 1}`;
418
411
  });
419
412
  }
420
413
  // manage first sub-level menu-items
421
414
  const childItems = Array.from(((_a = this.element.querySelector('mg-menu')) === null || _a === void 0 ? void 0 : _a.children) || []).filter(item => item.nodeName === 'MG-MENU-ITEM');
422
415
  childItems.forEach(item => {
416
+ const updateStatus = () => {
417
+ if (![Status.HIDDEN, Status.DISABLED].includes(this.status)) {
418
+ this.status = this.hasActiveChild() ? Status.ACTIVE : Status.VISIBLE;
419
+ }
420
+ };
423
421
  // manage child menu listener
424
- new MutationObserver(() => {
422
+ item.addEventListener('status-change', () => {
423
+ updateStatus();
424
+ });
425
+ new MutationObserver(mutationsList => {
426
+ if (mutationsList.some(mutation => mutation.attributeName === 'hidden'))
427
+ updateStatus();
425
428
  this.updateDisplayNotificationBadge();
426
429
  }).observe(item, { attributes: true });
427
430
  });
@@ -434,7 +437,7 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
434
437
  */
435
438
  renderInteractiveElement() {
436
439
  const TagName = this.href !== undefined ? 'a' : 'button';
437
- return (h(TagName, { href: this.href, class: this.navigationButtonClassList.join(), tabindex: [Status.DISABLED, Status.HIDDEN].includes(this.status) ? -1 : 0, disabled: this.status === Status.DISABLED, hidden: this.status === Status.HIDDEN, "aria-expanded": this.hasChildren && this.expanded.toString(), "aria-current": this.status === Status.ACTIVE && 'page', onClick: this.handleElementCLick }, h("slot", { name: "image" }), h("div", { class: `${this.navigationButton}-center` }, h("div", { class: `${this.navigationButton}-text-content` }, h("slot", { name: "label" }), !this.displayNotificationBadge && h("slot", { name: "information" }), this.displayNotificationBadge && (h("span", { class: "mg-menu-item__navigation-button-text-content-notification" }, h("mg-badge", { label: this.badgeLabel, value: "!", variant: "info", slot: "information" })))), this.size !== 'regular' && h("slot", { name: "metadata" })), this.hasChildren && this.href === undefined && (h("span", { class: {
440
+ return (h(TagName, { href: this.href, class: this.navigationButtonClassList.join(), tabindex: [Status.DISABLED, Status.HIDDEN].includes(this.status) ? -1 : 0, disabled: this.status === Status.DISABLED, hidden: this.status === Status.HIDDEN, "aria-expanded": this.hasChildren && this.expanded.toString(), "aria-current": this.status === Status.ACTIVE && 'page', onClick: this.handleElementCLick }, h("slot", { name: "image" }), h("div", { class: `${this.navigationButton}-center` }, h("div", { class: `${this.navigationButton}-text-content` }, h("slot", { name: "label" }), !this.displayNotificationBadge && h("slot", { name: "information" }), this.displayNotificationBadge && (h("span", { class: "mg-menu-item__navigation-button-text-content-notification" }, h("mg-badge", { label: this.badgeLabel, value: "!", variant: "text-color", slot: "information" })))), this.size !== 'regular' && h("slot", { name: "metadata" })), this.hasChildren && this.href === undefined && (h("span", { class: {
438
441
  [`${this.navigationButton}-chevron`]: true,
439
442
  [`${this.navigationButton}-chevron--rotate`]: this.expanded === true,
440
443
  'mg-a11y-animation': true,
@@ -452,7 +455,7 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
452
455
  });
453
456
  return (h(Host, { role: "menuitem", "aria-haspopup": this.hasChildren.toString() }, this.isDirection(Direction.HORIZONTAL) && this.hasChildren && this.href === undefined ? (h("mg-popover", { display: this.expanded, placement: "bottom-start", arrowHide: true, "onDisplay-change": this.handlePopoverDisplay }, this.renderInteractiveElement(), h("div", { class: getContainerClasses(), slot: "content" }, this.renderSlot()))) : ([
454
457
  this.renderInteractiveElement(),
455
- h("div", { class: getContainerClasses(), hidden: !this.expanded }, this.renderSlot()),
458
+ h("div", { key: "vertical-container", class: getContainerClasses(), hidden: !this.expanded }, this.renderSlot()),
456
459
  ])));
457
460
  }
458
461
  get element() { return this; }
@@ -514,4 +517,4 @@ function defineCustomElement() {
514
517
  }
515
518
  defineCustomElement();
516
519
 
517
- export { Direction as D, MgMenuItem as M, OverflowBehaviorElements as O, OverflowBehavior as a, defineCustomElement as d, isMoreItem as i, sizes as s };
520
+ export { Direction as D, MgMenuItem as M, OverflowBehaviorElements as O, Status as S, OverflowBehavior as a, defineCustomElement as d, isMoreItem as i, sizes as s };
@@ -1,249 +1,4 @@
1
- import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
- import { O as OverflowBehaviorElements, D as Direction, i as isMoreItem, s as sizes, a as OverflowBehavior, d as defineCustomElement$3 } from './mg-menu-item2.js';
3
- import { i as initLocales } from './index2.js';
4
- import { d as defineCustomElement$7 } from './mg-badge2.js';
5
- import { d as defineCustomElement$6 } from './mg-button2.js';
6
- import { d as defineCustomElement$5 } from './mg-card2.js';
7
- import { d as defineCustomElement$4 } from './mg-icon2.js';
8
- import { d as defineCustomElement$2 } from './mg-popover2.js';
9
-
10
- const mgMenuCss = ".sr-only{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){.mg-a11y-animation{animation:none !important;transition:none !important}}:host{display:flex;background-color:hsl(var(--mg-menu-background-color-hsl, var(--color-light)))}:host([direction=vertical]){flex-direction:column;height:100%;overflow-y:auto}";
11
-
12
- const MgMenu$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
13
- constructor() {
14
- super();
15
- this.__registerHost();
16
- this.__attachShadow();
17
- /************
18
- * Internal *
19
- ************/
20
- this.name = 'mg-menu';
21
- this.menuItems = [];
22
- this.focusedMenuItem = 0;
23
- /**
24
- * Close matching menu-item
25
- *
26
- * @param {HTMLElement} item menu-item to close
27
- * @param {boolean} condition addionnal condition
28
- * @returns {void}
29
- */
30
- this.closeMenuItem = (item, condition) => {
31
- if (!this.isChildMenu && condition) {
32
- item.expanded = false;
33
- }
34
- };
35
- /*************
36
- * Methods *
37
- *************/
38
- /**
39
- * Store menu-items on component init and add listeners
40
- *
41
- * @returns {void}
42
- */
43
- this.initMenuItemsListeners = () => {
44
- // add listeners on menu item and edit index
45
- this.menuItems.forEach((item, menuItemIndex) => {
46
- ['click', 'focus'].forEach(trigger => {
47
- (item.shadowRoot.querySelector('button') || item.shadowRoot.querySelector('a')).addEventListener(trigger, () => {
48
- this.focusedMenuItem = menuItemIndex;
49
- // reset expanded on previous active menu item
50
- this.menuItems.forEach((item, index) => {
51
- this.closeMenuItem(item, index !== this.focusedMenuItem);
52
- });
53
- });
54
- });
55
- });
56
- };
57
- /**
58
- * render mg-menu-more
59
- *
60
- * @returns {HTMLElement} formated mg-menu-item element
61
- */
62
- this.renderMgMenuMore = () => {
63
- const moreElement = this.element.shadowRoot.querySelector(`[${OverflowBehaviorElements.MORE}]`);
64
- this.menuItems.forEach((child) => {
65
- const proxy = child.cloneNode(true);
66
- moreElement.querySelector('mg-menu').appendChild(proxy);
67
- });
68
- const allMenuItem = Array.from(this.element.querySelectorAll('mg-menu-item:not([data-overflow-more])'));
69
- Array.from(moreElement.querySelectorAll('mg-menu-item:not([data-overflow-more])')).forEach((proxy, index) => {
70
- // manage click on proxy to mirror it on initial element
71
- proxy.addEventListener('click', () => {
72
- (allMenuItem[index].shadowRoot.querySelector('a') || allMenuItem[index].shadowRoot.querySelector('button')).dispatchEvent(new MouseEvent('click', { bubbles: true }));
73
- });
74
- // manage status change miror in proxy
75
- allMenuItem[index].addEventListener('status-change', (event) => {
76
- proxy.setAttribute('status', event.detail);
77
- this.overflowBehavior.updateActiveStatus();
78
- });
79
- });
80
- this.element.appendChild(moreElement);
81
- return this.element.querySelector(`[${OverflowBehaviorElements.MORE}]`);
82
- };
83
- /**
84
- * Render mg-menu-item more element for overflow behavior
85
- *
86
- * @returns {HTMLElement} rendered mg-menu-item more element
87
- */
88
- this.renderMgMenuItemMore = () => {
89
- var _a, _b, _c, _d, _e, _f, _g;
90
- return (h("mg-menu-item", { "data-overflow-more": true }, h("mg-icon", { icon: ((_b = (_a = this.moreitem) === null || _a === void 0 ? void 0 : _a.mgIcon) === null || _b === void 0 ? void 0 : _b.icon) || 'ellipsis-vertical', slot: "image" }), h("span", { class: { 'sr-only': !((_d = (_c = this.moreitem) === null || _c === void 0 ? void 0 : _c.slotLabel) === null || _d === void 0 ? void 0 : _d.display) }, slot: "label" }, ((_f = (_e = this.moreitem) === null || _e === void 0 ? void 0 : _e.slotLabel) === null || _f === void 0 ? void 0 : _f.label) || this.messages.moreLabel), h("mg-menu", { direction: Direction.VERTICAL, label: this.messages.moreLabel, size: (_g = this.moreitem) === null || _g === void 0 ? void 0 : _g.size })));
91
- };
92
- this.label = undefined;
93
- this.direction = Direction.HORIZONTAL;
94
- this.moreitem = undefined;
95
- this.size = 'regular';
96
- this.isChildMenu = undefined;
97
- this.hasOverflow = false;
98
- }
99
- validateLabel(newValue) {
100
- if (newValue === undefined) {
101
- throw new Error(`<${this.name}> prop "label" is required.`);
102
- }
103
- }
104
- validateDirection(newValue) {
105
- if (![Direction.VERTICAL, Direction.HORIZONTAL].includes(newValue)) {
106
- throw new Error(`<${this.name}> prop "direction" must be one of : ${Direction.HORIZONTAL}, ${Direction.VERTICAL}.`);
107
- }
108
- }
109
- validateMoreItem(newValue) {
110
- if (newValue !== undefined && this.direction !== Direction.HORIZONTAL) {
111
- throw new Error(`<${this.name}> prop "moreitem" must be paired with direction ${Direction.HORIZONTAL}.`);
112
- }
113
- else if (newValue !== undefined && !isMoreItem(newValue)) {
114
- throw new Error(`<${this.name}> prop "moreitem" must match MoreItemType.`);
115
- }
116
- }
117
- validateSize(newValue) {
118
- if (!sizes.includes(newValue)) {
119
- throw new Error(`<${this.name}> prop "size" must be one of : ${sizes.join(', ')}.`);
120
- }
121
- }
122
- /*************
123
- * Lifecycle *
124
- *************/
125
- /**
126
- * Validate props
127
- *
128
- * @returns {void}
129
- */
130
- componentWillLoad() {
131
- this.messages = initLocales(this.element).messages.plusMenu;
132
- // validation
133
- this.validateDirection(this.direction);
134
- this.validateLabel(this.label);
135
- this.validateMoreItem(this.moreitem);
136
- this.validateSize(this.size);
137
- }
138
- /**
139
- * Check if component slots configuration
140
- *
141
- * @returns {ReturnType<typeof setTimeout>} timeout
142
- */
143
- componentDidLoad() {
144
- // update props and states after componentDidLoad hook
145
- // return a promise to process action only in the FIRST render().
146
- // https://stenciljs.com/docs/component-lifecycle#componentwillload
147
- return setTimeout(() => {
148
- // store all menu-items
149
- this.menuItems = Array.from(this.element.children).filter(child => child.nodeName === 'MG-MENU-ITEM');
150
- this.isChildMenu = this.element.closest('mg-menu-item') !== null;
151
- this.hasOverflow = this.direction === Direction.HORIZONTAL && !this.isChildMenu;
152
- if (this.hasOverflow && isMoreItem(this.moreitem))
153
- this.overflowBehavior = new OverflowBehavior(this.element, this.renderMgMenuMore);
154
- }, 0);
155
- }
156
- /**
157
- * Check add listeners to childs
158
- *
159
- * @returns {void}
160
- */
161
- componentDidRender() {
162
- // add menu items listeners
163
- this.initMenuItemsListeners();
164
- }
165
- /**
166
- * Disconnect overflow ResizeObserver
167
- *
168
- * @returns {void} run overflow resize obeserver disconnexion
169
- */
170
- disconnectedCallback() {
171
- if (this.hasOverflow)
172
- this.overflowBehavior.disconnect();
173
- }
174
- /**
175
- * Render
176
- *
177
- * @returns {HTMLElement} HTML Element
178
- */
179
- render() {
180
- return (h(Host, { role: this.isChildMenu ? 'menu' : 'menubar', "aria-label": this.label }, h("slot", null), this.hasOverflow && isMoreItem(this.moreitem) && this.renderMgMenuItemMore()));
181
- }
182
- get element() { return this; }
183
- static get watchers() { return {
184
- "label": ["validateLabel"],
185
- "direction": ["validateDirection"],
186
- "moreitem": ["validateMoreItem"],
187
- "size": ["validateSize"]
188
- }; }
189
- static get style() { return mgMenuCss; }
190
- }, [1, "mg-menu", {
191
- "label": [1],
192
- "direction": [513],
193
- "moreitem": [16],
194
- "size": [1],
195
- "isChildMenu": [32],
196
- "hasOverflow": [32]
197
- }]);
198
- function defineCustomElement$1() {
199
- if (typeof customElements === "undefined") {
200
- return;
201
- }
202
- const components = ["mg-menu", "mg-badge", "mg-button", "mg-card", "mg-icon", "mg-menu", "mg-menu-item", "mg-popover"];
203
- components.forEach(tagName => { switch (tagName) {
204
- case "mg-menu":
205
- if (!customElements.get(tagName)) {
206
- customElements.define(tagName, MgMenu$1);
207
- }
208
- break;
209
- case "mg-badge":
210
- if (!customElements.get(tagName)) {
211
- defineCustomElement$7();
212
- }
213
- break;
214
- case "mg-button":
215
- if (!customElements.get(tagName)) {
216
- defineCustomElement$6();
217
- }
218
- break;
219
- case "mg-card":
220
- if (!customElements.get(tagName)) {
221
- defineCustomElement$5();
222
- }
223
- break;
224
- case "mg-icon":
225
- if (!customElements.get(tagName)) {
226
- defineCustomElement$4();
227
- }
228
- break;
229
- case "mg-menu":
230
- if (!customElements.get(tagName)) {
231
- defineCustomElement$1();
232
- }
233
- break;
234
- case "mg-menu-item":
235
- if (!customElements.get(tagName)) {
236
- defineCustomElement$3();
237
- }
238
- break;
239
- case "mg-popover":
240
- if (!customElements.get(tagName)) {
241
- defineCustomElement$2();
242
- }
243
- break;
244
- } });
245
- }
246
- defineCustomElement$1();
1
+ import { M as MgMenu$1, d as defineCustomElement$1 } from './mg-menu2.js';
247
2
 
248
3
  const MgMenu = MgMenu$1;
249
4
  const defineCustomElement = defineCustomElement$1;