@mgdis/mg-components 5.7.0 → 5.8.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 (53) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/mg-action-more_31.cjs.entry.js +216 -565
  3. package/dist/cjs/mg-components.cjs.js +1 -1
  4. package/dist/cjs/mg-item-more.cjs.entry.js +273 -0
  5. package/dist/cjs/mg-menu.conf-9afe6571.js +242 -0
  6. package/dist/collection/collection-manifest.json +2 -1
  7. package/dist/collection/components/atoms/mg-button/mg-button.js +24 -0
  8. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js +8 -0
  9. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +6 -2
  10. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js +0 -13
  11. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +39 -67
  12. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.css +3 -3
  13. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +156 -77
  14. package/dist/collection/components/molecules/mg-item-more/mg-item-more.conf.js +1 -0
  15. package/dist/collection/components/molecules/mg-item-more/mg-item-more.css +30 -0
  16. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +200 -0
  17. package/dist/collection/components/molecules/mg-tabs/mg-tabs.css +0 -2
  18. package/dist/collection/styles/navigation-button.scss +1 -1
  19. package/dist/collection/utils/behaviors.utils.js +33 -29
  20. package/dist/components/index.d.ts +1 -0
  21. package/dist/components/index.js +1 -0
  22. package/dist/components/mg-action-more.js +2 -1
  23. package/dist/components/mg-button2.js +4 -1
  24. package/dist/components/mg-icon2.js +8 -0
  25. package/dist/components/mg-item-more.d.ts +11 -0
  26. package/dist/components/mg-item-more.js +336 -0
  27. package/dist/components/mg-menu-item2.js +134 -250
  28. package/dist/components/mg-menu.conf.js +14 -0
  29. package/dist/components/mg-menu2.js +35 -102
  30. package/dist/components/mg-tabs.js +1 -1
  31. package/dist/components/mg-tooltip2.js +6 -2
  32. package/dist/esm/loader.js +1 -1
  33. package/dist/esm/mg-action-more_31.entry.js +185 -534
  34. package/dist/esm/mg-components.js +1 -1
  35. package/dist/esm/mg-item-more.entry.js +269 -0
  36. package/dist/esm/mg-menu.conf-881fbd82.js +235 -0
  37. package/dist/mg-components/mg-components.css +1 -1
  38. package/dist/mg-components/mg-components.esm.js +1 -1
  39. package/dist/mg-components/p-1221773c.entry.js +1 -0
  40. package/dist/mg-components/p-367f92d2.js +1 -0
  41. package/dist/mg-components/p-6aeded97.entry.js +1 -0
  42. package/dist/mg-components/styles/navigation-button.scss +1 -1
  43. package/dist/types/components/atoms/mg-button/mg-button.d.ts +5 -0
  44. package/dist/types/components/molecules/menu/mg-menu/mg-menu.conf.d.ts +3 -27
  45. package/dist/types/components/molecules/menu/mg-menu/mg-menu.d.ts +9 -27
  46. package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.conf.d.ts +5 -0
  47. package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +65 -16
  48. package/dist/types/components/molecules/mg-item-more/mg-item-more.conf.d.ts +26 -0
  49. package/dist/types/components/molecules/mg-item-more/mg-item-more.d.ts +74 -0
  50. package/dist/types/components.d.ts +66 -12
  51. package/dist/types/utils/behaviors.utils.d.ts +12 -5
  52. package/package.json +1 -1
  53. package/dist/mg-components/p-4cfd5423.entry.js +0 -1
@@ -1,225 +1,5 @@
1
1
  import { r as registerInstance, h, H as Host, g as getElement, c as createEvent } from './index-03cceb11.js';
2
-
3
- const errors$1 = {
4
- required: "This field is required.",
5
- date: {
6
- badInput: "The date format must be <span aria-hidden=\"true\">mm/dd/yyyy</span><span class=\"sr-only\">m m / d d / y y y y</span> and the date must be greater than {min}",
7
- min: "The date cannot be earlier than {min}",
8
- max: "The date cannot be later than {max}",
9
- minMax: "The date must be between {min} and {max}"
10
- },
11
- numeric: {
12
- min: "The value cannot be less than {min}",
13
- max: "The value cannot be greater than {max}",
14
- minMax: "The value must be between {min} et {max}"
15
- }
16
- };
17
- const nbCharLeft$1 = "{counter} characters left.";
18
- const input$1 = {
19
- select: {
20
- placeholder: "Select a value"
21
- }
22
- };
23
- const form$1 = {
24
- required: "Fields with a <strong class=\"is-asterisk\">*</strong> are required",
25
- requiredSingle: "Field with a <strong class=\"is-asterisk\">*</strong> is required",
26
- allRequired: "All fields are required",
27
- allRequiredSingle: "The field is required"
28
- };
29
- const message$1 = {
30
- closeButton: "Close message"
31
- };
32
- const modal$1 = {
33
- closeButton: "Close modal"
34
- };
35
- const pagination$1 = {
36
- label: "Pagination",
37
- page: "page",
38
- pages: "pages",
39
- nextPage: "Next page",
40
- previousPage: "Previous page",
41
- selectPage: "Select the page to display."
42
- };
43
- const panel$1 = {
44
- editLabel: "Edit section title."
45
- };
46
- const skipLinks$1 = {
47
- navLabel: "Quick access"
48
- };
49
- const general$1 = {
50
- confirm: "Confirm",
51
- cancel: "Cancel",
52
- close: "Close",
53
- next: "next",
54
- previous: "previous"
55
- };
56
- const plusMenu$1 = {
57
- moreLabel: "Additional menu",
58
- badgeLabel: "Include notification(s)"
59
- };
60
- const actionMore$1 = {
61
- label: "Actions"
62
- };
63
- const en = {
64
- errors: errors$1,
65
- nbCharLeft: nbCharLeft$1,
66
- input: input$1,
67
- form: form$1,
68
- message: message$1,
69
- modal: modal$1,
70
- pagination: pagination$1,
71
- panel: panel$1,
72
- skipLinks: skipLinks$1,
73
- general: general$1,
74
- plusMenu: plusMenu$1,
75
- actionMore: actionMore$1
76
- };
77
-
78
- const errors = {
79
- required: "Ce champ est obligatoire.",
80
- date: {
81
- badInput: "Le format de la date doit être du type <span aria-hidden=\"true\">jj/mm/aaaa</span><span class=\"sr-only\">j j / m m / a a a a</span> et la date supérieure au {min}",
82
- min: "La date ne peut pas être antérieure au {min}",
83
- max: "La date ne peut pas être postérieure au {max}",
84
- minMax: "La date doit être comprise entre le {min} et le {max}"
85
- },
86
- numeric: {
87
- min: "La valeur ne peut pas être inférieure à {min}",
88
- max: "La valeur ne peut pas être supérieure à {max}",
89
- minMax: "La valeur doit être comprise entre {min} et {max}"
90
- }
91
- };
92
- const nbCharLeft = "{counter} caractères disponibles.";
93
- const input = {
94
- select: {
95
- placeholder: "Sélectionnez une valeur"
96
- }
97
- };
98
- const form = {
99
- required: "Les champs marqués d'un <strong class=\"is-asterisk\">*</strong> sont obligatoires",
100
- requiredSingle: "Le champ marqué d'un <strong class=\"is-asterisk\">*</strong> est obligatoire",
101
- allRequired: "Tous les champs sont obligatoires",
102
- allRequiredSingle: "Le champ est obligatoire"
103
- };
104
- const message = {
105
- closeButton: "Fermer le message"
106
- };
107
- const modal = {
108
- closeButton: "Fermer la modale"
109
- };
110
- const pagination = {
111
- label: "Pagination",
112
- page: "page",
113
- pages: "pages",
114
- nextPage: "Page suivante",
115
- previousPage: "Page précédente",
116
- selectPage: "Sélectionner la page à afficher."
117
- };
118
- const panel = {
119
- editLabel: "Modifier le titre de la section."
120
- };
121
- const skipLinks = {
122
- navLabel: "Accès rapide"
123
- };
124
- const general = {
125
- confirm: "Valider",
126
- cancel: "Annuler",
127
- close: "Fermer",
128
- next: "suivant",
129
- previous: "précédent"
130
- };
131
- const plusMenu = {
132
- moreLabel: "Menu complémentaire",
133
- badgeLabel: "Notification(s) incluse(s)"
134
- };
135
- const actionMore = {
136
- label: "Actions"
137
- };
138
- const fr = {
139
- errors: errors,
140
- nbCharLeft: nbCharLeft,
141
- input: input,
142
- form: form,
143
- message: message,
144
- modal: modal,
145
- pagination: pagination,
146
- panel: panel,
147
- skipLinks: skipLinks,
148
- general: general,
149
- plusMenu: plusMenu,
150
- actionMore: actionMore
151
- };
152
-
153
- /**
154
- * Format number to the locale currency
155
- *
156
- * @param {number} number number to format
157
- * @param {string} locale locale to apply
158
- * @param {string} currency currency to apply
159
- * @returns {string} formatted currency
160
- */
161
- const localeCurrency = (number, locale, currency) => {
162
- return new Intl.NumberFormat(locale, { style: 'currency', currency }).format(number);
163
- };
164
- /**
165
- * Format number to locale
166
- *
167
- * @param {number} number number to format
168
- * @param {string} locale locale to apply
169
- * @returns {string} formatted number
170
- */
171
- const localeNumber = (number, locale) => {
172
- return new Intl.NumberFormat(locale).format(number);
173
- };
174
- /**
175
- * Date RegExp
176
- */
177
- const dateRegExp = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/;
178
- /**
179
- * Locale date format
180
- *
181
- * @param {string} date date to format
182
- * @param {string} locale locale to apply
183
- * @returns {string} formatted date
184
- */
185
- const localeDate = (date, locale) => {
186
- if (typeof date !== 'string' || date === '' || !dateRegExp.test(date)) {
187
- return '';
188
- }
189
- return new Intl.DateTimeFormat(locale).format(new Date(date));
190
- };
191
- /**
192
- * Get locale and messages
193
- * We load the defined locale but for now we only support the first subtag for messages
194
- *
195
- * @param {HTMLElement} element element we need to get the language
196
- * @param {unknown} messages messages to use
197
- * @param {string} defaultLocale default messages locale
198
- * @returns {{ locale: string; messages: Record<string, unknown> }} messages object
199
- */
200
- const getLocaleMessages = (element, messages, defaultLocale) => {
201
- // Get local
202
- const closestLangAttribute = element.closest('[lang]');
203
- const closestLang = Intl.NumberFormat.supportedLocalesOf(closestLangAttribute === null || closestLangAttribute === void 0 ? void 0 : closestLangAttribute.lang);
204
- const locale = closestLang.length > 0 ? closestLang[0] : navigator.language || defaultLocale;
205
- // Only keep first subtag
206
- const localeSubtag = locale.split('-').shift();
207
- // Return
208
- return {
209
- locale,
210
- messages: messages[localeSubtag] || messages[defaultLocale],
211
- };
212
- };
213
-
214
- const defaultLocale = 'en';
215
- const messages = { en, fr };
216
- /**
217
- * Get Intl object
218
- *
219
- * @param {HTMLElement} element element we need to get the language
220
- * @returns {{ locale: string; messages: Record<string, unknown> }} messages object
221
- */
222
- const initLocales = (element) => getLocaleMessages(element, messages, defaultLocale);
2
+ import { i as initLocales, D as Direction, l as localeDate, d as dateRegExp, a as localeCurrency, b as localeNumber, s as sizes$2 } from './mg-menu.conf-881fbd82.js';
223
3
 
224
4
  /**
225
5
  * Available menu-item positions
@@ -240,32 +20,6 @@ var Status$1;
240
20
  Status["ACTIVE"] = "active";
241
21
  })(Status$1 || (Status$1 = {}));
242
22
 
243
- /**
244
- * Menu direction type
245
- */
246
- var Direction;
247
- (function (Direction) {
248
- Direction["VERTICAL"] = "vertical";
249
- Direction["HORIZONTAL"] = "horizontal";
250
- })(Direction || (Direction = {}));
251
- /**
252
- * More item type guard
253
- *
254
- * @param {unknown} element element to control
255
- * @returns {boolean} truthy if element is more-item
256
- */
257
- const isMoreItem = (element) => {
258
- var _a, _b, _c;
259
- const item = element;
260
- return (item === undefined ||
261
- (typeof item === 'object' &&
262
- (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')));
263
- };
264
- /**
265
- * List of all possibles sizes
266
- */
267
- const sizes$2 = ['regular', 'medium', 'large'];
268
-
269
23
  /**
270
24
  * Create random ID
271
25
  *
@@ -636,6 +390,7 @@ const mgButtonCss = ":host{display:inline-block;vertical-align:middle;max-width:
636
390
  const MgButton = class {
637
391
  constructor(hostRef) {
638
392
  registerInstance(this, hostRef);
393
+ this.disabledChange = createEvent(this, "disabled-change", 7);
639
394
  /************
640
395
  * Internal *
641
396
  ************/
@@ -734,6 +489,8 @@ const MgButton = class {
734
489
  else {
735
490
  this.classList.delete(this.classDisabled);
736
491
  }
492
+ // emit value update
493
+ this.disabledChange.emit(isDisabled);
737
494
  }
738
495
  loadingHandler(newValue) {
739
496
  // we add loading style if it newvalue is true else we remove it
@@ -1119,6 +876,7 @@ const icons = {
1119
876
  'bell': () => (h("path", { fill: "currentColor", d: "M8 15.33a1.7 1.7 0 0 0 1.52-1.83h-3A1.7 1.7 0 0 0 8 15.33ZM13.13 11c-.46-.59-1.32-1.48-1.32-4.42a4.4 4.4 0 0 0-3.05-4.4v-.6A.85.85 0 0 0 8 .67a.85.85 0 0 0-.76.91v.6a4.4 4.4 0 0 0-3 4.44c0 2.94-.86 3.83-1.32 4.42a1 1 0 0 0-.2.63.85.85 0 0 0 .76.91h9.14a.85.85 0 0 0 .76-.91 1.05 1.05 0 0 0-.25-.67Z" })),
1120
877
  'briefcase': () => (h("path", { fill: "currentColor", d: "M14 4.5h-3v-1c0-.55-.45-1-1-1H6c-.55 0-1 .45-1 1v1H2c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-7c0-.55-.45-1-1-1Zm-8-1h4v1H6v-1Z" })),
1121
878
  'briefcase-outline': () => (h("path", { fill: "currentColor", d: "M14 4.5h-3v-1c0-.55-.45-1-1-1H6c-.55 0-1 .45-1 1v1H2c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-7c0-.55-.45-1-1-1Zm-8-1h4v1H6v-1Zm8 9H2v-7h12v7Z" })),
879
+ 'building-outline': () => (h("path", { fill: "currentColor", d: "M4 2h8v12H9v-1a1 1 0 1 0-2 0v1H4V2Zm4 13h4a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h4ZM7 4H5v2h2V4Zm2 0h2v2H9V4Zm2 4H9v2h2V8ZM5 8h2v2H5V8Z" })),
1122
880
  'calculator': () => (h("path", { fill: "currentColor", d: "M12.83.67H3.17a.5.5 0 0 0-.5.5v13.66a.5.5 0 0 0 .5.5h9.66a.5.5 0 0 0 .5-.5V1.17a.5.5 0 0 0-.5-.5ZM5.58 13.39a.29.29 0 0 1-.28.3H4.1a.29.29 0 0 1-.3-.28v-1.2a.29.29 0 0 1 .28-.3h1.2a.29.29 0 0 1 .3.28v1.2Zm0-3.28a.29.29 0 0 1-.3.3H4.1a.29.29 0 0 1-.3-.3V8.93a.29.29 0 0 1 .28-.3h1.2a.29.29 0 0 1 .3.28v1.2Zm3.29 3.28a.29.29 0 0 1-.3.3H7.38a.29.29 0 0 1-.3-.3v-1.18a.29.29 0 0 1 .3-.3h1.19a.29.29 0 0 1 .3.3Zm0-3.28a.32.32 0 0 1-.3.3H7.38a.32.32 0 0 1-.3-.3V8.93a.29.29 0 0 1 .3-.3h1.19a.29.29 0 0 1 .3.3Zm3.33 3.28a.29.29 0 0 1-.28.3h-1.25a.29.29 0 0 1-.3-.28V8.93a.29.29 0 0 1 .28-.3h1.25a.29.29 0 0 1 .3.28v4.48Zm0-7.15a.29.29 0 0 1-.3.3H4.1a.29.29 0 0 1-.3-.3V2.61a.29.29 0 0 1 .28-.3h7.82a.29.29 0 0 1 .3.28v3.65Z" })),
1123
881
  'calendar': () => (h("path", { fill: "currentColor", d: "M14 3.5c0-.55-.45-1-1-1h-1v-1h-1v1H5v-1H4v1H3c-.55 0-1 .45-1 1v.98s0 .02.02.02H2v9c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-9h-.02s.02 0 .02-.02V3.5Zm-11 10v-8h10v8H3Z" })),
1124
882
  'calendar-outline': () => (h("path", { fill: "currentColor", d: "M13 2.5h-1v-1h-1v1H5v-1H4v1H3c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-10c0-.55-.45-1-1-1Zm-10 11v-8h10v8H3Zm0-9v-1h10v1H3Z" })),
@@ -1234,6 +992,7 @@ const icons = {
1234
992
  'pen': () => (h("path", { fill: "currentColor", d: "M1.67,11.69v2.64h2.64l7.78-7.78-2.64-2.64L1.67,11.69ZM14.13,4.51c.27-.28,.27-.72,0-1h0l-1.65-1.64c-.28-.27-.72-.27-1,0h0l-1.28,1.29,2.64,2.64,1.29-1.29Z" })),
1235
993
  'pen-circle': () => (h("path", { fill: "currentColor", d: "M8 .44C3.82.44.44 3.82.44 8S3.83 15.56 8 15.56s7.56-3.39 7.56-7.56C15.56 3.82 12.18.44 8 .44M5.47 12.19H3.62v-1.85l5.46-5.45 1.85 1.86-5.45 5.45Zm6.88-6.89-.9.9-1.86-1.85.9-.9c.19-.19.51-.19.7 0l1.16 1.15c.19.19.19.51 0 .7" })),
1236
994
  'pen-fancy': () => (h("path", { fill: "currentColor", d: "M3.63,8.65c-.24,.07-.43,.26-.5,.5l-1.46,4.37,.11,.12,2.3-2.3c0-.06,0-.13,0-.19,0-.44,.35-.8,.79-.81,.44,0,.8,.35,.81,.79,0,.44-.35,.8-.79,.81,0,0-.01,0-.02,0h-.19l-2.3,2.3,.12,.11,4.37-1.46c.24-.07,.43-.26,.5-.5l.82-2.08-2.49-2.48-2.07,.82ZM10.8,2.35L6.27,7.28l2.42,2.42,4.94-4.52c2.1-1.86-.99-4.92-2.83-2.83Z" })),
995
+ 'pen-fancy-files-outline': () => (h("path", { fill: "currentColor", d: "M12 2H6v10h6V8.946l.023-.058.085-.078.892-.813V12a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v.112a2.298 2.298 0 0 0-.974.66L12 2.8V2Zm1 4.643-1 .913-.566.515-1.528-1.524L12 4.275l.767-.832c.075-.085.153-.156.233-.215 1.167-.857 2.796.9 1.555 1.997L13 6.643ZM4 3H3v11.5a.5.5 0 0 0 .5.5H11v-1H4V3Zm4.238 4.41a.466.466 0 0 0-.316.315L7 10.477l.07.076 1.452-1.449v-.12a.51.51 0 0 1 .5-.51.51.51 0 0 1 .511.498.51.51 0 0 1-.499.51h-.133L7.45 10.931l.075.069 2.76-.92a.466.466 0 0 0 .317-.314l.518-1.31-1.573-1.562-1.308.516Z" })),
1237
996
  'pen-fancy-outline': () => (h("path", { fill: "currentColor", d: "M12.24 1.67c-.49 0-1 .21-1.44.7L6.27 7.3l2.42 2.42 4.94-4.52c1.6-1.42.19-3.53-1.39-3.53ZM8.72 8.34 7.66 7.28l3.9-4.24c.22-.24.44-.36.69-.36.41 0 .87.34 1.03.78.14.37.04.7-.32 1.02L8.73 8.36ZM5.7 7.86l-2.08.82c-.24.08-.42.26-.5.5l-1.46 4.37.12.12.56.56.12.12 4.37-1.46c.24-.08.42-.26.5-.5l.81-2.08L5.7 7.87Zm-2.57 4.46L4 9.72c.03-.08.09-.15.17-.18l1.29-.51 1.52 1.52-.5 1.29c-.03.08-.1.15-.19.18l-2.6.87.95-.95c.06.02.12.04.19.04.44 0 .79-.35.79-.79s-.35-.79-.79-.79-.79.35-.79.79c0 .07.02.13.04.19l-.95.95Z" })),
1238
997
  'phone': () => (h("path", { fill: "currentColor", d: "M13.97 10.62 11.2 9.43a.6.6 0 0 0-.69.17l-1.23 1.5A9.137 9.137 0 0 1 4.9 6.72l1.5-1.23c.21-.17.28-.45.17-.69L5.38 2.03a.589.589 0 0 0-.68-.34l-2.57.59a.59.59 0 0 0-.46.58c0 6.34 5.14 11.48 11.48 11.48.28 0 .52-.19.58-.46l.59-2.57a.595.595 0 0 0-.35-.68Z" })),
1239
998
  'picture': () => (h("path", { fill: "currentColor", d: "M14.33 12.93V3.07a1.4 1.4 0 0 0-1.4-1.4H3.07a1.4 1.4 0 0 0-1.4 1.4v9.86a1.4 1.4 0 0 0 1.4 1.4h9.86a1.4 1.4 0 0 0 1.4-1.4ZM5.54 9.06l1.76 2.11L9.76 8l3.17 4.22H3.07Z" })),
@@ -1252,6 +1011,8 @@ const icons = {
1252
1011
  h("path", { key: "tags-2", fill: "currentColor", d: "M15 7.37 10.15 3a1.12 1.12 0 0 0-.77-.29H8.26l4.5 4.09a1.76 1.76 0 0 1 0 2.65L8.77 13a1.17 1.17 0 0 0 1.55 0L15 8.79a.94.94 0 0 0 0-1.42Z" }),
1253
1012
  ],
1254
1013
  'thumb-up': () => (h("path", { fill: "currentColor", d: "M2.11 14.36h1a.45.45 0 0 0 .45-.44V7.17a.45.45 0 0 0-.45-.44h-1a.44.44 0 0 0-.44.44v6.75a.44.44 0 0 0 .44.44Zm12.22-7a1.27 1.27 0 0 0-1.27-1.27H9.71l.61-2.91v-.2a1.07 1.07 0 0 0-.28-.68l-.68-.66-4.17 4.19a1.26 1.26 0 0 0-.37.9v6.36a1.27 1.27 0 0 0 1.27 1.27h5.06a1.24 1.24 0 0 0 1.17-.77l1.92-4.49a1.22 1.22 0 0 0 .09-.46V7.42Z" })),
1014
+ 'thumbtack': () => (h("path", { fill: "currentColor", d: "M8.91 2 7.71 5.594 2.364 7.09 5.274 10l-.707.706-1.687 1.687-.264.264-.09.09-.209.498L2 14l.755-.317.498-.21.09-.089.264-.264 1.687-1.687.706-.706 2.91 2.908 1.496-5.347L14 7.09 8.91 2Z" })),
1015
+ 'thumbtack-outline': () => (h("path", { fill: "currentColor", "fill-rule": "evenodd", d: "m5.273 10-2.91 2.91L2 14l1.09-.364L6 10.727l2.91 2.91 1.496-5.348L14 7.09 8.91 2 7.71 5.594 2.364 7.09 5.273 10Zm3.241-3.563-4.18 1.17 4.059 4.059 1.17-4.18 2.533-.845-2.737-2.737-.845 2.533Z" })),
1255
1016
  'trash': () => [
1256
1017
  h("path", { key: "trash-1", fill: "currentColor", d: "M3.27 14.17c0 .66.54 1.19 1.2 1.2h7l-.05-.02h.08c.64-.02 1.14-.56 1.12-1.2V4.32H3.27v9.85Zm5.97-7.12c0-.33.27-.6.6-.6s.6.27.6.6v5.3c0 .33-.27.6-.6.6s-.6-.27-.6-.6v-5.3Zm-3.5 0c0-.33.27-.59.6-.6.32.02.58.28.6.6v5.3c-.02.32-.28.58-.6.6a.645.645 0 0 1-.6-.6v-5.3Zm7.28-5.39h-2.6V.95a.28.28 0 0 0-.28-.28H5.87a.28.28 0 0 0-.28.28v.72H2.91a.28.28 0 0 0-.28.28V3.1c0 .15.12.28.28.28h10.11c.15 0 .28-.12.28-.28V1.94a.28.28 0 0 0-.28-.28Z" }),
1257
1018
  h("path", { key: "trash-2", fill: "currentColor", d: "M13,2h-2.9L9.9,1.6 C9.8,1.4,9.6,1.2,9.4,1.2H6.6c-0.2,0-0.4,0.1-0.5,0.3L5.8,2H2.9C2.7,2,2.5,2.2,2.5,2.4c0,0,0,0,0,0v0.8c0,0.2,0.2,0.4,0.4,0.4H13 c0.2,0,0.4-0.2,0.4-0.4V2.4C13.4,2.2,13.2,2,13,2z" }),
@@ -1262,6 +1023,10 @@ const icons = {
1262
1023
  'upload': () => (h("path", { fill: "currentColor", d: "M9.58 10.74V6.59a.31.31 0 0 1 .31-.3H12a.3.3 0 0 0 .21-.52l-4-4a.29.29 0 0 0-.42 0l-4 4a.3.3 0 0 0 .21.52h2.11a.31.31 0 0 1 .31.3v4.15a.3.3 0 0 0 .3.3h2.56a.3.3 0 0 0 .3-.3ZM14.33 14v-1a.29.29 0 0 0-.29-.3H2a.29.29 0 0 0-.29.3v1a.29.29 0 0 0 .29.29h12a.29.29 0 0 0 .33-.29Z" })),
1263
1024
  'user': () => (h("path", { fill: "currentColor", d: "M8 8.79a3.56 3.56 0 1 0-3.56-3.56A3.56 3.56 0 0 0 8 8.79Zm3.17.79H9.8a4.27 4.27 0 0 1-3.6 0H4.83a3.16 3.16 0 0 0-3.16 3.17v.4a1.18 1.18 0 0 0 1.18 1.18h10.3a1.18 1.18 0 0 0 1.18-1.18v-.4a3.16 3.16 0 0 0-3.16-3.17Z" })),
1264
1025
  'user-circle': () => (h("path", { fill: "currentColor", d: "M8 .62C3.95.61.66 3.9.65 7.95c0 4.05 3.28 7.34 7.33 7.35 4.04 0 7.33-3.26 7.35-7.3.02-4.05-3.25-7.36-7.3-7.38H8Zm0 .75c3.64 0 6.59 2.96 6.58 6.6V8c0 1.35-.41 2.66-1.19 3.76a2.713 2.713 0 0 0-2.66-2.37H9.54c-.98.46-2.1.46-3.08 0H5.28c-1.36 0-2.5 1.02-2.67 2.37A6.483 6.483 0 0 1 1.42 8a6.59 6.59 0 0 1 6.55-6.63H8ZM5 5.63c0-1.68 1.37-3.05 3.05-3.05 1.68 0 3.05 1.37 3.05 3.05 0 1.68-1.37 3.05-3.05 3.05H8c-1.66-.03-3-1.39-3-3.05Z" })),
1026
+ 'user-pen-fancy-outline': () => [
1027
+ h("path", { fill: "currentColor", d: "M7.5 7a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5Zm0-4C6.67 3 6 3.67 6 4.5S6.67 6 7.5 6 9 5.33 9 4.5 8.33 3 7.5 3ZM11.12 11.46l-.22.54-.3.77s-.04.09-.06.13c-.03.04-.06.07-.1.1-.05.04-.1.07-.16.08L7.52 14l-.07-.07 1.45-1.45h.13c.15 0 .27-.06.36-.16a.56.56 0 0 0 .1-.15c.01-.02.02-.04.03-.07v-.02s.01-.05.01-.08v-.03c0-.28-.23-.5-.51-.5-.28.01-.5.24-.5.51v.14l-.76.75-.14.13-.55.55-.07-.07.16-.48.1-.29.24-.71.42-1.27c.05-.16.17-.28.32-.32l1.31-.52 1.57 1.57ZM14.56 8.22l-2.05 1.87-.7.64-.06.05-.32.29-1.52-1.52.28-.31.06-.06.64-.7 1.88-2.04c1.16-1.31 3.11.61 1.79 1.78Z" }),
1028
+ h("path", { fill: "currentColor", d: "M9 8H6c-2.21 0-4 1.79-4 4 0 .55.45 1 1 1h3.11l.33-1H3c0-1.66 1.34-3 3-3h3.05l.12-.13.71-.77C9.6 8.03 9.3 8 9 8Z" }),
1029
+ ],
1265
1030
  'user-group': () => (h("path", { fill: "currentColor", d: "M13.15 4.12c-.81-.01-1.47.65-1.48 1.46 0 .82.65 1.47 1.46 1.48s1.47-.65 1.48-1.46-.65-1.47-1.46-1.48Zm-10.04.01a1.47 1.47 0 0 0-1.58 1.59c.06.71.62 1.28 1.34 1.34.81.07 1.52-.53 1.59-1.34.06-.81-.54-1.52-1.35-1.59Zm7.36.39c-.22-.84-.87-1.51-1.71-1.75-1.36-.41-2.8.36-3.22 1.72-.18.61-.13 1.27.14 1.85.41.9 1.33 1.48 2.32 1.45 1.41.01 2.56-1.14 2.57-2.55 0-.24-.03-.49-.1-.72Zm-.71 4h-.19c-.99.49-2.14.49-3.13 0h-.19c-1.46 0-2.64 1.18-2.64 2.64v2.69c1.23.93 2.74 1.47 4.39 1.47s3.17-.55 4.4-1.48v-2.68c0-1.46-1.18-2.64-2.64-2.64Zm5.52.25a7.282 7.282 0 0 1-1.65 3.91c-.08.1-.16.19-.25.28-.08.09-.17.18-.25.27v-.55h.03v-.72s.01-.07 0-.1v-.66c.01-1.25-.66-2.4-1.76-3 .27-.26.63-.41 1-.41h1.51c.63.01 1.17.41 1.37.98ZM2.86 11.16v1.52h.01v.55l-.28-.31c-.08-.08-.15-.16-.22-.24A7.238 7.238 0 0 1 .74 8.86c.16-.62.72-1.07 1.4-1.07h1.47c.37-.01.73.12 1.01.37-1.1.6-1.77 1.75-1.76 3Z" })),
1266
1031
  'user-plus': () => (h("path", { fill: "currentColor", d: "M14,3.33H12.65V2a.36.36,0,0,0-.35-.33h-.65A.36.36,0,0,0,11.3,2V3.33H10a.34.34,0,0,0-.33.34v.66a.34.34,0,0,0,.33.34H11.3V6a.37.37,0,0,0,.35.33h.65A.37.37,0,0,0,12.65,6V4.67H14a.34.34,0,0,0,.32-.34V3.67A.34.34,0,0,0,14,3.33ZM9.28,9.77h-.2a5.19,5.19,0,0,1-3.91,0H5A3,3,0,0,0,1.7,12.46h0v.72A1.27,1.27,0,0,0,3,14.33h8.25a1.26,1.26,0,0,0,1.36-1.14v-.68A3,3,0,0,0,9.37,9.76H9.28ZM7.13,3.7A2.64,2.64,0,1,1,4.5,6.34h0A2.64,2.64,0,0,1,7.13,3.7Z" })),
1267
1032
  'user-question-outline': () => (h("path", { fill: "currentColor", d: "M5.23 11.14c.86-.66 1.01-1.9.35-2.75s-1.9-1.01-2.75-.35a1.96 1.96 0 0 0 0 3.1c-.72.42-1.16 1.2-1.16 2.03v.8c0 .2.17.37.37.37h3.98c.2 0 .37-.17.37-.37v-.8c0-.83-.44-1.61-1.16-2.03ZM2.81 9.59c0-.67.55-1.22 1.22-1.22s1.22.55 1.22 1.22-.55 1.22-1.22 1.22-1.22-.55-1.22-1.22Zm2.83 4H2.41v-.42c0-.89.72-1.62 1.62-1.62s1.62.72 1.62 1.62v.42h-.01Zm7.13-11.93H8c-.86 0-1.56.7-1.56 1.56v7.16c0 .21.17.37.37.37.08 0 .16-.03.22-.07l1.49-1.12h4.25c.86 0 1.56-.7 1.56-1.56V3.22c0-.86-.7-1.56-1.56-1.56Zm.82 6.33c0 .45-.37.82-.82.82H8.4a.41.41 0 0 0-.22.07l-1 .75V3.22c0-.45.37-.82.82-.82h4.77c.45 0 .82.37.82.82v4.77Zm-2.8-.42c0 .23-.18.41-.41.41s-.41-.18-.41-.41.18-.41.41-.41c.23 0 .41.18.41.41Zm-.41-4.34c-.83 0-1.5.67-1.5 1.5 0 .23.18.41.41.41s.41-.18.41-.41c0-.38.31-.68.69-.68.38 0 .68.31.68.69 0 .38-.31.68-.68.68-.23 0-.41.18-.41.41v.44c0 .23.18.41.41.41s.41-.18.41-.41v-.09c.8-.23 1.26-1.06 1.04-1.85-.18-.65-.77-1.09-1.44-1.09Z" })),
@@ -3319,158 +3084,6 @@ const MgInputToggle = class {
3319
3084
  };
3320
3085
  MgInputToggle.style = mgInputToggleCss;
3321
3086
 
3322
- /**
3323
- * MgMenuItem type guard
3324
- *
3325
- * @param {HTMLElement} element element to control type
3326
- * @returns {boolean} truthy if element is mg-menu-item
3327
- */
3328
- const isMgMenuItem = (element) => element.nodeName === 'MG-MENU-ITEM';
3329
- var OverflowBehaviorElements;
3330
- (function (OverflowBehaviorElements) {
3331
- OverflowBehaviorElements["MORE"] = "data-overflow-more";
3332
- OverflowBehaviorElements["BASE_INDEX"] = "data-overflow-base-index";
3333
- OverflowBehaviorElements["PROXY_INDEX"] = "data-overflow-proxy-index";
3334
- })(OverflowBehaviorElements || (OverflowBehaviorElements = {}));
3335
- class OverflowBehavior {
3336
- constructor(element, render) {
3337
- this.element = element;
3338
- this.render = render;
3339
- /**********
3340
- * Public *
3341
- **********/
3342
- /**
3343
- * Disconnect ResizeObserver
3344
- *
3345
- * @returns {void}
3346
- */
3347
- this.disconnect = () => {
3348
- this.resizeObserver.disconnect();
3349
- };
3350
- /************
3351
- * Internal *
3352
- ************/
3353
- /**
3354
- * run overflow behavior
3355
- *
3356
- * @param {number} width width of the container
3357
- * @returns {void}
3358
- */
3359
- this.run = (width) => {
3360
- if (this.moreElement === undefined) {
3361
- // set moreElement
3362
- this.moreElement = this.render();
3363
- this.moreElement.setAttribute(OverflowBehaviorElements.MORE, '');
3364
- // set children
3365
- this.children = Array.from(this.element.children);
3366
- let moreElementChildren;
3367
- const allowedElements = ['MG-MENU-ITEM', 'MG-BUTTON'];
3368
- if (isMgMenuItem(this.moreElement)) {
3369
- moreElementChildren = Array.from(this.moreElement.querySelector('mg-menu').children).filter(element => allowedElements.includes(element.nodeName));
3370
- }
3371
- this.children.forEach((child, index) => {
3372
- child.setAttribute(OverflowBehaviorElements.BASE_INDEX, `${index}`);
3373
- if (child.getAttribute(OverflowBehaviorElements.MORE) === null) {
3374
- // set moreElement children
3375
- moreElementChildren[index].setAttribute(OverflowBehaviorElements.PROXY_INDEX, `${index}`);
3376
- }
3377
- });
3378
- }
3379
- this.updateDisplayedItems(width);
3380
- };
3381
- /**
3382
- * Update displayed items in container from a given available space
3383
- *
3384
- * @param {number} availableWidth available width in container to display child items
3385
- * @returns {void}
3386
- */
3387
- this.updateDisplayedItems = (availableWidth) => {
3388
- this.restoreItems();
3389
- const acc = { accWidth: 0, previousItem: null };
3390
- this.children.forEach((child) => {
3391
- acc.accWidth += child.offsetWidth;
3392
- const isPreviousItemHidden = acc.previousItem !== null && acc.previousItem.getAttribute('hidden') !== null;
3393
- // if previous item is hidden AND is NOT more element we hidde current
3394
- // OR if item has an overflow we hidde current
3395
- // OR if current item is more element AND have NOT previous hidden items, current more element item is an hidden item
3396
- // ELSE current is a display item
3397
- this.toggleItem(child, (isPreviousItemHidden && !this.isMoreElement(child)) || this.isOverflowElement(acc.accWidth, child, availableWidth) || (this.isMoreElement(child) && !isPreviousItemHidden));
3398
- // update previous item with current item
3399
- acc.previousItem = child;
3400
- });
3401
- };
3402
- /**
3403
- * Utility method to know if item overflow partialy or totaly in the container
3404
- *
3405
- * @param {number} cumulateWidth previous sibling elements cumulate width + item width
3406
- * @param {HTMLElement} item item HTML element
3407
- * @param {number} availableWidth container available width
3408
- * @returns {boolean} truthy if element is overflow
3409
- */
3410
- this.isOverflowElement = (cumulateWidth, item, availableWidth) => {
3411
- if (item.previousElementSibling === null || this.isMoreElement(item))
3412
- return false;
3413
- else if (!this.isMoreElement(item.nextElementSibling))
3414
- return cumulateWidth + this.moreElement.offsetWidth > availableWidth;
3415
- else
3416
- return cumulateWidth > availableWidth;
3417
- };
3418
- /**
3419
- * Utility method to know if a given element is the 'MORE' element
3420
- *
3421
- * @param {Element} element element to match with 'MORE' element
3422
- * @returns {boolean} truthy if element is the 'MORE' element
3423
- */
3424
- this.isMoreElement = (element) => element.getAttribute(OverflowBehaviorElements.MORE) !== null;
3425
- /**
3426
- * Toggle display item element
3427
- *
3428
- * @param {HTMLElement} item item to control
3429
- * @param {boolean} isHidden is item hidden
3430
- * @returns {void}
3431
- */
3432
- this.toggleItem = (item, isHidden) => {
3433
- const mgActionMenuindex = Number(item.getAttribute(OverflowBehaviorElements.BASE_INDEX));
3434
- if (this.isMoreElement(item))
3435
- this.toggleElement(this.moreElement, isHidden);
3436
- else if (mgActionMenuindex >= 0) {
3437
- this.toggleElement(item, isHidden);
3438
- this.toggleElement(this.moreElement.querySelector(`[${OverflowBehaviorElements.PROXY_INDEX}="${mgActionMenuindex}"]`), !isHidden);
3439
- }
3440
- };
3441
- /**
3442
- * Toggle element's hidde attribute
3443
- *
3444
- * @param {Element} element element to toggle
3445
- * @param {boolean} isHidden element is hidden
3446
- * @returns {void}
3447
- */
3448
- this.toggleElement = (element, isHidden) => {
3449
- if (isHidden)
3450
- element.setAttribute('hidden', '');
3451
- else
3452
- element.removeAttribute('hidden');
3453
- };
3454
- /**
3455
- * Remove hidden attributes on all items
3456
- *
3457
- * @returns {void}
3458
- */
3459
- this.restoreItems = () => {
3460
- this.children.forEach(item => item.removeAttribute('hidden'));
3461
- };
3462
- if (this.resizeObserver === undefined) {
3463
- // add resize observer
3464
- this.resizeObserver = new ResizeObserver(entries => {
3465
- entries.forEach(entry => {
3466
- this.run(entry.contentRect.width);
3467
- });
3468
- });
3469
- this.resizeObserver.observe(this.element);
3470
- }
3471
- }
3472
- }
3473
-
3474
3087
  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}";
3475
3088
 
3476
3089
  const MgMenu = class {
@@ -3517,45 +3130,23 @@ const MgMenu = class {
3517
3130
  });
3518
3131
  };
3519
3132
  /**
3520
- * render mg-menu-more
3133
+ * render mg-item-more
3521
3134
  *
3522
- * @returns {HTMLElement} formated mg-menu-item element
3523
- */
3524
- this.renderMgMenuMore = () => {
3525
- const moreElement = this.element.shadowRoot.querySelector(`[${OverflowBehaviorElements.MORE}]`);
3526
- this.menuItems.forEach((child) => {
3527
- const proxy = child.cloneNode(true);
3528
- moreElement.querySelector('mg-menu').appendChild(proxy);
3529
- });
3530
- const allMenuItem = Array.from(this.element.querySelectorAll('mg-menu-item:not([data-overflow-more])'));
3531
- Array.from(moreElement.querySelectorAll('mg-menu-item:not([data-overflow-more])')).forEach((proxy, index) => {
3532
- // manage click on proxy to mirror it on initial element
3533
- proxy.addEventListener('click', () => {
3534
- (allMenuItem[index].shadowRoot.querySelector('a') || allMenuItem[index].shadowRoot.querySelector('button')).dispatchEvent(new MouseEvent('click', { bubbles: true }));
3535
- });
3536
- // manage status change miror in proxy
3537
- allMenuItem[index].addEventListener('status-change', (event) => {
3538
- proxy.setAttribute('status', event.detail);
3539
- });
3540
- });
3541
- this.element.appendChild(moreElement);
3542
- return this.element.querySelector(`[${OverflowBehaviorElements.MORE}]`);
3543
- };
3544
- /**
3545
- * Render mg-menu-item more element for overflow behavior
3546
- *
3547
- * @returns {HTMLElement} rendered mg-menu-item more element
3135
+ * @returns {void}
3548
3136
  */
3549
- this.renderMgMenuItemMore = () => {
3550
- var _a, _b, _c, _d, _e, _f, _g;
3551
- 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 })));
3137
+ this.renderMgItemMore = () => {
3138
+ // /!\ externalise item tag name to get a string type and bypass type checking when value is used in next createElement
3139
+ // by doing this we prevent stencil to generate a circular dependencies graph at build time with mg-item-more component.
3140
+ const item = 'mg-item-more';
3141
+ const mgItemMore = document.createElement(item);
3142
+ Object.assign(mgItemMore, this.itemMore);
3143
+ this.element.appendChild(mgItemMore);
3552
3144
  };
3553
3145
  this.label = undefined;
3554
3146
  this.direction = Direction.HORIZONTAL;
3555
- this.moreitem = undefined;
3147
+ this.itemMore = undefined;
3556
3148
  this.size = 'regular';
3557
3149
  this.isChildMenu = undefined;
3558
- this.hasOverflow = false;
3559
3150
  }
3560
3151
  validateLabel(newValue) {
3561
3152
  if (newValue === undefined) {
@@ -3567,12 +3158,9 @@ const MgMenu = class {
3567
3158
  throw new Error(`<${this.name}> prop "direction" must be one of: ${Direction.HORIZONTAL}, ${Direction.VERTICAL}.`);
3568
3159
  }
3569
3160
  }
3570
- validateMoreItem(newValue) {
3161
+ validateItemMore(newValue) {
3571
3162
  if (newValue !== undefined && this.direction !== Direction.HORIZONTAL) {
3572
- throw new Error(`<${this.name}> prop "moreitem" must be paired with direction ${Direction.HORIZONTAL}.`);
3573
- }
3574
- else if (newValue !== undefined && !isMoreItem(newValue)) {
3575
- throw new Error(`<${this.name}> prop "moreitem" must match MoreItemType.`);
3163
+ throw new Error(`<${this.name}> prop "itemMore" must be paired with direction ${Direction.HORIZONTAL}.`);
3576
3164
  }
3577
3165
  }
3578
3166
  validateSize(newValue) {
@@ -3589,11 +3177,9 @@ const MgMenu = class {
3589
3177
  * @returns {void}
3590
3178
  */
3591
3179
  componentWillLoad() {
3592
- this.messages = initLocales(this.element).messages.plusMenu;
3593
- // validation
3594
3180
  this.validateDirection(this.direction);
3595
3181
  this.validateLabel(this.label);
3596
- this.validateMoreItem(this.moreitem);
3182
+ this.validateItemMore(this.itemMore);
3597
3183
  this.validateSize(this.size);
3598
3184
  }
3599
3185
  /**
@@ -3609,48 +3195,50 @@ const MgMenu = class {
3609
3195
  // store all menu-items
3610
3196
  this.menuItems = Array.from(this.element.children).filter(child => child.nodeName === 'MG-MENU-ITEM');
3611
3197
  this.isChildMenu = this.element.closest('mg-menu-item') !== null;
3612
- this.hasOverflow = this.direction === Direction.HORIZONTAL && !this.isChildMenu;
3613
- if (this.hasOverflow && isMoreItem(this.moreitem))
3614
- this.overflowBehavior = new OverflowBehavior(this.element, this.renderMgMenuMore);
3198
+ // add mg-item-more to manage OverflowBehavior
3199
+ if (this.direction === Direction.HORIZONTAL && !this.isChildMenu)
3200
+ this.renderMgItemMore();
3201
+ // use mutation observer to improve reactivity
3202
+ new MutationObserver(entries => {
3203
+ const mgItemMore = this.element.querySelector('mg-item-more');
3204
+ // prevent infinit loop by exclude mg-item-more deletion entry
3205
+ if (entries.some(entry => entry.type === 'childList' && Array.from(entry.removedNodes).some(node => node.nodeName === 'MG-ITEM-MORE')))
3206
+ return;
3207
+ else if (mgItemMore !== null) {
3208
+ // render a new mg-item-more
3209
+ mgItemMore.remove();
3210
+ this.renderMgItemMore();
3211
+ }
3212
+ }).observe(this.element, { childList: true, characterData: true, subtree: true });
3615
3213
  }, 0);
3616
3214
  }
3617
3215
  /**
3618
- * Check add listeners to childs
3216
+ * Add listeners to items
3619
3217
  *
3620
3218
  * @returns {void}
3621
3219
  */
3622
3220
  componentDidRender() {
3623
- // add menu items listeners
3624
3221
  this.initMenuItemsListeners();
3625
3222
  }
3626
- /**
3627
- * Disconnect overflow ResizeObserver
3628
- *
3629
- * @returns {void} run overflow resize obeserver disconnexion
3630
- */
3631
- disconnectedCallback() {
3632
- if (this.hasOverflow)
3633
- this.overflowBehavior.disconnect();
3634
- }
3635
3223
  /**
3636
3224
  * Render
3637
3225
  *
3638
3226
  * @returns {HTMLElement} HTML Element
3639
3227
  */
3640
3228
  render() {
3641
- return (h(Host, { role: this.isChildMenu ? 'menu' : 'menubar', "aria-label": this.label }, h("slot", null), this.hasOverflow && isMoreItem(this.moreitem) && this.renderMgMenuItemMore()));
3229
+ return (h(Host, { role: this.isChildMenu ? 'menu' : 'menubar', "aria-label": this.label }, h("slot", null)));
3642
3230
  }
3643
3231
  get element() { return getElement(this); }
3644
3232
  static get watchers() { return {
3645
3233
  "label": ["validateLabel"],
3646
3234
  "direction": ["validateDirection"],
3647
- "moreitem": ["validateMoreItem"],
3235
+ "itemMore": ["validateItemMore"],
3648
3236
  "size": ["validateSize"]
3649
3237
  }; }
3650
3238
  };
3651
3239
  MgMenu.style = mgMenuCss;
3652
3240
 
3653
- 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}";
3241
+ 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: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: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: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}";
3654
3242
 
3655
3243
  const MgMenuItem = class {
3656
3244
  constructor(hostRef) {
@@ -3684,9 +3272,91 @@ const MgMenuItem = class {
3684
3272
  * Is component contextual direction match the given direction
3685
3273
  *
3686
3274
  * @param {MgMenuItem['direction']} direction in parent menu
3275
+ * @param {MgMenuItem['direction']} compareWith direction to compare with. Default: `this.direction`
3687
3276
  * @returns {boolean} true is direction match the direction propertie
3688
3277
  */
3689
- this.isDirection = (direction) => this.direction === direction;
3278
+ this.isDirection = (direction, compareWith = this.direction) => direction === compareWith;
3279
+ /**
3280
+ * Update displayNotificationBadge
3281
+ * current component notification badge have priority over the slot badge when submenu contain badge
3282
+ *
3283
+ * @returns {void} update displayNotificationBadge value
3284
+ */
3285
+ this.updateDisplayNotificationBadge = () => {
3286
+ const childMenu = this.element.querySelector('mg-menu');
3287
+ this.displayNotificationBadge =
3288
+ childMenu !== null &&
3289
+ Array.from(childMenu.children).some((subItem) => subItem.querySelector('mg-badge') !== null && subItem.getAttribute('hidden') === null);
3290
+ };
3291
+ /**
3292
+ * Method to control if one of component children have active status
3293
+ *
3294
+ * @returns {boolean} truthy if component has active child
3295
+ */
3296
+ this.hasActiveChild = () => {
3297
+ var _a;
3298
+ return Array.from(((_a = this.element.querySelector('mg-menu')) === null || _a === void 0 ? void 0 : _a.children) || []).some((element) => element.nodeName === 'MG-MENU-ITEM' && this.hasStatus(element, Status$1.ACTIVE) && element.getAttribute('hidden') === null);
3299
+ };
3300
+ /**
3301
+ * Validate slots
3302
+ *
3303
+ * @param {boolean} guard prevent action whith guard. Default: false.
3304
+ * @returns {void}
3305
+ */
3306
+ this.validateSlot = (guard = false) => {
3307
+ // slot title AND metadata validation
3308
+ // add title on label AND metada slots due to text-overflow on these element
3309
+ if (Array.from(this.element.children).find(child => child.getAttribute('slot') === 'label') === undefined)
3310
+ throw new Error(`<${this.name}> slot "label" is required.`);
3311
+ ['label', 'metadata'].forEach(slot => {
3312
+ Array.from(this.element.querySelectorAll(`[slot="${slot}"]`)).forEach(element => {
3313
+ if (element.textContent.trim().length < 1)
3314
+ throw new Error(`<${this.name}> slot "${slot}" must have text content.`);
3315
+ if ((guard && element.getAttribute('title') === null) || !guard)
3316
+ element.setAttribute('title', element.textContent);
3317
+ });
3318
+ });
3319
+ };
3320
+ /**
3321
+ * Update status
3322
+ *
3323
+ * @param {Status[]} guard status to exclude from process in addition to [Status.HIDDEN, Status.DISABLED] . Default: [].
3324
+ * @returns {void}
3325
+ */
3326
+ this.updateStatus = (guard = []) => {
3327
+ if (![Status$1.HIDDEN, Status$1.DISABLED, ...guard].includes(this.status)) {
3328
+ this.status = this.hasActiveChild() ? Status$1.ACTIVE : Status$1.VISIBLE;
3329
+ }
3330
+ };
3331
+ /**
3332
+ * Init event-listeners
3333
+ *
3334
+ * @returns {void}
3335
+ */
3336
+ this.initListeners = () => {
3337
+ var _a;
3338
+ // manage first sub-level menu-items
3339
+ Array.from(((_a = this.element.querySelector('mg-menu')) === null || _a === void 0 ? void 0 : _a.children) || []).forEach(item => {
3340
+ if (item.nodeName === 'MG-MENU-ITEM') {
3341
+ // manage child menu listener
3342
+ item.addEventListener('status-change', () => {
3343
+ this.updateStatus();
3344
+ });
3345
+ }
3346
+ });
3347
+ };
3348
+ /**
3349
+ * Get mg-popover identifier
3350
+ *
3351
+ * @returns {MgPopover['identifier']} generated mg-popover identifier
3352
+ */
3353
+ this.getPopoverIdentifier = () => `${this.identifier}-popover`;
3354
+ /**
3355
+ * Condition to know if component should display a mg-popover
3356
+ *
3357
+ * @returns {boolean} truthy if component display popover
3358
+ */
3359
+ this.displayPopover = () => this.isDirection(Direction.HORIZONTAL) && this.hasChildren && this.href === undefined;
3690
3360
  /************
3691
3361
  * Handlers *
3692
3362
  ************/
@@ -3714,35 +3384,13 @@ const MgMenuItem = class {
3714
3384
  this.handlePopoverDisplay = (event) => {
3715
3385
  this.expanded = event.detail;
3716
3386
  };
3717
- /**
3718
- * Update displayNotificationBadge
3719
- * current component notification badge have priority over the slot badge when submenu contain badge
3720
- *
3721
- * @returns {void} update displayNotificationBadge value
3722
- */
3723
- this.updateDisplayNotificationBadge = () => {
3724
- const childMenu = this.element.querySelector('mg-menu');
3725
- this.displayNotificationBadge =
3726
- childMenu !== null &&
3727
- Array.from(childMenu.children).some((subItem) => subItem.querySelector('mg-badge') !== null && subItem.getAttribute('hidden') === null);
3728
- };
3729
- /**
3730
- * Method to control if one of component children have active status
3731
- *
3732
- * @returns {boolean} truthy if component has active child
3733
- */
3734
- this.hasActiveChild = () => {
3735
- var _a;
3736
- return Array.from(((_a = this.element.querySelector('mg-menu')) === null || _a === void 0 ? void 0 : _a.children) || [])
3737
- .filter(element => element.nodeName === 'MG-MENU-ITEM')
3738
- .some((element) => this.hasStatus(element, Status$1.ACTIVE) && element.getAttribute('hidden') === null);
3739
- };
3740
3387
  /**
3741
3388
  * Render slot
3742
3389
  *
3743
3390
  * @returns {HTMLElement} HTML Element
3744
3391
  */
3745
3392
  this.renderSlot = () => h("slot", null);
3393
+ this.identifier = createID('mg-menu-item');
3746
3394
  this.href = undefined;
3747
3395
  this.status = Status$1.VISIBLE;
3748
3396
  this.expanded = false;
@@ -3750,6 +3398,7 @@ const MgMenuItem = class {
3750
3398
  this.navigationButtonClassList = new ClassList([this.navigationButton]);
3751
3399
  this.direction = undefined;
3752
3400
  this.isInMainMenu = undefined;
3401
+ this.isItemMore = undefined;
3753
3402
  this.hasChildren = false;
3754
3403
  this.displayNotificationBadge = undefined;
3755
3404
  }
@@ -3786,11 +3435,33 @@ const MgMenuItem = class {
3786
3435
  this.navigationButtonClassList.delete(`${this.navigationButton}--size-${oldValue}`);
3787
3436
  this.navigationButtonClassList.add(`${this.navigationButton}--size-${newValue}`);
3788
3437
  }
3438
+ validateDirection(newValue) {
3439
+ // manage menu items style depending to parent menu horientation
3440
+ this.element.setAttribute(`data-style-direction-${newValue}`, '');
3441
+ this.navigationButtonClassList.add(`${this.navigationButton}--${newValue}`);
3442
+ // manage all sub levels child menu-items level with data-level attribut
3443
+ if (this.isDirection(Direction.VERTICAL, newValue)) {
3444
+ Array.from(this.element.querySelectorAll('mg-menu-item')).forEach(item => {
3445
+ item.dataset.level = `${(Number(item.dataset.level) || 1) + 1}`;
3446
+ });
3447
+ }
3448
+ }
3789
3449
  validateHasChildren(newValue) {
3790
3450
  if (newValue && this.element.href !== undefined) {
3791
3451
  throw new Error(`<${this.name}> prop "href" is unauthorizied when element is a parent.`);
3792
3452
  }
3793
3453
  }
3454
+ /**
3455
+ * Render popover clickoutside guard for content slot
3456
+ *
3457
+ * @returns {void}
3458
+ */
3459
+ updatePopoverGuard() {
3460
+ if (this.displayPopover())
3461
+ Array.from(this.element.children)
3462
+ .filter((child) => child.getAttribute('slot') === null && child.nodeName !== 'MG-MENU' && Boolean(child.dataset))
3463
+ .forEach((slot) => (slot.dataset.mgPopoverGuard = this.getPopoverIdentifier()));
3464
+ }
3794
3465
  /*************
3795
3466
  * Lifecycle *
3796
3467
  *************/
@@ -3803,11 +3474,13 @@ const MgMenuItem = class {
3803
3474
  // has children items that is NOT [slot='image' | 'information' | 'label' | 'metadata'] element
3804
3475
  // we store only matching elements
3805
3476
  this.hasChildren = Array.from(this.element.children).some(child => !['image', 'information', 'label', 'metadata'].includes(child.getAttribute('slot')));
3477
+ this.badgeLabel = initLocales(this.element).messages.plusMenu.badgeLabel;
3478
+ this.isItemMore = this.element.dataset.overflowMore !== undefined;
3806
3479
  // Validate props
3807
- this.validateSize(this.size);
3808
3480
  this.validateStatus(this.status);
3809
3481
  this.validateExpanded(this.expanded);
3810
- this.badgeLabel = initLocales(this.element).messages.plusMenu.badgeLabel;
3482
+ // Validate states
3483
+ this.validateSize(this.size);
3811
3484
  }
3812
3485
  /**
3813
3486
  * Check if component slots configuration
@@ -3815,63 +3488,36 @@ const MgMenuItem = class {
3815
3488
  * @returns {ReturnType<typeof setTimeout>} timeout
3816
3489
  */
3817
3490
  componentDidLoad() {
3818
- // slot title AND metadata validation
3819
- // add title on label AND metada slots due to text-overflow on these element
3820
- if (Array.from(this.element.children).find(child => child.getAttribute('slot') === 'label') === undefined)
3821
- throw new Error(`<${this.name}> slot "label" is required.`);
3822
- ['label', 'metadata'].forEach(slot => {
3823
- Array.from(this.element.querySelectorAll(`[slot="${slot}"]`)).forEach(element => {
3824
- if (element.textContent.trim().length < 1)
3825
- throw new Error(`<${this.name}> slot "${slot}" must have text content.`);
3826
- if (element.getAttribute('title') === null)
3827
- element.setAttribute('title', element.textContent);
3828
- });
3829
- });
3491
+ // validation
3492
+ this.validateSlot(true);
3830
3493
  // update props and states after componentDidLoad hook
3831
3494
  // return a promise to process action only in the FIRST render().
3832
3495
  // https://stenciljs.com/docs/component-lifecycle#componentwillload
3833
3496
  return setTimeout(() => {
3834
- var _a;
3835
3497
  // define menu-item context states
3836
3498
  const menu = this.element.closest('mg-menu');
3837
- this.direction = this.element.getAttribute(OverflowBehaviorElements.MORE) !== null || menu === null ? Direction.HORIZONTAL : menu.direction;
3838
- this.size = menu === null || menu === void 0 ? void 0 : menu.size;
3839
- this.isInMainMenu = this.element.parentElement.closest('mg-menu-item') === null;
3499
+ this.direction = this.isItemMore || menu === null ? Direction.HORIZONTAL : menu.direction;
3500
+ this.isInMainMenu = menu !== null && this.element.parentElement.closest('mg-menu-item') === null;
3501
+ if ((menu === null || menu === void 0 ? void 0 : menu.size) !== undefined)
3502
+ this.size = menu.size;
3503
+ if (this.isItemMore)
3504
+ this.size = this.element.dataset.size;
3840
3505
  // when main menu item contain an active item it will get the active style
3841
3506
  // AND if item is in vertical menu it will be expanded
3842
- if (this.hasActiveChild()) {
3843
- this.status = Status$1.ACTIVE;
3844
- if (this.isInMainMenu)
3845
- this.expanded = this.isDirection(Direction.VERTICAL);
3846
- }
3847
- // manage menu items style depending to parent menu horientation
3848
- this.element.setAttribute(`data-style-direction-${this.direction}`, '');
3849
- this.navigationButtonClassList.add(`${this.navigationButton}--${this.direction}`);
3507
+ if (this.hasActiveChild() && this.isInMainMenu)
3508
+ this.expanded = this.isDirection(Direction.VERTICAL);
3509
+ this.updateStatus([Status$1.ACTIVE]);
3850
3510
  this.updateDisplayNotificationBadge();
3851
- // manage all sub levels child menu-items level with data-level attribut
3852
- if (this.isDirection(Direction.VERTICAL)) {
3853
- Array.from(this.element.querySelectorAll('mg-menu-item')).forEach(item => {
3854
- item.dataset.level = `${(Number(item.dataset.level) || 1) + 1}`;
3855
- });
3856
- }
3857
- // manage first sub-level menu-items
3858
- 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');
3859
- childItems.forEach(item => {
3860
- const updateStatus = () => {
3861
- if (![Status$1.HIDDEN, Status$1.DISABLED].includes(this.status)) {
3862
- this.status = this.hasActiveChild() ? Status$1.ACTIVE : Status$1.VISIBLE;
3863
- }
3864
- };
3865
- // manage child menu listener
3866
- item.addEventListener('status-change', () => {
3867
- updateStatus();
3868
- });
3869
- new MutationObserver(mutationsList => {
3870
- if (mutationsList.some(mutation => mutation.attributeName === 'hidden'))
3871
- updateStatus();
3872
- this.updateDisplayNotificationBadge();
3873
- }).observe(item, { attributes: true });
3874
- });
3511
+ this.updatePopoverGuard();
3512
+ // manage child dom changes with mutationObserver and listzners
3513
+ this.initListeners();
3514
+ new MutationObserver(mutationsList => {
3515
+ if (mutationsList.some(mutation => mutation.attributeName === 'hidden'))
3516
+ this.updateStatus();
3517
+ if (mutationsList.some(mutation => mutation.type === 'characterData'))
3518
+ this.validateSlot();
3519
+ this.updateDisplayNotificationBadge();
3520
+ }).observe(this.element, { attributes: true, childList: true, characterData: true, subtree: true });
3875
3521
  }, 0);
3876
3522
  }
3877
3523
  /**
@@ -3897,7 +3543,7 @@ const MgMenuItem = class {
3897
3543
  [`${this.name}__collapse-container`]: true,
3898
3544
  [`${this.name}__collapse-container--first-level`]: this.isInMainMenu && this.isDirection(Direction.HORIZONTAL),
3899
3545
  });
3900
- 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()))) : ([
3546
+ return (h(Host, { role: !this.isItemMore && 'menuitem', "aria-haspopup": !this.isItemMore && this.hasChildren.toString() }, this.displayPopover() ? (h("mg-popover", { display: this.expanded, placement: "bottom-start", arrowHide: true, "onDisplay-change": this.handlePopoverDisplay, identifier: this.getPopoverIdentifier() }, this.renderInteractiveElement(), h("div", { class: getContainerClasses(), slot: "content" }, this.renderSlot()))) : ([
3901
3547
  this.renderInteractiveElement(),
3902
3548
  h("div", { key: "vertical-container", class: getContainerClasses(), hidden: !this.expanded }, this.renderSlot()),
3903
3549
  ])));
@@ -3907,6 +3553,7 @@ const MgMenuItem = class {
3907
3553
  "status": ["validateStatus"],
3908
3554
  "expanded": ["validateExpanded"],
3909
3555
  "size": ["validateSize"],
3556
+ "direction": ["validateDirection"],
3910
3557
  "hasChildren": ["validateHasChildren"]
3911
3558
  }; }
3912
3559
  };
@@ -6565,7 +6212,7 @@ var Status;
6565
6212
  */
6566
6213
  const sizes = ['regular', 'large'];
6567
6214
 
6568
- const mgTabsCss = ".mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular{padding:1rem 2rem;height:calc()}.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button,.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button ::slotted([slot=label]),.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button ::slotted([slot=metadata]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular ::slotted([slot=label]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular ::slotted([slot=metadata]){font-size:var(--font-size)}.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular.mg-tabs__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button.mg-tabs__navigation-button--vertical,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular.mg-tabs__navigation-button--vertical{padding-left:calc(2rem - 0.3rem)}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large{padding:1.5rem 3rem;height:calc()}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button,.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button ::slotted([slot=label]),.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button ::slotted([slot=metadata]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large ::slotted([slot=label]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large ::slotted([slot=metadata]){font-size:calc(var(--font-size) + 0.2rem)}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large.mg-tabs__navigation-button--horizontal{padding-bottom:calc(1.5rem - 0.3rem)}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button.mg-tabs__navigation-button--vertical,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large.mg-tabs__navigation-button--vertical{padding-left:calc(3rem - 0.3rem)}.mg-tabs__navigation-button{display:flex;align-items:center;column-gap:var(--mg-tabs-navigation-button-column-gap, 1rem);background-color:unset;border:none;font-family:var(--font-family);font-weight:400;color:hsl(var(--mg-tabs-color-hsl, var(--color-dark)));line-height:var(--line-height);text-decoration:none;white-space:nowrap;box-sizing:border-box;cursor:pointer}.mg-tabs__navigation-button:disabled,.mg-tabs__navigation-button--disabled{cursor:default;opacity:var(--mg-disabled-opacity)}.mg-tabs__navigation-button:focus-visible{z-index:10}.mg-tabs__navigation-button:hover:not(.mg-tabs__navigation-button--disabled),.mg-tabs__navigation-button:focus-visible:not(.mg-tabs__navigation-button--disabled){background-color:hsl(var(--mg-tabs-focused-background-color-hsl), 0.1)}.mg-tabs__navigation-button.mg-tabs__navigation-button--active{color:hsl(var(--mg-tabs-color-active-hsl));font-weight:600}.mg-tabs__navigation-button.mg-tabs__navigation-button--active.mg-tabs__navigation-button--horizontal{border-bottom-color:hsl(var(--mg-tabs-border-color-active-hsl))}.mg-tabs__navigation-button.mg-tabs__navigation-button--active.mg-tabs__navigation-button--vertical{border-left-color:hsl(var(--mg-tabs-border-color-active-hsl))}.mg-tabs__navigation-button.mg-tabs__navigation-button--hidden{display:none}.mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal{border-bottom:0.3rem solid transparent}.mg-tabs__navigation-button.mg-tabs__navigation-button--vertical{border-left:0.3rem solid transparent}.mg-tabs__header{display:flex;flex-direction:row;flex-wrap:wrap}.mg-tabs__content-container:focus-visible{outline:none}.mg-tabs__navigation-button-text{flex:0 0 content}";
6215
+ const mgTabsCss = ".mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular{padding:1rem 2rem}.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button,.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button ::slotted([slot=label]),.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button ::slotted([slot=metadata]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular ::slotted([slot=label]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular ::slotted([slot=metadata]){font-size:var(--font-size)}.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular.mg-tabs__navigation-button--horizontal{padding-bottom:calc(1rem - 0.3rem)}.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button.mg-tabs__navigation-button--vertical,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular.mg-tabs__navigation-button--vertical{padding-left:calc(2rem - 0.3rem)}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large{padding:1.5rem 3rem}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button,.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button ::slotted([slot=label]),.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button ::slotted([slot=metadata]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large ::slotted([slot=label]),.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large ::slotted([slot=metadata]){font-size:calc(var(--font-size) + 0.2rem)}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large.mg-tabs__navigation-button--horizontal{padding-bottom:calc(1.5rem - 0.3rem)}.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button.mg-tabs__navigation-button--vertical,.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large.mg-tabs__navigation-button--vertical{padding-left:calc(3rem - 0.3rem)}.mg-tabs__navigation-button{display:flex;align-items:center;column-gap:var(--mg-tabs-navigation-button-column-gap, 1rem);background-color:unset;border:none;font-family:var(--font-family);font-weight:400;color:hsl(var(--mg-tabs-color-hsl, var(--color-dark)));line-height:var(--line-height);text-decoration:none;white-space:nowrap;box-sizing:border-box;cursor:pointer}.mg-tabs__navigation-button:disabled,.mg-tabs__navigation-button--disabled{cursor:default;opacity:var(--mg-disabled-opacity)}.mg-tabs__navigation-button:focus-visible{z-index:10}.mg-tabs__navigation-button:hover:not(.mg-tabs__navigation-button--disabled),.mg-tabs__navigation-button:focus-visible:not(.mg-tabs__navigation-button--disabled){background-color:hsl(var(--mg-tabs-focused-background-color-hsl), 0.1)}.mg-tabs__navigation-button.mg-tabs__navigation-button--active{color:hsl(var(--mg-tabs-color-active-hsl));font-weight:600}.mg-tabs__navigation-button.mg-tabs__navigation-button--active.mg-tabs__navigation-button--horizontal{border-bottom-color:hsl(var(--mg-tabs-border-color-active-hsl))}.mg-tabs__navigation-button.mg-tabs__navigation-button--active.mg-tabs__navigation-button--vertical{border-left-color:hsl(var(--mg-tabs-border-color-active-hsl))}.mg-tabs__navigation-button.mg-tabs__navigation-button--hidden{display:none}.mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal{border-bottom:0.3rem solid transparent}.mg-tabs__navigation-button.mg-tabs__navigation-button--vertical{border-left:0.3rem solid transparent}.mg-tabs__header{display:flex;flex-direction:row;flex-wrap:wrap}.mg-tabs__content-container:focus-visible{outline:none}.mg-tabs__navigation-button-text{flex:0 0 content}";
6569
6216
 
6570
6217
  /**
6571
6218
  * type TabItem validation function
@@ -7062,6 +6709,7 @@ const MgTooltip = class {
7062
6709
  if (typeof newValue !== 'string' || newValue.trim() === '') {
7063
6710
  throw new Error('<mg-tooltip> prop "message" is required.');
7064
6711
  }
6712
+ this.popper.update();
7065
6713
  }
7066
6714
  handleDisplay(newValue) {
7067
6715
  if (newValue) {
@@ -7093,10 +6741,13 @@ const MgTooltip = class {
7093
6741
  this.tooltipedElement = interactiveElement || slotElement;
7094
6742
  // Check if slotted element is a disabled mg-button
7095
6743
  // In this case we wrap the mg-button into a div to enable the tooltip
7096
- if (slotElement.tagName === 'MG-BUTTON') {
6744
+ if (['MG-BUTTON', 'BUTTON'].includes(slotElement.tagName)) {
7097
6745
  new MutationObserver(mutationList => {
7098
- if (mutationList.some(mutation => mutation.attributeName === 'aria-disabled')) {
6746
+ if (mutationList.some(mutation => ['aria-disabled', 'disabled'].includes(mutation.attributeName))) {
7099
6747
  this.setMgButtonWrapper(slotElement);
6748
+ // Since Firefox doesn't trigger a "blur" event when the "disabled" attribute is added or removed from a button
6749
+ // we have to manually unlock the guard because the "blur" handler of the tooltipedElement won't do it.
6750
+ this.resetGuard();
7100
6751
  this.initTooltip(slotElement, interactiveElement);
7101
6752
  }
7102
6753
  }).observe(slotElement, { attributes: true });