@mgdis/mg-components 5.2.0 → 5.3.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-badge_27.cjs.entry.js → mg-badge_29.cjs.entry.js} +376 -6
- package/dist/cjs/mg-components.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +3 -1
- package/dist/collection/components/atoms/mg-badge/mg-badge.js +13 -18
- package/dist/collection/components/atoms/mg-icon/mg-icon.js +17 -7
- package/dist/collection/components/molecules/menu/mg-menu/doc/mg-menu.stories.js +87 -0
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js +8 -0
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.css +10 -0
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +185 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/doc/mg-menu-item.stories.js +32 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js +22 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.css +316 -0
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +324 -0
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.conf.js +3 -0
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.css +67 -17
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +10 -4
- package/dist/collection/locales/index.js +3 -1
- package/dist/collection/variables.css +23 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index2.js +3 -1
- package/dist/components/mg-menu-item.d.ts +11 -0
- package/dist/components/mg-menu-item.js +273 -0
- package/dist/components/mg-menu.conf.js +10 -0
- package/dist/components/mg-menu.d.ts +11 -0
- package/dist/components/mg-menu.js +149 -0
- package/dist/components/mg-tabs.js +6 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{mg-badge_27.entry.js → mg-badge_29.entry.js} +375 -7
- package/dist/esm/mg-components.js +1 -1
- package/dist/mg-components/mg-components.css +1 -1
- package/dist/mg-components/mg-components.esm.js +1 -1
- package/dist/mg-components/p-204af46f.entry.js +1 -0
- package/dist/mg-components/variables.css +23 -1
- package/dist/types/components/atoms/mg-badge/doc/mg-badge.stories.d.ts +2 -2
- package/dist/types/components/atoms/mg-badge/mg-badge.conf.d.ts +5 -5
- package/dist/types/components/atoms/mg-badge/mg-badge.d.ts +8 -8
- package/dist/types/components/atoms/mg-icon/doc/mg-icon.stories.d.ts +2 -2
- package/dist/types/components/atoms/mg-icon/mg-icon.conf.d.ts +10 -2
- package/dist/types/components/atoms/mg-icon/mg-icon.d.ts +7 -6
- package/dist/types/components/molecules/menu/mg-menu/doc/mg-menu.stories.d.ts +17 -0
- package/dist/types/components/molecules/menu/mg-menu/mg-menu.conf.d.ts +7 -0
- package/dist/types/components/molecules/menu/mg-menu/mg-menu.d.ts +69 -0
- package/dist/types/components/molecules/menu/mg-menu-item/doc/mg-menu-item.stories.d.ts +11 -0
- package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.conf.d.ts +24 -0
- package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +119 -0
- package/dist/types/components/molecules/mg-tabs/doc/mg-tabs.stories.d.ts +1 -1
- package/dist/types/components/molecules/mg-tabs/mg-tabs.conf.d.ts +12 -4
- package/dist/types/components/molecules/mg-tabs/mg-tabs.d.ts +6 -6
- package/dist/types/components.d.ts +91 -14
- package/dist/types/locales/index.d.ts +7 -1
- package/dist/types/stories/icons.stories.d.ts +1 -1
- package/package.json +1 -1
- package/dist/mg-components/p-b2b07c3f.entry.js +0 -1
|
@@ -1,45 +1,95 @@
|
|
|
1
|
-
.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button
|
|
2
|
-
|
|
1
|
+
.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button,
|
|
2
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular {
|
|
3
|
+
padding: 1rem 2rem;
|
|
3
4
|
}
|
|
4
|
-
|
|
5
|
-
.mg-tabs.mg-tabs--size-
|
|
6
|
-
|
|
5
|
+
.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button,
|
|
6
|
+
.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button ::slotted([slot=label]),
|
|
7
|
+
.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button ::slotted([slot=metadata]),
|
|
8
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular,
|
|
9
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular ::slotted([slot=label]),
|
|
10
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular ::slotted([slot=metadata]) {
|
|
11
|
+
font-size: 1.3rem;
|
|
12
|
+
}
|
|
13
|
+
.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal,
|
|
14
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular.mg-tabs__navigation-button--horizontal {
|
|
15
|
+
padding-bottom: calc(1rem - 0.3rem);
|
|
16
|
+
}
|
|
17
|
+
.mg-tabs.mg-tabs--size-regular .mg-tabs__navigation-button.mg-tabs__navigation-button--vertical,
|
|
18
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-regular.mg-tabs__navigation-button--vertical {
|
|
19
|
+
padding-left: calc(2rem - 0.3rem);
|
|
7
20
|
}
|
|
8
21
|
|
|
9
|
-
.mg-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
22
|
+
.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button,
|
|
23
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large {
|
|
24
|
+
padding: 1.5rem 3rem;
|
|
25
|
+
}
|
|
26
|
+
.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button,
|
|
27
|
+
.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button ::slotted([slot=label]),
|
|
28
|
+
.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button ::slotted([slot=metadata]),
|
|
29
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large,
|
|
30
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large ::slotted([slot=label]),
|
|
31
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large ::slotted([slot=metadata]) {
|
|
32
|
+
font-size: 1.5rem;
|
|
33
|
+
}
|
|
34
|
+
.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal,
|
|
35
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large.mg-tabs__navigation-button--horizontal {
|
|
36
|
+
padding-bottom: calc(1.5rem - 0.3rem);
|
|
37
|
+
}
|
|
38
|
+
.mg-tabs.mg-tabs--size-large .mg-tabs__navigation-button.mg-tabs__navigation-button--vertical,
|
|
39
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--size-large.mg-tabs__navigation-button--vertical {
|
|
40
|
+
padding-left: calc(3rem - 0.3rem);
|
|
13
41
|
}
|
|
14
42
|
|
|
15
43
|
.mg-tabs__navigation-button {
|
|
16
44
|
display: flex;
|
|
17
45
|
align-items: center;
|
|
18
|
-
column-gap:
|
|
19
|
-
background:
|
|
46
|
+
column-gap: 1rem;
|
|
47
|
+
background-color: unset;
|
|
20
48
|
border: none;
|
|
21
|
-
border-bottom: 0.3rem solid transparent;
|
|
22
49
|
font-family: var(--font-family);
|
|
23
|
-
color: hsl(var(--color-dark));
|
|
50
|
+
color: hsl(var(--mg-tabs-color-hsl, var(--color-dark)));
|
|
24
51
|
line-height: var(--line-height);
|
|
52
|
+
text-decoration: none;
|
|
25
53
|
cursor: pointer;
|
|
26
54
|
}
|
|
27
55
|
.mg-tabs__navigation-button:disabled, .mg-tabs__navigation-button--disabled {
|
|
28
56
|
cursor: default;
|
|
29
57
|
opacity: 30%;
|
|
30
58
|
}
|
|
31
|
-
.mg-tabs__navigation-button:
|
|
32
|
-
|
|
59
|
+
.mg-tabs__navigation-button:focus-visible {
|
|
60
|
+
z-index: 10;
|
|
61
|
+
}
|
|
62
|
+
.mg-tabs__navigation-button:hover:not(.mg-tabs__navigation-button--disabled), .mg-tabs__navigation-button:focus:not(.mg-tabs__navigation-button--disabled) {
|
|
63
|
+
background-color: hsla(var(--mg-tabs-focused-background-color-hsl), 10%);
|
|
33
64
|
}
|
|
34
65
|
.mg-tabs__navigation-button.mg-tabs__navigation-button--active {
|
|
35
|
-
color: hsl(var(--color-
|
|
36
|
-
border-bottom-color: hsl(var(--color-info));
|
|
66
|
+
color: hsl(var(--mg-tabs-color-active-hsl));
|
|
37
67
|
font-weight: 700;
|
|
38
68
|
}
|
|
69
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--active.mg-tabs__navigation-button--horizontal {
|
|
70
|
+
border-bottom-color: hsl(var(--mg-tabs-border-color-active-hsl));
|
|
71
|
+
}
|
|
72
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--active.mg-tabs__navigation-button--vertical {
|
|
73
|
+
border-left-color: hsl(var(--mg-tabs-border-color-active-hsl));
|
|
74
|
+
}
|
|
39
75
|
.mg-tabs__navigation-button.mg-tabs__navigation-button--hidden {
|
|
40
76
|
display: none;
|
|
41
77
|
}
|
|
78
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--horizontal {
|
|
79
|
+
border-bottom: 0.3rem solid transparent;
|
|
80
|
+
}
|
|
81
|
+
.mg-tabs__navigation-button.mg-tabs__navigation-button--vertical {
|
|
82
|
+
border-left: 0.3rem solid transparent;
|
|
83
|
+
}
|
|
42
84
|
|
|
85
|
+
.mg-tabs__header {
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: row;
|
|
88
|
+
flex-wrap: wrap;
|
|
89
|
+
}
|
|
43
90
|
.mg-tabs__content-container:focus-visible {
|
|
44
91
|
outline: none;
|
|
92
|
+
}
|
|
93
|
+
.mg-tabs__navigation-button-text {
|
|
94
|
+
flex: 0 0 content;
|
|
45
95
|
}
|
|
@@ -185,10 +185,11 @@ export class MgTabs {
|
|
|
185
185
|
render() {
|
|
186
186
|
return (h("div", { class: this.classList.join() }, h("header", { role: "tablist", "aria-label": this.label, class: "mg-tabs__header" }, this.tabs.map((tab, index) => (h("button", { role: "tab", id: this.getElementId(this.identifier, index), class: {
|
|
187
187
|
[`${this.buttonTabBaseClass}`]: true,
|
|
188
|
+
[`${this.buttonTabBaseClass}--horizontal`]: true,
|
|
188
189
|
[`${this.getNavigationButtonClass(Status.ACTIVE)}`]: this.tabHasGivenStatus(tab, Status.ACTIVE),
|
|
189
190
|
[`${this.getNavigationButtonClass(Status.DISABLED)}`]: this.tabHasGivenStatus(tab, Status.DISABLED),
|
|
190
191
|
[`${this.getNavigationButtonClass(Status.HIDDEN)}`]: this.tabHasGivenStatus(tab, Status.HIDDEN),
|
|
191
|
-
}, tabindex: this.tabHasGivenStatus(tab, Status.ACTIVE) ? 0 : -1, "aria-selected": this.tabHasGivenStatus(tab, Status.ACTIVE).toString(), "aria-controls": this.getElementId(this.tabPanel, index), onClick: this.handleClick, onKeyDown: this.handleKeydown, "data-index": this.getTabIndex(index), disabled: this.tabHasGivenStatus(tab, Status.DISABLED) }, tab.icon !== undefined && h("mg-icon", { icon: tab.icon }), tab.label, tab.badge !== undefined && h("mg-badge", { variant:
|
|
192
|
+
}, tabindex: this.tabHasGivenStatus(tab, Status.ACTIVE) ? 0 : -1, "aria-selected": this.tabHasGivenStatus(tab, Status.ACTIVE).toString(), "aria-controls": this.getElementId(this.tabPanel, index), onClick: this.handleClick, onKeyDown: this.handleKeydown, "data-index": this.getTabIndex(index), disabled: this.tabHasGivenStatus(tab, Status.DISABLED) }, tab.icon !== undefined && h("mg-icon", { icon: tab.icon }), tab.label, tab.badge !== undefined && h("mg-badge", { variant: tab.status !== Status.ACTIVE ? 'primary' : 'info', value: tab.badge.value, label: tab.badge.label }))))), this.tabs.map((tab, index) => (h("article", { role: "tabpanel", id: this.getElementId(this.tabPanel, index), hidden: !this.tabHasGivenStatus(tab, Status.ACTIVE), "aria-labelledby": this.getElementId(this.identifier, index), tabindex: this.tabHasGivenStatus(tab, Status.ACTIVE) ? 0 : -1, class: "mg-tabs__content-container" }, h("slot", { name: this.getElementId('tab_content', index) }))))));
|
|
192
193
|
}
|
|
193
194
|
static get is() { return "mg-tabs"; }
|
|
194
195
|
static get encapsulation() { return "shadow"; }
|
|
@@ -243,9 +244,14 @@ export class MgTabs {
|
|
|
243
244
|
"type": "string",
|
|
244
245
|
"mutable": false,
|
|
245
246
|
"complexType": {
|
|
246
|
-
"original": "
|
|
247
|
-
"resolved": "
|
|
248
|
-
"references": {
|
|
247
|
+
"original": "SizeType",
|
|
248
|
+
"resolved": "\"large\" | \"regular\"",
|
|
249
|
+
"references": {
|
|
250
|
+
"SizeType": {
|
|
251
|
+
"location": "import",
|
|
252
|
+
"path": "./mg-tabs.conf"
|
|
253
|
+
}
|
|
254
|
+
}
|
|
249
255
|
},
|
|
250
256
|
"required": false,
|
|
251
257
|
"optional": false,
|
|
@@ -10,7 +10,9 @@ const messages = { en, fr };
|
|
|
10
10
|
*/
|
|
11
11
|
const getLocale = (element) => {
|
|
12
12
|
var _a;
|
|
13
|
-
|
|
13
|
+
// validate locale
|
|
14
|
+
const closestLang = Intl.NumberFormat.supportedLocalesOf((_a = element.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.lang);
|
|
15
|
+
return closestLang.length > 0 ? closestLang[0] : navigator.language || defaultLocale;
|
|
14
16
|
};
|
|
15
17
|
/**
|
|
16
18
|
* Get Intl object
|
|
@@ -20,6 +20,13 @@
|
|
|
20
20
|
https://jira.mgdis.fr/browse/PDA9-690
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
+
/* App */
|
|
24
|
+
/* default color-info */
|
|
25
|
+
--mg-color-app-h: var(--color-info-h);
|
|
26
|
+
--mg-color-app-s: var(--color-info-s);
|
|
27
|
+
--mg-color-app-l: var(--color-info-l);
|
|
28
|
+
--mg-color-app-hsl: var(--mg-color-app-h), var(--mg-color-app-s), var(--mg-color-app-l);
|
|
29
|
+
|
|
23
30
|
/* Neutral */
|
|
24
31
|
/* #fefefe; */
|
|
25
32
|
/* rgb(254, 254, 254); */
|
|
@@ -173,9 +180,10 @@
|
|
|
173
180
|
--mg-panel-box-shadow: var(--box-shadow);
|
|
174
181
|
--mg-panel-content-padding: 1.5rem;
|
|
175
182
|
|
|
176
|
-
|
|
183
|
+
/*
|
|
177
184
|
<mg-illustrated-message>
|
|
178
185
|
*/
|
|
186
|
+
|
|
179
187
|
--mg-illustrated-message-padding-vertical: 4rem;
|
|
180
188
|
|
|
181
189
|
/*
|
|
@@ -230,4 +238,18 @@
|
|
|
230
238
|
<mg-input-radio>
|
|
231
239
|
*/
|
|
232
240
|
--mg-input-check-size: 1.3rem;
|
|
241
|
+
|
|
242
|
+
/*
|
|
243
|
+
<mg-menu-item>
|
|
244
|
+
*/
|
|
245
|
+
--mg-menu-item-focused-background-color-hsl: var(--mg-color-app-hsl);
|
|
246
|
+
--mg-menu-item-border-color-active-hsl: var(--mg-color-app-hsl);
|
|
247
|
+
--mg-menu-item-color-active-hsl: var(--mg-color-app-hsl);
|
|
248
|
+
|
|
249
|
+
/*
|
|
250
|
+
<mg-tabs>
|
|
251
|
+
*/
|
|
252
|
+
--mg-tabs-focused-background-color-hsl: var(--mg-color-app-hsl);
|
|
253
|
+
--mg-tabs-border-color-active-hsl: var(--mg-color-app-hsl);
|
|
254
|
+
--mg-tabs-color-active-hsl: var(--mg-color-app-hsl);
|
|
233
255
|
}
|
|
@@ -18,6 +18,8 @@ export { MgInputText as MgInputText } from '../types/components/molecules/inputs
|
|
|
18
18
|
export { MgInputTextarea as MgInputTextarea } from '../types/components/molecules/inputs/mg-input-textarea/mg-input-textarea';
|
|
19
19
|
export { MgInputTitle as MgInputTitle } from '../types/components/atoms/mg-input-title/mg-input-title';
|
|
20
20
|
export { MgInputToggle as MgInputToggle } from '../types/components/molecules/inputs/mg-input-toggle/mg-input-toggle';
|
|
21
|
+
export { MgMenu as MgMenu } from '../types/components/molecules/menu/mg-menu/mg-menu';
|
|
22
|
+
export { MgMenuItem as MgMenuItem } from '../types/components/molecules/menu/mg-menu-item/mg-menu-item';
|
|
21
23
|
export { MgMessage as MgMessage } from '../types/components/molecules/mg-message/mg-message';
|
|
22
24
|
export { MgModal as MgModal } from '../types/components/molecules/mg-modal/mg-modal';
|
|
23
25
|
export { MgPagination as MgPagination } from '../types/components/molecules/mg-pagination/mg-pagination';
|
package/dist/components/index.js
CHANGED
|
@@ -18,6 +18,8 @@ export { MgInputText, defineCustomElement as defineCustomElementMgInputText } fr
|
|
|
18
18
|
export { MgInputTextarea, defineCustomElement as defineCustomElementMgInputTextarea } from './mg-input-textarea.js';
|
|
19
19
|
export { MgInputTitle, defineCustomElement as defineCustomElementMgInputTitle } from './mg-input-title.js';
|
|
20
20
|
export { MgInputToggle, defineCustomElement as defineCustomElementMgInputToggle } from './mg-input-toggle.js';
|
|
21
|
+
export { MgMenu, defineCustomElement as defineCustomElementMgMenu } from './mg-menu.js';
|
|
22
|
+
export { MgMenuItem, defineCustomElement as defineCustomElementMgMenuItem } from './mg-menu-item.js';
|
|
21
23
|
export { MgMessage, defineCustomElement as defineCustomElementMgMessage } from './mg-message.js';
|
|
22
24
|
export { MgModal, defineCustomElement as defineCustomElementMgModal } from './mg-modal.js';
|
|
23
25
|
export { MgPagination, defineCustomElement as defineCustomElementMgPagination } from './mg-pagination.js';
|
|
@@ -128,7 +128,9 @@ const messages = { en, fr };
|
|
|
128
128
|
*/
|
|
129
129
|
const getLocale = (element) => {
|
|
130
130
|
var _a;
|
|
131
|
-
|
|
131
|
+
// validate locale
|
|
132
|
+
const closestLang = Intl.NumberFormat.supportedLocalesOf((_a = element.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.lang);
|
|
133
|
+
return closestLang.length > 0 ? closestLang[0] : navigator.language || defaultLocale;
|
|
132
134
|
};
|
|
133
135
|
/**
|
|
134
136
|
* Get Intl object
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface MgMenuItem extends Components.MgMenuItem, HTMLElement {}
|
|
4
|
+
export const MgMenuItem: {
|
|
5
|
+
prototype: MgMenuItem;
|
|
6
|
+
new (): MgMenuItem;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { C as ClassList } from './components.utils.js';
|
|
3
|
+
import { D as Direction } from './mg-menu.conf.js';
|
|
4
|
+
import { d as defineCustomElement$2 } from './mg-icon2.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Available menu-item positions
|
|
8
|
+
*/
|
|
9
|
+
var ElementPosition;
|
|
10
|
+
(function (ElementPosition) {
|
|
11
|
+
ElementPosition["FIRST"] = "first";
|
|
12
|
+
ElementPosition["LAST"] = "last";
|
|
13
|
+
})(ElementPosition || (ElementPosition = {}));
|
|
14
|
+
/**
|
|
15
|
+
* Available menu item status
|
|
16
|
+
*/
|
|
17
|
+
var Status;
|
|
18
|
+
(function (Status) {
|
|
19
|
+
Status["VISIBLE"] = "visible";
|
|
20
|
+
Status["HIDDEN"] = "hidden";
|
|
21
|
+
Status["DISABLED"] = "disabled";
|
|
22
|
+
Status["ACTIVE"] = "active";
|
|
23
|
+
})(Status || (Status = {}));
|
|
24
|
+
/**
|
|
25
|
+
* List of all possibles sizes
|
|
26
|
+
*/
|
|
27
|
+
const sizes = ['regular', 'medium', 'large'];
|
|
28
|
+
|
|
29
|
+
const mgMenuItemCss = ".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}.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:1.3rem}.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:1.5rem 3rem}.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:1.5rem}.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(1.5rem - 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:2.5rem 4rem}.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:1.5rem}.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(2.5rem - 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:1rem;background-color:unset;border:none;font-family:var(--font-family);color:hsl(var(--mg-menu-item-color-hsl, var(--color-dark)));line-height:var(--line-height);text-decoration:none;cursor:pointer}.mg-menu-item__navigation-button:disabled,.mg-menu-item__navigation-button--disabled{cursor:default;opacity:30%}.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:not(.mg-menu-item__navigation-button--disabled){background-color:hsla(var(--mg-menu-item-focused-background-color-hsl), 10%)}.mg-menu-item__navigation-button.mg-menu-item__navigation-button--active{color:hsl(var(--mg-menu-item-color-active-hsl));font-weight:700}.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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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(.mg-menu-item--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}:host(.mg-menu-item--last) .mg-menu-item__collapse-container{left:unset;right:0}:host(.mg-menu-item--vertical){flex-direction:column}:host(.mg-menu-item--vertical) .mg-menu-item__collapse-container{left:unset;top:unset;position:unset;width:unset}:host(.mg-menu-item--vertical) .mg-menu-item-chevron{margin-left:auto}:host(.mg-menu-item--horizontal) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level{box-shadow:var(--box-shadow);background-color:hsl(var(--color-light))}:host(.mg-menu-item--horizontal) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level ::slotted(mg-menu){padding:1rem 0}.mg-menu-item{max-width:var(--mg-menu-item-navigation-button-max-width)}.mg-menu-item__collapse-container{position:absolute;top:100%;left:0;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}.mg-menu-item__navigation-button-text-content ::slotted([slot=information]){margin-left:1rem}.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}";
|
|
30
|
+
|
|
31
|
+
const MgMenuItem$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
this.__registerHost();
|
|
35
|
+
this.__attachShadow();
|
|
36
|
+
/************
|
|
37
|
+
* Internal *
|
|
38
|
+
************/
|
|
39
|
+
this.name = 'mg-menu-item';
|
|
40
|
+
this.navigationButton = `${this.name}__navigation-button`;
|
|
41
|
+
/**
|
|
42
|
+
* Define menu-item status. Default: "visible"
|
|
43
|
+
*/
|
|
44
|
+
this.status = Status.VISIBLE;
|
|
45
|
+
/**
|
|
46
|
+
* Define menu-item size. Default: "large".
|
|
47
|
+
*/
|
|
48
|
+
this.size = 'large';
|
|
49
|
+
/**
|
|
50
|
+
* Define menu-item content expanded. Default: false.
|
|
51
|
+
*/
|
|
52
|
+
this.expanded = false;
|
|
53
|
+
/************
|
|
54
|
+
* States *
|
|
55
|
+
************/
|
|
56
|
+
/**
|
|
57
|
+
* Component classes
|
|
58
|
+
*/
|
|
59
|
+
this.classList = new ClassList([this.name]);
|
|
60
|
+
/**
|
|
61
|
+
* Component button classes
|
|
62
|
+
*/
|
|
63
|
+
this.navigationButtonClassList = new ClassList([this.navigationButton]);
|
|
64
|
+
/**
|
|
65
|
+
* Does component have children. Default: false.
|
|
66
|
+
*/
|
|
67
|
+
this.hasChildren = false;
|
|
68
|
+
/************
|
|
69
|
+
* Methods *
|
|
70
|
+
************/
|
|
71
|
+
/**
|
|
72
|
+
* Toggle expanded prop value
|
|
73
|
+
*
|
|
74
|
+
* @returns {void}
|
|
75
|
+
*/
|
|
76
|
+
this.toggleExpanded = () => {
|
|
77
|
+
this.expanded = !this.expanded;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Does an HTMLElement contain child with given Status
|
|
81
|
+
*
|
|
82
|
+
* @param {HTMLElement} element to parse
|
|
83
|
+
* @param {MgMenuItem['status']} status to check
|
|
84
|
+
* @returns {boolean} true if element with status is found
|
|
85
|
+
*/
|
|
86
|
+
this.hasChildElementStatus = (element, status) => element.querySelector(`${this.name}[status="${status}"]`) !== null;
|
|
87
|
+
/**
|
|
88
|
+
* Is component contextual direction match the given direction
|
|
89
|
+
*
|
|
90
|
+
* @param {MgMenuItem['direction']} direction in parent menu
|
|
91
|
+
* @returns {boolean} true is direction match the direction propertie
|
|
92
|
+
*/
|
|
93
|
+
this.isdirection = (direction) => this.direction === direction;
|
|
94
|
+
/************
|
|
95
|
+
* Handlers *
|
|
96
|
+
************/
|
|
97
|
+
/**
|
|
98
|
+
* Handle interacrtive element click
|
|
99
|
+
*
|
|
100
|
+
* @param {MouseEvent} event click on element
|
|
101
|
+
* @returns {void}
|
|
102
|
+
*/
|
|
103
|
+
this.handleElementCLick = (event) => {
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
if (this.hasChildren)
|
|
106
|
+
this.toggleExpanded();
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
validateStatus(newValue, oldValue) {
|
|
110
|
+
if (oldValue !== undefined) {
|
|
111
|
+
this.navigationButtonClassList.delete(`${this.navigationButton}--${oldValue}`);
|
|
112
|
+
}
|
|
113
|
+
this.navigationButtonClassList.add(`${this.navigationButton}--${newValue}`);
|
|
114
|
+
}
|
|
115
|
+
validateSize(newValue, oldValue) {
|
|
116
|
+
if (!sizes.includes(newValue)) {
|
|
117
|
+
throw new Error(`<${this.name}> prop "size" must be one of : ${sizes.join(', ')}.`);
|
|
118
|
+
}
|
|
119
|
+
this.navigationButtonClassList.delete(`${this.navigationButton}--size-${oldValue}`);
|
|
120
|
+
this.navigationButtonClassList.add(`${this.navigationButton}--size-${newValue}`);
|
|
121
|
+
}
|
|
122
|
+
validateExpanded(newValue) {
|
|
123
|
+
if (typeof newValue !== 'boolean')
|
|
124
|
+
throw new Error(`<${this.name}> prop "expanded" must be a boolean.`);
|
|
125
|
+
// if menu-item has sub-menu we have to apply some updates:
|
|
126
|
+
if (this.hasChildren) {
|
|
127
|
+
const subItems = Array.from(this.element.querySelectorAll(this.name));
|
|
128
|
+
if (!newValue) {
|
|
129
|
+
// - when main menu item is NOT expanded we need NOT expanded sub-items and NOT expanded sub-content
|
|
130
|
+
subItems.forEach(item => {
|
|
131
|
+
item.expanded = false;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
else if (newValue && this.hasChildElementStatus(this.element, Status.ACTIVE)) {
|
|
135
|
+
// - when expanded and contain an active item parents are expended too
|
|
136
|
+
subItems.forEach(item => {
|
|
137
|
+
if (this.hasChildElementStatus(item, Status.ACTIVE)) {
|
|
138
|
+
item.expanded = true;
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
validateHasChildren(newValue) {
|
|
145
|
+
if (newValue && this.element.href !== undefined) {
|
|
146
|
+
throw new Error(`<${this.name}> prop "href" is unauthorizied when element is a parent.`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/*************
|
|
150
|
+
* Lifecycle *
|
|
151
|
+
*************/
|
|
152
|
+
/**
|
|
153
|
+
* Validate props
|
|
154
|
+
*
|
|
155
|
+
* @returns {void}
|
|
156
|
+
*/
|
|
157
|
+
componentWillLoad() {
|
|
158
|
+
// has children items that is NOT [slot="illustration"] || [slot="information"] element
|
|
159
|
+
// we store only matching elements
|
|
160
|
+
this.hasChildren = Array.from(this.element.children).filter(child => !['illustration', 'information', 'label', 'metadata'].includes(child.getAttribute('slot'))).length > 0;
|
|
161
|
+
// Validate props
|
|
162
|
+
this.validateSize(this.size);
|
|
163
|
+
this.validateStatus(this.status);
|
|
164
|
+
this.validateExpanded(this.expanded);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if component slots configuration
|
|
168
|
+
*
|
|
169
|
+
* @returns {ReturnType<typeof setTimeout>} timeout
|
|
170
|
+
*/
|
|
171
|
+
componentDidLoad() {
|
|
172
|
+
// slot title AND metadata validation
|
|
173
|
+
// add title on label AND metada slots due to text-overflow on these element
|
|
174
|
+
if (Array.from(this.element.children).find(child => child.getAttribute('slot') === 'label') === undefined)
|
|
175
|
+
throw new Error(`<${this.name}> slot "label" is required.`);
|
|
176
|
+
['label', 'metadata'].forEach(slot => {
|
|
177
|
+
Array.from(this.element.querySelectorAll(`[slot="${slot}"]`)).forEach(element => {
|
|
178
|
+
if (element.textContent.trim().length < 1)
|
|
179
|
+
throw new Error(`<${this.name}> slot "${slot}" must have text content.`);
|
|
180
|
+
if (element.getAttribute('title') === null)
|
|
181
|
+
element.setAttribute('title', element.textContent);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
// update props and states after componentDidLoad hook
|
|
185
|
+
// return a promise to process action only in the FIRST render().
|
|
186
|
+
// https://stenciljs.com/docs/component-lifecycle#componentwillload
|
|
187
|
+
return setTimeout(() => {
|
|
188
|
+
var _a, _b;
|
|
189
|
+
// define menu-item context states
|
|
190
|
+
if (this.element.parentElement.nodeName === 'MG-MENU') {
|
|
191
|
+
this.direction = this.element.parentElement.direction;
|
|
192
|
+
}
|
|
193
|
+
this.isInMainMenu = this.element.parentElement.className.includes('mg-menu-item') === false;
|
|
194
|
+
const hasNextMenuItem = ((_a = this.element.nextElementSibling) === null || _a === void 0 ? void 0 : _a.nodeName) === 'MG-MENU-ITEM';
|
|
195
|
+
const hasPreviousMenuItem = ((_b = this.element.previousElementSibling) === null || _b === void 0 ? void 0 : _b.nodeName) === 'MG-MENU-ITEM';
|
|
196
|
+
// manage last menu item
|
|
197
|
+
if (!hasNextMenuItem && hasPreviousMenuItem && this.isdirection(Direction.HORIZONTAL)) {
|
|
198
|
+
this.classList.add(`${this.name}--${ElementPosition.LAST}`);
|
|
199
|
+
}
|
|
200
|
+
// when main menu item contain an active item it will get the active style
|
|
201
|
+
// AND if item is in vertical menu it will be expanded
|
|
202
|
+
if (this.isInMainMenu && this.hasChildElementStatus(this.element, Status.ACTIVE)) {
|
|
203
|
+
this.status = Status.ACTIVE;
|
|
204
|
+
this.expanded = this.direction === Direction.VERTICAL;
|
|
205
|
+
}
|
|
206
|
+
// manage menu items style depending to parent menu horientation
|
|
207
|
+
this.classList.add(`${this.name}--${this.direction}`);
|
|
208
|
+
this.navigationButtonClassList.add(`${this.navigationButton}--${this.direction}`);
|
|
209
|
+
// manage child items level
|
|
210
|
+
const childItems = Array.from(this.element.querySelectorAll('mg-menu-item'));
|
|
211
|
+
childItems.forEach(item => {
|
|
212
|
+
if (this.direction === Direction.VERTICAL) {
|
|
213
|
+
const itemLevel = Number(item.getAttribute('data-level')) || 1;
|
|
214
|
+
item.setAttribute('data-level', `${itemLevel + 1}`);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}, 0);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Render
|
|
221
|
+
*
|
|
222
|
+
* @returns {HTMLElement} HTML Element
|
|
223
|
+
*/
|
|
224
|
+
render() {
|
|
225
|
+
const TagName = this.href !== undefined ? 'a' : 'button';
|
|
226
|
+
return (h(Host, { role: "menuitem", "aria-haspopup": this.hasChildren.toString(), class: this.classList.join() }, h(TagName, { href: this.href, class: this.navigationButtonClassList.join(), tabindex: [Status.DISABLED, Status.HIDDEN].includes(this.status) ? -1 : 0, disabled: this.status === Status.DISABLED, "aria-expanded": this.hasChildren && this.expanded.toString(), "aria-current": this.status === Status.ACTIVE && 'page', onClick: this.handleElementCLick }, h("slot", { name: "illustration" }), h("div", { class: `${this.navigationButton}-center` }, h("div", { class: `${this.navigationButton}-text-content` }, h("slot", { name: "label" }), h("slot", { name: "information" })), h("slot", { name: "metadata" })), this.hasChildren && this.href === undefined && (h("span", { class: {
|
|
227
|
+
[`${this.navigationButton}-chevron`]: true,
|
|
228
|
+
[`${this.navigationButton}-chevron--rotate`]: this.expanded === true,
|
|
229
|
+
} }, h("mg-icon", { icon: "chevron-down" })))), h("div", { class: { [`${this.name}__collapse-container`]: true, [`${this.name}__collapse-container--first-level`]: this.isInMainMenu && this.isdirection(Direction.HORIZONTAL) }, hidden: !this.expanded }, h("slot", null))));
|
|
230
|
+
}
|
|
231
|
+
get element() { return this; }
|
|
232
|
+
static get watchers() { return {
|
|
233
|
+
"status": ["validateStatus"],
|
|
234
|
+
"size": ["validateSize"],
|
|
235
|
+
"expanded": ["validateExpanded"],
|
|
236
|
+
"hasChildren": ["validateHasChildren"]
|
|
237
|
+
}; }
|
|
238
|
+
static get style() { return mgMenuItemCss; }
|
|
239
|
+
}, [1, "mg-menu-item", {
|
|
240
|
+
"href": [1],
|
|
241
|
+
"status": [1537],
|
|
242
|
+
"size": [1],
|
|
243
|
+
"expanded": [1028],
|
|
244
|
+
"classList": [32],
|
|
245
|
+
"navigationButtonClassList": [32],
|
|
246
|
+
"direction": [32],
|
|
247
|
+
"isInMainMenu": [32],
|
|
248
|
+
"hasChildren": [32]
|
|
249
|
+
}]);
|
|
250
|
+
function defineCustomElement$1() {
|
|
251
|
+
if (typeof customElements === "undefined") {
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const components = ["mg-menu-item", "mg-icon"];
|
|
255
|
+
components.forEach(tagName => { switch (tagName) {
|
|
256
|
+
case "mg-menu-item":
|
|
257
|
+
if (!customElements.get(tagName)) {
|
|
258
|
+
customElements.define(tagName, MgMenuItem$1);
|
|
259
|
+
}
|
|
260
|
+
break;
|
|
261
|
+
case "mg-icon":
|
|
262
|
+
if (!customElements.get(tagName)) {
|
|
263
|
+
defineCustomElement$2();
|
|
264
|
+
}
|
|
265
|
+
break;
|
|
266
|
+
} });
|
|
267
|
+
}
|
|
268
|
+
defineCustomElement$1();
|
|
269
|
+
|
|
270
|
+
const MgMenuItem = MgMenuItem$1;
|
|
271
|
+
const defineCustomElement = defineCustomElement$1;
|
|
272
|
+
|
|
273
|
+
export { MgMenuItem, defineCustomElement };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface MgMenu extends Components.MgMenu, HTMLElement {}
|
|
4
|
+
export const MgMenu: {
|
|
5
|
+
prototype: MgMenu;
|
|
6
|
+
new (): MgMenu;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|