@mgdis/mg-components 6.2.0 → 6.4.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/{index-52d5f3d4.js → index-911898e4.js} +410 -266
- package/dist/cjs/index-911898e4.js.map +1 -0
- package/dist/cjs/{index-cc11af95.js → index-a3269bfc.js} +3 -3
- package/dist/cjs/{index-cc11af95.js.map → index-a3269bfc.js.map} +1 -1
- package/dist/cjs/{index.es-ac7c22e3.js → index.es-325100d7.js} +47 -47
- package/dist/cjs/index.es-325100d7.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mg-action-more_36.cjs.entry.js +1414 -983
- package/dist/cjs/mg-action-more_36.cjs.entry.js.map +1 -1
- package/dist/cjs/mg-alert.cjs.entry.js +17 -12
- package/dist/cjs/mg-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/mg-components.cjs.js +3 -3
- package/dist/cjs/mg-components.cjs.js.map +1 -1
- package/dist/cjs/mg-loader.cjs.entry.js +6 -8
- package/dist/cjs/mg-loader.cjs.entry.js.map +1 -1
- package/dist/cjs/mg-progress.cjs.entry.js +27 -12
- package/dist/cjs/mg-progress.cjs.entry.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/atoms/internals/mg-character-left/mg-character-left.js +10 -3
- package/dist/collection/components/atoms/internals/mg-character-left/mg-character-left.js.map +1 -1
- package/dist/collection/components/atoms/internals/mg-input-title/mg-input-title.js +15 -4
- package/dist/collection/components/atoms/internals/mg-input-title/mg-input-title.js.map +1 -1
- package/dist/collection/components/atoms/mg-badge/mg-badge.js +15 -4
- package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +1 -1
- package/dist/collection/components/atoms/mg-button/mg-button.conf.js +4 -0
- package/dist/collection/components/atoms/mg-button/mg-button.conf.js.map +1 -1
- package/dist/collection/components/atoms/mg-button/mg-button.js +112 -12
- package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -1
- package/dist/collection/components/atoms/mg-card/mg-card.js +1 -1
- package/dist/collection/components/atoms/mg-divider/mg-divider.js +9 -1
- package/dist/collection/components/atoms/mg-divider/mg-divider.js.map +1 -1
- package/dist/collection/components/atoms/mg-icon/mg-icon.js +22 -6
- package/dist/collection/components/atoms/mg-icon/mg-icon.js.map +1 -1
- package/dist/collection/components/atoms/mg-tag/mg-tag.js +14 -4
- package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +1 -1
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +3 -4
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js.map +1 -1
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +28 -6
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input/mg-input.js +50 -13
- package/dist/collection/components/molecules/inputs/mg-input/mg-input.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +29 -11
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +106 -33
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +99 -36
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +130 -35
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +87 -25
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +86 -26
- package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +92 -30
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +109 -32
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +109 -29
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +67 -21
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -1
- package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.js +16 -70
- package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.js.map +1 -1
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +101 -89
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js.map +1 -1
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +194 -157
- package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js.map +1 -1
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +19 -8
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -1
- package/dist/collection/components/molecules/mg-alert/mg-alert.js +31 -6
- package/dist/collection/components/molecules/mg-alert/mg-alert.js.map +1 -1
- package/dist/collection/components/molecules/mg-details/mg-details.js +17 -5
- package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -1
- package/dist/collection/components/molecules/mg-form/mg-form.js +48 -16
- package/dist/collection/components/molecules/mg-form/mg-form.js.map +1 -1
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +13 -3
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +1 -1
- package/dist/collection/components/molecules/mg-loader/mg-loader.js +5 -5
- package/dist/collection/components/molecules/mg-loader/mg-loader.js.map +1 -1
- package/dist/collection/components/molecules/mg-message/mg-message.js +22 -6
- package/dist/collection/components/molecules/mg-message/mg-message.js.map +1 -1
- package/dist/collection/components/molecules/mg-modal/mg-modal.js +54 -11
- package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -1
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +28 -9
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -1
- package/dist/collection/components/molecules/mg-panel/mg-panel.js +48 -13
- package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +1 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +10 -2
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js.map +1 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover.js +61 -7
- package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -1
- package/dist/collection/components/molecules/mg-progress/mg-progress.js +26 -1
- package/dist/collection/components/molecules/mg-progress/mg-progress.js.map +1 -1
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +3 -2
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js.map +1 -1
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +28 -8
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -1
- package/dist/collection/utils/behaviors.utils.js +44 -107
- package/dist/collection/utils/behaviors.utils.js.map +1 -1
- package/dist/components/index.es.js +42 -42
- package/dist/components/index.es.js.map +1 -1
- package/dist/components/index2.js +2 -2
- package/dist/components/mg-action-more.js +15 -12
- package/dist/components/mg-action-more.js.map +1 -1
- package/dist/components/mg-alert.js +15 -10
- package/dist/components/mg-alert.js.map +1 -1
- package/dist/components/mg-badge2.js +13 -10
- package/dist/components/mg-badge2.js.map +1 -1
- package/dist/components/mg-button2.js +77 -16
- package/dist/components/mg-button2.js.map +1 -1
- package/dist/components/mg-card2.js +1 -1
- package/dist/components/mg-character-left2.js +8 -7
- package/dist/components/mg-character-left2.js.map +1 -1
- package/dist/components/mg-details.js +11 -7
- package/dist/components/mg-details.js.map +1 -1
- package/dist/components/mg-divider2.js +7 -1
- package/dist/components/mg-divider2.js.map +1 -1
- package/dist/components/mg-form.js +35 -21
- package/dist/components/mg-form.js.map +1 -1
- package/dist/components/mg-icon2.js +17 -11
- package/dist/components/mg-icon2.js.map +1 -1
- package/dist/components/mg-illustrated-message.js +10 -4
- package/dist/components/mg-illustrated-message.js.map +1 -1
- package/dist/components/mg-input-checkbox-paginated2.js +14 -10
- package/dist/components/mg-input-checkbox-paginated2.js.map +1 -1
- package/dist/components/mg-input-checkbox.js +73 -40
- package/dist/components/mg-input-checkbox.js.map +1 -1
- package/dist/components/mg-input-date.js +77 -46
- package/dist/components/mg-input-date.js.map +1 -1
- package/dist/components/mg-input-numeric.js +90 -45
- package/dist/components/mg-input-numeric.js.map +1 -1
- package/dist/components/mg-input-password.js +56 -28
- package/dist/components/mg-input-password.js.map +1 -1
- package/dist/components/mg-input-radio.js +59 -31
- package/dist/components/mg-input-radio.js.map +1 -1
- package/dist/components/mg-input-select2.js +60 -36
- package/dist/components/mg-input-select2.js.map +1 -1
- package/dist/components/mg-input-text2.js +71 -40
- package/dist/components/mg-input-text2.js.map +1 -1
- package/dist/components/mg-input-textarea.js +72 -36
- package/dist/components/mg-input-textarea.js.map +1 -1
- package/dist/components/mg-input-title2.js +11 -8
- package/dist/components/mg-input-title2.js.map +1 -1
- package/dist/components/mg-input-toggle.js +43 -25
- package/dist/components/mg-input-toggle.js.map +1 -1
- package/dist/components/mg-input2.js +37 -20
- package/dist/components/mg-input2.js.map +1 -1
- package/dist/components/mg-item-more2.js +146 -270
- package/dist/components/mg-item-more2.js.map +1 -1
- package/dist/components/mg-loader.js +4 -6
- package/dist/components/mg-loader.js.map +1 -1
- package/dist/components/mg-menu-item2.js +193 -149
- package/dist/components/mg-menu-item2.js.map +1 -1
- package/dist/components/mg-message2.js +21 -9
- package/dist/components/mg-message2.js.map +1 -1
- package/dist/components/mg-modal.js +36 -17
- package/dist/components/mg-modal.js.map +1 -1
- package/dist/components/mg-pagination2.js +21 -14
- package/dist/components/mg-pagination2.js.map +1 -1
- package/dist/components/mg-panel.js +37 -20
- package/dist/components/mg-panel.js.map +1 -1
- package/dist/components/mg-popover-content2.js +9 -3
- package/dist/components/mg-popover-content2.js.map +1 -1
- package/dist/components/mg-popover2.js +38 -10
- package/dist/components/mg-popover2.js.map +1 -1
- package/dist/components/mg-progress.js +26 -11
- package/dist/components/mg-progress.js.map +1 -1
- package/dist/components/mg-skip-links.js +2 -3
- package/dist/components/mg-skip-links.js.map +1 -1
- package/dist/components/mg-tabs.js +27 -17
- package/dist/components/mg-tabs.js.map +1 -1
- package/dist/components/mg-tag.js +12 -8
- package/dist/components/mg-tag.js.map +1 -1
- package/dist/components/mg-tooltip-content2.js +1 -2
- package/dist/components/mg-tooltip-content2.js.map +1 -1
- package/dist/components/mg-tooltip2.js +24 -12
- package/dist/components/mg-tooltip2.js.map +1 -1
- package/dist/esm/{index-81752ffe.js → index-1f32332a.js} +410 -266
- package/dist/esm/index-1f32332a.js.map +1 -0
- package/dist/esm/{index-f3d3fb70.js → index-9bd10f5d.js} +3 -3
- package/dist/esm/{index-f3d3fb70.js.map → index-9bd10f5d.js.map} +1 -1
- package/dist/esm/{index.es-940821a9.js → index.es-a2587b72.js} +43 -43
- package/dist/esm/index.es-a2587b72.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mg-action-more_36.entry.js +1414 -983
- package/dist/esm/mg-action-more_36.entry.js.map +1 -1
- package/dist/esm/mg-alert.entry.js +17 -12
- package/dist/esm/mg-alert.entry.js.map +1 -1
- package/dist/esm/mg-components.js +4 -4
- package/dist/esm/mg-components.js.map +1 -1
- package/dist/esm/mg-loader.entry.js +6 -8
- package/dist/esm/mg-loader.entry.js.map +1 -1
- package/dist/esm/mg-progress.entry.js +27 -12
- package/dist/esm/mg-progress.entry.js.map +1 -1
- package/dist/mg-components/mg-components.esm.js +1 -1
- package/dist/mg-components/mg-components.esm.js.map +1 -1
- package/dist/mg-components/p-0ead5317.entry.js +2 -0
- package/dist/mg-components/{p-31e6c1a7.entry.js.map → p-0ead5317.entry.js.map} +1 -1
- package/dist/mg-components/p-35898742.js +3 -0
- package/dist/mg-components/p-35898742.js.map +1 -0
- package/dist/mg-components/p-3b052ac0.entry.js +2 -0
- package/dist/mg-components/p-3b052ac0.entry.js.map +1 -0
- package/dist/mg-components/p-6810a565.entry.js +2 -0
- package/dist/mg-components/p-6810a565.entry.js.map +1 -0
- package/dist/mg-components/{p-ee51ec5e.js → p-b986c107.js} +2 -2
- package/dist/mg-components/p-b986c107.js.map +1 -0
- package/dist/mg-components/{p-a49e2b74.js → p-dc436f3c.js} +2 -2
- package/dist/mg-components/p-f48d964f.entry.js +2 -0
- package/dist/mg-components/p-f48d964f.entry.js.map +1 -0
- package/dist/types/components/atoms/mg-button/mg-button.conf.d.ts +9 -1
- package/dist/types/components/atoms/mg-button/mg-button.d.ts +11 -1
- package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +6 -0
- package/dist/types/components/molecules/internals/mg-item-more/mg-item-more.d.ts +1 -15
- package/dist/types/components/molecules/menu/mg-menu/mg-menu.d.ts +14 -30
- package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +46 -37
- package/dist/types/components/molecules/mg-alert/mg-alert.d.ts +4 -0
- package/dist/types/components/molecules/mg-modal/mg-modal.d.ts +4 -0
- package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +4 -0
- package/dist/types/components.d.ts +33 -15
- package/dist/types/utils/behaviors.utils.d.ts +15 -44
- package/ide/intellij/web-types.json +39 -11
- package/ide/vscode/html-custom-data.json +28 -6
- package/package.json +27 -37
- package/dist/cjs/index-52d5f3d4.js.map +0 -1
- package/dist/cjs/index.es-ac7c22e3.js.map +0 -1
- package/dist/esm/index-81752ffe.js.map +0 -1
- package/dist/esm/index.es-940821a9.js.map +0 -1
- package/dist/mg-components/p-2298352f.js +0 -3
- package/dist/mg-components/p-2298352f.js.map +0 -1
- package/dist/mg-components/p-31e6c1a7.entry.js +0 -2
- package/dist/mg-components/p-67c9be27.entry.js +0 -2
- package/dist/mg-components/p-67c9be27.entry.js.map +0 -1
- package/dist/mg-components/p-95895169.entry.js +0 -2
- package/dist/mg-components/p-95895169.entry.js.map +0 -1
- package/dist/mg-components/p-abddacc2.entry.js +0 -2
- package/dist/mg-components/p-abddacc2.entry.js.map +0 -1
- package/dist/mg-components/p-ee51ec5e.js.map +0 -1
- /package/dist/mg-components/{p-a49e2b74.js.map → p-dc436f3c.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
2
|
-
import {
|
|
2
|
+
import { z as ze, G as Ge, y as ye, I as Ie, J as Je, e as et } from './index.es.js';
|
|
3
3
|
import { i as initLocales } from './index2.js';
|
|
4
4
|
import { d as defineCustomElement$6 } from './mg-badge2.js';
|
|
5
5
|
import { d as defineCustomElement$5 } from './mg-button2.js';
|
|
@@ -42,7 +42,6 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
42
42
|
super();
|
|
43
43
|
this.__registerHost();
|
|
44
44
|
this.__attachShadow();
|
|
45
|
-
this.statusChange = createEvent(this, "status-change", 7);
|
|
46
45
|
this.itemLoaded = createEvent(this, "item-loaded", 7);
|
|
47
46
|
this.itemUpdated = createEvent(this, "item-updated", 7);
|
|
48
47
|
/************
|
|
@@ -50,15 +49,39 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
50
49
|
************/
|
|
51
50
|
this.name = 'mg-menu-item';
|
|
52
51
|
this.navigationButton = 'mg-c-menu-item__navigation-button';
|
|
52
|
+
/************
|
|
53
|
+
* Props *
|
|
54
|
+
************/
|
|
55
|
+
/**
|
|
56
|
+
* Identifier is used to control mg-popover
|
|
57
|
+
*/
|
|
58
|
+
this.identifier = ze('mg-menu-item');
|
|
59
|
+
/**
|
|
60
|
+
* Define menu-item status.
|
|
61
|
+
*/
|
|
62
|
+
this.status = Status.VISIBLE;
|
|
63
|
+
/**
|
|
64
|
+
* Define menu-item content expanded.
|
|
65
|
+
*/
|
|
66
|
+
this.expanded = false;
|
|
67
|
+
/**********
|
|
68
|
+
* States *
|
|
69
|
+
*********/
|
|
70
|
+
/**
|
|
71
|
+
* Define menu-item size.
|
|
72
|
+
*/
|
|
73
|
+
this.size = 'medium';
|
|
74
|
+
/**
|
|
75
|
+
* Component button classes
|
|
76
|
+
*/
|
|
77
|
+
this.navigationButtonClassList = new Ge([this.navigationButton]);
|
|
78
|
+
/**
|
|
79
|
+
* Does component have children.
|
|
80
|
+
*/
|
|
81
|
+
this.hasChildren = false;
|
|
53
82
|
/***********
|
|
54
83
|
* Methods *
|
|
55
84
|
**********/
|
|
56
|
-
/**
|
|
57
|
-
* Toggle expanded prop value
|
|
58
|
-
*/
|
|
59
|
-
this.toggleExpanded = () => {
|
|
60
|
-
this.expanded = !this.expanded;
|
|
61
|
-
};
|
|
62
85
|
/**
|
|
63
86
|
* Does an Element have given Status
|
|
64
87
|
* @param mgMenuItemElement - to parse
|
|
@@ -66,6 +89,24 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
66
89
|
* @returns true if element with status is found
|
|
67
90
|
*/
|
|
68
91
|
this.hasStatus = (mgMenuItemElement, status) => mgMenuItemElement.status === status;
|
|
92
|
+
/**
|
|
93
|
+
* Condition to know if component should display a mg-popover
|
|
94
|
+
* @returns truthy if component display popover
|
|
95
|
+
*/
|
|
96
|
+
this.hasPopover = () => this.isDirection(Direction.HORIZONTAL) && (this.isInMainMenu && Array.from(this.element.children).some(element => !element.querySelector('[slot]')) || this.isItemMore) && this.href === undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Method to control if one of component children have active status
|
|
99
|
+
* @returns truthy if component has active child
|
|
100
|
+
*/
|
|
101
|
+
this.hasActiveChild = () => {
|
|
102
|
+
var _a;
|
|
103
|
+
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.ACTIVE) && !element.hasAttribute('hidden'));
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Is component an interactive item
|
|
107
|
+
* @returns truthy if element is clickable
|
|
108
|
+
*/
|
|
109
|
+
this.isInteractiveItem = () => this.hasChildren || !ye(this.href);
|
|
69
110
|
/**
|
|
70
111
|
* Is component contextual direction match the given direction
|
|
71
112
|
* @param direction - in parent menu
|
|
@@ -83,25 +124,37 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
83
124
|
childMenu !== null && Array.from(childMenu.children).some((subItem) => subItem.querySelector('mg-badge') !== null && !subItem.hasAttribute('hidden'));
|
|
84
125
|
};
|
|
85
126
|
/**
|
|
86
|
-
*
|
|
87
|
-
* @
|
|
127
|
+
* Update expanded prop
|
|
128
|
+
* @param newValue - expanded new value
|
|
88
129
|
*/
|
|
89
|
-
this.
|
|
90
|
-
|
|
91
|
-
|
|
130
|
+
this.updateExpanded = (newValue) => {
|
|
131
|
+
if (this.isInteractiveItem()) {
|
|
132
|
+
// item is always expanded in vertical menu when has active child
|
|
133
|
+
this.expanded = this.isDirection(Direction.VERTICAL) && this.hasActiveChild() || newValue;
|
|
134
|
+
}
|
|
92
135
|
};
|
|
93
136
|
/**
|
|
94
|
-
*
|
|
137
|
+
* Update status
|
|
138
|
+
* @param guard - status to exclude from process in addition to [Status.HIDDEN, Status.DISABLED] . Default: [].
|
|
139
|
+
*/
|
|
140
|
+
this.updateStatus = (guard = []) => {
|
|
141
|
+
if (![Status.HIDDEN, Status.DISABLED, ...guard].includes(this.status)) {
|
|
142
|
+
this.status = this.hasActiveChild() ? Status.ACTIVE : Status.VISIBLE;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Update slots
|
|
95
147
|
* @param guard - prevent action with guard. Default: false.
|
|
96
148
|
*/
|
|
97
|
-
this.
|
|
149
|
+
this.updateSlot = (guard = false) => {
|
|
98
150
|
// slot title AND metadata validation
|
|
99
151
|
// add title on label AND metada slots due to text-overflow on these element
|
|
100
|
-
if (Array.from(this.element.children).find(child => child.getAttribute('slot') === 'label') === undefined)
|
|
152
|
+
if (Array.from(this.element.children).find(child => child.getAttribute('slot') === 'label') === undefined) {
|
|
101
153
|
throw new Error(`<${this.name}> slot "label" is required.`);
|
|
154
|
+
}
|
|
102
155
|
['label', 'metadata'].forEach(slot => {
|
|
103
156
|
Array.from(this.element.querySelectorAll(`[slot="${slot}"]`)).forEach(element => {
|
|
104
|
-
if (!
|
|
157
|
+
if (!ye(element.textContent))
|
|
105
158
|
throw new Error(`<${this.name}> slot "${slot}" must have text content.`);
|
|
106
159
|
if ((guard && !element.hasAttribute('title')) || !guard)
|
|
107
160
|
element.setAttribute('title', element.textContent);
|
|
@@ -109,39 +162,23 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
109
162
|
});
|
|
110
163
|
};
|
|
111
164
|
/**
|
|
112
|
-
* Update
|
|
113
|
-
* @param guard -
|
|
165
|
+
* Update menu item
|
|
166
|
+
* @param guard - prevent action with guard
|
|
114
167
|
*/
|
|
115
|
-
this.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
// manage child menu listener
|
|
129
|
-
item.addEventListener('status-change', () => {
|
|
130
|
-
this.updateStatus();
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
});
|
|
168
|
+
this.updateItem = (guard) => {
|
|
169
|
+
const menu = this.element.closest('mg-menu');
|
|
170
|
+
this.isInMainMenu = menu !== null && this.element.parentElement.closest('mg-menu-item') === null;
|
|
171
|
+
// define element size
|
|
172
|
+
if ((menu === null || menu === void 0 ? void 0 : menu.size) !== undefined && !this.isItemMore)
|
|
173
|
+
this.size = menu.size;
|
|
174
|
+
else if (this.isItemMore)
|
|
175
|
+
this.size = this.element.dataset.size;
|
|
176
|
+
// when vertical main menu item contain an active item we force expanded
|
|
177
|
+
this.updateExpanded(this.expanded);
|
|
178
|
+
this.updateStatus(guard);
|
|
179
|
+
this.updatePopoverGuard();
|
|
180
|
+
this.updateDisplayNotificationBadge();
|
|
134
181
|
};
|
|
135
|
-
/**
|
|
136
|
-
* Get mg-popover identifier
|
|
137
|
-
* @returns generated mg-popover identifier
|
|
138
|
-
*/
|
|
139
|
-
this.getPopoverIdentifier = () => `${this.identifier}-popover`;
|
|
140
|
-
/**
|
|
141
|
-
* Condition to know if component should display a mg-popover
|
|
142
|
-
* @returns truthy if component display popover
|
|
143
|
-
*/
|
|
144
|
-
this.displayPopover = () => this.isDirection(Direction.HORIZONTAL) && this.hasChildren && this.href === undefined;
|
|
145
182
|
/************
|
|
146
183
|
* Handlers *
|
|
147
184
|
************/
|
|
@@ -150,106 +187,123 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
150
187
|
* @param event - click on element
|
|
151
188
|
*/
|
|
152
189
|
this.handleElementCLick = (event) => {
|
|
153
|
-
if (
|
|
190
|
+
if (this.status === Status.DISABLED) {
|
|
154
191
|
event.preventDefault();
|
|
155
192
|
event.stopPropagation();
|
|
156
193
|
}
|
|
157
|
-
//
|
|
158
|
-
|
|
159
|
-
|
|
194
|
+
// for non "poperized" menu-item we toggle expanded manualy
|
|
195
|
+
this.updateExpanded(!this.expanded);
|
|
196
|
+
// when item is the last clickable item we close the parent popover
|
|
197
|
+
if (!this.isInteractiveItem()) {
|
|
198
|
+
const closePopover = (element) => {
|
|
199
|
+
if (!element)
|
|
200
|
+
return;
|
|
201
|
+
else if (element !== this.element && element.expanded && element.shadowRoot.querySelector('mg-popover') !== null) {
|
|
202
|
+
element.expanded = false;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
closePopover(element.parentElement.closest('mg-menu-item'));
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
closePopover(this.element);
|
|
209
|
+
}
|
|
160
210
|
};
|
|
161
211
|
/**
|
|
162
212
|
* Handle popover element display-change event
|
|
163
213
|
* @param event - popover display event
|
|
164
214
|
*/
|
|
165
215
|
this.handlePopoverDisplay = (event) => {
|
|
166
|
-
this.
|
|
216
|
+
this.updateExpanded(event.detail);
|
|
167
217
|
};
|
|
168
218
|
/**
|
|
169
219
|
* Render slot
|
|
170
220
|
* @returns HTML Element
|
|
171
221
|
*/
|
|
172
222
|
this.renderSlot = () => h("slot", null);
|
|
173
|
-
this.identifier = qe('mg-menu-item');
|
|
174
|
-
this.href = undefined;
|
|
175
|
-
this.target = undefined;
|
|
176
|
-
this.status = Status.VISIBLE;
|
|
177
|
-
this.expanded = false;
|
|
178
|
-
this.size = 'medium';
|
|
179
|
-
this.navigationButtonClassList = new Xe([this.navigationButton]);
|
|
180
|
-
this.direction = undefined;
|
|
181
|
-
this.isInMainMenu = undefined;
|
|
182
|
-
this.isItemMore = undefined;
|
|
183
|
-
this.hasChildren = false;
|
|
184
|
-
this.displayNotificationBadge = undefined;
|
|
185
223
|
}
|
|
186
224
|
watchIdentifier(newValue) {
|
|
187
|
-
if (!
|
|
188
|
-
console.error(`<mg-menu-item> prop "identifier" value is invalid. Passed value: ${
|
|
225
|
+
if (!Ie(newValue)) {
|
|
226
|
+
console.error(`<mg-menu-item> prop "identifier" value is invalid. Passed value: ${Je(newValue)}.`);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
this.popoverIdentifier = `${this.identifier}-popover`;
|
|
189
230
|
}
|
|
190
231
|
}
|
|
191
232
|
watchTarget(newValue) {
|
|
192
233
|
if (newValue && !targets.includes(newValue)) {
|
|
193
|
-
throw new Error(`<mg-link> prop "target" must be one of: ${targets.join(', ')}. Passed value: ${
|
|
234
|
+
throw new Error(`<mg-link> prop "target" must be one of: ${targets.join(', ')}. Passed value: ${Je(newValue)}.`);
|
|
194
235
|
}
|
|
195
236
|
}
|
|
196
|
-
|
|
197
|
-
if (oldValue !== undefined)
|
|
237
|
+
watchStatus(newValue, oldValue) {
|
|
238
|
+
if (oldValue !== undefined)
|
|
198
239
|
this.navigationButtonClassList.delete(`${this.navigationButton}--${oldValue}`);
|
|
199
|
-
}
|
|
200
240
|
this.navigationButtonClassList.add(`${this.navigationButton}--${newValue}`);
|
|
201
|
-
this.statusChange.emit(newValue);
|
|
202
241
|
}
|
|
203
|
-
|
|
204
|
-
if (typeof newValue !== 'boolean')
|
|
205
|
-
throw new Error(`<${this.name}> prop "expanded" must be a boolean. Passed value: ${
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
item.expanded = false;
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
else if (this.element.querySelector(`${this.name}[status="${Status.ACTIVE}"]`) !== null) {
|
|
216
|
-
// - when expanded and contain an active item parents are expended too
|
|
217
|
-
subItems.forEach(item => {
|
|
218
|
-
if (this.hasStatus(item, Status.ACTIVE)) {
|
|
219
|
-
item.expanded = true;
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
}
|
|
242
|
+
watchExpanded(newValue) {
|
|
243
|
+
if (typeof newValue !== 'boolean') {
|
|
244
|
+
throw new Error(`<${this.name}> prop "expanded" must be a boolean. Passed value: ${Je(newValue)}.`);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
this.updateExpanded(newValue);
|
|
248
|
+
// when expanded all actives sub-items need to be expanded and non active closed
|
|
249
|
+
Array.from(this.element.querySelectorAll('mg-menu-item')).forEach(item => {
|
|
250
|
+
if (item !== this.element)
|
|
251
|
+
item.expanded = newValue ? this.hasStatus(item, Status.ACTIVE) : false;
|
|
252
|
+
});
|
|
223
253
|
}
|
|
224
254
|
}
|
|
225
|
-
|
|
226
|
-
|
|
255
|
+
watchSize(newValue, oldValue) {
|
|
256
|
+
if (oldValue !== undefined)
|
|
257
|
+
this.navigationButtonClassList.delete(`${this.navigationButton}--size-${oldValue}`);
|
|
227
258
|
this.navigationButtonClassList.add(`${this.navigationButton}--size-${newValue}`);
|
|
228
259
|
}
|
|
229
|
-
validateDirection(newValue) {
|
|
230
|
-
|
|
231
|
-
|
|
260
|
+
validateDirection(newValue, oldValue) {
|
|
261
|
+
if (oldValue !== undefined)
|
|
262
|
+
this.navigationButtonClassList.delete(`${this.navigationButton}--${oldValue}`);
|
|
232
263
|
this.navigationButtonClassList.add(`${this.navigationButton}--${newValue}`);
|
|
233
264
|
// manage all sub levels child menu-items level with data-level attribut
|
|
234
|
-
|
|
235
|
-
|
|
265
|
+
Array.from(this.element.querySelectorAll('mg-menu-item')).forEach(item => {
|
|
266
|
+
if (this.isDirection(Direction.VERTICAL, newValue)) {
|
|
236
267
|
item.dataset.level = `${(Number(item.dataset.level) || 1) + 1}`;
|
|
237
|
-
}
|
|
238
|
-
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
delete item.dataset.level;
|
|
271
|
+
}
|
|
272
|
+
});
|
|
239
273
|
}
|
|
240
274
|
validateHasChildren(newValue) {
|
|
241
275
|
if (newValue && this.element.href !== undefined) {
|
|
242
276
|
throw new Error(`<${this.name}> prop "href" is unauthorizied when element is a parent.`);
|
|
243
277
|
}
|
|
244
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* direction value in dataset
|
|
281
|
+
* @param newValue - new direction value
|
|
282
|
+
*/
|
|
283
|
+
// eslint-disable-next-line @stencil-community/no-unused-watch
|
|
284
|
+
watchDataStyleDirection(newValue) {
|
|
285
|
+
this.direction = newValue;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* has focus value in dataset
|
|
289
|
+
* @param newValue - new direction value
|
|
290
|
+
*/
|
|
291
|
+
// eslint-disable-next-line @stencil-community/no-unused-watch
|
|
292
|
+
watchDataHasFocus(newValue) {
|
|
293
|
+
if (!newValue)
|
|
294
|
+
this.updateExpanded(Boolean(newValue));
|
|
295
|
+
}
|
|
245
296
|
/**
|
|
246
297
|
* Render popover clickoutside guard for content slot
|
|
247
298
|
*/
|
|
248
299
|
updatePopoverGuard() {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
300
|
+
const subItem = this.element.querySelector('*:not([slot])');
|
|
301
|
+
if (!subItem)
|
|
302
|
+
return;
|
|
303
|
+
if (this.hasPopover())
|
|
304
|
+
subItem.dataset.mgPopoverGuard = this.popoverIdentifier;
|
|
305
|
+
else
|
|
306
|
+
delete subItem.dataset.mgPopoverGuard;
|
|
253
307
|
}
|
|
254
308
|
/*************
|
|
255
309
|
* Lifecycle *
|
|
@@ -263,13 +317,12 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
263
317
|
this.hasChildren = Array.from(this.element.children).some(child => !['image', 'information', 'label', 'metadata'].includes(child.getAttribute('slot')));
|
|
264
318
|
this.messages = initLocales(this.element).messages.menuItem;
|
|
265
319
|
this.isItemMore = this.element.dataset.overflowMore !== undefined;
|
|
266
|
-
//
|
|
267
|
-
this.
|
|
268
|
-
this.
|
|
320
|
+
// watchers
|
|
321
|
+
this.watchStatus(this.status);
|
|
322
|
+
this.watchExpanded(this.expanded);
|
|
269
323
|
this.watchTarget(this.target);
|
|
270
324
|
this.watchIdentifier(this.identifier);
|
|
271
|
-
|
|
272
|
-
this.validateSize(this.size);
|
|
325
|
+
this.watchSize(this.size);
|
|
273
326
|
}
|
|
274
327
|
/**
|
|
275
328
|
* Check if component slots configuration
|
|
@@ -277,40 +330,36 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
277
330
|
*/
|
|
278
331
|
componentDidLoad() {
|
|
279
332
|
// validation
|
|
280
|
-
this.
|
|
333
|
+
this.updateSlot(true);
|
|
281
334
|
// update props and states after componentDidLoad hook
|
|
282
335
|
// return a promise to process action only in the FIRST render().
|
|
283
336
|
// https://stenciljs.com/docs/component-lifecycle#componentwillload
|
|
284
337
|
return setTimeout(() => {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
this.
|
|
288
|
-
this.isInMainMenu = menu !== null && this.element.parentElement.closest('mg-menu-item') === null;
|
|
289
|
-
if ((menu === null || menu === void 0 ? void 0 : menu.size) !== undefined)
|
|
290
|
-
this.size = menu.size;
|
|
291
|
-
if (this.isItemMore)
|
|
292
|
-
this.size = this.element.dataset.size;
|
|
293
|
-
// when main menu item contain an active item it will get the active style
|
|
294
|
-
// AND if item is in vertical menu it will be expanded
|
|
295
|
-
if (this.hasActiveChild() && this.isInMainMenu)
|
|
296
|
-
this.expanded = this.isDirection(Direction.VERTICAL);
|
|
297
|
-
this.updateStatus([Status.ACTIVE]);
|
|
298
|
-
this.updateDisplayNotificationBadge();
|
|
299
|
-
this.updatePopoverGuard();
|
|
300
|
-
// manage child dom changes with mutationObserver and listners
|
|
301
|
-
this.initListeners();
|
|
338
|
+
this.watchDataStyleDirection(this.element.dataset.styleDirection);
|
|
339
|
+
this.watchDataHasFocus(this.element.dataset.hasFocus);
|
|
340
|
+
this.updateItem([Status.ACTIVE]);
|
|
302
341
|
// emit loaded event when component is fully loaded
|
|
303
342
|
this.itemLoaded.emit();
|
|
304
343
|
new MutationObserver(mutationsList => {
|
|
305
|
-
if (mutationsList.some(mutation => mutation.attributeName
|
|
344
|
+
if (mutationsList.some(mutation => ['hidden', 'status'].includes(mutation.attributeName)))
|
|
306
345
|
this.updateStatus(this.hasChildren ? undefined : [Status.ACTIVE]);
|
|
307
346
|
if (mutationsList.some(mutation => mutation.type === 'characterData'))
|
|
308
|
-
this.
|
|
309
|
-
|
|
347
|
+
this.updateSlot();
|
|
348
|
+
if (mutationsList.some(mutation => mutation.type === 'childList'))
|
|
349
|
+
this.updateItem();
|
|
310
350
|
this.itemUpdated.emit();
|
|
311
351
|
}).observe(this.element, { attributes: true, childList: true, characterData: true, subtree: true });
|
|
312
352
|
}, 0);
|
|
313
353
|
}
|
|
354
|
+
/**
|
|
355
|
+
* Emit event when component is updated
|
|
356
|
+
* @returns promise process wich emit the 'item-updated' event
|
|
357
|
+
*/
|
|
358
|
+
componentShouldUpdate() {
|
|
359
|
+
return et(() => {
|
|
360
|
+
this.itemUpdated.emit();
|
|
361
|
+
});
|
|
362
|
+
}
|
|
314
363
|
/**
|
|
315
364
|
* Render ineractive element
|
|
316
365
|
* @returns HTML Element
|
|
@@ -325,15 +374,6 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
325
374
|
[`${this.navigationButton}-chevron--rotate`]: this.expanded === true,
|
|
326
375
|
} }, h("mg-icon", { icon: "chevron-down" })))));
|
|
327
376
|
}
|
|
328
|
-
/**
|
|
329
|
-
* Emit event when component is updated
|
|
330
|
-
* @returns promise process wich emit the 'item-updated' event
|
|
331
|
-
*/
|
|
332
|
-
componentShouldUpdate() {
|
|
333
|
-
return tt(() => {
|
|
334
|
-
this.itemUpdated.emit();
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
377
|
/**
|
|
338
378
|
* Render
|
|
339
379
|
* @returns HTML Element
|
|
@@ -343,7 +383,7 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
343
383
|
['mg-c-menu-item__collapse-container']: true,
|
|
344
384
|
['mg-c-menu-item__collapse-container--first-level']: (this.isInMainMenu || this.isItemMore) && this.isDirection(Direction.HORIZONTAL),
|
|
345
385
|
});
|
|
346
|
-
return (h(Host, { key: '
|
|
386
|
+
return (h(Host, { key: '1bfbcc26638508e5fff8d0a9b0bd1956e06cb9ae', role: this.isItemMore ? 'presentation' : 'listitem' }, this.hasPopover() ? (h("mg-popover", { display: this.expanded, placement: "bottom-start", arrowHide: true, "onDisplay-change": this.handlePopoverDisplay, identifier: this.popoverIdentifier, "data-fallback-placement": "bottom-end" // use for the last element of the menu if it is placed on the right side
|
|
347
387
|
}, this.renderInteractiveElement(), h("div", { class: getContainerClasses(), slot: "content" }, this.renderSlot()))) : ([
|
|
348
388
|
this.renderInteractiveElement(),
|
|
349
389
|
h("div", { key: "vertical-container", class: getContainerClasses(), hidden: !this.expanded }, this.renderSlot()),
|
|
@@ -353,11 +393,13 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
353
393
|
static get watchers() { return {
|
|
354
394
|
"identifier": ["watchIdentifier"],
|
|
355
395
|
"target": ["watchTarget"],
|
|
356
|
-
"status": ["
|
|
357
|
-
"expanded": ["
|
|
358
|
-
"size": ["
|
|
396
|
+
"status": ["watchStatus"],
|
|
397
|
+
"expanded": ["watchExpanded"],
|
|
398
|
+
"size": ["watchSize"],
|
|
359
399
|
"direction": ["validateDirection"],
|
|
360
|
-
"hasChildren": ["validateHasChildren"]
|
|
400
|
+
"hasChildren": ["validateHasChildren"],
|
|
401
|
+
"data-style-direction": ["watchDataStyleDirection"],
|
|
402
|
+
"data-has-focus": ["watchDataHasFocus"]
|
|
361
403
|
}; }
|
|
362
404
|
static get style() { return MgMenuItemStyle0; }
|
|
363
405
|
}, [1, "mg-menu-item", {
|
|
@@ -376,11 +418,13 @@ const MgMenuItem = /*@__PURE__*/ proxyCustomElement(class MgMenuItem extends HTM
|
|
|
376
418
|
}, undefined, {
|
|
377
419
|
"identifier": ["watchIdentifier"],
|
|
378
420
|
"target": ["watchTarget"],
|
|
379
|
-
"status": ["
|
|
380
|
-
"expanded": ["
|
|
381
|
-
"size": ["
|
|
421
|
+
"status": ["watchStatus"],
|
|
422
|
+
"expanded": ["watchExpanded"],
|
|
423
|
+
"size": ["watchSize"],
|
|
382
424
|
"direction": ["validateDirection"],
|
|
383
|
-
"hasChildren": ["validateHasChildren"]
|
|
425
|
+
"hasChildren": ["validateHasChildren"],
|
|
426
|
+
"data-style-direction": ["watchDataStyleDirection"],
|
|
427
|
+
"data-has-focus": ["watchDataHasFocus"]
|
|
384
428
|
}]);
|
|
385
429
|
function defineCustomElement() {
|
|
386
430
|
if (typeof customElements === "undefined") {
|