@mgdis/mg-components 6.19.0 → 6.21.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-Bp6wZzau.js → index-C2viYwrR.js} +1757 -80
- package/dist/cjs/{index-TUElr4Wv.js → index-CCsGMNyq.js} +46 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mg-action-more_37.cjs.entry.js +735 -337
- package/dist/cjs/mg-alert.cjs.entry.js +17 -9
- package/dist/cjs/mg-components.cjs.js +3 -3
- package/dist/cjs/mg-fieldset.cjs.entry.js +24 -7
- package/dist/cjs/mg-input-combobox.cjs.entry.js +63 -29
- package/dist/cjs/mg-input-file.cjs.entry.js +384 -0
- package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js +30 -18
- package/dist/cjs/{mg-input.conf-D7jmj_lh.js → mg-input.conf-BNpeATnq.js} +7 -0
- package/dist/cjs/mg-loader.cjs.entry.js +8 -6
- package/dist/cjs/mg-progress.cjs.entry.js +19 -9
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/atoms/mg-icon/mg-icon.js +1 -1
- package/dist/collection/components/molecules/inputs/mg-input/mg-input.conf.js +6 -0
- package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.js +15 -11
- package/dist/collection/components/molecules/inputs/mg-input-file/mg-input-file.js +877 -0
- package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +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-rich-text-editor/mg-input-rich-text-editor.js +12 -12
- package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +2 -2
- package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +1 -1
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +72 -84
- package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +1 -1
- package/dist/collection/components/molecules/mg-alert/mg-alert.js +1 -1
- package/dist/collection/components/molecules/mg-details/mg-details.js +1 -1
- package/dist/collection/components/molecules/mg-fieldset/mg-fieldset.js +12 -3
- package/dist/collection/components/molecules/mg-form/mg-form.js +12 -2
- package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +1 -1
- package/dist/collection/components/molecules/mg-loader/mg-loader.js +1 -1
- package/dist/collection/components/molecules/mg-message/mg-message.js +2 -2
- package/dist/collection/components/molecules/mg-modal/mg-modal.js +2 -2
- package/dist/collection/components/molecules/mg-panel/mg-panel.js +1 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +1 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover.js +1 -1
- package/dist/collection/components/molecules/mg-progress/mg-progress.js +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 +1 -1
- package/dist/collection/locales/en/messages.json +11 -0
- package/dist/collection/locales/fr/messages.json +11 -0
- package/dist/components/events.utils.js +1 -23
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -1
- package/dist/components/index2.js +1 -408
- package/dist/components/index3.js +1 -476
- package/dist/components/mg-action-more.js +1 -254
- package/dist/components/mg-alert.js +1 -224
- package/dist/components/mg-badge.js +1 -6
- package/dist/components/mg-badge2.js +1 -113
- package/dist/components/mg-button.js +1 -6
- package/dist/components/mg-button2.js +1 -275
- package/dist/components/mg-card.js +1 -6
- package/dist/components/mg-card2.js +1 -92
- package/dist/components/mg-character-left.js +1 -6
- package/dist/components/mg-character-left2.js +1 -75
- package/dist/components/mg-details.js +1 -104
- package/dist/components/mg-divider.js +1 -6
- package/dist/components/mg-divider2.js +1 -49
- package/dist/components/mg-fieldset.js +1 -209
- package/dist/components/mg-form.js +1 -302
- package/dist/components/mg-icon.js +1 -6
- package/dist/components/mg-icon2.js +1 -188
- package/dist/components/mg-illustrated-message.js +1 -129
- package/dist/components/mg-input-checkbox-paginated.js +1 -6
- package/dist/components/mg-input-checkbox-paginated2.js +1 -135
- package/dist/components/mg-input-checkbox.js +1 -762
- package/dist/components/mg-input-combobox.js +1 -936
- package/dist/components/mg-input-date.js +1 -463
- package/dist/components/mg-input-file.d.ts +11 -0
- package/dist/components/mg-input-file.js +1 -0
- package/dist/components/mg-input-numeric.js +1 -592
- package/dist/components/mg-input-password.js +1 -360
- package/dist/components/mg-input-radio.js +1 -392
- package/dist/components/mg-input-rich-text-editor.js +1 -16797
- package/dist/components/mg-input-select.js +1 -6
- package/dist/components/mg-input-select2.js +1 -481
- package/dist/components/mg-input-text.js +1 -6
- package/dist/components/mg-input-text2.js +1 -514
- package/dist/components/mg-input-textarea.js +1 -412
- package/dist/components/mg-input-title.js +1 -6
- package/dist/components/mg-input-title2.js +1 -81
- package/dist/components/mg-input-toggle.js +1 -386
- package/dist/components/mg-input.conf.js +1 -0
- package/dist/components/mg-input.js +1 -6
- package/dist/components/mg-input2.js +1 -459
- package/dist/components/mg-item-more.js +1 -6
- package/dist/components/mg-item-more2.js +1 -505
- package/dist/components/mg-loader.js +1 -6
- package/dist/components/mg-loader2.js +1 -74
- package/dist/components/mg-menu-item.js +1 -6
- package/dist/components/mg-menu-item2.js +1 -485
- package/dist/components/mg-menu.js +1 -6
- package/dist/components/mg-message.js +1 -6
- package/dist/components/mg-message2.js +1 -146
- package/dist/components/mg-modal.js +1 -184
- package/dist/components/mg-pagination.js +1 -234
- package/dist/components/mg-panel.js +1 -350
- package/dist/components/mg-popover-content.js +1 -6
- package/dist/components/mg-popover-content2.js +1 -96
- package/dist/components/mg-popover.js +1 -6
- package/dist/components/mg-popover2.js +1 -312
- package/dist/components/mg-progress.js +1 -123
- package/dist/components/mg-skip-links.js +1 -78
- package/dist/components/mg-table.js +1 -319
- package/dist/components/mg-tabs.js +1 -6
- package/dist/components/mg-tabs2.js +1 -315
- package/dist/components/mg-tag.js +1 -133
- package/dist/components/mg-tooltip-content.js +1 -6
- package/dist/components/mg-tooltip-content2.js +1 -42
- package/dist/components/mg-tooltip.js +1 -6
- package/dist/components/mg-tooltip2.js +1 -421
- package/dist/components/popper.js +1 -1790
- package/dist/esm/{index-CNX6lq0x.js → index-D-uaxCxH.js} +46 -1
- package/dist/esm/{index-BluNKQ3L.js → index-DFwaH2hS.js} +1757 -80
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mg-action-more_37.entry.js +735 -337
- package/dist/esm/mg-alert.entry.js +17 -9
- package/dist/esm/mg-components.js +4 -4
- package/dist/esm/mg-fieldset.entry.js +24 -7
- package/dist/esm/mg-input-combobox.entry.js +63 -29
- package/dist/esm/mg-input-file.entry.js +382 -0
- package/dist/esm/mg-input-rich-text-editor.entry.js +30 -18
- package/dist/esm/{mg-input.conf-DDnrE1hD.js → mg-input.conf-C9rmNQIL.js} +7 -1
- package/dist/esm/mg-loader.entry.js +8 -6
- package/dist/esm/mg-progress.entry.js +19 -9
- package/dist/mg-components/locales/en/messages.json +11 -0
- package/dist/mg-components/locales/fr/messages.json +11 -0
- package/dist/mg-components/mg-components.esm.js +1 -1
- package/dist/mg-components/{p-d5a276eb.entry.js → p-08fa327b.entry.js} +1 -1
- package/dist/mg-components/p-4175dcbe.entry.js +1 -0
- package/dist/mg-components/p-6b57f249.entry.js +1 -0
- package/dist/mg-components/p-6b655830.entry.js +1 -0
- package/dist/mg-components/p-988c282e.entry.js +1 -0
- package/dist/mg-components/p-C9rmNQIL.js +1 -0
- package/dist/mg-components/p-D-uaxCxH.js +1 -0
- package/dist/mg-components/p-DFwaH2hS.js +2 -0
- package/dist/mg-components/p-a79b1f19.entry.js +1 -0
- package/dist/mg-components/{p-916dfb6d.entry.js → p-c3d116b9.entry.js} +1 -1
- package/dist/mg-components/p-dd1934f4.entry.js +1 -0
- package/dist/types/components/molecules/inputs/mg-input/mg-input.conf.d.ts +7 -1
- package/dist/types/components/molecules/inputs/mg-input-file/mg-input-file.d.ts +210 -0
- package/dist/types/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.d.ts +4 -4
- package/dist/types/components/molecules/inputs/mg-input-toggle/mg-input-toggle.d.ts +13 -16
- package/dist/types/components.d.ts +217 -18
- package/dist/types/stencil-public-runtime.d.ts +76 -12
- package/ide/intellij/web-types.json +373 -26
- package/ide/vscode/css-custom-data.json +12 -0
- package/ide/vscode/html-custom-data.json +341 -79
- package/package.json +22 -22
- package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/editor/editor.scss +0 -1
- package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.js +0 -1
- package/dist/mg-components/p-016bd291.entry.js +0 -1
- package/dist/mg-components/p-186a6139.entry.js +0 -1
- package/dist/mg-components/p-66a1cb83.entry.js +0 -1
- package/dist/mg-components/p-6efd819f.entry.js +0 -1
- package/dist/mg-components/p-BluNKQ3L.js +0 -2
- package/dist/mg-components/p-CNX6lq0x.js +0 -1
- package/dist/mg-components/p-DDnrE1hD.js +0 -1
- package/dist/mg-components/p-d2c72f09.entry.js +0 -1
- package/dist/types/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.d.ts +0 -8
|
@@ -1,312 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { c as createID, a as isValideID, t as toString, g as getWindows } from './index2.js';
|
|
3
|
-
import { d as defineCustomElement$4 } from './mg-button2.js';
|
|
4
|
-
import { d as defineCustomElement$3 } from './mg-card2.js';
|
|
5
|
-
import { d as defineCustomElement$2 } from './mg-icon2.js';
|
|
6
|
-
import { d as defineCustomElement$1 } from './mg-popover-content2.js';
|
|
7
|
-
import { c as createPopper } from './popper.js';
|
|
8
|
-
|
|
9
|
-
const mgPopoverCss = "/*!\n * @prop --mg-c-popover-color-background: Defines the background color of the popover. Default value: `--mg-b-color-light`.\n * @prop --mg-c-popover-color-text: Defines the font color of the popover. Default value: `--mg-b-color-font-dark`.\n * @prop --mg-c-popover-title-font-size: Defines the font size of the popover title. Default value: `--mg-b-font-size-h5`.\n * @prop --mg-c-popover-padding-vertical: Defines the vertical padding of the popover. Default value: `unset`, fallback to `--mg-b-size-16`.\n * @prop --mg-c-popover-padding-horizontal: Defines the horizontal padding of the popover. Default value: `unset`, fallback to `--mg-b-size-16`.\n * @prop --mg-c-popover-max-width: Defines the max-width of the popover. Default value: `--mg-b-size-floating-element-max-width`.\n * @prop --mg-c-popover-border-radius: Defines the border-radius of the popover. Default value: `--mg-c-card-border-radius-default`.\n * @prop --mg-c-popover-min-width: Defines the min-width of the popover. Default value: `unset`.\n */:host{--mg-c-card-spacing:var(--mg-c-popover-padding-vertical, var(--mg-b-size-16)) var(--mg-c-popover-padding-horizontal, var(--mg-b-size-16));--mg-c-card-border:none;--mg-c-card-border-radius:var(--mg-c-popover-border-radius);--mg-c-card-color-background:var(--mg-c-popover-color-background);position:relative;display:contents}:host::slotted(*){display:inline-block}";
|
|
10
|
-
|
|
11
|
-
const MgPopover = /*@__PURE__*/ proxyCustomElement(class MgPopover extends HTMLElement {
|
|
12
|
-
constructor(registerHost) {
|
|
13
|
-
super();
|
|
14
|
-
if (registerHost !== false) {
|
|
15
|
-
this.__registerHost();
|
|
16
|
-
}
|
|
17
|
-
this.__attachShadow();
|
|
18
|
-
this.displayChange = createEvent(this, "display-change", 7);
|
|
19
|
-
this.componentClose = createEvent(this, "component-close", 7);
|
|
20
|
-
/**
|
|
21
|
-
* Sets an `id` attribute.
|
|
22
|
-
* Needed by the input for accessibility `aria-decribedby`.
|
|
23
|
-
*/
|
|
24
|
-
this.identifier = createID('mg-popover');
|
|
25
|
-
/**
|
|
26
|
-
* Popover placement
|
|
27
|
-
*/
|
|
28
|
-
this.placement = 'bottom';
|
|
29
|
-
/**
|
|
30
|
-
* Hide popover arrow
|
|
31
|
-
*/
|
|
32
|
-
this.arrowHide = false;
|
|
33
|
-
/**
|
|
34
|
-
* Define if popover has a cross button
|
|
35
|
-
*/
|
|
36
|
-
this.closeButton = false;
|
|
37
|
-
/**
|
|
38
|
-
* Display popover
|
|
39
|
-
*/
|
|
40
|
-
this.display = false;
|
|
41
|
-
/**
|
|
42
|
-
* Disable popover
|
|
43
|
-
*/
|
|
44
|
-
this.disabled = false;
|
|
45
|
-
/**
|
|
46
|
-
* Check if clicked outside of component
|
|
47
|
-
* @param event - mouse event
|
|
48
|
-
*/
|
|
49
|
-
this.clickOutside = (event) => {
|
|
50
|
-
if (!this.disabled && event.target.closest('mg-popover') !== this.element && event.target.closest(`[data-mg-popover-guard="${this.identifier}"]`) === null) {
|
|
51
|
-
this.display = false;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* Show popover
|
|
56
|
-
*/
|
|
57
|
-
this.show = () => {
|
|
58
|
-
// Make the popover visible
|
|
59
|
-
this.mgPopover.dataset.show = '';
|
|
60
|
-
// Update aria-expanded
|
|
61
|
-
this.interactiveElement.setAttribute('aria-expanded', 'true');
|
|
62
|
-
// Enable the event listeners
|
|
63
|
-
this.setPopperListeners(true);
|
|
64
|
-
// hide when click outside
|
|
65
|
-
// setTimeout is used to prevent event to trigger after creation
|
|
66
|
-
setTimeout(() => {
|
|
67
|
-
this.manageClickOutsideListeners('addEventListener');
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* Hide popover
|
|
72
|
-
*/
|
|
73
|
-
this.hide = () => {
|
|
74
|
-
// Hide the popover
|
|
75
|
-
this.mgPopover.removeAttribute('data-show');
|
|
76
|
-
// Update aria-expanded
|
|
77
|
-
this.interactiveElement.setAttribute('aria-expanded', 'false');
|
|
78
|
-
// Disable the event listeners
|
|
79
|
-
this.setPopperListeners(false);
|
|
80
|
-
// Remove event listener
|
|
81
|
-
this.manageClickOutsideListeners('removeEventListener');
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* Set popper listeners
|
|
85
|
-
* @param newValue - if true enable popper listners
|
|
86
|
-
*/
|
|
87
|
-
this.setPopperListeners = (newValue) => {
|
|
88
|
-
this.popper.setOptions(options => (Object.assign(Object.assign({}, options), { modifiers: [...options.modifiers, { name: 'eventListeners', enabled: newValue }] })));
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* Manage all clickOustside listeners
|
|
92
|
-
* @param action - top process on elements listeners
|
|
93
|
-
*/
|
|
94
|
-
this.manageClickOutsideListeners = (action) => {
|
|
95
|
-
var _a, _b;
|
|
96
|
-
// clickOutside listeners need to bind windows
|
|
97
|
-
// AND as shawdowDom content is not include on windows listeners `event.target` we need to include popover guard content DOM if it's a web-component
|
|
98
|
-
// by doing this we can get and parse all needeed document DOM elements in clickOutside callback event.details.
|
|
99
|
-
// This result in the givern junction :
|
|
100
|
-
// Windows > document > [data-mg-popover-guard] + [data-mg-popover-guard] > shadowRoot = Windows > document > [data-mg-popover-guard] > shadowRoot
|
|
101
|
-
const guardChildren = Array.from(((_b = (_a = document.querySelector(`[data-mg-popover-guard="${this.identifier}"]`)) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.children) || new Set());
|
|
102
|
-
[...guardChildren, ...this.windows].forEach((element) => {
|
|
103
|
-
if (element !== null) {
|
|
104
|
-
element[action]('click', this.clickOutside, false);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
};
|
|
108
|
-
/**
|
|
109
|
-
* Handle content hide event
|
|
110
|
-
*/
|
|
111
|
-
this.handleHideContent = () => {
|
|
112
|
-
this.display = false;
|
|
113
|
-
this.componentClose.emit();
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Render popover content element
|
|
117
|
-
*/
|
|
118
|
-
this.renderPopoverContent = () => {
|
|
119
|
-
const mgPopoverContent = this.element.querySelector('mg-popover-content');
|
|
120
|
-
if (mgPopoverContent === null) {
|
|
121
|
-
this.mgPopoverContent = document.createElement('mg-popover-content');
|
|
122
|
-
this.mgPopoverContent.setAttribute('slot', 'content');
|
|
123
|
-
this.mgPopoverContent.setAttribute('id', this.identifier);
|
|
124
|
-
this.mgPopoverContent.addEventListener('hide-content', this.handleHideContent);
|
|
125
|
-
const arrow = document.createElement('div');
|
|
126
|
-
arrow.setAttribute('slot', 'arrow');
|
|
127
|
-
arrow.dataset.popperArrow = '';
|
|
128
|
-
this.mgPopoverContent.appendChild(arrow);
|
|
129
|
-
// insert elements in DOM
|
|
130
|
-
['[slot="title"]', '[slot="content"]:not(mg-popover-content)'].forEach(slotType => {
|
|
131
|
-
Array.from(this.element.querySelectorAll(slotType)).forEach(slot => {
|
|
132
|
-
this.mgPopoverContent.appendChild(slot);
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
this.element.appendChild(this.mgPopoverContent);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
mgPopoverContent.setAttribute('id', this.identifier);
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
validateIdentifier(newValue) {
|
|
143
|
-
if (!isValideID(newValue)) {
|
|
144
|
-
throw new Error(`<mg-popover> prop "identifier" value is invalid. Passed value: ${toString(newValue)}.`);
|
|
145
|
-
}
|
|
146
|
-
// use renderPopoverContent to update popover-content id
|
|
147
|
-
this.renderPopoverContent();
|
|
148
|
-
}
|
|
149
|
-
validateArrowHide(newValue) {
|
|
150
|
-
if (newValue)
|
|
151
|
-
this.mgPopoverContent.dataset.arrowHide = '';
|
|
152
|
-
else
|
|
153
|
-
delete this.mgPopoverContent.dataset.arrowHide;
|
|
154
|
-
}
|
|
155
|
-
validateCloseButton(newValue) {
|
|
156
|
-
this.mgPopoverContent.closeButton = newValue;
|
|
157
|
-
}
|
|
158
|
-
handleDisplay(newValue) {
|
|
159
|
-
if (newValue) {
|
|
160
|
-
this.show();
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
this.hide();
|
|
164
|
-
}
|
|
165
|
-
this.displayChange.emit(newValue);
|
|
166
|
-
}
|
|
167
|
-
/*************
|
|
168
|
-
* Lifecycle *
|
|
169
|
-
*************/
|
|
170
|
-
/**
|
|
171
|
-
* update popper position after props change on component did update hook to benefit from render ended
|
|
172
|
-
*/
|
|
173
|
-
componentDidUpdate() {
|
|
174
|
-
this.popper.update();
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Check if component props are well configured on init
|
|
178
|
-
*/
|
|
179
|
-
componentWillLoad() {
|
|
180
|
-
// Get windows to attach events
|
|
181
|
-
this.windows = getWindows(window);
|
|
182
|
-
// render mg-popover-content slot
|
|
183
|
-
this.renderPopoverContent();
|
|
184
|
-
this.validateCloseButton(this.closeButton);
|
|
185
|
-
this.validateIdentifier(this.identifier);
|
|
186
|
-
this.validateArrowHide(this.arrowHide);
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Check if component props are well configured on init
|
|
190
|
-
*/
|
|
191
|
-
componentDidLoad() {
|
|
192
|
-
// Get popover content
|
|
193
|
-
this.mgPopover = this.element.querySelector(`#${this.identifier}`);
|
|
194
|
-
//Get interactive element (first element without slot attribute)
|
|
195
|
-
this.interactiveElement = this.element.querySelector(':not([slot])');
|
|
196
|
-
// Add aria attributes
|
|
197
|
-
this.interactiveElement.setAttribute('aria-controls', this.identifier);
|
|
198
|
-
this.interactiveElement.setAttribute('aria-expanded', `${this.display}`);
|
|
199
|
-
const fallbackPlacements = [];
|
|
200
|
-
if (this.element.dataset.fallbackPlacement !== undefined) {
|
|
201
|
-
fallbackPlacements.push(this.element.dataset.fallbackPlacement);
|
|
202
|
-
}
|
|
203
|
-
// Create popperjs popover
|
|
204
|
-
this.popper = createPopper(this.interactiveElement, this.mgPopover, {
|
|
205
|
-
placement: this.placement,
|
|
206
|
-
strategy: 'fixed',
|
|
207
|
-
modifiers: [
|
|
208
|
-
{
|
|
209
|
-
name: 'offset',
|
|
210
|
-
options: {
|
|
211
|
-
offset: [0, 0],
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
name: 'flip',
|
|
216
|
-
options: {
|
|
217
|
-
fallbackPlacements: [...fallbackPlacements, 'auto'],
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
],
|
|
221
|
-
});
|
|
222
|
-
// add resize observer
|
|
223
|
-
[this.interactiveElement, this.element.querySelector('mg-popover-content')].forEach(element => {
|
|
224
|
-
new ResizeObserver(() => {
|
|
225
|
-
this.popper.update();
|
|
226
|
-
}).observe(element);
|
|
227
|
-
});
|
|
228
|
-
// Add events to toggle display
|
|
229
|
-
this.interactiveElement.addEventListener('click', () => {
|
|
230
|
-
if (!this.disabled)
|
|
231
|
-
this.display = !this.display;
|
|
232
|
-
});
|
|
233
|
-
this.element.addEventListener('click', (event) => {
|
|
234
|
-
const target = event.target.closest('[popovertargetaction]');
|
|
235
|
-
if (this.display === true && target !== null && target.getAttribute('popovertargetaction') === 'hide') {
|
|
236
|
-
this.display = false;
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
// Add events to hide popover
|
|
240
|
-
this.element.addEventListener('keydown', e => {
|
|
241
|
-
if (!this.disabled && e.code === 'Escape') {
|
|
242
|
-
this.display = false;
|
|
243
|
-
this.componentClose.emit();
|
|
244
|
-
this.interactiveElement.focus();
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
this.handleDisplay(this.display);
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Render
|
|
251
|
-
* @returns HTML Element
|
|
252
|
-
*/
|
|
253
|
-
render() {
|
|
254
|
-
return (h(Host, { key: '2c1506b8e2da100519aeeae75fc5c378a81c473c' }, h("slot", { key: 'f9aea885e8cbc168614c05761829f0a0740eba9e' }), h("slot", { key: 'fa6106a660a73b3761d4783f8d46d401c47b4eb6', name: "content" })));
|
|
255
|
-
}
|
|
256
|
-
get element() { return this; }
|
|
257
|
-
static get watchers() { return {
|
|
258
|
-
"identifier": ["validateIdentifier"],
|
|
259
|
-
"arrowHide": ["validateArrowHide"],
|
|
260
|
-
"closeButton": ["validateCloseButton"],
|
|
261
|
-
"display": ["handleDisplay"]
|
|
262
|
-
}; }
|
|
263
|
-
static get style() { return mgPopoverCss; }
|
|
264
|
-
}, [257, "mg-popover", {
|
|
265
|
-
"identifier": [1],
|
|
266
|
-
"placement": [1],
|
|
267
|
-
"arrowHide": [4, "arrow-hide"],
|
|
268
|
-
"closeButton": [4, "close-button"],
|
|
269
|
-
"display": [1028],
|
|
270
|
-
"disabled": [4]
|
|
271
|
-
}, undefined, {
|
|
272
|
-
"identifier": ["validateIdentifier"],
|
|
273
|
-
"arrowHide": ["validateArrowHide"],
|
|
274
|
-
"closeButton": ["validateCloseButton"],
|
|
275
|
-
"display": ["handleDisplay"]
|
|
276
|
-
}]);
|
|
277
|
-
function defineCustomElement() {
|
|
278
|
-
if (typeof customElements === "undefined") {
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
const components = ["mg-popover", "mg-button", "mg-card", "mg-icon", "mg-popover-content"];
|
|
282
|
-
components.forEach(tagName => { switch (tagName) {
|
|
283
|
-
case "mg-popover":
|
|
284
|
-
if (!customElements.get(tagName)) {
|
|
285
|
-
customElements.define(tagName, MgPopover);
|
|
286
|
-
}
|
|
287
|
-
break;
|
|
288
|
-
case "mg-button":
|
|
289
|
-
if (!customElements.get(tagName)) {
|
|
290
|
-
defineCustomElement$4();
|
|
291
|
-
}
|
|
292
|
-
break;
|
|
293
|
-
case "mg-card":
|
|
294
|
-
if (!customElements.get(tagName)) {
|
|
295
|
-
defineCustomElement$3();
|
|
296
|
-
}
|
|
297
|
-
break;
|
|
298
|
-
case "mg-icon":
|
|
299
|
-
if (!customElements.get(tagName)) {
|
|
300
|
-
defineCustomElement$2();
|
|
301
|
-
}
|
|
302
|
-
break;
|
|
303
|
-
case "mg-popover-content":
|
|
304
|
-
if (!customElements.get(tagName)) {
|
|
305
|
-
defineCustomElement$1();
|
|
306
|
-
}
|
|
307
|
-
break;
|
|
308
|
-
} });
|
|
309
|
-
}
|
|
310
|
-
defineCustomElement();
|
|
311
|
-
|
|
312
|
-
export { MgPopover as M, defineCustomElement as d };
|
|
1
|
+
import{transformTag as t,proxyCustomElement as e,HTMLElement as i,createEvent as s,h as o,Host as a}from"@stencil/core/internal/client";import{c as r,a as n,t as d,g as h}from"./index2.js";import{d as c}from"./mg-button2.js";import{d as l}from"./mg-card2.js";import{d as p}from"./mg-icon2.js";import{d as m}from"./mg-popover-content2.js";import{c as v}from"./popper.js";const g=e(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.displayChange=s(this,"display-change",7),this.componentClose=s(this,"component-close",7),this.identifier=r("mg-popover"),this.placement="bottom",this.arrowHide=!1,this.closeButton=!1,this.display=!1,this.disabled=!1,this.clickOutside=t=>{this.disabled||t.target.closest("mg-popover")===this.element||null!==t.target.closest(`[data-mg-popover-guard="${this.identifier}"]`)||(this.display=!1)},this.show=()=>{this.mgPopover.dataset.show="",this.interactiveElement.setAttribute("aria-expanded","true"),this.setPopperListeners(!0),setTimeout((()=>{this.manageClickOutsideListeners("addEventListener")}))},this.hide=()=>{this.mgPopover.removeAttribute("data-show"),this.interactiveElement.setAttribute("aria-expanded","false"),this.setPopperListeners(!1),this.manageClickOutsideListeners("removeEventListener")},this.setPopperListeners=t=>{this.popper.setOptions((e=>Object.assign(Object.assign({},e),{modifiers:[...e.modifiers,{name:"eventListeners",enabled:t}]})))},this.manageClickOutsideListeners=t=>{var e,i;[...Array.from((null===(i=null===(e=document.querySelector(`[data-mg-popover-guard="${this.identifier}"]`))||void 0===e?void 0:e.shadowRoot)||void 0===i?void 0:i.children)||new Set),...this.windows].forEach((e=>{null!==e&&e[t]("click",this.clickOutside,!1)}))},this.handleHideContent=()=>{this.display=!1,this.componentClose.emit()},this.renderPopoverContent=()=>{const t=this.element.querySelector("mg-popover-content");if(null===t){this.mgPopoverContent=document.createElement("mg-popover-content"),this.mgPopoverContent.setAttribute("slot","content"),this.mgPopoverContent.setAttribute("id",this.identifier),this.mgPopoverContent.addEventListener("hide-content",this.handleHideContent);const t=document.createElement("div");t.setAttribute("slot","arrow"),t.dataset.popperArrow="",this.mgPopoverContent.appendChild(t),['[slot="title"]','[slot="content"]:not(mg-popover-content)'].forEach((t=>{Array.from(this.element.querySelectorAll(t)).forEach((t=>{this.mgPopoverContent.appendChild(t)}))})),this.element.appendChild(this.mgPopoverContent)}else t.setAttribute("id",this.identifier)}}validateIdentifier(t){if(!n(t))throw new Error(`<mg-popover> prop "identifier" value is invalid. Passed value: ${d(t)}.`);this.renderPopoverContent()}validateArrowHide(t){t?this.mgPopoverContent.dataset.arrowHide="":delete this.mgPopoverContent.dataset.arrowHide}validateCloseButton(t){this.mgPopoverContent.closeButton=t}handleDisplay(t){t?this.show():this.hide(),this.displayChange.emit(t)}componentDidUpdate(){this.popper.update()}componentWillLoad(){this.windows=h(window),this.renderPopoverContent(),this.validateCloseButton(this.closeButton),this.validateIdentifier(this.identifier),this.validateArrowHide(this.arrowHide)}componentDidLoad(){this.mgPopover=this.element.querySelector(`#${this.identifier}`),this.interactiveElement=this.element.querySelector(":not([slot])"),this.interactiveElement.setAttribute("aria-controls",this.identifier),this.interactiveElement.setAttribute("aria-expanded",`${this.display}`);const t=[];void 0!==this.element.dataset.fallbackPlacement&&t.push(this.element.dataset.fallbackPlacement),this.popper=v(this.interactiveElement,this.mgPopover,{placement:this.placement,strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,0]}},{name:"flip",options:{fallbackPlacements:[...t,"auto"]}}]}),[this.interactiveElement,this.element.querySelector("mg-popover-content")].forEach((t=>{new ResizeObserver((()=>{this.popper.update()})).observe(t)})),this.interactiveElement.addEventListener("click",(()=>{this.disabled||(this.display=!this.display)})),this.element.addEventListener("click",(t=>{const e=t.target.closest("[popovertargetaction]");!0===this.display&&null!==e&&"hide"===e.getAttribute("popovertargetaction")&&(this.display=!1)})),this.element.addEventListener("keydown",(t=>{this.disabled||"Escape"!==t.code||(this.display=!1,this.componentClose.emit(),this.interactiveElement.focus())})),this.handleDisplay(this.display)}render(){return o(a,{key:"c25d773831395cf154f85cda3be67af22d6d8767"},o("slot",{key:"c6fb5897222e527cc36c78e1f32aaadc4d3c4b01"}),o("slot",{key:"d7f682fdf78caa8491b8e9a74e6d5e91dbf5ef84",name:"content"}))}get element(){return this}static get watchers(){return{identifier:[{validateIdentifier:0}],arrowHide:[{validateArrowHide:0}],closeButton:[{validateCloseButton:0}],display:[{handleDisplay:0}]}}static get style(){return":host{--mg-c-card-spacing:var(--mg-c-popover-padding-vertical, var(--mg-b-size-16)) var(--mg-c-popover-padding-horizontal, var(--mg-b-size-16));--mg-c-card-border:none;--mg-c-card-border-radius:var(--mg-c-popover-border-radius);--mg-c-card-color-background:var(--mg-c-popover-color-background);position:relative;display:contents}:host::slotted(*){display:inline-block}"}},[257,"mg-popover",{identifier:[1],placement:[1],arrowHide:[4,"arrow-hide"],closeButton:[4,"close-button"],display:[1028],disabled:[4]},void 0,{identifier:[{validateIdentifier:0}],arrowHide:[{validateArrowHide:0}],closeButton:[{validateCloseButton:0}],display:[{handleDisplay:0}]}]);function u(){"undefined"!=typeof customElements&&["mg-popover","mg-button","mg-card","mg-icon","mg-popover-content"].forEach((e=>{switch(e){case"mg-popover":customElements.get(t(e))||customElements.define(t(e),g);break;case"mg-button":customElements.get(t(e))||c();break;case"mg-card":customElements.get(t(e))||l();break;case"mg-icon":customElements.get(t(e))||p();break;case"mg-popover-content":customElements.get(t(e))||m()}}))}u();export{g as M,u as d}
|
|
@@ -1,123 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { i as isValidString, t as toString, q as isValidNumber } from './index2.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* List of all possibles roles
|
|
6
|
-
*/
|
|
7
|
-
const roles = ['progressbar', 'meter'];
|
|
8
|
-
|
|
9
|
-
const mgProgressCss = "/*!\n * @prop --mg-c-progress-size: Defines the size of the progress bar. Default value is `--mg-b-size-8`.\n * @prop --mg-c-progress-border-color: Defines the color of the progress bar border. Default value is `--mg-b-color-neutral-80`.\n * @prop --mg-c-progress-bar-color-background: Defines the color of the progress bar. Default value is `--mg-b-color-neutral-30`.\n * @prop --mg-c-progress-fill-color-background: Defines the color of the progress bar fill background. Default value is `--mg-b-color-app`.\n */.mg-c-progress{min-width:calc(var(--mg-b-size-16)*4)}.mg-c-progress__bar{position:relative;overflow:hidden;height:var(--mg-c-progress-size);border-width:var(--mg-b-size-border);border-style:solid;border-color:var(--mg-c-progress-border-color);border-radius:calc((var(--mg-c-progress-size) + var(--mg-b-size-border)*2)/2);background-color:var(--mg-c-progress-bar-color-background)}.mg-c-progress__fill{height:100%;border-radius:calc((var(--mg-c-progress-size) + var(--mg-b-size-border)*2)/2);transition:width 300ms ease-in-out}.mg-c-progress__bar.mg-c-progress__bar--active .mg-c-progress__fill{background-color:var(--mg-c-progress-fill-color-background)}";
|
|
10
|
-
|
|
11
|
-
const MgProgress$1 = /*@__PURE__*/ proxyCustomElement(class MgProgress extends HTMLElement {
|
|
12
|
-
constructor(registerHost) {
|
|
13
|
-
super();
|
|
14
|
-
if (registerHost !== false) {
|
|
15
|
-
this.__registerHost();
|
|
16
|
-
}
|
|
17
|
-
this.__attachShadow();
|
|
18
|
-
/**
|
|
19
|
-
* Define progress role
|
|
20
|
-
* - `progressbar` to indicate a progress, such as loading or percent completion of a task
|
|
21
|
-
* - `meter` to indicate a graphical display of a numeric value that varies within a defined range
|
|
22
|
-
*/
|
|
23
|
-
this.ariaRole = 'progressbar';
|
|
24
|
-
/**
|
|
25
|
-
* Define current value
|
|
26
|
-
* By default, it will be displayed as a percentage value.
|
|
27
|
-
* If you don’t specify the min and max props, the value should be a number within the range of 0 to 100.
|
|
28
|
-
*/
|
|
29
|
-
this.value = 0;
|
|
30
|
-
/**
|
|
31
|
-
* Define the minimum value in the range
|
|
32
|
-
*/
|
|
33
|
-
this.min = 0;
|
|
34
|
-
/**
|
|
35
|
-
* Define the maximum value in the range
|
|
36
|
-
*/
|
|
37
|
-
this.max = 100;
|
|
38
|
-
}
|
|
39
|
-
watchLabel(newValue) {
|
|
40
|
-
if (!isValidString(newValue)) {
|
|
41
|
-
throw new Error(`<mg-progress> prop "label" must be a valid string. Passed value: ${toString(newValue)}.`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
watchAriaRole(newValue) {
|
|
45
|
-
if (newValue && !roles.includes(newValue)) {
|
|
46
|
-
throw new Error(`<mg-progress> prop "ariaRole" must be one of: ${roles.join(', ')}. Passed value: ${toString(newValue)}.`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
watchValue(newValue) {
|
|
50
|
-
if (newValue !== undefined && (!isValidNumber(newValue) || !(newValue >= this.min && newValue <= this.max)))
|
|
51
|
-
throw new Error(`<mg-progress> prop “value” must be a number within the range ${this.min} to ${this.max}. Passed value: ${toString(newValue)}.`);
|
|
52
|
-
}
|
|
53
|
-
watchMin(newValue) {
|
|
54
|
-
if (newValue !== 0 && newValue !== undefined && (!isValidNumber(newValue) || newValue >= this.max))
|
|
55
|
-
throw new Error(`<mg-progress> prop “min” must be a number lower than: ${this.max}. Passed value: ${toString(newValue)}.`);
|
|
56
|
-
}
|
|
57
|
-
watchMax(newValue) {
|
|
58
|
-
if (newValue !== 100 && newValue !== undefined && (!isValidNumber(newValue) || newValue <= this.min))
|
|
59
|
-
throw new Error(`<mg-progress> prop “max” must be a number greater than: ${this.min}. Passed value: ${toString(newValue)}.`);
|
|
60
|
-
}
|
|
61
|
-
/*************
|
|
62
|
-
* Lifecycle *
|
|
63
|
-
*************/
|
|
64
|
-
/**
|
|
65
|
-
* Check if component props are well configured on init
|
|
66
|
-
*/
|
|
67
|
-
componentWillLoad() {
|
|
68
|
-
// validate props
|
|
69
|
-
this.watchLabel(this.label);
|
|
70
|
-
this.watchAriaRole(this.ariaRole);
|
|
71
|
-
this.watchMin(this.min);
|
|
72
|
-
this.watchMax(this.max);
|
|
73
|
-
this.watchValue(this.value);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Render
|
|
77
|
-
* @returns HTML Element
|
|
78
|
-
*/
|
|
79
|
-
render() {
|
|
80
|
-
return (h(Host, { key: '8e6c727e9416fa777fd94b32d618a9137e8e08f7', role: this.ariaRole, "aria-label": this.label, "aria-valuenow": this.value, "aria-valuemin": this.min, "aria-valuemax": this.max }, h("div", { key: 'ac42ee9c5dda55d70aad7391895e4a013aaa27f9', class: "mg-c-progress" }, h("div", { key: '34c77bc6c133bc59b9daa68d7d6c8534f13f7d37', class: { 'mg-c-progress__bar': true, 'mg-c-progress__bar--active': this.value > this.min } }, h("div", { key: '7ea03a3f0c54ca0c81616c7c070d178a510dd7e1', class: "mg-c-progress__fill", style: {
|
|
81
|
-
width: `${Math.round(((this.value - this.min) / (this.max - this.min)) * 100)}%`,
|
|
82
|
-
} })))));
|
|
83
|
-
}
|
|
84
|
-
static get watchers() { return {
|
|
85
|
-
"label": ["watchLabel"],
|
|
86
|
-
"ariaRole": ["watchAriaRole"],
|
|
87
|
-
"value": ["watchValue"],
|
|
88
|
-
"min": ["watchMin"],
|
|
89
|
-
"max": ["watchMax"]
|
|
90
|
-
}; }
|
|
91
|
-
static get style() { return mgProgressCss; }
|
|
92
|
-
}, [257, "mg-progress", {
|
|
93
|
-
"label": [1],
|
|
94
|
-
"ariaRole": [1, "aria-role"],
|
|
95
|
-
"value": [2],
|
|
96
|
-
"min": [2],
|
|
97
|
-
"max": [2]
|
|
98
|
-
}, undefined, {
|
|
99
|
-
"label": ["watchLabel"],
|
|
100
|
-
"ariaRole": ["watchAriaRole"],
|
|
101
|
-
"value": ["watchValue"],
|
|
102
|
-
"min": ["watchMin"],
|
|
103
|
-
"max": ["watchMax"]
|
|
104
|
-
}]);
|
|
105
|
-
function defineCustomElement$1() {
|
|
106
|
-
if (typeof customElements === "undefined") {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const components = ["mg-progress"];
|
|
110
|
-
components.forEach(tagName => { switch (tagName) {
|
|
111
|
-
case "mg-progress":
|
|
112
|
-
if (!customElements.get(tagName)) {
|
|
113
|
-
customElements.define(tagName, MgProgress$1);
|
|
114
|
-
}
|
|
115
|
-
break;
|
|
116
|
-
} });
|
|
117
|
-
}
|
|
118
|
-
defineCustomElement$1();
|
|
119
|
-
|
|
120
|
-
const MgProgress = MgProgress$1;
|
|
121
|
-
const defineCustomElement = defineCustomElement$1;
|
|
122
|
-
|
|
123
|
-
export { MgProgress, defineCustomElement };
|
|
1
|
+
import{transformTag as r,proxyCustomElement as s,HTMLElement as e,h as a,Host as t}from"@stencil/core/internal/client";import{i,t as o,q as c}from"./index2.js";const l=["progressbar","meter"],h=s(class extends e{constructor(r){super(),!1!==r&&this.__registerHost(),this.__attachShadow(),this.ariaRole="progressbar",this.value=0,this.min=0,this.max=100}watchLabel(r){if(!i(r))throw Error(`<mg-progress> prop "label" must be a valid string. Passed value: ${o(r)}.`)}watchAriaRole(r){if(r&&!l.includes(r))throw Error(`<mg-progress> prop "ariaRole" must be one of: ${l.join(", ")}. Passed value: ${o(r)}.`)}watchValue(r){if(!(void 0===r||c(r)&&r>=this.min&&r<=this.max))throw Error(`<mg-progress> prop “value” must be a number within the range ${this.min} to ${this.max}. Passed value: ${o(r)}.`)}watchMin(r){if(0!==r&&void 0!==r&&(!c(r)||r>=this.max))throw Error(`<mg-progress> prop “min” must be a number lower than: ${this.max}. Passed value: ${o(r)}.`)}watchMax(r){if(100!==r&&void 0!==r&&(!c(r)||r<=this.min))throw Error(`<mg-progress> prop “max” must be a number greater than: ${this.min}. Passed value: ${o(r)}.`)}componentWillLoad(){this.watchLabel(this.label),this.watchAriaRole(this.ariaRole),this.watchMin(this.min),this.watchMax(this.max),this.watchValue(this.value)}render(){return a(t,{key:"e6d254a68f35c5019158ab17fcb0e4dfd1943ef8",role:this.ariaRole,"aria-label":this.label,"aria-valuenow":this.value,"aria-valuemin":this.min,"aria-valuemax":this.max},a("div",{key:"5b427579ad97336076504a45013a0be00673f9a9",class:"mg-c-progress"},a("div",{key:"76dbdf88550caf51890e10c45c034d73cd02db5d",class:{"mg-c-progress__bar":!0,"mg-c-progress__bar--active":this.value>this.min}},a("div",{key:"b0ab6f784cdb8cc25a40b83a0d97bcda5b5c1f9b",class:"mg-c-progress__fill",style:{width:Math.round((this.value-this.min)/(this.max-this.min)*100)+"%"}}))))}static get watchers(){return{label:[{watchLabel:0}],ariaRole:[{watchAriaRole:0}],value:[{watchValue:0}],min:[{watchMin:0}],max:[{watchMax:0}]}}static get style(){return".mg-c-progress{min-width:calc(var(--mg-b-size-16)*4)}.mg-c-progress__bar{position:relative;overflow:hidden;height:var(--mg-c-progress-size);border-width:var(--mg-b-size-border);border-style:solid;border-color:var(--mg-c-progress-border-color);border-radius:calc((var(--mg-c-progress-size) + var(--mg-b-size-border)*2)/2);background-color:var(--mg-c-progress-bar-color-background)}.mg-c-progress__fill{height:100%;border-radius:calc((var(--mg-c-progress-size) + var(--mg-b-size-border)*2)/2);transition:width 300ms ease-in-out}.mg-c-progress__bar.mg-c-progress__bar--active .mg-c-progress__fill{background-color:var(--mg-c-progress-fill-color-background)}"}},[1,"mg-progress",{label:[1],ariaRole:[1,"aria-role"],value:[2],min:[2],max:[2]},void 0,{label:[{watchLabel:0}],ariaRole:[{watchAriaRole:0}],value:[{watchValue:0}],min:[{watchMin:0}],max:[{watchMax:0}]}]);function g(){"undefined"!=typeof customElements&&["mg-progress"].forEach((s=>{"mg-progress"===s&&(customElements.get(r(s))||customElements.define(r(s),h))}))}g();const m=h,b=g;export{m as MgProgress,b as defineCustomElement}
|
|
@@ -1,78 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { i as initLocales } from './index3.js';
|
|
3
|
-
import { i as isValidString } from './index2.js';
|
|
4
|
-
|
|
5
|
-
const mgSkipLinksCss = ".mg-c-skip-links{position:absolute;display:flex;min-height:var(--mg-b-size-56);align-items:center;background:var(--mg-b-color-light);opacity:0;transform:translateY(-100%)}.mg-c-skip-links:focus-within{position:relative;opacity:1;transform:translateY(0)}.mg-c-skip-links__list{display:flex;flex-wrap:wrap;align-items:center;padding:0 var(--mg-b-size-16);margin:0;gap:var(--mg-b-spacing-actions);list-style:none}.mg-c-skip-links__link{display:inline-block;padding:var(--mg-b-size-8) var(--mg-b-size-16);color:var(--mg-b-color-dark)}.mg-c-skip-links__link:hover{background:hsl(var(--mg-b-color-dark-h), var(--mg-b-color-dark-s), var(--mg-b-color-dark-l), 10%)}";
|
|
6
|
-
|
|
7
|
-
const MgSkipLinks$1 = /*@__PURE__*/ proxyCustomElement(class MgSkipLinks extends HTMLElement {
|
|
8
|
-
constructor(registerHost) {
|
|
9
|
-
super();
|
|
10
|
-
if (registerHost !== false) {
|
|
11
|
-
this.__registerHost();
|
|
12
|
-
}
|
|
13
|
-
this.__attachShadow();
|
|
14
|
-
this.goToAnchor = createEvent(this, "go-to-anchor", 7);
|
|
15
|
-
/***********
|
|
16
|
-
* Methods *
|
|
17
|
-
**********/
|
|
18
|
-
/**
|
|
19
|
-
* Handle link click and emit go-to-anchor event
|
|
20
|
-
* @param event - mouse event
|
|
21
|
-
*/
|
|
22
|
-
this.handleLinkCLick = (event) => {
|
|
23
|
-
const element = event.currentTarget;
|
|
24
|
-
element.blur();
|
|
25
|
-
this.goToAnchor.emit(element.getAttribute('href'));
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
validateLinks(links) {
|
|
29
|
-
if (links === undefined || links.length === 0 || links.some(link => !isValidString(link.href) || !link.href.startsWith('#') || !isValidString(link.label))) {
|
|
30
|
-
throw new Error(`<mg-skip-links> prop "links": Cannot be empty and each link must contains an href starting with a "#" and a non empty label attributes.`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/*************
|
|
34
|
-
* Lifecycle *
|
|
35
|
-
*************/
|
|
36
|
-
/**
|
|
37
|
-
* Check if props are well configured on init
|
|
38
|
-
*/
|
|
39
|
-
componentWillLoad() {
|
|
40
|
-
this.validateLinks(this.links);
|
|
41
|
-
this.messages = initLocales(this.element).messages;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Render
|
|
45
|
-
* @returns HTML Element
|
|
46
|
-
*/
|
|
47
|
-
render() {
|
|
48
|
-
return (h("nav", { key: '5bf4427662bdca6512969bee91aa03f43a126743', class: "mg-c-skip-links", role: "navigation", "aria-label": this.messages.skipLinks.navLabel }, h("ul", { key: '1d2b2a56b3960f70a3d37b333c77bf686643e0fd', class: "mg-c-skip-links__list", role: "list" }, this.links.map(link => (h("li", { key: link.href }, h("a", { class: "mg-c-skip-links__link", href: link.href, onClick: this.handleLinkCLick }, link.label)))))));
|
|
49
|
-
}
|
|
50
|
-
get element() { return this; }
|
|
51
|
-
static get watchers() { return {
|
|
52
|
-
"links": ["validateLinks"]
|
|
53
|
-
}; }
|
|
54
|
-
static get style() { return mgSkipLinksCss; }
|
|
55
|
-
}, [257, "mg-skip-links", {
|
|
56
|
-
"links": [16]
|
|
57
|
-
}, undefined, {
|
|
58
|
-
"links": ["validateLinks"]
|
|
59
|
-
}]);
|
|
60
|
-
function defineCustomElement$1() {
|
|
61
|
-
if (typeof customElements === "undefined") {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const components = ["mg-skip-links"];
|
|
65
|
-
components.forEach(tagName => { switch (tagName) {
|
|
66
|
-
case "mg-skip-links":
|
|
67
|
-
if (!customElements.get(tagName)) {
|
|
68
|
-
customElements.define(tagName, MgSkipLinks$1);
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
} });
|
|
72
|
-
}
|
|
73
|
-
defineCustomElement$1();
|
|
74
|
-
|
|
75
|
-
const MgSkipLinks = MgSkipLinks$1;
|
|
76
|
-
const defineCustomElement = defineCustomElement$1;
|
|
77
|
-
|
|
78
|
-
export { MgSkipLinks, defineCustomElement };
|
|
1
|
+
import{transformTag as i,proxyCustomElement as s,HTMLElement as t,createEvent as n,h as e}from"@stencil/core/internal/client";import{i as a}from"./index3.js";import{i as l}from"./index2.js";const r=s(class extends t{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow(),this.goToAnchor=n(this,"go-to-anchor",7),this.handleLinkCLick=i=>{const s=i.currentTarget;s.blur(),this.goToAnchor.emit(s.getAttribute("href"))}}validateLinks(i){if(void 0===i||0===i.length||i.some((i=>!l(i.href)||!i.href.startsWith("#")||!l(i.label))))throw Error('<mg-skip-links> prop "links": Cannot be empty and each link must contains an href starting with a "#" and a non empty label attributes.')}componentWillLoad(){this.validateLinks(this.links),this.messages=a(this.element).messages}render(){return e("nav",{key:"9df42d332b207abf989ef73f3c83ebbcfcf222a6",class:"mg-c-skip-links",role:"navigation","aria-label":this.messages.skipLinks.navLabel},e("ul",{key:"0185490dbd3dfb08b534a898fe779850ce96c427",class:"mg-c-skip-links__list",role:"list"},this.links.map((i=>e("li",{key:i.href},e("a",{class:"mg-c-skip-links__link",href:i.href,onClick:this.handleLinkCLick},i.label))))))}get element(){return this}static get watchers(){return{links:[{validateLinks:0}]}}static get style(){return".mg-c-skip-links{position:absolute;display:flex;min-height:var(--mg-b-size-56);align-items:center;background:var(--mg-b-color-light);opacity:0;transform:translateY(-100%)}.mg-c-skip-links:focus-within{position:relative;opacity:1;transform:translateY(0)}.mg-c-skip-links__list{display:flex;flex-wrap:wrap;align-items:center;padding:0 var(--mg-b-size-16);margin:0;gap:var(--mg-b-spacing-actions);list-style:none}.mg-c-skip-links__link{display:inline-block;padding:var(--mg-b-size-8) var(--mg-b-size-16);color:var(--mg-b-color-dark)}.mg-c-skip-links__link:hover{background:hsl(var(--mg-b-color-dark-h), var(--mg-b-color-dark-s), var(--mg-b-color-dark-l), 10%)}"}},[1,"mg-skip-links",{links:[16]},void 0,{links:[{validateLinks:0}]}]);function o(){"undefined"!=typeof customElements&&["mg-skip-links"].forEach((s=>{"mg-skip-links"===s&&(customElements.get(i(s))||customElements.define(i(s),r))}))}o();const c=r,k=o;export{c as MgSkipLinks,k as defineCustomElement}
|