@mgdis/mg-components 5.27.0 → 5.27.2
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-1d560837.js → index-00072168.js} +46 -46
- package/dist/cjs/index-00072168.js.map +1 -0
- package/dist/cjs/{index-7072369e.js → index-7e27c7ae.js} +34 -10
- package/dist/cjs/index-7e27c7ae.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{mg-action-more_35.cjs.entry.js → mg-action-more_36.cjs.entry.js} +513 -179
- package/dist/cjs/mg-action-more_36.cjs.entry.js.map +1 -0
- 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 +4 -4
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/atoms/mg-button/mg-button.js +4 -1
- package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -1
- package/dist/collection/components/atoms/mg-card/mg-card.js +4 -1
- package/dist/collection/components/atoms/mg-card/mg-card.js.map +1 -1
- package/dist/collection/components/atoms/mg-character-left/mg-character-left.js +1 -1
- package/dist/collection/components/atoms/mg-divider/mg-divider.js +1 -1
- package/dist/collection/components/atoms/mg-input-title/mg-input-title.js +4 -1
- package/dist/collection/components/atoms/mg-input-title/mg-input-title.js.map +1 -1
- package/dist/collection/components/atoms/mg-tag/mg-tag.js +4 -1
- 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 +4 -1
- 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.conf.js +1 -0
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js.map +1 -1
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +13 -3
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input/mg-input.js +7 -1
- 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 +2 -2
- 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 +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js +1 -0
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js.map +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +42 -11
- 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 +6 -3
- 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 +2 -2
- 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 +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +2 -2
- 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 +12 -3
- 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 +2 -2
- 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 +5 -1
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -1
- package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +24 -22
- 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 +34 -3
- 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 +3 -3
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -1
- package/dist/collection/components/molecules/mg-details/mg-details.js +5 -1
- package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -1
- package/dist/collection/components/molecules/mg-form/mg-form.js +5 -1
- 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 +8 -3
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +1 -1
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +10 -4
- package/dist/collection/components/molecules/mg-item-more/mg-item-more.js.map +1 -1
- package/dist/collection/components/molecules/mg-loader/mg-loader.js +1 -1
- package/dist/collection/components/molecules/mg-message/mg-message.js +5 -1
- package/dist/collection/components/molecules/mg-message/mg-message.js.map +1 -1
- package/dist/collection/components/molecules/mg-modal/mg-modal.js +6 -2
- package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -1
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +3 -3
- package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -1
- package/dist/collection/components/molecules/mg-panel/mg-panel.js +5 -1
- 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 +4 -1
- 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 +5 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -1
- package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +1 -1
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +4 -1
- package/dist/collection/components/molecules/mg-tabs/mg-tabs.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 +20 -16
- package/dist/components/mg-action-more.js.map +1 -1
- package/dist/components/mg-badge2.js +3 -3
- package/dist/components/mg-button2.js +5 -5
- package/dist/components/mg-button2.js.map +1 -1
- package/dist/components/mg-card2.js +3 -3
- package/dist/components/mg-card2.js.map +1 -1
- package/dist/components/mg-character-left2.js +1 -1
- package/dist/components/mg-details.js +3 -3
- package/dist/components/mg-details.js.map +1 -1
- package/dist/components/mg-divider.js +1 -1
- package/dist/components/mg-form.js +4 -4
- package/dist/components/mg-form.js.map +1 -1
- package/dist/components/mg-icon2.js +2 -2
- package/dist/components/mg-illustrated-message.js +5 -5
- package/dist/components/mg-illustrated-message.js.map +1 -1
- package/dist/components/mg-input-checkbox-paginated2.js +2 -2
- package/dist/components/mg-input-checkbox-paginated2.js.map +1 -1
- package/dist/components/mg-input-checkbox.js +5 -5
- package/dist/components/mg-input-date.js +49 -18
- package/dist/components/mg-input-date.js.map +1 -1
- package/dist/components/mg-input-numeric.js +7 -7
- package/dist/components/mg-input-numeric.js.map +1 -1
- package/dist/components/mg-input-password.js +5 -5
- package/dist/components/mg-input-password.js.map +1 -1
- package/dist/components/mg-input-radio.js +5 -5
- package/dist/components/mg-input-select2.js +8 -8
- package/dist/components/mg-input-select2.js.map +1 -1
- package/dist/components/mg-input-text2.js +15 -9
- package/dist/components/mg-input-text2.js.map +1 -1
- package/dist/components/mg-input-textarea.js +8 -8
- package/dist/components/mg-input-textarea.js.map +1 -1
- package/dist/components/mg-input-title2.js +3 -3
- package/dist/components/mg-input-title2.js.map +1 -1
- package/dist/components/mg-input-toggle.js +5 -5
- package/dist/components/mg-input-toggle.js.map +1 -1
- package/dist/components/mg-input2.js +4 -4
- package/dist/components/mg-input2.js.map +1 -1
- package/dist/components/mg-item-more.js +1 -339
- package/dist/components/mg-item-more.js.map +1 -1
- package/dist/components/mg-item-more2.js +592 -0
- package/dist/components/mg-item-more2.js.map +1 -0
- package/dist/components/mg-loader.js +3 -3
- package/dist/components/mg-menu-item2.js +30 -8
- package/dist/components/mg-menu-item2.js.map +1 -1
- package/dist/components/mg-menu.js +1 -1
- package/dist/components/mg-message.js +4 -4
- package/dist/components/mg-message.js.map +1 -1
- package/dist/components/mg-modal.js +8 -8
- package/dist/components/mg-modal.js.map +1 -1
- package/dist/components/mg-pagination2.js +5 -5
- package/dist/components/mg-pagination2.js.map +1 -1
- package/dist/components/mg-panel.js +5 -5
- package/dist/components/mg-panel.js.map +1 -1
- package/dist/components/mg-popover-content2.js +4 -4
- package/dist/components/mg-popover-content2.js.map +1 -1
- package/dist/components/mg-popover2.js +4 -4
- package/dist/components/mg-popover2.js.map +1 -1
- package/dist/components/mg-skip-links.js +3 -3
- package/dist/components/mg-tabs.js +7 -7
- package/dist/components/mg-tabs.js.map +1 -1
- package/dist/components/mg-tag.js +4 -4
- package/dist/components/mg-tag.js.map +1 -1
- package/dist/components/mg-tooltip-content2.js +1 -1
- package/dist/components/mg-tooltip-content2.js.map +1 -1
- package/dist/components/mg-tooltip2.js +16 -9
- package/dist/components/mg-tooltip2.js.map +1 -1
- package/dist/esm/{index-445fc2a0.js → index-8d5d1bfd.js} +44 -44
- package/dist/esm/index-8d5d1bfd.js.map +1 -0
- package/dist/esm/{index-629a42c7.js → index-e479d5ae.js} +34 -10
- package/dist/esm/index-e479d5ae.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{mg-action-more_35.entry.js → mg-action-more_36.entry.js} +501 -168
- package/dist/esm/mg-action-more_36.entry.js.map +1 -0
- package/dist/esm/mg-components.js +4 -4
- package/dist/esm/mg-components.js.map +1 -1
- package/dist/esm/mg-loader.entry.js +4 -4
- 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-7315d4a6.js +3 -0
- package/dist/mg-components/p-7315d4a6.js.map +1 -0
- package/dist/mg-components/p-8800813b.js +2 -0
- package/dist/mg-components/p-8800813b.js.map +1 -0
- package/dist/mg-components/{p-fe347f48.entry.js → p-99e2f42a.entry.js} +2 -2
- package/dist/mg-components/p-f9ac8927.entry.js +2 -0
- package/dist/mg-components/p-f9ac8927.entry.js.map +1 -0
- package/dist/types/components/atoms/mg-button/mg-button.d.ts +3 -0
- package/dist/types/components/atoms/mg-card/mg-card.d.ts +3 -0
- package/dist/types/components/atoms/mg-input-title/mg-input-title.d.ts +3 -0
- package/dist/types/components/atoms/mg-tag/mg-tag.d.ts +3 -0
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.d.ts +3 -0
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip.conf.d.ts +2 -1
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +4 -0
- package/dist/types/components/molecules/inputs/mg-input/mg-input.d.ts +6 -0
- package/dist/types/components/molecules/inputs/mg-input-date/mg-input-date.conf.d.ts +2 -1
- package/dist/types/components/molecules/inputs/mg-input-date/mg-input-date.d.ts +11 -0
- package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +3 -0
- package/dist/types/components/molecules/inputs/mg-input-text/mg-input-text.d.ts +3 -0
- package/dist/types/components/molecules/inputs/mg-input-toggle/mg-input-toggle.d.ts +4 -0
- package/dist/types/components/molecules/menu/mg-menu/mg-menu.d.ts +3 -0
- package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +15 -0
- package/dist/types/components/molecules/mg-popover/mg-popover-content/mg-popover-content.d.ts +3 -0
- package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +4 -0
- package/dist/types/components/molecules/mg-tabs/mg-tabs.d.ts +3 -0
- package/dist/types/components.d.ts +5 -0
- package/ide/intellij/web-types.json +20 -81
- package/ide/vscode/html-custom-data.json +14 -74
- package/package.json +25 -25
- package/dist/cjs/index-1d560837.js.map +0 -1
- package/dist/cjs/index-7072369e.js.map +0 -1
- package/dist/cjs/mg-action-more_35.cjs.entry.js.map +0 -1
- package/dist/cjs/mg-item-more.cjs.entry.js +0 -273
- package/dist/cjs/mg-item-more.cjs.entry.js.map +0 -1
- package/dist/cjs/mg-menu.conf-c291eee6.js +0 -18
- package/dist/cjs/mg-menu.conf-c291eee6.js.map +0 -1
- package/dist/components/mg-menu.conf.js +0 -16
- package/dist/components/mg-menu.conf.js.map +0 -1
- package/dist/components/mg-menu2.js +0 -202
- package/dist/components/mg-menu2.js.map +0 -1
- package/dist/esm/index-445fc2a0.js.map +0 -1
- package/dist/esm/index-629a42c7.js.map +0 -1
- package/dist/esm/mg-action-more_35.entry.js.map +0 -1
- package/dist/esm/mg-item-more.entry.js +0 -269
- package/dist/esm/mg-item-more.entry.js.map +0 -1
- package/dist/esm/mg-menu.conf-9609bcb2.js +0 -16
- package/dist/esm/mg-menu.conf-9609bcb2.js.map +0 -1
- package/dist/mg-components/p-3ebe6845.js +0 -2
- package/dist/mg-components/p-3ebe6845.js.map +0 -1
- package/dist/mg-components/p-6735e4b2.entry.js +0 -2
- package/dist/mg-components/p-6735e4b2.entry.js.map +0 -1
- package/dist/mg-components/p-9dfaa41f.js +0 -3
- package/dist/mg-components/p-9dfaa41f.js.map +0 -1
- package/dist/mg-components/p-b3e0f7b3.entry.js +0 -2
- package/dist/mg-components/p-b3e0f7b3.entry.js.map +0 -1
- package/dist/mg-components/p-fe935e54.js +0 -2
- package/dist/mg-components/p-fe935e54.js.map +0 -1
- /package/dist/mg-components/{p-fe347f48.entry.js.map → p-99e2f42a.entry.js.map} +0 -0
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { N as Ne } from './index.es.js';
|
|
3
|
+
import { d as defineCustomElement$4, D as Direction, s as sizes } from './mg-menu-item2.js';
|
|
4
|
+
import { i as initLocales } from './index2.js';
|
|
5
|
+
import { d as defineCustomElement$8 } from './mg-badge2.js';
|
|
6
|
+
import { d as defineCustomElement$7 } from './mg-button2.js';
|
|
7
|
+
import { d as defineCustomElement$6 } from './mg-card2.js';
|
|
8
|
+
import { d as defineCustomElement$5 } from './mg-icon2.js';
|
|
9
|
+
import { d as defineCustomElement$3 } from './mg-popover2.js';
|
|
10
|
+
import { d as defineCustomElement$2 } from './mg-popover-content2.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* MgItemMore type guard
|
|
14
|
+
* @param element - element to control type
|
|
15
|
+
* @returns truthy if element is mg-item-more
|
|
16
|
+
*/
|
|
17
|
+
const isMgItemMore = (element) => element.nodeName === 'MG-ITEM-MORE';
|
|
18
|
+
var OverflowBehaviorElements;
|
|
19
|
+
(function (OverflowBehaviorElements) {
|
|
20
|
+
OverflowBehaviorElements["BASE_INDEX"] = "data-overflow-base-index";
|
|
21
|
+
OverflowBehaviorElements["PROXY_INDEX"] = "data-overflow-proxy-index";
|
|
22
|
+
})(OverflowBehaviorElements || (OverflowBehaviorElements = {}));
|
|
23
|
+
class OverflowBehavior {
|
|
24
|
+
constructor(element, render) {
|
|
25
|
+
this.element = element;
|
|
26
|
+
this.render = render;
|
|
27
|
+
/**********
|
|
28
|
+
* Public *
|
|
29
|
+
**********/
|
|
30
|
+
/**
|
|
31
|
+
* Disconnect ResizeObserver
|
|
32
|
+
*/
|
|
33
|
+
this.disconnect = () => {
|
|
34
|
+
this._resizeObserver.disconnect();
|
|
35
|
+
};
|
|
36
|
+
/************
|
|
37
|
+
* Internal *
|
|
38
|
+
************/
|
|
39
|
+
/**
|
|
40
|
+
* run overflow behavior
|
|
41
|
+
* @param width - width of the container. Optional.
|
|
42
|
+
*/
|
|
43
|
+
this.run = (width) => {
|
|
44
|
+
if (this._moreElement === undefined) {
|
|
45
|
+
// set moreElement
|
|
46
|
+
this._moreElement = this.render();
|
|
47
|
+
// set children
|
|
48
|
+
this._baseChildren = this.getInteractiveItems(this.element);
|
|
49
|
+
if (isMgItemMore(this._moreElement)) {
|
|
50
|
+
this._proxyChildren = this.getInteractiveItems(this._moreElement.shadowRoot.querySelector('mg-menu'));
|
|
51
|
+
}
|
|
52
|
+
// update children
|
|
53
|
+
this._baseChildren.forEach((child, index) => {
|
|
54
|
+
child.setAttribute(OverflowBehaviorElements.BASE_INDEX, `${index}`);
|
|
55
|
+
// set moreElement children
|
|
56
|
+
this._proxyChildren[index].setAttribute(OverflowBehaviorElements.PROXY_INDEX, `${index}`);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (width !== undefined)
|
|
60
|
+
this.updateDisplayedItems(width);
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Get interactive children filtred by authorized nodeName ['MG-MENU-ITEM', 'MG-BUTTON']
|
|
64
|
+
* @param element - element to parse
|
|
65
|
+
* @returns children
|
|
66
|
+
*/
|
|
67
|
+
this.getInteractiveItems = (element) => { var _a; return (((_a = element.children) === null || _a === void 0 ? void 0 : _a.length) > 0 ? Array.from(element.children) : []).filter(element => ['MG-MENU-ITEM', 'MG-BUTTON'].includes(element.nodeName)); };
|
|
68
|
+
/**
|
|
69
|
+
* Update displayed items in container from a given available space
|
|
70
|
+
* @param availableWidth - available width in container to display child items
|
|
71
|
+
*/
|
|
72
|
+
this.updateDisplayedItems = (availableWidth) => {
|
|
73
|
+
this.restoreItems();
|
|
74
|
+
const acc = { accWidth: 0, previousItem: null };
|
|
75
|
+
[...this._baseChildren, this._moreElement].forEach((child) => {
|
|
76
|
+
acc.accWidth += child.offsetWidth;
|
|
77
|
+
const hasPreviuosItem = acc.previousItem !== null;
|
|
78
|
+
const isPreviousItemHidden = hasPreviuosItem && acc.previousItem.getAttribute('hidden') !== null;
|
|
79
|
+
// if previous item is hidden AND is NOT more element we hidde current
|
|
80
|
+
// OR if item has an overflow we hidde current
|
|
81
|
+
// OR if current item is more element AND have NOT previous hidden items, current more element item is an hidden item
|
|
82
|
+
// ELSE current is a display item
|
|
83
|
+
this.toggleItem(child, (isPreviousItemHidden && !this.isMoreElement(child)) || this.isOverflowElement(acc.accWidth, child, availableWidth) || (this.isMoreElement(child) && !isPreviousItemHidden));
|
|
84
|
+
// update previous item with current item
|
|
85
|
+
acc.previousItem = child;
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Utility method to know if item overflow partialy or totaly in the container
|
|
90
|
+
* @param cumulateWidth - previous sibling elements cumulate width + item width
|
|
91
|
+
* @param item - item HTML element
|
|
92
|
+
* @param availableWidth - container available width
|
|
93
|
+
* @returns truthy if element is overflow
|
|
94
|
+
*/
|
|
95
|
+
this.isOverflowElement = (cumulateWidth, item, availableWidth) => {
|
|
96
|
+
if (item.previousElementSibling === null || this.isMoreElement(item))
|
|
97
|
+
return false;
|
|
98
|
+
else if (!this.isMoreElement(item.nextElementSibling))
|
|
99
|
+
return cumulateWidth + this._moreElement.offsetWidth > availableWidth;
|
|
100
|
+
else
|
|
101
|
+
return cumulateWidth > availableWidth;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Utility method to know if a given element is the 'MORE' element
|
|
105
|
+
* @param element - element to match with 'MORE' element
|
|
106
|
+
* @returns truthy if element is the 'MORE' element
|
|
107
|
+
*/
|
|
108
|
+
this.isMoreElement = (element) => element.nodeName === 'MG-ITEM-MORE';
|
|
109
|
+
/**
|
|
110
|
+
* Toggle display item element
|
|
111
|
+
* @param item - item to control
|
|
112
|
+
* @param isHidden - is item hidden
|
|
113
|
+
*/
|
|
114
|
+
this.toggleItem = (item, isHidden) => {
|
|
115
|
+
const mgActionMenuindex = Number(item.getAttribute(OverflowBehaviorElements.BASE_INDEX));
|
|
116
|
+
if (this.isMoreElement(item))
|
|
117
|
+
this.toggleElement(this._moreElement, isHidden);
|
|
118
|
+
else if (mgActionMenuindex >= 0) {
|
|
119
|
+
this.toggleElement(item, isHidden);
|
|
120
|
+
this.toggleElement(this._proxyChildren[mgActionMenuindex], !isHidden);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Toggle element's hidde attribute
|
|
125
|
+
* @param element - element to toggle
|
|
126
|
+
* @param isHidden - element is hidden
|
|
127
|
+
*/
|
|
128
|
+
this.toggleElement = (element, isHidden) => {
|
|
129
|
+
if (isHidden)
|
|
130
|
+
element.setAttribute('hidden', '');
|
|
131
|
+
else
|
|
132
|
+
element.removeAttribute('hidden');
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Remove hidden attributes on all items
|
|
136
|
+
*/
|
|
137
|
+
this.restoreItems = () => {
|
|
138
|
+
[...this._baseChildren, this._moreElement].forEach(item => item.removeAttribute('hidden'));
|
|
139
|
+
};
|
|
140
|
+
if (this._resizeObserver === undefined) {
|
|
141
|
+
// add resize observer
|
|
142
|
+
this._resizeObserver = new ResizeObserver(entries => {
|
|
143
|
+
entries.forEach(entry => {
|
|
144
|
+
this.run(entry.contentRect.width);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
this._resizeObserver.observe(this.element);
|
|
148
|
+
}
|
|
149
|
+
this.run();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const mgMenuCss = ".mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){*{animation:none !important;transition:none !important}}:host{display:flex;background-color:hsl(var(--mg-menu-background-color-hsl, var(--color-light)))}:host([direction=vertical]){height:100%;flex-direction:column;overflow-y:auto}";
|
|
154
|
+
const MgMenuStyle0 = mgMenuCss;
|
|
155
|
+
|
|
156
|
+
const MgMenu = /*@__PURE__*/ proxyCustomElement(class MgMenu extends HTMLElement {
|
|
157
|
+
constructor() {
|
|
158
|
+
super();
|
|
159
|
+
this.__registerHost();
|
|
160
|
+
this.__attachShadow();
|
|
161
|
+
/************
|
|
162
|
+
* Internal *
|
|
163
|
+
************/
|
|
164
|
+
this.name = 'mg-menu';
|
|
165
|
+
this.menuItems = [];
|
|
166
|
+
this.focusedMenuItem = 0;
|
|
167
|
+
/*************
|
|
168
|
+
* Methods *
|
|
169
|
+
*************/
|
|
170
|
+
/**
|
|
171
|
+
* Close matching menu-item
|
|
172
|
+
* @param item - menu-item to close
|
|
173
|
+
* @param condition - addionnal condition
|
|
174
|
+
*/
|
|
175
|
+
this.closeMenuItem = (item, condition) => {
|
|
176
|
+
if (!this.isChildMenu && condition) {
|
|
177
|
+
item.expanded = false;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* get mg-item-more element
|
|
182
|
+
* @returns mg-item-more element
|
|
183
|
+
*/
|
|
184
|
+
this.getItemMore = () => this.element.querySelector('mg-item-more');
|
|
185
|
+
/**
|
|
186
|
+
* get mg-item-more child mg-menu-item element
|
|
187
|
+
* @returns mg-menu-item element
|
|
188
|
+
*/
|
|
189
|
+
this.getItemMoreMenuItem = () => { var _a, _b; return (_b = (_a = this.getItemMore()) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('mg-menu-item'); };
|
|
190
|
+
/**
|
|
191
|
+
* Set item listend
|
|
192
|
+
* @param item - mg-menu-item element
|
|
193
|
+
* @param index - number
|
|
194
|
+
*/
|
|
195
|
+
this.setItemListener = (item, index) => {
|
|
196
|
+
['click', 'focus'].forEach(trigger => {
|
|
197
|
+
item.shadowRoot.querySelector('button,a').addEventListener(trigger, () => {
|
|
198
|
+
this.focusedMenuItem = index;
|
|
199
|
+
// reset expanded on previous active menu item
|
|
200
|
+
(this.getItemMoreMenuItem() ? [...this.menuItems, this.getItemMoreMenuItem()] : this.menuItems).forEach((item, index) => {
|
|
201
|
+
this.closeMenuItem(item, index !== this.focusedMenuItem);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Store menu-items on component init and add listeners
|
|
208
|
+
*/
|
|
209
|
+
this.initMenuItemsListeners = () => {
|
|
210
|
+
// add listeners on menu item and edit index
|
|
211
|
+
this.menuItems.forEach((item, index) => {
|
|
212
|
+
this.setItemListener(item, index);
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* Handle item-loaded event on mg-item-more element
|
|
217
|
+
*/
|
|
218
|
+
this.handleItemLoaded = () => {
|
|
219
|
+
this.setItemListener(this.getItemMoreMenuItem(), this.menuItems.length);
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* render mg-item-more
|
|
223
|
+
*/
|
|
224
|
+
this.renderMgItemMore = () => {
|
|
225
|
+
if (this.direction !== Direction.HORIZONTAL || this.isChildMenu) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// /!\ externalise item tag name to get a string type and bypass type checking when value is used in next createElement
|
|
229
|
+
// by doing this we prevent stencil to generate a circular dependencies graph at build time with mg-item-more component.
|
|
230
|
+
let mgItemMore = this.getItemMore();
|
|
231
|
+
if (!mgItemMore) {
|
|
232
|
+
mgItemMore = document.createElement('mg-item-more');
|
|
233
|
+
mgItemMore.addEventListener('item-loaded', this.handleItemLoaded);
|
|
234
|
+
Object.assign(mgItemMore, this.itemmore || {});
|
|
235
|
+
this.element.appendChild(mgItemMore);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
Object.defineProperties(mgItemMore, this.itemmore || {});
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
this.label = undefined;
|
|
242
|
+
this.direction = Direction.HORIZONTAL;
|
|
243
|
+
this.itemmore = undefined;
|
|
244
|
+
this.size = 'regular';
|
|
245
|
+
this.isChildMenu = undefined;
|
|
246
|
+
}
|
|
247
|
+
validateLabel(newValue) {
|
|
248
|
+
if (newValue === undefined) {
|
|
249
|
+
throw new Error(`<${this.name}> prop "label" is required.`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
validateDirection(newValue) {
|
|
253
|
+
if (![Direction.VERTICAL, Direction.HORIZONTAL].includes(newValue)) {
|
|
254
|
+
throw new Error(`<${this.name}> prop "direction" must be one of: ${Direction.HORIZONTAL}, ${Direction.VERTICAL}.`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
validateItemMore(newValue) {
|
|
258
|
+
if (newValue !== undefined && this.direction !== Direction.HORIZONTAL) {
|
|
259
|
+
throw new Error(`<${this.name}> prop "itemmore" must be paired with direction ${Direction.HORIZONTAL}.`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
validateSize(newValue) {
|
|
263
|
+
if (!sizes.includes(newValue)) {
|
|
264
|
+
throw new Error(`<${this.name}> prop "size" must be one of: ${sizes.join(', ')}.`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/*************
|
|
268
|
+
* Lifecycle *
|
|
269
|
+
*************/
|
|
270
|
+
/**
|
|
271
|
+
* Validate props
|
|
272
|
+
*/
|
|
273
|
+
componentWillLoad() {
|
|
274
|
+
this.validateDirection(this.direction);
|
|
275
|
+
this.validateLabel(this.label);
|
|
276
|
+
this.validateItemMore(this.itemmore);
|
|
277
|
+
this.validateSize(this.size);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Check if component slots configuration
|
|
281
|
+
* @returns timeout
|
|
282
|
+
*/
|
|
283
|
+
componentDidLoad() {
|
|
284
|
+
// update props and states after componentDidLoad hook
|
|
285
|
+
// return a promise to process action only in the FIRST render().
|
|
286
|
+
// https://stenciljs.com/docs/component-lifecycle#componentwillload
|
|
287
|
+
return setTimeout(() => {
|
|
288
|
+
// store all menu-items
|
|
289
|
+
this.menuItems = Array.from(this.element.children).filter(child => child.nodeName === 'MG-MENU-ITEM');
|
|
290
|
+
this.isChildMenu = this.element.closest('mg-menu-item') !== null;
|
|
291
|
+
// add mg-item-more to manage OverflowBehavior
|
|
292
|
+
// when all props, states and DOM are already rendered we can render the mg-item-more
|
|
293
|
+
this.renderMgItemMore();
|
|
294
|
+
// then use mutation observer on children to improve reactivity
|
|
295
|
+
new MutationObserver(() => {
|
|
296
|
+
this.renderMgItemMore();
|
|
297
|
+
}).observe(this.element, { childList: true });
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Add listeners to items
|
|
302
|
+
*/
|
|
303
|
+
componentDidRender() {
|
|
304
|
+
this.initMenuItemsListeners();
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Render
|
|
308
|
+
* @returns HTML Element
|
|
309
|
+
*/
|
|
310
|
+
render() {
|
|
311
|
+
return (h(Host, { key: 'a5fe4a1a61b4255cc9a06217f30ef2f154fd797d', role: "list", "aria-label": this.label }, h("slot", { key: '37de5388d1cca3fa46dfbb73ab26ba6e299940b5' })));
|
|
312
|
+
}
|
|
313
|
+
get element() { return this; }
|
|
314
|
+
static get watchers() { return {
|
|
315
|
+
"label": ["validateLabel"],
|
|
316
|
+
"direction": ["validateDirection"],
|
|
317
|
+
"itemmore": ["validateItemMore"],
|
|
318
|
+
"size": ["validateSize"]
|
|
319
|
+
}; }
|
|
320
|
+
static get style() { return MgMenuStyle0; }
|
|
321
|
+
}, [1, "mg-menu", {
|
|
322
|
+
"label": [1],
|
|
323
|
+
"direction": [513],
|
|
324
|
+
"itemmore": [16],
|
|
325
|
+
"size": [1],
|
|
326
|
+
"isChildMenu": [32]
|
|
327
|
+
}, undefined, {
|
|
328
|
+
"label": ["validateLabel"],
|
|
329
|
+
"direction": ["validateDirection"],
|
|
330
|
+
"itemmore": ["validateItemMore"],
|
|
331
|
+
"size": ["validateSize"]
|
|
332
|
+
}]);
|
|
333
|
+
function defineCustomElement$1() {
|
|
334
|
+
if (typeof customElements === "undefined") {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
const components = ["mg-menu", "mg-badge", "mg-button", "mg-card", "mg-icon", "mg-item-more", "mg-menu", "mg-menu-item", "mg-popover", "mg-popover-content"];
|
|
338
|
+
components.forEach(tagName => { switch (tagName) {
|
|
339
|
+
case "mg-menu":
|
|
340
|
+
if (!customElements.get(tagName)) {
|
|
341
|
+
customElements.define(tagName, MgMenu);
|
|
342
|
+
}
|
|
343
|
+
break;
|
|
344
|
+
case "mg-badge":
|
|
345
|
+
if (!customElements.get(tagName)) {
|
|
346
|
+
defineCustomElement$8();
|
|
347
|
+
}
|
|
348
|
+
break;
|
|
349
|
+
case "mg-button":
|
|
350
|
+
if (!customElements.get(tagName)) {
|
|
351
|
+
defineCustomElement$7();
|
|
352
|
+
}
|
|
353
|
+
break;
|
|
354
|
+
case "mg-card":
|
|
355
|
+
if (!customElements.get(tagName)) {
|
|
356
|
+
defineCustomElement$6();
|
|
357
|
+
}
|
|
358
|
+
break;
|
|
359
|
+
case "mg-icon":
|
|
360
|
+
if (!customElements.get(tagName)) {
|
|
361
|
+
defineCustomElement$5();
|
|
362
|
+
}
|
|
363
|
+
break;
|
|
364
|
+
case "mg-item-more":
|
|
365
|
+
if (!customElements.get(tagName)) {
|
|
366
|
+
defineCustomElement();
|
|
367
|
+
}
|
|
368
|
+
break;
|
|
369
|
+
case "mg-menu":
|
|
370
|
+
if (!customElements.get(tagName)) {
|
|
371
|
+
defineCustomElement$1();
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
case "mg-menu-item":
|
|
375
|
+
if (!customElements.get(tagName)) {
|
|
376
|
+
defineCustomElement$4();
|
|
377
|
+
}
|
|
378
|
+
break;
|
|
379
|
+
case "mg-popover":
|
|
380
|
+
if (!customElements.get(tagName)) {
|
|
381
|
+
defineCustomElement$3();
|
|
382
|
+
}
|
|
383
|
+
break;
|
|
384
|
+
case "mg-popover-content":
|
|
385
|
+
if (!customElements.get(tagName)) {
|
|
386
|
+
defineCustomElement$2();
|
|
387
|
+
}
|
|
388
|
+
break;
|
|
389
|
+
} });
|
|
390
|
+
}
|
|
391
|
+
defineCustomElement$1();
|
|
392
|
+
|
|
393
|
+
const mgItemMoreCss = ".mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){*{animation:none !important;transition:none !important}}:host:not([hidden]){display:flex}";
|
|
394
|
+
const MgItemMoreStyle0 = mgItemMoreCss;
|
|
395
|
+
|
|
396
|
+
const MgItemMore = /*@__PURE__*/ proxyCustomElement(class MgItemMore extends HTMLElement {
|
|
397
|
+
constructor() {
|
|
398
|
+
super();
|
|
399
|
+
this.__registerHost();
|
|
400
|
+
this.__attachShadow();
|
|
401
|
+
/************
|
|
402
|
+
* Internal *
|
|
403
|
+
************/
|
|
404
|
+
this.name = 'mg-item-more';
|
|
405
|
+
this.canRenderMgMenuItemOverflowElement = true;
|
|
406
|
+
/***********
|
|
407
|
+
* Methods *
|
|
408
|
+
***********/
|
|
409
|
+
/**
|
|
410
|
+
* render mg-item-more overflow element
|
|
411
|
+
* @returns mg-item-more element
|
|
412
|
+
*/
|
|
413
|
+
this.renderMgMenuItemOverflowElement = () => {
|
|
414
|
+
// create menu items proxy element from item clones
|
|
415
|
+
this.parentMenuItems.forEach((child) => {
|
|
416
|
+
this.moreElementMenuItem.querySelector('mg-menu').appendChild(child.cloneNode(true));
|
|
417
|
+
});
|
|
418
|
+
const allMenuItem = Array.from(this.parentMenu.querySelectorAll('mg-menu-item:not([data-overflow-more])'));
|
|
419
|
+
Array.from(this.moreElementMenuItem.querySelectorAll('mg-menu-item:not([data-overflow-more])')).forEach((proxy, index) => {
|
|
420
|
+
const proxified = allMenuItem[index];
|
|
421
|
+
// manage click on proxy to mirror it on initial element
|
|
422
|
+
proxy.addEventListener('click', () => {
|
|
423
|
+
// be carefull to use element.click() method instead of dispatchEvent to ensure bubbles outside shadowDom
|
|
424
|
+
const navElement = allMenuItem[index].shadowRoot.querySelector('a, button');
|
|
425
|
+
if (navElement instanceof HTMLButtonElement || navElement instanceof HTMLAnchorElement)
|
|
426
|
+
navElement.click();
|
|
427
|
+
});
|
|
428
|
+
// add id suffix to prevent duplicate key. default html id is: '';
|
|
429
|
+
if (Ne(proxy.id))
|
|
430
|
+
proxy.id = `${proxy.id}-proxy`;
|
|
431
|
+
// update properties and DOM when proxyfied item is updated
|
|
432
|
+
proxified.addEventListener('item-updated', (event) => {
|
|
433
|
+
Object.assign(proxy, event.target);
|
|
434
|
+
proxy.innerHTML = event.target.innerHTML;
|
|
435
|
+
});
|
|
436
|
+
// manage status change miror in proxyfied element
|
|
437
|
+
proxified.addEventListener('status-change', (event) => {
|
|
438
|
+
proxy.setAttribute('status', event.detail);
|
|
439
|
+
});
|
|
440
|
+
});
|
|
441
|
+
return this.element;
|
|
442
|
+
};
|
|
443
|
+
this.icon = { icon: 'ellipsis-vertical' };
|
|
444
|
+
this.slotlabel = { display: false };
|
|
445
|
+
this.size = undefined;
|
|
446
|
+
this.parentMenu = undefined;
|
|
447
|
+
}
|
|
448
|
+
validateIcon(newValue) {
|
|
449
|
+
if (typeof newValue !== 'object' || (typeof newValue === 'object' && typeof newValue.icon !== 'string'))
|
|
450
|
+
throw new Error(`<${this.name}> prop "icon" must match MgItemMore['icon'] type.`);
|
|
451
|
+
}
|
|
452
|
+
validateSlotLabel(newValue) {
|
|
453
|
+
if (typeof newValue !== 'object' || (typeof newValue === 'object' && typeof newValue.display !== 'boolean'))
|
|
454
|
+
throw new Error(`<${this.name}> prop "slotlabel" must match MgItemMore['slotlabel'] type.`);
|
|
455
|
+
else if (typeof newValue.label !== 'string')
|
|
456
|
+
this.slotlabel.label = this.messages.menuLabel;
|
|
457
|
+
}
|
|
458
|
+
validateSize(newValue) {
|
|
459
|
+
if (newValue && typeof newValue !== 'string')
|
|
460
|
+
throw new Error(`<${this.name}> prop "size" must match MgItemMore['size'] type.`);
|
|
461
|
+
}
|
|
462
|
+
/*************
|
|
463
|
+
* Lifecycle *
|
|
464
|
+
*************/
|
|
465
|
+
/**
|
|
466
|
+
* Set variables and validate props
|
|
467
|
+
*/
|
|
468
|
+
componentWillLoad() {
|
|
469
|
+
// init variables
|
|
470
|
+
this.messages = initLocales(this.element).messages.itemMore;
|
|
471
|
+
// validate props
|
|
472
|
+
this.validateIcon(this.icon);
|
|
473
|
+
this.validateSlotLabel(this.slotlabel);
|
|
474
|
+
this.validateSize(this.size);
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Ensure parent DOM is fully rendered with timeout method before parse elements
|
|
478
|
+
* @returns timeout
|
|
479
|
+
*/
|
|
480
|
+
componentDidLoad() {
|
|
481
|
+
// ensure parent menu is fully rendered
|
|
482
|
+
return setTimeout(() => {
|
|
483
|
+
this.parentMenu = this.element.closest('mg-menu');
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Set OverflowBehavior when parentMenu state is upate AND defined
|
|
488
|
+
*/
|
|
489
|
+
componentDidUpdate() {
|
|
490
|
+
if (this.parentMenu && this.canRenderMgMenuItemOverflowElement) {
|
|
491
|
+
this.parentMenuItems = Array.from(this.parentMenu.children).filter(item => item.nodeName === 'MG-MENU-ITEM');
|
|
492
|
+
this.overflowBehavior = new OverflowBehavior(this.parentMenu, this.renderMgMenuItemOverflowElement);
|
|
493
|
+
this.canRenderMgMenuItemOverflowElement = false;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Disconnect overflow ResizeObserver
|
|
498
|
+
*/
|
|
499
|
+
disconnectedCallback() {
|
|
500
|
+
var _a;
|
|
501
|
+
(_a = this.overflowBehavior) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Render
|
|
505
|
+
* @returns HTML Element
|
|
506
|
+
*/
|
|
507
|
+
render() {
|
|
508
|
+
return (h(Host, { key: '18e3ecec55a7078662bdb04ba6325a4d44ff1c78', role: "listitem" }, this.parentMenu && (h("mg-menu-item", { key: 'e04f4b62b1ce70eeae25f959ef6aeca2e4a2690d', "data-overflow-more": true, "data-size": this.parentMenu.size, ref: el => {
|
|
509
|
+
if (el)
|
|
510
|
+
this.moreElementMenuItem = el;
|
|
511
|
+
} }, h("mg-icon", { key: '8f20ef688479578ebee9eabb63644837e1d45113', icon: this.icon.icon, slot: "image" }), h("span", { key: '7a4f08410d1e85682a8c3e1935525c418a4141de', class: { 'mg-u-visually-hidden': !this.slotlabel.display }, slot: "label" }, this.slotlabel.label), h("mg-menu", { key: 'f67f53d289cf65883a3534f17fb2baaa91314a66', direction: Direction.VERTICAL, label: this.messages.menuLabel, size: this.size })))));
|
|
512
|
+
}
|
|
513
|
+
get element() { return this; }
|
|
514
|
+
static get watchers() { return {
|
|
515
|
+
"icon": ["validateIcon"],
|
|
516
|
+
"slotlabel": ["validateSlotLabel"],
|
|
517
|
+
"size": ["validateSize"]
|
|
518
|
+
}; }
|
|
519
|
+
static get style() { return MgItemMoreStyle0; }
|
|
520
|
+
}, [1, "mg-item-more", {
|
|
521
|
+
"icon": [16],
|
|
522
|
+
"slotlabel": [16],
|
|
523
|
+
"size": [1],
|
|
524
|
+
"parentMenu": [32]
|
|
525
|
+
}, undefined, {
|
|
526
|
+
"icon": ["validateIcon"],
|
|
527
|
+
"slotlabel": ["validateSlotLabel"],
|
|
528
|
+
"size": ["validateSize"]
|
|
529
|
+
}]);
|
|
530
|
+
function defineCustomElement() {
|
|
531
|
+
if (typeof customElements === "undefined") {
|
|
532
|
+
return;
|
|
533
|
+
}
|
|
534
|
+
const components = ["mg-item-more", "mg-badge", "mg-button", "mg-card", "mg-icon", "mg-item-more", "mg-menu", "mg-menu-item", "mg-popover", "mg-popover-content"];
|
|
535
|
+
components.forEach(tagName => { switch (tagName) {
|
|
536
|
+
case "mg-item-more":
|
|
537
|
+
if (!customElements.get(tagName)) {
|
|
538
|
+
customElements.define(tagName, MgItemMore);
|
|
539
|
+
}
|
|
540
|
+
break;
|
|
541
|
+
case "mg-badge":
|
|
542
|
+
if (!customElements.get(tagName)) {
|
|
543
|
+
defineCustomElement$8();
|
|
544
|
+
}
|
|
545
|
+
break;
|
|
546
|
+
case "mg-button":
|
|
547
|
+
if (!customElements.get(tagName)) {
|
|
548
|
+
defineCustomElement$7();
|
|
549
|
+
}
|
|
550
|
+
break;
|
|
551
|
+
case "mg-card":
|
|
552
|
+
if (!customElements.get(tagName)) {
|
|
553
|
+
defineCustomElement$6();
|
|
554
|
+
}
|
|
555
|
+
break;
|
|
556
|
+
case "mg-icon":
|
|
557
|
+
if (!customElements.get(tagName)) {
|
|
558
|
+
defineCustomElement$5();
|
|
559
|
+
}
|
|
560
|
+
break;
|
|
561
|
+
case "mg-item-more":
|
|
562
|
+
if (!customElements.get(tagName)) {
|
|
563
|
+
defineCustomElement();
|
|
564
|
+
}
|
|
565
|
+
break;
|
|
566
|
+
case "mg-menu":
|
|
567
|
+
if (!customElements.get(tagName)) {
|
|
568
|
+
defineCustomElement$1();
|
|
569
|
+
}
|
|
570
|
+
break;
|
|
571
|
+
case "mg-menu-item":
|
|
572
|
+
if (!customElements.get(tagName)) {
|
|
573
|
+
defineCustomElement$4();
|
|
574
|
+
}
|
|
575
|
+
break;
|
|
576
|
+
case "mg-popover":
|
|
577
|
+
if (!customElements.get(tagName)) {
|
|
578
|
+
defineCustomElement$3();
|
|
579
|
+
}
|
|
580
|
+
break;
|
|
581
|
+
case "mg-popover-content":
|
|
582
|
+
if (!customElements.get(tagName)) {
|
|
583
|
+
defineCustomElement$2();
|
|
584
|
+
}
|
|
585
|
+
break;
|
|
586
|
+
} });
|
|
587
|
+
}
|
|
588
|
+
defineCustomElement();
|
|
589
|
+
|
|
590
|
+
export { MgItemMore as M, defineCustomElement as a, MgMenu as b, defineCustomElement$1 as d };
|
|
591
|
+
|
|
592
|
+
//# sourceMappingURL=mg-item-more2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"mg-item-more2.js","mappings":"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","names":["isValidString"],"sources":["src/utils/behaviors.utils.ts","../styles/dist/components/mg-menu.css?tag=mg-menu&encapsulation=shadow","src/components/molecules/menu/mg-menu/mg-menu.tsx","../styles/dist/components/mg-item-more.css?tag=mg-item-more&encapsulation=shadow","src/components/molecules/mg-item-more/mg-item-more.tsx"],"sourcesContent":["/**\n * MgItemMore type guard\n * @param element - element to control type\n * @returns truthy if element is mg-item-more\n */\nconst isMgItemMore = (element: HTMLElement): element is HTMLMgItemMoreElement => element.nodeName === 'MG-ITEM-MORE';\n\nexport enum OverflowBehaviorElements {\n BASE_INDEX = 'data-overflow-base-index',\n PROXY_INDEX = 'data-overflow-proxy-index',\n}\n\nexport class OverflowBehavior {\n // variables\n private _resizeObserver: ResizeObserver;\n private _moreElement: HTMLElement;\n private _baseChildren: Element[];\n private _proxyChildren: Element[];\n\n constructor(\n private element: Element,\n private render: () => HTMLElement,\n ) {\n if (this._resizeObserver === undefined) {\n // add resize observer\n this._resizeObserver = new ResizeObserver(entries => {\n entries.forEach(entry => {\n this.run(entry.contentRect.width);\n });\n });\n this._resizeObserver.observe(this.element);\n }\n this.run();\n }\n\n /**********\n * Public *\n **********/\n\n /**\n * Disconnect ResizeObserver\n */\n public disconnect = (): void => {\n this._resizeObserver.disconnect();\n };\n\n /************\n * Internal *\n ************/\n\n /**\n * run overflow behavior\n * @param width - width of the container. Optional.\n */\n private run = (width?: number): void => {\n if (this._moreElement === undefined) {\n // set moreElement\n this._moreElement = this.render();\n\n // set children\n this._baseChildren = this.getInteractiveItems(this.element);\n if (isMgItemMore(this._moreElement)) {\n this._proxyChildren = this.getInteractiveItems(this._moreElement.shadowRoot.querySelector('mg-menu'));\n }\n\n // update children\n this._baseChildren.forEach((child, index) => {\n child.setAttribute(OverflowBehaviorElements.BASE_INDEX, `${index}`);\n // set moreElement children\n this._proxyChildren[index].setAttribute(OverflowBehaviorElements.PROXY_INDEX, `${index}`);\n });\n }\n\n if (width !== undefined) this.updateDisplayedItems(width);\n };\n\n /**\n * Get interactive children filtred by authorized nodeName ['MG-MENU-ITEM', 'MG-BUTTON']\n * @param element - element to parse\n * @returns children\n */\n private getInteractiveItems = (element: Element) =>\n (element.children?.length > 0 ? Array.from(element.children) : []).filter(element => ['MG-MENU-ITEM', 'MG-BUTTON'].includes(element.nodeName));\n\n /**\n * Update displayed items in container from a given available space\n * @param availableWidth - available width in container to display child items\n */\n private updateDisplayedItems = (availableWidth: number): void => {\n this.restoreItems();\n const acc = { accWidth: 0, previousItem: null };\n [...this._baseChildren, this._moreElement].forEach((child: HTMLMgMenuItemElement | HTMLMgItemMoreElement) => {\n acc.accWidth += child.offsetWidth;\n const hasPreviuosItem = acc.previousItem !== null;\n const isPreviousItemHidden = hasPreviuosItem && acc.previousItem.getAttribute('hidden') !== null;\n // if previous item is hidden AND is NOT more element we hidde current\n // OR if item has an overflow we hidde current\n // OR if current item is more element AND have NOT previous hidden items, current more element item is an hidden item\n // ELSE current is a display item\n this.toggleItem(\n child,\n (isPreviousItemHidden && !this.isMoreElement(child)) || this.isOverflowElement(acc.accWidth, child, availableWidth) || (this.isMoreElement(child) && !isPreviousItemHidden),\n );\n\n // update previous item with current item\n acc.previousItem = child;\n });\n };\n\n /**\n * Utility method to know if item overflow partialy or totaly in the container\n * @param cumulateWidth - previous sibling elements cumulate width + item width\n * @param item - item HTML element\n * @param availableWidth - container available width\n * @returns truthy if element is overflow\n */\n private isOverflowElement = (cumulateWidth: number, item: HTMLElement, availableWidth: number): boolean => {\n if (item.previousElementSibling === null || this.isMoreElement(item)) return false;\n else if (!this.isMoreElement(item.nextElementSibling)) return cumulateWidth + this._moreElement.offsetWidth > availableWidth;\n else return cumulateWidth > availableWidth;\n };\n\n /**\n * Utility method to know if a given element is the 'MORE' element\n * @param element - element to match with 'MORE' element\n * @returns truthy if element is the 'MORE' element\n */\n private isMoreElement = (element: Element): boolean => element.nodeName === 'MG-ITEM-MORE';\n\n /**\n * Toggle display item element\n * @param item - item to control\n * @param isHidden - is item hidden\n */\n private toggleItem = (item: HTMLElement, isHidden: boolean): void => {\n const mgActionMenuindex = Number(item.getAttribute(OverflowBehaviorElements.BASE_INDEX));\n if (this.isMoreElement(item)) this.toggleElement(this._moreElement, isHidden);\n else if (mgActionMenuindex >= 0) {\n this.toggleElement(item, isHidden);\n this.toggleElement(this._proxyChildren[mgActionMenuindex], !isHidden);\n }\n };\n\n /**\n * Toggle element's hidde attribute\n * @param element - element to toggle\n * @param isHidden - element is hidden\n */\n private toggleElement = (element: Element, isHidden: boolean): void => {\n if (isHidden) element.setAttribute('hidden', '');\n else element.removeAttribute('hidden');\n };\n\n /**\n * Remove hidden attributes on all items\n */\n private restoreItems = (): void => {\n [...this._baseChildren, this._moreElement].forEach(item => item.removeAttribute('hidden'));\n };\n}\n",".mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion){*{animation:none !important;transition:none !important}}:host{display:flex;background-color:hsl(var(--mg-menu-background-color-hsl, var(--color-light)))}:host([direction=vertical]){height:100%;flex-direction:column;overflow-y:auto}/*# sourceMappingURL=mg-menu.css.map */\n","import { Component, h, Prop, State, Element, Watch, Host } from '@stencil/core';\nimport { Direction, sizes } from './mg-menu.conf';\nimport type { MenuSizeType, ItemMoreType } from './mg-menu.conf';\n\n/**\n * @slot - Menu content\n */\n@Component({\n tag: 'mg-menu',\n styleUrl: '../../../../../node_modules/@mgdis/styles/dist/components/mg-menu.css',\n shadow: true,\n})\nexport class MgMenu {\n /************\n * Internal *\n ************/\n\n private readonly name = 'mg-menu';\n private menuItems: HTMLMgMenuItemElement[] = [];\n private focusedMenuItem = 0;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgMenuElement;\n\n /**\n * Menu label. Include short menu description.\n * Required for accessibility\n */\n @Prop() label!: string;\n @Watch('label')\n validateLabel(newValue: MgMenu['label']): void {\n if (newValue === undefined) {\n throw new Error(`<${this.name}> prop \"label\" is required.`);\n }\n }\n\n /**\n * Component display direction.\n */\n @Prop({ reflect: true }) direction: Direction = Direction.HORIZONTAL;\n @Watch('direction')\n validateDirection(newValue: MgMenu['direction']): void {\n if (![Direction.VERTICAL, Direction.HORIZONTAL].includes(newValue)) {\n throw new Error(`<${this.name}> prop \"direction\" must be one of: ${Direction.HORIZONTAL}, ${Direction.VERTICAL}.`);\n }\n }\n\n /**\n * Customize \"mg-item-more\" element\n * Used with direction: 'vertical' to manage overflow\n */\n @Prop() itemmore?: ItemMoreType;\n @Watch('itemmore')\n validateItemMore(newValue: MgMenu['itemmore']): void {\n if (newValue !== undefined && this.direction !== Direction.HORIZONTAL) {\n throw new Error(`<${this.name}> prop \"itemmore\" must be paired with direction ${Direction.HORIZONTAL}.`);\n }\n }\n\n /**\n * Define mg-menu size\n */\n @Prop() size: MenuSizeType = 'regular';\n @Watch('size')\n validateSize(newValue: MgMenu['size']): void {\n if (!sizes.includes(newValue)) {\n throw new Error(`<${this.name}> prop \"size\" must be one of: ${sizes.join(', ')}.`);\n }\n }\n\n /**\n * is this menu a child menu. Used for conditional render.\n */\n @State() isChildMenu: boolean;\n\n /*************\n * Methods *\n *************/\n\n /**\n * Close matching menu-item\n * @param item - menu-item to close\n * @param condition - addionnal condition\n */\n private closeMenuItem = (item: HTMLMgMenuItemElement, condition: boolean): void => {\n if (!this.isChildMenu && condition) {\n item.expanded = false;\n }\n };\n\n /**\n * get mg-item-more element\n * @returns mg-item-more element\n */\n private getItemMore = (): HTMLMgItemMoreElement => this.element.querySelector('mg-item-more');\n\n /**\n * get mg-item-more child mg-menu-item element\n * @returns mg-menu-item element\n */\n private getItemMoreMenuItem = (): HTMLMgMenuItemElement => this.getItemMore()?.shadowRoot?.querySelector('mg-menu-item');\n\n /**\n * Set item listend\n * @param item - mg-menu-item element\n * @param index - number\n */\n private setItemListener = (item: HTMLMgMenuItemElement, index: MgMenu['focusedMenuItem']): void => {\n ['click', 'focus'].forEach(trigger => {\n item.shadowRoot.querySelector('button,a').addEventListener(trigger, () => {\n this.focusedMenuItem = index;\n // reset expanded on previous active menu item\n (this.getItemMoreMenuItem() ? [...this.menuItems, this.getItemMoreMenuItem()] : this.menuItems).forEach((item, index) => {\n this.closeMenuItem(item, index !== this.focusedMenuItem);\n });\n });\n });\n };\n\n /**\n * Store menu-items on component init and add listeners\n */\n private initMenuItemsListeners = (): void => {\n // add listeners on menu item and edit index\n this.menuItems.forEach((item, index) => {\n this.setItemListener(item, index);\n });\n };\n\n /**\n * Handle item-loaded event on mg-item-more element\n */\n private handleItemLoaded = (): void => {\n this.setItemListener(this.getItemMoreMenuItem(), this.menuItems.length);\n };\n\n /**\n * render mg-item-more\n */\n private renderMgItemMore = (): void => {\n if (this.direction !== Direction.HORIZONTAL || this.isChildMenu) {\n return;\n }\n\n // /!\\ externalise item tag name to get a string type and bypass type checking when value is used in next createElement\n // by doing this we prevent stencil to generate a circular dependencies graph at build time with mg-item-more component.\n let mgItemMore = this.getItemMore();\n if (!mgItemMore) {\n mgItemMore = document.createElement('mg-item-more');\n mgItemMore.addEventListener('item-loaded', this.handleItemLoaded);\n Object.assign(mgItemMore, this.itemmore || {});\n this.element.appendChild(mgItemMore);\n } else {\n Object.defineProperties(mgItemMore, this.itemmore || {});\n }\n };\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Validate props\n */\n componentWillLoad(): void {\n this.validateDirection(this.direction);\n this.validateLabel(this.label);\n this.validateItemMore(this.itemmore);\n this.validateSize(this.size);\n }\n\n /**\n * Check if component slots configuration\n * @returns timeout\n */\n componentDidLoad(): ReturnType<typeof setTimeout> {\n // update props and states after componentDidLoad hook\n // return a promise to process action only in the FIRST render().\n // https://stenciljs.com/docs/component-lifecycle#componentwillload\n return setTimeout(() => {\n // store all menu-items\n this.menuItems = Array.from(this.element.children).filter(child => child.nodeName === 'MG-MENU-ITEM') as HTMLMgMenuItemElement[];\n this.isChildMenu = this.element.closest('mg-menu-item') !== null;\n\n // add mg-item-more to manage OverflowBehavior\n // when all props, states and DOM are already rendered we can render the mg-item-more\n this.renderMgItemMore();\n // then use mutation observer on children to improve reactivity\n new MutationObserver(() => {\n this.renderMgItemMore();\n }).observe(this.element, { childList: true });\n });\n }\n\n /**\n * Add listeners to items\n */\n componentDidRender(): void {\n this.initMenuItemsListeners();\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <Host role=\"list\" aria-label={this.label}>\n <slot></slot>\n </Host>\n );\n }\n}\n",".mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion){*{animation:none !important;transition:none !important}}:host:not([hidden]){display:flex}/*# sourceMappingURL=mg-item-more.css.map */\n","import { Component, h, Prop, Element, Host, Watch, State } from '@stencil/core';\nimport { isValidString } from '@mgdis/stencil-helpers';\nimport { Direction } from '../menu/mg-menu/mg-menu.conf';\nimport { OverflowBehavior } from '../../../utils/behaviors.utils';\nimport { initLocales } from '../../../locales';\nimport type { IconType, SizeType, SlotLabelType } from './mg-item-more.conf';\nimport type { MessageType } from '../../../locales/index.conf';\n\n@Component({\n tag: 'mg-item-more',\n styleUrl: '../../../../node_modules/@mgdis/styles/dist/components/mg-item-more.css',\n shadow: true,\n})\nexport class MgItemMore {\n /************\n * Internal *\n ************/\n private readonly name = 'mg-item-more';\n private messages: MessageType;\n private parentMenuItems: HTMLMgMenuItemElement[];\n private moreElementMenuItem: HTMLMgMenuItemElement;\n private overflowBehavior: OverflowBehavior;\n private canRenderMgMenuItemOverflowElement = true;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgItemMoreElement;\n\n /**\n * Define icon\n */\n @Prop() icon?: IconType = { icon: 'ellipsis-vertical' };\n @Watch('icon')\n validateIcon(newValue: MgItemMore['icon']): void {\n if (typeof newValue !== 'object' || (typeof newValue === 'object' && typeof newValue.icon !== 'string'))\n throw new Error(`<${this.name}> prop \"icon\" must match MgItemMore['icon'] type.`);\n }\n\n /**\n * Define slot label element\n */\n @Prop() slotlabel?: SlotLabelType = { display: false };\n @Watch('slotlabel')\n validateSlotLabel(newValue: MgItemMore['slotlabel']): void {\n if (typeof newValue !== 'object' || (typeof newValue === 'object' && typeof newValue.display !== 'boolean'))\n throw new Error(`<${this.name}> prop \"slotlabel\" must match MgItemMore['slotlabel'] type.`);\n else if (typeof newValue.label !== 'string') this.slotlabel.label = this.messages.menuLabel;\n }\n\n /**\n * Define component child menu size.\n */\n @Prop() size?: SizeType;\n @Watch('size')\n validateSize(newValue: MgItemMore['size']): void {\n if (newValue && typeof newValue !== 'string') throw new Error(`<${this.name}> prop \"size\" must match MgItemMore['size'] type.`);\n }\n\n /**\n * Define component parent menu.\n */\n @State() parentMenu: HTMLMgMenuElement;\n\n /***********\n * Methods *\n ***********/\n\n /**\n * render mg-item-more overflow element\n * @returns mg-item-more element\n */\n private renderMgMenuItemOverflowElement = (): HTMLMgItemMoreElement => {\n // create menu items proxy element from item clones\n this.parentMenuItems.forEach((child: HTMLMgMenuItemElement) => {\n this.moreElementMenuItem.querySelector('mg-menu').appendChild(child.cloneNode(true));\n });\n\n const allMenuItem = Array.from(this.parentMenu.querySelectorAll('mg-menu-item:not([data-overflow-more])'));\n\n Array.from(this.moreElementMenuItem.querySelectorAll('mg-menu-item:not([data-overflow-more])')).forEach((proxy, index) => {\n const proxified = allMenuItem[index];\n // manage click on proxy to mirror it on initial element\n proxy.addEventListener('click', () => {\n // be carefull to use element.click() method instead of dispatchEvent to ensure bubbles outside shadowDom\n const navElement = allMenuItem[index].shadowRoot.querySelector('a, button');\n if (navElement instanceof HTMLButtonElement || navElement instanceof HTMLAnchorElement) navElement.click();\n });\n\n // add id suffix to prevent duplicate key. default html id is: '';\n if (isValidString(proxy.id)) proxy.id = `${proxy.id}-proxy`;\n\n // update properties and DOM when proxyfied item is updated\n proxified.addEventListener('item-updated', (event: CustomEvent & { target: HTMLElement }) => {\n Object.assign(proxy, event.target);\n proxy.innerHTML = event.target.innerHTML;\n });\n\n // manage status change miror in proxyfied element\n proxified.addEventListener('status-change', (event: CustomEvent) => {\n proxy.setAttribute('status', event.detail);\n });\n });\n\n return this.element;\n };\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Set variables and validate props\n */\n componentWillLoad(): void {\n // init variables\n this.messages = initLocales(this.element).messages.itemMore as MessageType;\n\n // validate props\n this.validateIcon(this.icon);\n this.validateSlotLabel(this.slotlabel);\n this.validateSize(this.size);\n }\n\n /**\n * Ensure parent DOM is fully rendered with timeout method before parse elements\n * @returns timeout\n */\n componentDidLoad(): ReturnType<typeof setTimeout> {\n // ensure parent menu is fully rendered\n return setTimeout(() => {\n this.parentMenu = this.element.closest('mg-menu');\n });\n }\n\n /**\n * Set OverflowBehavior when parentMenu state is upate AND defined\n */\n componentDidUpdate(): void {\n if (this.parentMenu && this.canRenderMgMenuItemOverflowElement) {\n this.parentMenuItems = Array.from(this.parentMenu.children).filter(item => item.nodeName === 'MG-MENU-ITEM') as HTMLMgMenuItemElement[];\n this.overflowBehavior = new OverflowBehavior(this.parentMenu, this.renderMgMenuItemOverflowElement);\n this.canRenderMgMenuItemOverflowElement = false;\n }\n }\n\n /**\n * Disconnect overflow ResizeObserver\n */\n disconnectedCallback(): void {\n this.overflowBehavior?.disconnect();\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <Host role=\"listitem\">\n {this.parentMenu && (\n <mg-menu-item\n data-overflow-more\n data-size={this.parentMenu.size}\n ref={el => {\n if (el) this.moreElementMenuItem = el;\n }}\n >\n <mg-icon icon={this.icon.icon} slot=\"image\"></mg-icon>\n <span class={{ 'mg-u-visually-hidden': !this.slotlabel.display }} slot=\"label\">\n {this.slotlabel.label}\n </span>\n <mg-menu direction={Direction.VERTICAL} label={this.messages.menuLabel} size={this.size}></mg-menu>\n </mg-menu-item>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
|