@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.
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mg-action-more_31.cjs.entry.js +216 -565
- package/dist/cjs/mg-components.cjs.js +1 -1
- package/dist/cjs/mg-item-more.cjs.entry.js +273 -0
- package/dist/cjs/mg-menu.conf-9afe6571.js +242 -0
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/atoms/mg-button/mg-button.js +24 -0
- package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js +8 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +6 -2
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js +0 -13
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +39 -67
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.css +3 -3
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +156 -77
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.conf.js +1 -0
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.css +30 -0
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +200 -0
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.css +0 -2
- package/dist/collection/styles/navigation-button.scss +1 -1
- package/dist/collection/utils/behaviors.utils.js +33 -29
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/mg-action-more.js +2 -1
- package/dist/components/mg-button2.js +4 -1
- package/dist/components/mg-icon2.js +8 -0
- package/dist/components/mg-item-more.d.ts +11 -0
- package/dist/components/mg-item-more.js +336 -0
- package/dist/components/mg-menu-item2.js +134 -250
- package/dist/components/mg-menu.conf.js +14 -0
- package/dist/components/mg-menu2.js +35 -102
- package/dist/components/mg-tabs.js +1 -1
- package/dist/components/mg-tooltip2.js +6 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/mg-action-more_31.entry.js +185 -534
- package/dist/esm/mg-components.js +1 -1
- package/dist/esm/mg-item-more.entry.js +269 -0
- package/dist/esm/mg-menu.conf-881fbd82.js +235 -0
- package/dist/mg-components/mg-components.css +1 -1
- package/dist/mg-components/mg-components.esm.js +1 -1
- package/dist/mg-components/p-1221773c.entry.js +1 -0
- package/dist/mg-components/p-367f92d2.js +1 -0
- package/dist/mg-components/p-6aeded97.entry.js +1 -0
- package/dist/mg-components/styles/navigation-button.scss +1 -1
- package/dist/types/components/atoms/mg-button/mg-button.d.ts +5 -0
- package/dist/types/components/molecules/menu/mg-menu/mg-menu.conf.d.ts +3 -27
- package/dist/types/components/molecules/menu/mg-menu/mg-menu.d.ts +9 -27
- package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.conf.d.ts +5 -0
- package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +65 -16
- package/dist/types/components/molecules/mg-item-more/mg-item-more.conf.d.ts +26 -0
- package/dist/types/components/molecules/mg-item-more/mg-item-more.d.ts +74 -0
- package/dist/types/components.d.ts +66 -12
- package/dist/types/utils/behaviors.utils.d.ts +12 -5
- package/package.json +1 -1
- 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-
|
|
3133
|
+
* render mg-item-more
|
|
3521
3134
|
*
|
|
3522
|
-
* @returns {
|
|
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.
|
|
3550
|
-
|
|
3551
|
-
|
|
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.
|
|
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
|
-
|
|
3161
|
+
validateItemMore(newValue) {
|
|
3571
3162
|
if (newValue !== undefined && this.direction !== Direction.HORIZONTAL) {
|
|
3572
|
-
throw new Error(`<${this.name}> prop "
|
|
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.
|
|
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
|
-
|
|
3613
|
-
if (this.
|
|
3614
|
-
this.
|
|
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
|
-
*
|
|
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)
|
|
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
|
-
"
|
|
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
|
|
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
|
-
|
|
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
|
-
//
|
|
3819
|
-
|
|
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.
|
|
3838
|
-
this.
|
|
3839
|
-
|
|
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.
|
|
3844
|
-
|
|
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
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
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:
|
|
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
|
|
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 (
|
|
6744
|
+
if (['MG-BUTTON', 'BUTTON'].includes(slotElement.tagName)) {
|
|
7097
6745
|
new MutationObserver(mutationList => {
|
|
7098
|
-
if (mutationList.some(mutation =>
|
|
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 });
|