@mgdis/mg-components 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{mg-badge_24.cjs.entry.js → mg-badge_27.cjs.entry.js} +543 -64
- package/dist/cjs/mg-components.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/atoms/mg-button/doc/mg-button.stories.js +1 -0
- package/dist/collection/components/atoms/mg-button/mg-button.css +8 -0
- package/dist/collection/components/atoms/mg-button/mg-button.js +39 -1
- package/dist/collection/components/atoms/mg-card/doc/mg-card.stories.js +18 -0
- package/dist/collection/components/atoms/mg-card/mg-card.css +7 -0
- package/dist/collection/components/atoms/mg-card/mg-card.js +26 -0
- package/dist/collection/components/atoms/mg-divider/doc/mg-divider.stories.js +18 -0
- package/dist/collection/components/atoms/mg-divider/mg-divider.css +9 -0
- package/dist/collection/components/atoms/mg-divider/mg-divider.js +57 -0
- package/dist/collection/components/atoms/mg-tooltip/doc/mg-tooltip.stories.js +0 -5
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js +0 -20
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.css +1 -1
- package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +2 -1
- package/dist/collection/components/molecules/mg-details/doc/mg-details.stories.js +1 -0
- package/dist/collection/components/molecules/mg-details/mg-details.css +29 -0
- package/dist/collection/components/molecules/mg-details/mg-details.js +26 -4
- package/dist/collection/components/molecules/mg-modal/mg-modal.css +2 -1
- package/dist/collection/components/molecules/mg-modal/mg-modal.js +52 -4
- package/dist/collection/components/molecules/mg-panel/mg-panel.css +5 -14
- package/dist/collection/components/molecules/mg-popover/doc/mg-popover.stories.js +0 -5
- package/dist/collection/components/molecules/mg-popover/mg-popover.css +1 -1
- package/dist/collection/components/molecules/mg-popover/mg-popover.js +3 -2
- package/dist/collection/utils/components.utils.js +10 -6
- package/dist/collection/variables.css +17 -2
- package/dist/components/components.utils.js +11 -7
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/components/mg-button2.js +21 -2
- package/dist/components/mg-card.d.ts +11 -0
- package/dist/components/mg-card.js +42 -0
- package/dist/components/mg-details.js +8 -3
- package/dist/components/mg-divider.d.ts +11 -0
- package/dist/components/mg-divider.js +51 -0
- package/dist/components/mg-modal.js +53 -5
- package/dist/components/mg-panel.js +1 -1
- package/dist/components/mg-popover.js +3 -2
- package/dist/components/mg-tooltip2.js +2 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{mg-badge_24.entry.js → mg-badge_27.entry.js} +490 -14
- package/dist/esm/mg-components.js +1 -1
- package/dist/mg-components/mg-components.css +1 -1
- package/dist/mg-components/mg-components.esm.js +1 -1
- package/dist/mg-components/p-e131701a.entry.js +1 -0
- package/dist/mg-components/variables.css +17 -2
- package/dist/types/components/atoms/mg-button/mg-button.d.ts +6 -0
- package/dist/types/components/atoms/mg-card/doc/mg-card.stories.d.ts +6 -0
- package/dist/types/components/atoms/mg-card/mg-card.d.ts +11 -0
- package/dist/types/components/atoms/mg-divider/doc/mg-divider.stories.d.ts +6 -0
- package/dist/types/components/atoms/mg-divider/mg-divider.d.ts +15 -0
- package/dist/types/components/atoms/mg-tooltip/doc/mg-tooltip.stories.d.ts +0 -6
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip.conf.d.ts +0 -8
- package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +1 -1
- package/dist/types/components/molecules/mg-details/mg-details.d.ts +4 -0
- package/dist/types/components/molecules/mg-modal/mg-modal.d.ts +8 -0
- package/dist/types/components/molecules/mg-popover/doc/mg-popover.stories.d.ts +0 -6
- package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +1 -1
- package/dist/types/components.d.ts +55 -6
- package/dist/types/utils/components.utils.d.ts +7 -3
- package/package.json +4 -3
- package/dist/cjs/index-179621c8.js +0 -244
- package/dist/cjs/mg-modal.cjs.entry.js +0 -128
- package/dist/collection/components/molecules/mg-popover/mg-popover.conf.js +0 -20
- package/dist/esm/index-7efedd97.js +0 -238
- package/dist/esm/mg-modal.entry.js +0 -124
- package/dist/mg-components/p-5f89600c.js +0 -1
- package/dist/mg-components/p-b60a4c53.entry.js +0 -1
- package/dist/mg-components/p-df947fa5.entry.js +0 -1
- package/dist/types/components/molecules/mg-popover/mg-popover.conf.d.ts +0 -8
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { h } from '@stencil/core';
|
|
2
2
|
import { filterArgs } from '../../../../../.storybook/utils';
|
|
3
|
-
import { placements } from '../mg-popover.conf';
|
|
4
3
|
export default {
|
|
5
4
|
component: 'mg-popover',
|
|
6
5
|
title: 'Molecules/mg-popover',
|
|
@@ -11,11 +10,7 @@ export default {
|
|
|
11
10
|
},
|
|
12
11
|
argTypes: {
|
|
13
12
|
placement: {
|
|
14
|
-
options: placements,
|
|
15
13
|
control: { type: 'select' },
|
|
16
|
-
table: {
|
|
17
|
-
defaultValue: { summary: 'bottom' },
|
|
18
|
-
},
|
|
19
14
|
},
|
|
20
15
|
},
|
|
21
16
|
};
|
|
@@ -123,6 +123,7 @@ export class MgPopover {
|
|
|
123
123
|
// Create popperjs popover
|
|
124
124
|
this.popper = createPopper(interactiveElement, this.popover, {
|
|
125
125
|
placement: this.placement,
|
|
126
|
+
strategy: 'fixed',
|
|
126
127
|
modifiers: [
|
|
127
128
|
{
|
|
128
129
|
name: 'offset',
|
|
@@ -150,7 +151,7 @@ export class MgPopover {
|
|
|
150
151
|
* @returns {HTMLElement} HTML Element
|
|
151
152
|
*/
|
|
152
153
|
render() {
|
|
153
|
-
return (h(Host, null, h("slot", null), h("div", { id: this.identifier, class: "mg-popover" },
|
|
154
|
+
return (h(Host, null, h("slot", null), h("div", { id: this.identifier, class: "mg-popover" }, this.closeButton && (h("mg-button", { identifier: this.closeButtonId, "is-icon": true, variant: "flat", label: this.messages.general.close, onClick: this.handleCloseButton }, h("mg-icon", { icon: "cross" }))), h("div", { class: "mg-popover__title" }, h("slot", { name: "title" })), h("slot", { name: "content" }), h("div", { class: "mg-popover__arrow", "data-popper-arrow": true }))));
|
|
154
155
|
}
|
|
155
156
|
static get is() { return "mg-popover"; }
|
|
156
157
|
static get encapsulation() { return "shadow"; }
|
|
@@ -193,7 +194,7 @@ export class MgPopover {
|
|
|
193
194
|
"references": {
|
|
194
195
|
"Placement": {
|
|
195
196
|
"location": "import",
|
|
196
|
-
"path": "
|
|
197
|
+
"path": "@popperjs/core"
|
|
197
198
|
}
|
|
198
199
|
}
|
|
199
200
|
},
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @param {number} length ID length
|
|
6
6
|
* @returns {string} ID
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
8
|
+
export const createID = (prefix = '', length = 10) => {
|
|
9
9
|
let ID = '';
|
|
10
10
|
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
11
11
|
const charsLength = chars.length;
|
|
@@ -13,7 +13,7 @@ export function createID(prefix = '', length = 10) {
|
|
|
13
13
|
ID += chars.charAt(Math.floor(Math.random() * charsLength));
|
|
14
14
|
}
|
|
15
15
|
return (prefix !== '' ? `${prefix}-` : '') + ID;
|
|
16
|
-
}
|
|
16
|
+
};
|
|
17
17
|
/**
|
|
18
18
|
* Class to manage component classlist
|
|
19
19
|
* Set() are not working when imported in project
|
|
@@ -69,9 +69,9 @@ export class ClassList {
|
|
|
69
69
|
* @param {string[]} items items to check
|
|
70
70
|
* @returns {boolean} all items are string
|
|
71
71
|
*/
|
|
72
|
-
export
|
|
72
|
+
export const allItemsAreString = (items) => {
|
|
73
73
|
return items && items.every(item => typeof item === 'string');
|
|
74
|
-
}
|
|
74
|
+
};
|
|
75
75
|
/**
|
|
76
76
|
* Check if element is a heading
|
|
77
77
|
*
|
|
@@ -79,6 +79,10 @@ export function allItemsAreString(items) {
|
|
|
79
79
|
* @param {string[]} tagNames allowed tag names list
|
|
80
80
|
* @returns {boolean} element is a heading
|
|
81
81
|
*/
|
|
82
|
-
export
|
|
82
|
+
export const isTagName = (element, tagNames) => {
|
|
83
83
|
return tagNames.includes(element === null || element === void 0 ? void 0 : element.tagName.toLowerCase());
|
|
84
|
-
}
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Focusable elements query selector
|
|
87
|
+
*/
|
|
88
|
+
export const focusableElements = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]), [identifier]';
|
|
@@ -168,17 +168,32 @@
|
|
|
168
168
|
/*
|
|
169
169
|
<mg-panel>
|
|
170
170
|
*/
|
|
171
|
-
|
|
172
171
|
--mg-panel-border-radius: 0.5rem;
|
|
173
172
|
--mg-panel-background: var(--color-info-h) var(--color-info-s) calc(var(--color-info-l) + 68%);
|
|
173
|
+
--mg-panel-box-shadow: var(--box-shadow);
|
|
174
174
|
--mg-panel-content-padding: 1.5rem;
|
|
175
175
|
|
|
176
176
|
/*
|
|
177
177
|
<mg-illustrated-message>
|
|
178
178
|
*/
|
|
179
|
-
|
|
180
179
|
--mg-illustrated-message-padding-vertical: 4rem;
|
|
181
180
|
|
|
181
|
+
/*
|
|
182
|
+
<mg-card>
|
|
183
|
+
*/
|
|
184
|
+
--mg-card-padding: 1.6rem;
|
|
185
|
+
--mg-card-border-radius: 0.5rem;
|
|
186
|
+
--mg-card-background: hsl(var(--color-light));
|
|
187
|
+
--mg-card-border: 0.1rem solid hsla(var(--color-dark), 5%);
|
|
188
|
+
--mg-card-box-shadow: var(--box-shadow);
|
|
189
|
+
|
|
190
|
+
/*
|
|
191
|
+
<mg-divider>
|
|
192
|
+
*/
|
|
193
|
+
--mg-divider-background-color: hsla(var(--color-dark), 15%);
|
|
194
|
+
--mg-divider-thickness: 0.1rem;
|
|
195
|
+
--mg-divider-vertical-spacing: 4rem;
|
|
196
|
+
|
|
182
197
|
/*
|
|
183
198
|
Layout
|
|
184
199
|
*/
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @param {number} length ID length
|
|
6
6
|
* @returns {string} ID
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
const createID = (prefix = '', length = 10) => {
|
|
9
9
|
let ID = '';
|
|
10
10
|
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
11
11
|
const charsLength = chars.length;
|
|
@@ -13,7 +13,7 @@ function createID(prefix = '', length = 10) {
|
|
|
13
13
|
ID += chars.charAt(Math.floor(Math.random() * charsLength));
|
|
14
14
|
}
|
|
15
15
|
return (prefix !== '' ? `${prefix}-` : '') + ID;
|
|
16
|
-
}
|
|
16
|
+
};
|
|
17
17
|
/**
|
|
18
18
|
* Class to manage component classlist
|
|
19
19
|
* Set() are not working when imported in project
|
|
@@ -69,9 +69,9 @@ class ClassList {
|
|
|
69
69
|
* @param {string[]} items items to check
|
|
70
70
|
* @returns {boolean} all items are string
|
|
71
71
|
*/
|
|
72
|
-
|
|
72
|
+
const allItemsAreString = (items) => {
|
|
73
73
|
return items && items.every(item => typeof item === 'string');
|
|
74
|
-
}
|
|
74
|
+
};
|
|
75
75
|
/**
|
|
76
76
|
* Check if element is a heading
|
|
77
77
|
*
|
|
@@ -79,8 +79,12 @@ function allItemsAreString(items) {
|
|
|
79
79
|
* @param {string[]} tagNames allowed tag names list
|
|
80
80
|
* @returns {boolean} element is a heading
|
|
81
81
|
*/
|
|
82
|
-
|
|
82
|
+
const isTagName = (element, tagNames) => {
|
|
83
83
|
return tagNames.includes(element === null || element === void 0 ? void 0 : element.tagName.toLowerCase());
|
|
84
|
-
}
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Focusable elements query selector
|
|
87
|
+
*/
|
|
88
|
+
const focusableElements = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]), [identifier]';
|
|
85
89
|
|
|
86
|
-
export { ClassList as C, allItemsAreString as a, createID as c, isTagName as i };
|
|
90
|
+
export { ClassList as C, allItemsAreString as a, createID as c, focusableElements as f, isTagName as i };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/* MgComponents custom elements */
|
|
2
2
|
export { MgBadge as MgBadge } from '../types/components/atoms/mg-badge/mg-badge';
|
|
3
3
|
export { MgButton as MgButton } from '../types/components/atoms/mg-button/mg-button';
|
|
4
|
+
export { MgCard as MgCard } from '../types/components/atoms/mg-card/mg-card';
|
|
4
5
|
export { MgCharacterLeft as MgCharacterLeft } from '../types/components/atoms/mg-character-left/mg-character-left';
|
|
5
6
|
export { MgDetails as MgDetails } from '../types/components/molecules/mg-details/mg-details';
|
|
7
|
+
export { MgDivider as MgDivider } from '../types/components/atoms/mg-divider/mg-divider';
|
|
6
8
|
export { MgForm as MgForm } from '../types/components/molecules/mg-form/mg-form';
|
|
7
9
|
export { MgIcon as MgIcon } from '../types/components/atoms/mg-icon/mg-icon';
|
|
8
10
|
export { MgIllustratedMessage as MgIllustratedMessage } from '../types/components/molecules/mg-illustrated-message/mg-illustrated-message';
|
package/dist/components/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { setAssetPath, setPlatformOptions } from '@stencil/core/internal/client';
|
|
2
2
|
export { MgBadge, defineCustomElement as defineCustomElementMgBadge } from './mg-badge.js';
|
|
3
3
|
export { MgButton, defineCustomElement as defineCustomElementMgButton } from './mg-button.js';
|
|
4
|
+
export { MgCard, defineCustomElement as defineCustomElementMgCard } from './mg-card.js';
|
|
4
5
|
export { MgCharacterLeft, defineCustomElement as defineCustomElementMgCharacterLeft } from './mg-character-left.js';
|
|
5
6
|
export { MgDetails, defineCustomElement as defineCustomElementMgDetails } from './mg-details.js';
|
|
7
|
+
export { MgDivider, defineCustomElement as defineCustomElementMgDivider } from './mg-divider.js';
|
|
6
8
|
export { MgForm, defineCustomElement as defineCustomElementMgForm } from './mg-form.js';
|
|
7
9
|
export { MgIcon, defineCustomElement as defineCustomElementMgIcon } from './mg-icon.js';
|
|
8
10
|
export { MgIllustratedMessage, defineCustomElement as defineCustomElementMgIllustratedMessage } from './mg-illustrated-message.js';
|
|
@@ -7,7 +7,7 @@ import { d as defineCustomElement$1 } from './mg-icon2.js';
|
|
|
7
7
|
*/
|
|
8
8
|
const variants = ['primary', 'secondary', 'danger', 'danger-alt', 'info', 'flat', 'success'];
|
|
9
9
|
|
|
10
|
-
const mgButtonCss = ":host{display:inline-block;vertical-align:middle;max-width:100%}:host(:focus-visible){outline:0}:host(:focus-visible) .mg-button:not(.mg-button--disabled){outline-color:-webkit-focus-ring-color;outline-style:auto;outline-width:0.2rem}:host(:hover) .mg-button--flat:not(.mg-button--disabled),:host(:focus) .mg-button--flat:not(.mg-button--disabled),:host(:active) .mg-button--flat:not(.mg-button--disabled){background:hsla(var(--color-dark), 0.1)}.mg-button.mg-button--primary{border-color:hsl(var(--mg-button-primary-border-color, var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), calc(var(--mg-button-primary-color-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--mg-button-primary-font-color));background:linear-gradient(to bottom, hsl(var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), var(--mg-button-primary-color-l)), hsl(var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), calc(var(--mg-button-primary-color-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--primary:not(.mg-button--disabled),:host(:focus) .mg-button--primary:not(.mg-button--disabled),:host(:active) .mg-button--primary:not(.mg-button--disabled){background:hsl(var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), var(--mg-button-primary-color-l))}.mg-button.mg-button--secondary{border-color:hsl(var(--mg-button-secondary-border-color, var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), calc(var(--mg-button-secondary-color-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--mg-button-secondary-font-color));background:linear-gradient(to bottom, hsl(var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), var(--mg-button-secondary-color-l)), hsl(var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), calc(var(--mg-button-secondary-color-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--secondary:not(.mg-button--disabled),:host(:focus) .mg-button--secondary:not(.mg-button--disabled),:host(:active) .mg-button--secondary:not(.mg-button--disabled){background:hsl(var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), var(--mg-button-secondary-color-l))}.mg-button.mg-button--danger{border-color:hsl(var(--mg-button-danger-border-color, var(--color-danger-h), var(--color-danger-s), calc(var(--color-danger-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-neutral));background:linear-gradient(to bottom, hsl(var(--color-danger-h), var(--color-danger-s), var(--color-danger-l)), hsl(var(--color-danger-h), var(--color-danger-s), calc(var(--color-danger-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--danger:not(.mg-button--disabled),:host(:focus) .mg-button--danger:not(.mg-button--disabled),:host(:active) .mg-button--danger:not(.mg-button--disabled){background:hsl(var(--color-danger-h), var(--color-danger-s), var(--color-danger-l))}.mg-button.mg-button--danger-alt{border-color:hsl(var(--mg-button-danger-alt-border-color, var(--color-neutral-h), var(--color-neutral-s), calc(var(--color-neutral-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-danger));background:linear-gradient(to bottom, hsl(var(--color-neutral-h), var(--color-neutral-s), var(--color-neutral-l)), hsl(var(--color-neutral-h), var(--color-neutral-s), calc(var(--color-neutral-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--danger-alt:not(.mg-button--disabled),:host(:focus) .mg-button--danger-alt:not(.mg-button--disabled),:host(:active) .mg-button--danger-alt:not(.mg-button--disabled){background:hsl(var(--color-neutral-h), var(--color-neutral-s), var(--color-neutral-l))}.mg-button.mg-button--info{border-color:hsl(var(--mg-button-info-border-color, var(--color-info-h), var(--color-info-s), calc(var(--color-info-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-neutral));background:linear-gradient(to bottom, hsl(var(--color-info-h), var(--color-info-s), var(--color-info-l)), hsl(var(--color-info-h), var(--color-info-s), calc(var(--color-info-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--info:not(.mg-button--disabled),:host(:focus) .mg-button--info:not(.mg-button--disabled),:host(:active) .mg-button--info:not(.mg-button--disabled){background:hsl(var(--color-info-h), var(--color-info-s), var(--color-info-l))}.mg-button.mg-button--success{border-color:hsl(var(--mg-button-success-border-color, var(--color-success-h), var(--color-success-s), calc(var(--color-success-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-dark));background:linear-gradient(to bottom, hsl(var(--color-success-h), var(--color-success-s), var(--color-success-l)), hsl(var(--color-success-h), var(--color-success-s), calc(var(--color-success-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--success:not(.mg-button--disabled),:host(:focus) .mg-button--success:not(.mg-button--disabled),:host(:active) .mg-button--success:not(.mg-button--disabled){background:hsl(var(--color-success-h), var(--color-success-s), var(--color-success-l))}.mg-button{position:relative;display:inline-flex;align-items:center;column-gap:0.6rem;padding:calc((var(--default-size) - 0.2rem - var(--font-size) * var(--line-height)) / 2) 1.1rem;min-height:var(--default-size);box-sizing:border-box;border-top-right-radius:var(--mg-button-border-radius-top-right, var(--mg-button-border-radius));border-top-left-radius:var(--mg-button-border-radius-top-left, var(--mg-button-border-radius));border-bottom-right-radius:var(--mg-button-border-radius-bottom-right, var(--mg-button-border-radius));border-bottom-left-radius:var(--mg-button-border-radius-bottom-left, var(--mg-button-border-radius));cursor:pointer;background-image:none;border-top-width:var(--mg-button-border-top-width, 0.1rem);border-right-width:var(--mg-button-border-right-width, 0.1rem);border-bottom-width:var(--mg-button-border-bottom-width, 0.1rem);border-left-width:var(--mg-button-border-left-width, 0.1rem);border-style:solid;text-decoration:none;font-family:inherit;font-weight:var(--mg-button-font-weight, normal);text-align:left;font-size:var(--font-size);touch-action:manipulation}.mg-button.mg-button--disabled{opacity:var(--mg-button-disabled-opacity);cursor:default}.mg-button.mg-button--icon{padding:0;justify-content:center;width:var(--default-size);height:var(--default-size);border-top-right-radius:var(--mg-button-border-radius-top-right, var(--mg-button-icon-border-radius));border-top-left-radius:var(--mg-button-border-radius-top-left, var(--mg-button-icon-border-radius));border-bottom-right-radius:var(--mg-button-border-radius-bottom-right, var(--mg-button-icon-border-radius));border-bottom-left-radius:var(--mg-button-border-radius-bottom-left, var(--mg-button-icon-border-radius));font-size:var(--font-size);line-height:var(--font-size)}.mg-button.mg-button--flat{background:none;border:none}.mg-button.mg-button--loading>mg-icon:first-of-type{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%)}.mg-button.mg-button--loading .mg-button__content{opacity:0}.mg-button mg-icon:only-child,.mg-button ::slotted(mg-icon){display:inline-flex;flex-shrink:0;line-height:1;margin:auto 0}.mg-button slot,.mg-button ::slotted(*:not(mg-icon)){text-decoration:none;font-family:inherit;font-weight:var(--mg-button-font-weight, normal);text-align:left;font-size:var(--font-size);display:flex;align-items:center;column-gap:0.6rem}";
|
|
10
|
+
const mgButtonCss = ":host{display:inline-block;vertical-align:middle;max-width:100%}:host(:focus-visible){outline:0}:host(:focus-visible) .mg-button:not(.mg-button--disabled){outline-color:-webkit-focus-ring-color;outline-style:auto;outline-width:0.2rem}:host(:hover) .mg-button--flat:not(.mg-button--disabled),:host(:focus) .mg-button--flat:not(.mg-button--disabled),:host(:active) .mg-button--flat:not(.mg-button--disabled){background:hsla(var(--color-dark), 0.1)}:host([full-width]){display:block}.mg-button.mg-button--primary{border-color:hsl(var(--mg-button-primary-border-color, var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), calc(var(--mg-button-primary-color-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--mg-button-primary-font-color));background:linear-gradient(to bottom, hsl(var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), var(--mg-button-primary-color-l)), hsl(var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), calc(var(--mg-button-primary-color-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--primary:not(.mg-button--disabled),:host(:focus) .mg-button--primary:not(.mg-button--disabled),:host(:active) .mg-button--primary:not(.mg-button--disabled){background:hsl(var(--mg-button-primary-color-h), var(--mg-button-primary-color-s), var(--mg-button-primary-color-l))}.mg-button.mg-button--secondary{border-color:hsl(var(--mg-button-secondary-border-color, var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), calc(var(--mg-button-secondary-color-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--mg-button-secondary-font-color));background:linear-gradient(to bottom, hsl(var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), var(--mg-button-secondary-color-l)), hsl(var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), calc(var(--mg-button-secondary-color-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--secondary:not(.mg-button--disabled),:host(:focus) .mg-button--secondary:not(.mg-button--disabled),:host(:active) .mg-button--secondary:not(.mg-button--disabled){background:hsl(var(--mg-button-secondary-color-h), var(--mg-button-secondary-color-s), var(--mg-button-secondary-color-l))}.mg-button.mg-button--danger{border-color:hsl(var(--mg-button-danger-border-color, var(--color-danger-h), var(--color-danger-s), calc(var(--color-danger-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-neutral));background:linear-gradient(to bottom, hsl(var(--color-danger-h), var(--color-danger-s), var(--color-danger-l)), hsl(var(--color-danger-h), var(--color-danger-s), calc(var(--color-danger-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--danger:not(.mg-button--disabled),:host(:focus) .mg-button--danger:not(.mg-button--disabled),:host(:active) .mg-button--danger:not(.mg-button--disabled){background:hsl(var(--color-danger-h), var(--color-danger-s), var(--color-danger-l))}.mg-button.mg-button--danger-alt{border-color:hsl(var(--mg-button-danger-alt-border-color, var(--color-neutral-h), var(--color-neutral-s), calc(var(--color-neutral-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-danger));background:linear-gradient(to bottom, hsl(var(--color-neutral-h), var(--color-neutral-s), var(--color-neutral-l)), hsl(var(--color-neutral-h), var(--color-neutral-s), calc(var(--color-neutral-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--danger-alt:not(.mg-button--disabled),:host(:focus) .mg-button--danger-alt:not(.mg-button--disabled),:host(:active) .mg-button--danger-alt:not(.mg-button--disabled){background:hsl(var(--color-neutral-h), var(--color-neutral-s), var(--color-neutral-l))}.mg-button.mg-button--info{border-color:hsl(var(--mg-button-info-border-color, var(--color-info-h), var(--color-info-s), calc(var(--color-info-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-neutral));background:linear-gradient(to bottom, hsl(var(--color-info-h), var(--color-info-s), var(--color-info-l)), hsl(var(--color-info-h), var(--color-info-s), calc(var(--color-info-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--info:not(.mg-button--disabled),:host(:focus) .mg-button--info:not(.mg-button--disabled),:host(:active) .mg-button--info:not(.mg-button--disabled){background:hsl(var(--color-info-h), var(--color-info-s), var(--color-info-l))}.mg-button.mg-button--success{border-color:hsl(var(--mg-button-success-border-color, var(--color-success-h), var(--color-success-s), calc(var(--color-success-l) - var(--mg-button-border-variation) * 10%)));color:hsl(var(--color-dark));background:linear-gradient(to bottom, hsl(var(--color-success-h), var(--color-success-s), var(--color-success-l)), hsl(var(--color-success-h), var(--color-success-s), calc(var(--color-success-l) - var(--mg-button-gradient) * 10%)))}:host(:hover) .mg-button--success:not(.mg-button--disabled),:host(:focus) .mg-button--success:not(.mg-button--disabled),:host(:active) .mg-button--success:not(.mg-button--disabled){background:hsl(var(--color-success-h), var(--color-success-s), var(--color-success-l))}.mg-button{position:relative;display:inline-flex;align-items:center;column-gap:0.6rem;padding:calc((var(--default-size) - 0.2rem - var(--font-size) * var(--line-height)) / 2) 1.1rem;min-height:var(--default-size);box-sizing:border-box;border-top-right-radius:var(--mg-button-border-radius-top-right, var(--mg-button-border-radius));border-top-left-radius:var(--mg-button-border-radius-top-left, var(--mg-button-border-radius));border-bottom-right-radius:var(--mg-button-border-radius-bottom-right, var(--mg-button-border-radius));border-bottom-left-radius:var(--mg-button-border-radius-bottom-left, var(--mg-button-border-radius));cursor:pointer;background-image:none;border-top-width:var(--mg-button-border-top-width, 0.1rem);border-right-width:var(--mg-button-border-right-width, 0.1rem);border-bottom-width:var(--mg-button-border-bottom-width, 0.1rem);border-left-width:var(--mg-button-border-left-width, 0.1rem);border-style:solid;text-decoration:none;font-family:inherit;font-weight:var(--mg-button-font-weight, normal);text-align:left;font-size:var(--font-size);touch-action:manipulation}.mg-button.mg-button--disabled{opacity:var(--mg-button-disabled-opacity);cursor:default}.mg-button.mg-button--icon{padding:0;justify-content:center;width:var(--default-size);height:var(--default-size);border-top-right-radius:var(--mg-button-border-radius-top-right, var(--mg-button-icon-border-radius));border-top-left-radius:var(--mg-button-border-radius-top-left, var(--mg-button-icon-border-radius));border-bottom-right-radius:var(--mg-button-border-radius-bottom-right, var(--mg-button-icon-border-radius));border-bottom-left-radius:var(--mg-button-border-radius-bottom-left, var(--mg-button-icon-border-radius));font-size:var(--font-size);line-height:var(--font-size)}.mg-button.mg-button--flat{background:none;border:none}.mg-button.mg-button--full-width{display:flex;justify-content:center}.mg-button.mg-button--loading>mg-icon:first-of-type{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%)}.mg-button.mg-button--loading .mg-button__content{opacity:0}.mg-button mg-icon:only-child,.mg-button ::slotted(mg-icon){display:inline-flex;flex-shrink:0;line-height:1;margin:auto 0}.mg-button slot,.mg-button ::slotted(*:not(mg-icon)){text-decoration:none;font-family:inherit;font-weight:var(--mg-button-font-weight, normal);text-align:left;font-size:var(--font-size);display:flex;align-items:center;column-gap:0.6rem}";
|
|
11
11
|
|
|
12
12
|
const MgButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
13
13
|
constructor() {
|
|
@@ -20,10 +20,15 @@ const MgButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
20
20
|
this.onClickElementFn = null;
|
|
21
21
|
this.classDisabled = 'mg-button--disabled';
|
|
22
22
|
this.classLoading = 'mg-button--loading';
|
|
23
|
+
this.classFullWidth = 'mg-button--full-width';
|
|
23
24
|
/**
|
|
24
25
|
* Define button variant
|
|
25
26
|
*/
|
|
26
27
|
this.variant = variants[0]; // Primary
|
|
28
|
+
/**
|
|
29
|
+
* Set button to full-width
|
|
30
|
+
*/
|
|
31
|
+
this.fullWidth = false;
|
|
27
32
|
/**
|
|
28
33
|
* Define if button is round.
|
|
29
34
|
* Used for icon button.
|
|
@@ -98,6 +103,17 @@ const MgButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
98
103
|
this.classList.add(`mg-button--${newValue}`);
|
|
99
104
|
}
|
|
100
105
|
}
|
|
106
|
+
validateFullWidth(newValue) {
|
|
107
|
+
if (newValue && this.isIcon) {
|
|
108
|
+
throw new Error('<mg-button> prop "fullWidth" cannot be used with prop "isIcon".');
|
|
109
|
+
}
|
|
110
|
+
else if (newValue) {
|
|
111
|
+
this.classList.add(this.classFullWidth);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.classList.delete(this.classFullWidth);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
101
117
|
disabledHandler(isDisabled) {
|
|
102
118
|
// Remove loading when enable
|
|
103
119
|
// Will be set back onclick
|
|
@@ -130,6 +146,7 @@ const MgButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
130
146
|
*/
|
|
131
147
|
componentWillLoad() {
|
|
132
148
|
this.validateVariant(this.variant);
|
|
149
|
+
this.validateFullWidth(this.fullWidth);
|
|
133
150
|
if (this.isIcon) {
|
|
134
151
|
this.classList.add(`mg-button--icon`);
|
|
135
152
|
if (typeof this.label !== 'string' || this.label.trim() === '') {
|
|
@@ -146,11 +163,12 @@ const MgButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
146
163
|
* @returns {HTMLElement} html element
|
|
147
164
|
*/
|
|
148
165
|
render() {
|
|
149
|
-
return (h(Host, { role: "button", tabIndex: this.disabled ? -1 : 0, type: this.type, form: this.form, "aria-label": this.label, "aria-disabled": this.disabled !== undefined && this.disabled.toString(), onClick: this.handleClick, onKeyUp: this.handleKeyup, onKeyDown: this.handleKeydown }, h("div", { class: this.classList.join(), id: this.identifier }, this.loading && h("mg-icon", { icon: "loader", spin: true }), h("div", { class: "mg-button__content" }, h("slot", null)))));
|
|
166
|
+
return (h(Host, { role: "button", tabIndex: this.disabled ? -1 : 0, type: this.type, form: this.form, "full-width": this.fullWidth, "aria-label": this.label, "aria-disabled": this.disabled !== undefined && this.disabled.toString(), onClick: this.handleClick, onKeyUp: this.handleKeyup, onKeyDown: this.handleKeydown }, h("div", { class: this.classList.join(), id: this.identifier }, this.loading && h("mg-icon", { icon: "loader", spin: true }), h("div", { class: "mg-button__content" }, h("slot", null)))));
|
|
150
167
|
}
|
|
151
168
|
get element() { return this; }
|
|
152
169
|
static get watchers() { return {
|
|
153
170
|
"variant": ["validateVariant"],
|
|
171
|
+
"fullWidth": ["validateFullWidth"],
|
|
154
172
|
"disabled": ["disabledHandler"],
|
|
155
173
|
"loading": ["loadingHandler"]
|
|
156
174
|
}; }
|
|
@@ -160,6 +178,7 @@ const MgButton = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
160
178
|
"identifier": [1],
|
|
161
179
|
"label": [1],
|
|
162
180
|
"type": [1],
|
|
181
|
+
"fullWidth": [1028, "full-width"],
|
|
163
182
|
"form": [1025],
|
|
164
183
|
"disabled": [1028],
|
|
165
184
|
"isIcon": [4, "is-icon"],
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface MgCard extends Components.MgCard, HTMLElement {}
|
|
4
|
+
export const MgCard: {
|
|
5
|
+
prototype: MgCard;
|
|
6
|
+
new (): MgCard;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const mgCardCss = ".mg-card{padding:var(--mg-card-padding);border-radius:var(--mg-card-border-radius);background:var(--mg-card-background);border:var(--mg-card-border);box-shadow:var(--mg-card-box-shadow)}";
|
|
4
|
+
|
|
5
|
+
const MgCard$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.__registerHost();
|
|
9
|
+
this.__attachShadow();
|
|
10
|
+
}
|
|
11
|
+
/*************
|
|
12
|
+
* Lifecycle *
|
|
13
|
+
*************/
|
|
14
|
+
/**
|
|
15
|
+
* Render
|
|
16
|
+
*
|
|
17
|
+
* @returns {HTMLElement} HTML Element
|
|
18
|
+
*/
|
|
19
|
+
render() {
|
|
20
|
+
return (h("div", { class: "mg-card" }, h("slot", null)));
|
|
21
|
+
}
|
|
22
|
+
static get style() { return mgCardCss; }
|
|
23
|
+
}, [1, "mg-card"]);
|
|
24
|
+
function defineCustomElement$1() {
|
|
25
|
+
if (typeof customElements === "undefined") {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const components = ["mg-card"];
|
|
29
|
+
components.forEach(tagName => { switch (tagName) {
|
|
30
|
+
case "mg-card":
|
|
31
|
+
if (!customElements.get(tagName)) {
|
|
32
|
+
customElements.define(tagName, MgCard$1);
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
} });
|
|
36
|
+
}
|
|
37
|
+
defineCustomElement$1();
|
|
38
|
+
|
|
39
|
+
const MgCard = MgCard$1;
|
|
40
|
+
const defineCustomElement = defineCustomElement$1;
|
|
41
|
+
|
|
42
|
+
export { MgCard, defineCustomElement };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
2
|
import { d as defineCustomElement$2 } from './mg-icon2.js';
|
|
3
3
|
|
|
4
|
-
const mgDetailsCss = ".mg-details summary{display:flex;align-items:baseline;cursor:pointer}.mg-details__toggle{margin-left:1.5rem;flex-shrink:0}.mg-details__details{margin-top:1.5rem}";
|
|
4
|
+
const mgDetailsCss = ".sr-only{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}.mg-details summary{display:flex;align-items:baseline;cursor:pointer}.mg-details__toggle{margin-left:1.5rem;flex-shrink:0;display:flex;align-items:center;align-self:flex-start;gap:0.6rem;min-height:calc(var(--font-size) * var(--line-height))}.mg-details__toggle mg-icon{align-self:self-end}.mg-details__details{margin-top:1.5rem}";
|
|
5
5
|
|
|
6
6
|
const MgDetails$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
7
7
|
constructor() {
|
|
@@ -9,6 +9,10 @@ const MgDetails$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
9
9
|
this.__registerHost();
|
|
10
10
|
this.__attachShadow();
|
|
11
11
|
this.expandedChange = createEvent(this, "expanded-change", 7);
|
|
12
|
+
/**
|
|
13
|
+
* Hide summary element
|
|
14
|
+
*/
|
|
15
|
+
this.hideSummary = false;
|
|
12
16
|
/**
|
|
13
17
|
* Define if details are diplayed
|
|
14
18
|
*/
|
|
@@ -23,7 +27,7 @@ const MgDetails$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
23
27
|
};
|
|
24
28
|
}
|
|
25
29
|
validateTitles(newValue) {
|
|
26
|
-
if (newValue === undefined || newValue === '') {
|
|
30
|
+
if (newValue === undefined || newValue.trim() === '') {
|
|
27
31
|
throw new Error('<mg-details> prop "toggleClosed" and "toggleOpened" must be defined.');
|
|
28
32
|
}
|
|
29
33
|
}
|
|
@@ -48,7 +52,7 @@ const MgDetails$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
48
52
|
* @returns {HTMLElement} HTML Element
|
|
49
53
|
*/
|
|
50
54
|
render() {
|
|
51
|
-
return (h("details", { class: "mg-details", onToggle: this.handleToggle, open: this.expanded, ref: el => (this.details = el) }, h("summary", null, h("slot", { name: "summary" }), h("span", { class: "mg-details__toggle" }, h("mg-icon", { icon: this.expanded ? 'chevron-up' : 'chevron-down' }), "
|
|
55
|
+
return (h("details", { class: "mg-details", onToggle: this.handleToggle, open: this.expanded, ref: el => (this.details = el) }, h("summary", null, h("slot", { name: "summary" }), h("span", { class: "mg-details__toggle" }, h("mg-icon", { icon: this.expanded ? 'chevron-up' : 'chevron-down' }), h("span", { class: { 'sr-only': this.hideSummary } }, this.expanded ? this.toggleOpened : this.toggleClosed))), h("div", { class: "mg-details__details" }, h("slot", { name: "details" }))));
|
|
52
56
|
}
|
|
53
57
|
static get watchers() { return {
|
|
54
58
|
"toggleClosed": ["validateTitles"],
|
|
@@ -59,6 +63,7 @@ const MgDetails$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
59
63
|
}, [1, "mg-details", {
|
|
60
64
|
"toggleClosed": [1, "toggle-closed"],
|
|
61
65
|
"toggleOpened": [1, "toggle-opened"],
|
|
66
|
+
"hideSummary": [4, "hide-summary"],
|
|
62
67
|
"expanded": [1028]
|
|
63
68
|
}]);
|
|
64
69
|
function defineCustomElement$1() {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface MgDivider extends Components.MgDivider, HTMLElement {}
|
|
4
|
+
export const MgDivider: {
|
|
5
|
+
prototype: MgDivider;
|
|
6
|
+
new (): MgDivider;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const mgDividerCss = ".mg-divider{margin:var(--mg-divider-vertical-spacing) auto;width:12rem;height:var(--mg-divider-thickness);background-color:var(--mg-divider-background-color)}.mg-divider.mg-divider--full{width:100%}";
|
|
4
|
+
|
|
5
|
+
const MgDivider$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.__registerHost();
|
|
9
|
+
this.__attachShadow();
|
|
10
|
+
/**************
|
|
11
|
+
* Decorators *
|
|
12
|
+
**************/
|
|
13
|
+
/**
|
|
14
|
+
* Define component size
|
|
15
|
+
*/
|
|
16
|
+
this.size = 'regular';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Render
|
|
20
|
+
*
|
|
21
|
+
* @returns {HTMLElement} HTML Element
|
|
22
|
+
*/
|
|
23
|
+
render() {
|
|
24
|
+
return (h("div", { class: {
|
|
25
|
+
'mg-divider': true,
|
|
26
|
+
'mg-divider--full': this.size === 'full',
|
|
27
|
+
} }));
|
|
28
|
+
}
|
|
29
|
+
static get style() { return mgDividerCss; }
|
|
30
|
+
}, [1, "mg-divider", {
|
|
31
|
+
"size": [1]
|
|
32
|
+
}]);
|
|
33
|
+
function defineCustomElement$1() {
|
|
34
|
+
if (typeof customElements === "undefined") {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const components = ["mg-divider"];
|
|
38
|
+
components.forEach(tagName => { switch (tagName) {
|
|
39
|
+
case "mg-divider":
|
|
40
|
+
if (!customElements.get(tagName)) {
|
|
41
|
+
customElements.define(tagName, MgDivider$1);
|
|
42
|
+
}
|
|
43
|
+
break;
|
|
44
|
+
} });
|
|
45
|
+
}
|
|
46
|
+
defineCustomElement$1();
|
|
47
|
+
|
|
48
|
+
const MgDivider = MgDivider$1;
|
|
49
|
+
const defineCustomElement = defineCustomElement$1;
|
|
50
|
+
|
|
51
|
+
export { MgDivider, defineCustomElement };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
|
-
import { c as createID, C as ClassList } from './components.utils.js';
|
|
2
|
+
import { c as createID, C as ClassList, f as focusableElements } from './components.utils.js';
|
|
3
3
|
import { i as initLocales } from './index2.js';
|
|
4
4
|
import { d as defineCustomElement$3 } from './mg-button2.js';
|
|
5
5
|
import { d as defineCustomElement$2 } from './mg-icon2.js';
|
|
6
6
|
|
|
7
|
-
const mgModalCss = ".mg-modal{display:flex;justify-content:center;align-items:center;position:fixed;top:0;right:0;bottom:0;left:0;z-index:
|
|
7
|
+
const mgModalCss = ".mg-modal{display:flex;justify-content:center;align-items:center;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;padding:2rem 0;background-color:hsla(var(--color-light), 85%)}.mg-modal__dialog{display:flex;position:relative;flex-direction:column;align-self:center;row-gap:3rem;padding:1.5rem 2.5rem;width:60rem;height:fit-content;max-width:100%;max-height:100%;box-sizing:border-box;background-color:hsl(var(--color-light));box-shadow:var(--box-shadow);border-radius:var(--mg-modal-border-radius)}.mg-modal__header{margin-bottom:0.5rem}.mg-modal__title{margin:0;font-family:var(--font-family-heading);font-size:var(--mg-modal-title-font-size);font-weight:600}.mg-modal__close-button{float:right;height:var(--mg-modal-title-font-size);margin-top:calc((var(--default-size) - var(--mg-modal-title-font-size) * var(--line-height)) / 2 * -1);margin-right:calc((var(--default-size) - var(--mg-icon-regular-size)) / 2 * -1)}.mg-modal__content{overflow-y:auto}.mg-modal__content::slotted(*){font-size:var(--mg-modal-content-font-size)}.mg-modal.mg-modal--hide{display:none}";
|
|
8
8
|
|
|
9
9
|
const MgModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
10
10
|
constructor() {
|
|
@@ -13,9 +13,6 @@ const MgModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
13
13
|
this.__attachShadow();
|
|
14
14
|
this.componentShow = createEvent(this, "component-show", 7);
|
|
15
15
|
this.componentHide = createEvent(this, "component-hide", 7);
|
|
16
|
-
/************
|
|
17
|
-
* Internal *
|
|
18
|
-
************/
|
|
19
16
|
// Classes
|
|
20
17
|
this.classHide = 'mg-modal--hide';
|
|
21
18
|
// IDs
|
|
@@ -46,6 +43,37 @@ const MgModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
46
43
|
* Component classes
|
|
47
44
|
*/
|
|
48
45
|
this.classList = new ClassList(['mg-modal']);
|
|
46
|
+
this.setFocus = () => {
|
|
47
|
+
// Get all focusable elements
|
|
48
|
+
this.modalFocusableElements = Array.from(this.element.querySelectorAll(focusableElements)).reduce((acc, focusableElement) => {
|
|
49
|
+
acc.push(focusableElement.shadowRoot !== null ? focusableElement.shadowRoot.querySelector(focusableElements) || focusableElement : focusableElement);
|
|
50
|
+
return acc;
|
|
51
|
+
}, []);
|
|
52
|
+
// When close button is enabled it's the first focusable element.
|
|
53
|
+
if (this.closeButton) {
|
|
54
|
+
this.modalFocusableElements.unshift(this.element.shadowRoot.querySelector(`.mg-modal__close-button mg-button`));
|
|
55
|
+
}
|
|
56
|
+
// It at least one
|
|
57
|
+
if (this.modalFocusableElements.length >= 1) {
|
|
58
|
+
// Set focus on first element
|
|
59
|
+
this.modalFocusableElements[0].focus();
|
|
60
|
+
// Add event listener on last element
|
|
61
|
+
const lastFocusableElement = this.modalFocusableElements[this.modalFocusableElements.length - 1];
|
|
62
|
+
lastFocusableElement.addEventListener('keydown', event => {
|
|
63
|
+
if (event.key === 'Tab' && !event.shiftKey) {
|
|
64
|
+
event.preventDefault();
|
|
65
|
+
this.modalFocusableElements[0].focus();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// Add event listener on first element (case shift + tab)
|
|
69
|
+
this.modalFocusableElements[0].addEventListener('keydown', event => {
|
|
70
|
+
if (event.key === 'Tab' && event.shiftKey) {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
lastFocusableElement.focus();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
};
|
|
49
77
|
/*************
|
|
50
78
|
* Handlers *
|
|
51
79
|
*************/
|
|
@@ -110,6 +138,26 @@ const MgModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
110
138
|
this.validateModalTitle(this.modalTitle);
|
|
111
139
|
this.validateHide(this.hide);
|
|
112
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Add observer on component to set focus when displayed
|
|
143
|
+
*
|
|
144
|
+
* @returns {void}
|
|
145
|
+
*/
|
|
146
|
+
componentDidLoad() {
|
|
147
|
+
new MutationObserver(mutationList => {
|
|
148
|
+
/*
|
|
149
|
+
TODO find a way to cover this callback
|
|
150
|
+
*/
|
|
151
|
+
/* istanbul ignore next */
|
|
152
|
+
if (mutationList.some(mutation => mutation.attributeName === 'aria-hidden' && mutation.target.ariaHidden === null)) {
|
|
153
|
+
this.setFocus();
|
|
154
|
+
}
|
|
155
|
+
}).observe(this.element.shadowRoot.getElementById(this.identifier), { attributes: true });
|
|
156
|
+
// Set focus if display on load
|
|
157
|
+
if (!this.hide) {
|
|
158
|
+
this.setFocus();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
113
161
|
/**
|
|
114
162
|
* Render
|
|
115
163
|
*
|
|
@@ -8,7 +8,7 @@ import { d as defineCustomElement$4 } from './mg-input-text2.js';
|
|
|
8
8
|
import { d as defineCustomElement$3 } from './mg-input-title2.js';
|
|
9
9
|
import { d as defineCustomElement$2 } from './mg-tooltip2.js';
|
|
10
10
|
|
|
11
|
-
const mgPanelCss = ".mg-panel{background-color:hsl(var(--mg-panel-background));border-radius:var(--mg-panel-border-radius);box-shadow:var(--box-shadow)}.mg-panel__header{display:flex;flex-wrap:wrap;justify-content:space-between;padding:0 1rem 0 0.3rem;align-items:flex-start}.mg-panel__header-left,.mg-panel__header-right{display:flex;margin:0.3rem 0}.mg-panel__header-
|
|
11
|
+
const mgPanelCss = ".mg-panel{background-color:hsl(var(--mg-panel-background));border-radius:var(--mg-panel-border-radius);box-shadow:var(--mg-panel-box-shadow)}.mg-panel__header{display:flex;flex-wrap:wrap;justify-content:space-between;padding:0 1rem 0 0.3rem;align-items:flex-start}.mg-panel__header-left,.mg-panel__header-right{display:flex;margin:0.3rem 0}.mg-panel__header-right{padding-left:0.3rem;flex:1 auto}.mg-panel__header-left mg-input-text{flex-grow:1;margin-left:0.3rem}.mg-panel__header-left mg-button+mg-button:not([slot=append-input]){margin-left:0.3rem}.mg-panel__header-left.mg-panel__header-left--full{flex:1 1 auto}.mg-panel__collapse-button-content{--font-size:1.4rem;--mg-button-font-weight:600}.mg-panel__content{padding:var(--mg-panel-content-padding)}.mg-panel ::slotted([slot=header-right]){display:flex;flex-wrap:wrap;gap:1rem;margin-left:auto}";
|
|
12
12
|
|
|
13
13
|
const MgPanel$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
14
14
|
constructor() {
|
|
@@ -5,7 +5,7 @@ import { d as defineCustomElement$3 } from './mg-button2.js';
|
|
|
5
5
|
import { d as defineCustomElement$2 } from './mg-icon2.js';
|
|
6
6
|
import { c as createPopper } from './popper.js';
|
|
7
7
|
|
|
8
|
-
const mgPopoverCss = "mg-popover{display:contents}mg-popover::slotted(*){display:inline-block}.mg-popover{display:none;padding:1.5rem;z-index:
|
|
8
|
+
const mgPopoverCss = "mg-popover{display:contents}mg-popover::slotted(*){display:inline-block}.mg-popover{display:none;padding:1.5rem;z-index:1000;border-radius:0.5rem;background-color:hsl(var(--mg-popover-background-color));box-shadow:var(--box-shadow);color:hsl(var(--mg-popover-font-color))}.mg-popover[data-show]{display:block}.mg-popover mg-button{float:right;margin-right:calc(0rem - (var(--default-size) - var(--mg-icon-regular-size)) / 2);margin-top:calc(0rem - (var(--default-size) - var(--mg-popover-title-font-size) * var(--line-height)) / 2);margin-left:3rem}.mg-popover__arrow,.mg-popover__arrow::before{position:absolute;width:2rem;height:2rem;z-index:-1;background:inherit}.mg-popover__arrow{visibility:hidden}.mg-popover__arrow::before{visibility:visible;content:\"\";transform:rotate(45deg)}.mg-popover[data-popper-placement^=top]>.mg-popover__arrow{bottom:-6px}.mg-popover[data-popper-placement^=bottom]>.mg-popover__arrow{top:-6px}.mg-popover[data-popper-placement^=left]>.mg-popover__arrow{right:-6px}.mg-popover[data-popper-placement^=right]>.mg-popover__arrow{left:-6px}.mg-popover__title ::slotted([slot=title]){margin:0 0 1rem !important;font-size:var(--mg-popover-title-font-size) !important;font-weight:600}";
|
|
9
9
|
|
|
10
10
|
const MgPopover$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
11
11
|
constructor() {
|
|
@@ -132,6 +132,7 @@ const MgPopover$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
132
132
|
// Create popperjs popover
|
|
133
133
|
this.popper = createPopper(interactiveElement, this.popover, {
|
|
134
134
|
placement: this.placement,
|
|
135
|
+
strategy: 'fixed',
|
|
135
136
|
modifiers: [
|
|
136
137
|
{
|
|
137
138
|
name: 'offset',
|
|
@@ -159,7 +160,7 @@ const MgPopover$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
159
160
|
* @returns {HTMLElement} HTML Element
|
|
160
161
|
*/
|
|
161
162
|
render() {
|
|
162
|
-
return (h(Host, null, h("slot", null), h("div", { id: this.identifier, class: "mg-popover" },
|
|
163
|
+
return (h(Host, null, h("slot", null), h("div", { id: this.identifier, class: "mg-popover" }, this.closeButton && (h("mg-button", { identifier: this.closeButtonId, "is-icon": true, variant: "flat", label: this.messages.general.close, onClick: this.handleCloseButton }, h("mg-icon", { icon: "cross" }))), h("div", { class: "mg-popover__title" }, h("slot", { name: "title" })), h("slot", { name: "content" }), h("div", { class: "mg-popover__arrow", "data-popper-arrow": true }))));
|
|
163
164
|
}
|
|
164
165
|
get element() { return this; }
|
|
165
166
|
static get watchers() { return {
|
|
@@ -2,9 +2,6 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
|
|
|
2
2
|
import { c as createID } from './components.utils.js';
|
|
3
3
|
import { c as createPopper } from './popper.js';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* List of all possibles placements
|
|
7
|
-
*/
|
|
8
5
|
var Guard;
|
|
9
6
|
(function (Guard) {
|
|
10
7
|
Guard["FOCUS"] = "focus";
|
|
@@ -12,7 +9,7 @@ var Guard;
|
|
|
12
9
|
Guard["HOVER_TOOLTIPED_ELEMENT"] = "hoverTooltipedGuard";
|
|
13
10
|
})(Guard || (Guard = {}));
|
|
14
11
|
|
|
15
|
-
const mgTooltipCss = ":host{display:inline-block}.mg-tooltip{display:none;padding:0.5rem 0.8rem;z-index:
|
|
12
|
+
const mgTooltipCss = ":host{display:inline-block}.mg-tooltip{display:none;padding:0.5rem 0.8rem;z-index:1000;border-radius:var(--mg-tooltip-border-radius);background-color:hsl(var(--mg-tooltip-background-color));color:hsl(var(--mg-tooltip-font-color));text-align:start}.mg-tooltip[data-show]{display:block}.mg-tooltip .mg-tooltip__arrow,.mg-tooltip .mg-tooltip__arrow::before{position:absolute;width:0.8rem;height:0.8rem;z-index:9999;background:inherit}.mg-tooltip .mg-tooltip__arrow{visibility:hidden}.mg-tooltip .mg-tooltip__arrow::before{visibility:visible;content:\"\";transform:rotate(45deg)}.mg-tooltip[data-popper-placement^=top]>.mg-tooltip__arrow{bottom:-4px}.mg-tooltip[data-popper-placement^=bottom]>.mg-tooltip__arrow{top:-4px}.mg-tooltip[data-popper-placement^=left]>.mg-tooltip__arrow{right:-4px}.mg-tooltip[data-popper-placement^=right]>.mg-tooltip__arrow{left:-4px}";
|
|
16
13
|
|
|
17
14
|
const MgTooltip = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
18
15
|
constructor() {
|
|
@@ -151,6 +148,7 @@ const MgTooltip = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
151
148
|
// Create popperjs tooltip
|
|
152
149
|
this.popper = createPopper(tooltipedElement, this.tooltip, {
|
|
153
150
|
placement: this.placement,
|
|
151
|
+
strategy: 'fixed',
|
|
154
152
|
modifiers: [
|
|
155
153
|
{
|
|
156
154
|
name: 'offset',
|