@mgdis/mg-components 6.20.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.
Files changed (159) hide show
  1. package/dist/cjs/{index-Bp6wZzau.js → index-C2viYwrR.js} +1757 -80
  2. package/dist/cjs/{index-TUElr4Wv.js → index-CCsGMNyq.js} +46 -0
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/mg-action-more_37.cjs.entry.js +684 -273
  5. package/dist/cjs/mg-alert.cjs.entry.js +17 -9
  6. package/dist/cjs/mg-components.cjs.js +3 -3
  7. package/dist/cjs/mg-fieldset.cjs.entry.js +24 -7
  8. package/dist/cjs/mg-input-combobox.cjs.entry.js +48 -18
  9. package/dist/cjs/mg-input-file.cjs.entry.js +384 -0
  10. package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js +30 -18
  11. package/dist/cjs/{mg-input.conf-D7jmj_lh.js → mg-input.conf-BNpeATnq.js} +7 -0
  12. package/dist/cjs/mg-loader.cjs.entry.js +8 -6
  13. package/dist/cjs/mg-progress.cjs.entry.js +19 -9
  14. package/dist/collection/collection-manifest.json +3 -2
  15. package/dist/collection/components/atoms/mg-icon/mg-icon.js +1 -1
  16. package/dist/collection/components/molecules/inputs/mg-input/mg-input.conf.js +6 -0
  17. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +1 -1
  18. package/dist/collection/components/molecules/inputs/mg-input-file/mg-input-file.js +877 -0
  19. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +1 -1
  20. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +1 -1
  21. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +1 -1
  22. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.js +12 -12
  23. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +1 -1
  24. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +2 -2
  25. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +1 -1
  26. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +1 -1
  27. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +1 -1
  28. package/dist/collection/components/molecules/mg-alert/mg-alert.js +1 -1
  29. package/dist/collection/components/molecules/mg-details/mg-details.js +1 -1
  30. package/dist/collection/components/molecules/mg-fieldset/mg-fieldset.js +12 -3
  31. package/dist/collection/components/molecules/mg-form/mg-form.js +12 -2
  32. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +1 -1
  33. package/dist/collection/components/molecules/mg-loader/mg-loader.js +1 -1
  34. package/dist/collection/components/molecules/mg-message/mg-message.js +2 -2
  35. package/dist/collection/components/molecules/mg-modal/mg-modal.js +2 -2
  36. package/dist/collection/components/molecules/mg-panel/mg-panel.js +1 -1
  37. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +1 -1
  38. package/dist/collection/components/molecules/mg-popover/mg-popover.js +1 -1
  39. package/dist/collection/components/molecules/mg-progress/mg-progress.js +1 -1
  40. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +1 -1
  41. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +1 -1
  42. package/dist/collection/locales/en/messages.json +11 -0
  43. package/dist/collection/locales/fr/messages.json +11 -0
  44. package/dist/components/events.utils.js +1 -23
  45. package/dist/components/index.d.ts +2 -0
  46. package/dist/components/index.js +1 -1
  47. package/dist/components/index2.js +1 -408
  48. package/dist/components/index3.js +1 -476
  49. package/dist/components/mg-action-more.js +1 -254
  50. package/dist/components/mg-alert.js +1 -224
  51. package/dist/components/mg-badge.js +1 -6
  52. package/dist/components/mg-badge2.js +1 -113
  53. package/dist/components/mg-button.js +1 -6
  54. package/dist/components/mg-button2.js +1 -275
  55. package/dist/components/mg-card.js +1 -6
  56. package/dist/components/mg-card2.js +1 -92
  57. package/dist/components/mg-character-left.js +1 -6
  58. package/dist/components/mg-character-left2.js +1 -75
  59. package/dist/components/mg-details.js +1 -104
  60. package/dist/components/mg-divider.js +1 -6
  61. package/dist/components/mg-divider2.js +1 -49
  62. package/dist/components/mg-fieldset.js +1 -209
  63. package/dist/components/mg-form.js +1 -302
  64. package/dist/components/mg-icon.js +1 -6
  65. package/dist/components/mg-icon2.js +1 -188
  66. package/dist/components/mg-illustrated-message.js +1 -129
  67. package/dist/components/mg-input-checkbox-paginated.js +1 -6
  68. package/dist/components/mg-input-checkbox-paginated2.js +1 -135
  69. package/dist/components/mg-input-checkbox.js +1 -762
  70. package/dist/components/mg-input-combobox.js +1 -940
  71. package/dist/components/mg-input-date.js +1 -463
  72. package/dist/components/mg-input-file.d.ts +11 -0
  73. package/dist/components/mg-input-file.js +1 -0
  74. package/dist/components/mg-input-numeric.js +1 -592
  75. package/dist/components/mg-input-password.js +1 -360
  76. package/dist/components/mg-input-radio.js +1 -392
  77. package/dist/components/mg-input-rich-text-editor.js +1 -16797
  78. package/dist/components/mg-input-select.js +1 -6
  79. package/dist/components/mg-input-select2.js +1 -481
  80. package/dist/components/mg-input-text.js +1 -6
  81. package/dist/components/mg-input-text2.js +1 -514
  82. package/dist/components/mg-input-textarea.js +1 -412
  83. package/dist/components/mg-input-title.js +1 -6
  84. package/dist/components/mg-input-title2.js +1 -81
  85. package/dist/components/mg-input-toggle.js +1 -371
  86. package/dist/components/mg-input.conf.js +1 -0
  87. package/dist/components/mg-input.js +1 -6
  88. package/dist/components/mg-input2.js +1 -459
  89. package/dist/components/mg-item-more.js +1 -6
  90. package/dist/components/mg-item-more2.js +1 -505
  91. package/dist/components/mg-loader.js +1 -6
  92. package/dist/components/mg-loader2.js +1 -74
  93. package/dist/components/mg-menu-item.js +1 -6
  94. package/dist/components/mg-menu-item2.js +1 -485
  95. package/dist/components/mg-menu.js +1 -6
  96. package/dist/components/mg-message.js +1 -6
  97. package/dist/components/mg-message2.js +1 -146
  98. package/dist/components/mg-modal.js +1 -184
  99. package/dist/components/mg-pagination.js +1 -234
  100. package/dist/components/mg-panel.js +1 -350
  101. package/dist/components/mg-popover-content.js +1 -6
  102. package/dist/components/mg-popover-content2.js +1 -96
  103. package/dist/components/mg-popover.js +1 -6
  104. package/dist/components/mg-popover2.js +1 -312
  105. package/dist/components/mg-progress.js +1 -123
  106. package/dist/components/mg-skip-links.js +1 -78
  107. package/dist/components/mg-table.js +1 -319
  108. package/dist/components/mg-tabs.js +1 -6
  109. package/dist/components/mg-tabs2.js +1 -315
  110. package/dist/components/mg-tag.js +1 -133
  111. package/dist/components/mg-tooltip-content.js +1 -6
  112. package/dist/components/mg-tooltip-content2.js +1 -42
  113. package/dist/components/mg-tooltip.js +1 -6
  114. package/dist/components/mg-tooltip2.js +1 -421
  115. package/dist/components/popper.js +1 -1790
  116. package/dist/esm/{index-CNX6lq0x.js → index-D-uaxCxH.js} +46 -1
  117. package/dist/esm/{index-BluNKQ3L.js → index-DFwaH2hS.js} +1757 -80
  118. package/dist/esm/loader.js +3 -3
  119. package/dist/esm/mg-action-more_37.entry.js +684 -273
  120. package/dist/esm/mg-alert.entry.js +17 -9
  121. package/dist/esm/mg-components.js +4 -4
  122. package/dist/esm/mg-fieldset.entry.js +24 -7
  123. package/dist/esm/mg-input-combobox.entry.js +48 -18
  124. package/dist/esm/mg-input-file.entry.js +382 -0
  125. package/dist/esm/mg-input-rich-text-editor.entry.js +30 -18
  126. package/dist/esm/{mg-input.conf-DDnrE1hD.js → mg-input.conf-C9rmNQIL.js} +7 -1
  127. package/dist/esm/mg-loader.entry.js +8 -6
  128. package/dist/esm/mg-progress.entry.js +19 -9
  129. package/dist/mg-components/locales/en/messages.json +11 -0
  130. package/dist/mg-components/locales/fr/messages.json +11 -0
  131. package/dist/mg-components/mg-components.esm.js +1 -1
  132. package/dist/mg-components/{p-d5a276eb.entry.js → p-08fa327b.entry.js} +1 -1
  133. package/dist/mg-components/p-4175dcbe.entry.js +1 -0
  134. package/dist/mg-components/{p-7132bca1.entry.js → p-6b57f249.entry.js} +1 -1
  135. package/dist/mg-components/p-6b655830.entry.js +1 -0
  136. package/dist/mg-components/p-988c282e.entry.js +1 -0
  137. package/dist/mg-components/p-C9rmNQIL.js +1 -0
  138. package/dist/mg-components/p-D-uaxCxH.js +1 -0
  139. package/dist/mg-components/p-DFwaH2hS.js +2 -0
  140. package/dist/mg-components/p-a79b1f19.entry.js +1 -0
  141. package/dist/mg-components/{p-916dfb6d.entry.js → p-c3d116b9.entry.js} +1 -1
  142. package/dist/mg-components/p-dd1934f4.entry.js +1 -0
  143. package/dist/types/components/molecules/inputs/mg-input/mg-input.conf.d.ts +7 -1
  144. package/dist/types/components/molecules/inputs/mg-input-file/mg-input-file.d.ts +210 -0
  145. package/dist/types/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.d.ts +4 -4
  146. package/dist/types/components.d.ts +211 -10
  147. package/dist/types/stencil-public-runtime.d.ts +76 -12
  148. package/ide/intellij/web-types.json +356 -12
  149. package/ide/vscode/html-custom-data.json +338 -76
  150. package/package.json +19 -19
  151. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/editor/editor.scss +0 -1
  152. package/dist/mg-components/p-016bd291.entry.js +0 -1
  153. package/dist/mg-components/p-186a6139.entry.js +0 -1
  154. package/dist/mg-components/p-BluNKQ3L.js +0 -2
  155. package/dist/mg-components/p-CNX6lq0x.js +0 -1
  156. package/dist/mg-components/p-DDnrE1hD.js +0 -1
  157. package/dist/mg-components/p-cd061b38.entry.js +0 -1
  158. package/dist/mg-components/p-d2c72f09.entry.js +0 -1
  159. package/ide/vscode/custom.css-data.json +0 -425
@@ -1,49 +1 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
-
3
- const mgDividerCss = "/*!\n * @prop --mg-c-divider-color-background: Defines the background color of the divider. The default value is `color-mix(in srgb, var(--mg-b-color-dark), transparent 85%)`.\n * @prop --mg-c-divider-thickness: Defines the thickness of the divider. The default value is `--mg-b-size-border`.\n * @prop --mg-c-divider-spacing-vertical: Defines the vertical spacing of the divider. The default value is `--mg-b-size-40`.\n */.mg-c-divider{width:var(--mg-b-size-120);height:var(--mg-c-divider-thickness);margin:var(--mg-c-divider-spacing-vertical) auto;background-color:var(--mg-c-divider-color-background)}.mg-c-divider.mg-c-divider--full-width{width:100%}";
4
-
5
- const MgDivider = /*@__PURE__*/ proxyCustomElement(class MgDivider extends HTMLElement {
6
- constructor(registerHost) {
7
- super();
8
- if (registerHost !== false) {
9
- this.__registerHost();
10
- }
11
- this.__attachShadow();
12
- /**************
13
- * Decorators *
14
- **************/
15
- /**
16
- * Define component size
17
- */
18
- this.fullWidth = false;
19
- }
20
- /**
21
- * Render
22
- * @returns HTML Element
23
- */
24
- render() {
25
- return (h("div", { key: '60b987cb329c6db14c2cc4a665e7f32b2696a3ee', class: {
26
- 'mg-c-divider': true,
27
- 'mg-c-divider--full-width': this.fullWidth,
28
- } }));
29
- }
30
- static get style() { return mgDividerCss; }
31
- }, [257, "mg-divider", {
32
- "fullWidth": [4, "full-width"]
33
- }]);
34
- function defineCustomElement() {
35
- if (typeof customElements === "undefined") {
36
- return;
37
- }
38
- const components = ["mg-divider"];
39
- components.forEach(tagName => { switch (tagName) {
40
- case "mg-divider":
41
- if (!customElements.get(tagName)) {
42
- customElements.define(tagName, MgDivider);
43
- }
44
- break;
45
- } });
46
- }
47
- defineCustomElement();
48
-
49
- export { MgDivider as M, defineCustomElement as d };
1
+ import{transformTag as i,proxyCustomElement as e,HTMLElement as d,h as t}from"@stencil/core/internal/client";const r=e(class extends d{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow(),this.fullWidth=!1}render(){return t("div",{key:"60b987cb329c6db14c2cc4a665e7f32b2696a3ee",class:{"mg-c-divider":!0,"mg-c-divider--full-width":this.fullWidth}})}static get style(){return".mg-c-divider{width:var(--mg-b-size-120);height:var(--mg-c-divider-thickness);margin:var(--mg-c-divider-spacing-vertical) auto;background-color:var(--mg-c-divider-color-background)}.mg-c-divider.mg-c-divider--full-width{width:100%}"}},[1,"mg-divider",{fullWidth:[4,"full-width"]}]);function c(){"undefined"!=typeof customElements&&["mg-divider"].forEach((e=>{"mg-divider"===e&&(customElements.get(i(e))||customElements.define(i(e),r))}))}c();export{r as M,c as d}
@@ -1,209 +1 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
- import { C as ClassList, i as isValidString } from './index2.js';
3
- import { d as defineCustomElement$5, c as classReadonly } from './mg-input2.js';
4
- import { d as defineCustomElement$6 } from './mg-icon2.js';
5
- import { d as defineCustomElement$4 } from './mg-input-title2.js';
6
- import { d as defineCustomElement$3 } from './mg-tooltip2.js';
7
- import { d as defineCustomElement$2 } from './mg-tooltip-content2.js';
8
-
9
- const MgFieldset$1 = /*@__PURE__*/ proxyCustomElement(class MgFieldset extends HTMLElement {
10
- constructor(registerHost) {
11
- super();
12
- if (registerHost !== false) {
13
- this.__registerHost();
14
- }
15
- this.__attachShadow();
16
- /**
17
- * Fieldset name
18
- * If not set the value equals the identifier
19
- */
20
- this.name = this.identifier;
21
- /**
22
- * Define if legend is visible
23
- */
24
- this.legendHide = false;
25
- /**
26
- * Define if legend border is visible.
27
- */
28
- this.legendBorderDisplay = false;
29
- /**
30
- * Define if inputs are readonly
31
- */
32
- this.readonly = false;
33
- /**
34
- * Define if inputs are disabled
35
- */
36
- this.disabled = false;
37
- /**
38
- * Component classes
39
- */
40
- this.classCollection = new ClassList(['mg-c-input--fieldset']);
41
- /**
42
- * Check if fieldset is valid
43
- */
44
- this.checkValidity = () => {
45
- var _a;
46
- this.valid = !(this.mgInputs.some(input => input.invalid) || ((_a = this.errorMessage) === null || _a === void 0 ? void 0 : _a.length) > 0);
47
- };
48
- /**
49
- * Set mgInputs
50
- */
51
- this.setMgInputs = () => {
52
- // Get slotted mgInputs
53
- this.mgInputs = Array.from(this.element.querySelectorAll('*')).filter((node) => node.nodeName.startsWith('MG-INPUT'));
54
- // Set inputs readonly or disabled based on form configuration
55
- // Othewise listen to events
56
- this.mgInputs.forEach(input => {
57
- if (this.readonly) {
58
- input.readonly = true;
59
- }
60
- else if (this.disabled) {
61
- input.disabled = true;
62
- }
63
- else {
64
- input.addEventListener('input-valid', this.checkValidity);
65
- }
66
- });
67
- };
68
- }
69
- watchLegendBorderDisplay(newValue) {
70
- if (newValue && !isValidString(this.legendHeading)) {
71
- throw new Error('<mg-fieldset> prop "legendBorderDisplay" must not be paired with the prop "legendHeading".');
72
- }
73
- }
74
- watchReadonly(newValue) {
75
- if (newValue) {
76
- this.classCollection.add(classReadonly);
77
- }
78
- else {
79
- this.classCollection.delete(classReadonly);
80
- }
81
- }
82
- handleAttributeChange() {
83
- this.setMgInputs();
84
- }
85
- /**
86
- * Component is not a candidate for constraint validation.
87
- * You can use this method to define the `errorMessage` and set the `valid` state to `false`.
88
- * @param errorMessage - error message to display. Use a valid `string` to define an error or `undefined` to delete the error
89
- */
90
- async setCustomValidity(errorMessage) {
91
- if (isValidString(errorMessage)) {
92
- this.errorMessage = errorMessage;
93
- }
94
- else {
95
- this.errorMessage = undefined;
96
- }
97
- this.checkValidity();
98
- }
99
- /**
100
- * Display inputs error if it exists.
101
- */
102
- async displayError() {
103
- if (!this.readonly) {
104
- this.mgInputs.forEach(input => {
105
- input.displayError();
106
- });
107
- }
108
- }
109
- /*************
110
- * Lifecycle *
111
- *************/
112
- /**
113
- * Check if component props are well configured on init
114
- */
115
- componentWillLoad() {
116
- this.watchReadonly(this.readonly);
117
- this.watchLegendBorderDisplay(this.legendBorderDisplay);
118
- this.setMgInputs();
119
- }
120
- /**
121
- * Add slot listeners
122
- */
123
- componentDidLoad() {
124
- // Update mgInputs when mgForm content change
125
- const observerOptions = { childList: true, subtree: true };
126
- new MutationObserver(mutations => {
127
- if (mutations.some(mutation => Object.keys(observerOptions).includes(mutation.type))) {
128
- this.setMgInputs();
129
- }
130
- }).observe(this.element, observerOptions);
131
- }
132
- /**
133
- * Render
134
- * @returns HTML Element
135
- */
136
- render() {
137
- return (h("mg-input", { key: 'b8b7c203bb2ed22cc9344389af5a6ae8d85af6d5', label: this.legend, identifier: this.identifier, class: this.classCollection.join(), labelOnTop: !this.legendHide, labelHeading: this.legendHeading, labelBorderDisplay: this.legendHeading && this.legendBorderDisplay, labelHide: this.legendHide, inputsOnBottom: this.legendHeading !== undefined, tooltip: this.tooltip, tooltipPosition: 'label', helpText: this.helpText, errorMessage: !this.valid && isValidString(this.errorMessage) ? this.errorMessage : undefined }, h("span", { key: 'c0e7480b14b0a8e136dd951bdce7275b65b59b48', class: "mg-c-input__input-group" }, h("slot", { key: '021e7b126cef9437e64622d8ef59219b09c06e9f' }))));
138
- }
139
- get element() { return this; }
140
- static get watchers() { return {
141
- "legendBorderDisplay": ["watchLegendBorderDisplay"],
142
- "readonly": ["watchReadonly", "handleAttributeChange"],
143
- "disabled": ["handleAttributeChange"]
144
- }; }
145
- }, [257, "mg-fieldset", {
146
- "identifier": [1],
147
- "name": [1],
148
- "legend": [1],
149
- "legendHide": [4, "legend-hide"],
150
- "legendHeading": [1, "legend-heading"],
151
- "legendBorderDisplay": [4, "legend-border-display"],
152
- "readonly": [4],
153
- "disabled": [4],
154
- "tooltip": [1],
155
- "helpText": [1, "help-text"],
156
- "errorMessage": [32],
157
- "valid": [32],
158
- "classCollection": [32],
159
- "setCustomValidity": [64],
160
- "displayError": [64]
161
- }, undefined, {
162
- "legendBorderDisplay": ["watchLegendBorderDisplay"],
163
- "readonly": ["watchReadonly", "handleAttributeChange"],
164
- "disabled": ["handleAttributeChange"]
165
- }]);
166
- function defineCustomElement$1() {
167
- if (typeof customElements === "undefined") {
168
- return;
169
- }
170
- const components = ["mg-fieldset", "mg-icon", "mg-input", "mg-input-title", "mg-tooltip", "mg-tooltip-content"];
171
- components.forEach(tagName => { switch (tagName) {
172
- case "mg-fieldset":
173
- if (!customElements.get(tagName)) {
174
- customElements.define(tagName, MgFieldset$1);
175
- }
176
- break;
177
- case "mg-icon":
178
- if (!customElements.get(tagName)) {
179
- defineCustomElement$6();
180
- }
181
- break;
182
- case "mg-input":
183
- if (!customElements.get(tagName)) {
184
- defineCustomElement$5();
185
- }
186
- break;
187
- case "mg-input-title":
188
- if (!customElements.get(tagName)) {
189
- defineCustomElement$4();
190
- }
191
- break;
192
- case "mg-tooltip":
193
- if (!customElements.get(tagName)) {
194
- defineCustomElement$3();
195
- }
196
- break;
197
- case "mg-tooltip-content":
198
- if (!customElements.get(tagName)) {
199
- defineCustomElement$2();
200
- }
201
- break;
202
- } });
203
- }
204
- defineCustomElement$1();
205
-
206
- const MgFieldset = MgFieldset$1;
207
- const defineCustomElement = defineCustomElement$1;
208
-
209
- export { MgFieldset, defineCustomElement };
1
+ import{transformTag as t,proxyCustomElement as e,HTMLElement as i,h as s}from"@stencil/core/internal/client";import{C as o,i as n}from"./index2.js";import{i as l,c as a}from"./mg-input.conf.js";import{d as r}from"./mg-icon2.js";import{d}from"./mg-input2.js";import{d as h}from"./mg-input-title2.js";import{d as c}from"./mg-tooltip2.js";import{d as m}from"./mg-tooltip-content2.js";const p=e(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.name=this.identifier,this.legendHide=!1,this.legendBorderDisplay=!1,this.readonly=!1,this.disabled=!1,this.classCollection=new o(["mg-c-input--fieldset"]),this.checkValidity=()=>{var t;this.valid=!(this.mgInputs.some((t=>t.invalid))||(null===(t=this.errorMessage)||void 0===t?void 0:t.length)>0)},this.setMgInputs=()=>{this.mgInputs=Array.from(this.element.querySelectorAll("*")).filter((t=>t.nodeName.startsWith("MG-INPUT"))),this.mgInputs.forEach((t=>{"MG-INPUT-FILE"===t.nodeName&&(this.readonly?t.setAttribute("hidden",""):t.removeAttribute("hidden")),this.readonly&&!l(t)?t.readonly=!0:this.disabled?t.disabled=!0:t.addEventListener("input-valid",this.checkValidity)}))}}watchLegendBorderDisplay(t){if(t&&!n(this.legendHeading))throw Error('<mg-fieldset> prop "legendBorderDisplay" must not be paired with the prop "legendHeading".')}watchReadonly(t){t?this.classCollection.add(a):this.classCollection.delete(a)}handleAttributeChange(){this.setMgInputs()}async setCustomValidity(t){this.errorMessage=n(t)?t:void 0,this.checkValidity()}async displayError(){this.readonly||this.mgInputs.forEach((t=>{t.displayError()}))}componentWillLoad(){this.watchReadonly(this.readonly),this.watchLegendBorderDisplay(this.legendBorderDisplay),this.setMgInputs()}componentDidLoad(){const t={childList:!0,subtree:!0};new MutationObserver((e=>{e.some((e=>Object.keys(t).includes(e.type)))&&this.setMgInputs()})).observe(this.element,t)}render(){return s("mg-input",{key:"31ccb9f783687845080fc7f184cc54b7343fab65",label:this.legend,identifier:this.identifier,class:this.classCollection.join(),labelOnTop:!this.legendHide,labelHeading:this.legendHeading,labelBorderDisplay:this.legendHeading&&this.legendBorderDisplay,labelHide:this.legendHide,inputsOnBottom:void 0!==this.legendHeading,tooltip:this.tooltip,tooltipPosition:"label",helpText:this.helpText,errorMessage:!this.valid&&n(this.errorMessage)?this.errorMessage:void 0},s("span",{key:"eedf1c66eaf88bee037c11b812844bb5a92175c1",class:"mg-c-input__input-group"},s("slot",{key:"a28f6759a63873ef4a228820b4310b42fcf1d3c7"})))}get element(){return this}static get watchers(){return{legendBorderDisplay:[{watchLegendBorderDisplay:0}],readonly:[{watchReadonly:0},{handleAttributeChange:0}],disabled:[{handleAttributeChange:0}]}}},[257,"mg-fieldset",{identifier:[1],name:[1],legend:[1],legendHide:[4,"legend-hide"],legendHeading:[1,"legend-heading"],legendBorderDisplay:[4,"legend-border-display"],readonly:[4],disabled:[4],tooltip:[1],helpText:[1,"help-text"],errorMessage:[32],valid:[32],classCollection:[32],setCustomValidity:[64],displayError:[64]},void 0,{legendBorderDisplay:[{watchLegendBorderDisplay:0}],readonly:[{watchReadonly:0},{handleAttributeChange:0}],disabled:[{handleAttributeChange:0}]}]);function g(){"undefined"!=typeof customElements&&["mg-fieldset","mg-icon","mg-input","mg-input-title","mg-tooltip","mg-tooltip-content"].forEach((e=>{switch(e){case"mg-fieldset":customElements.get(t(e))||customElements.define(t(e),p);break;case"mg-icon":customElements.get(t(e))||r();break;case"mg-input":customElements.get(t(e))||d();break;case"mg-input-title":customElements.get(t(e))||h();break;case"mg-tooltip":customElements.get(t(e))||c();break;case"mg-tooltip-content":customElements.get(t(e))||m()}}))}g();const u=p,b=g;export{u as MgFieldset,b as defineCustomElement}
@@ -1,302 +1 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
- import { c as createID, C as ClassList, a as isValideID, t as toString } from './index2.js';
3
- import { i as initLocales } from './index3.js';
4
-
5
- /**
6
- * List of all possibles roles
7
- */
8
- const roles = ['form', 'search', 'none', 'presentation'];
9
- /**
10
- * List of all possibles required message status
11
- */
12
- const requiredMessageStatus = ['default', 'hide'];
13
-
14
- const mgFormCss = ".mg-u-form-legacy{--mg-c-form-inputs-title-width:calc(100% / 3 - 20px)}.mg-u-is-asterisk{color:var(--mg-b-color-danger)}/*!\n * @prop --mg-c-form-inputs-title-width: Defines the width of the input title. Fallback on `calc(28 * var(--mg-b-size-8))`.\n */.mg-c-form{--mg-c-input-title-width:var(--mg-c-form-inputs-title-width, calc(28 * var(--mg-b-size-8)));--mg-c-input-margin-bottom:var(--mg-b-size-16);--mg-c-input-title-horizontal-space:var(--mg-b-size-32)}.mg-c-form.mg-c-form--all-required{--mg-c-input-title-display:none}.mg-c-form.mg-c-form--label-on-top{--mg-c-input-margin-bottom:var(--mg-b-size-24)}.mg-c-form>p{font-size:var(--mg-b-font-size-small)}";
15
-
16
- const MgForm$1 = /*@__PURE__*/ proxyCustomElement(class MgForm extends HTMLElement {
17
- constructor(registerHost) {
18
- super();
19
- if (registerHost !== false) {
20
- this.__registerHost();
21
- }
22
- this.__attachShadow();
23
- this.formValid = createEvent(this, "form-valid", 7);
24
- this.formSubmit = createEvent(this, "form-submit", 7);
25
- this.formReset = createEvent(this, "form-reset", 7);
26
- // Classes
27
- this.classAllRequired = 'mg-c-form--all-required';
28
- this.classLabelOnTop = 'mg-c-form--label-on-top';
29
- /**
30
- * Identifier is used for the element ID (id is a reserved prop in Stencil.js)
31
- * If not set, it will be created.
32
- */
33
- this.identifier = createID('mg-form');
34
- /**
35
- * Input name
36
- * If not set the value equals the identifier
37
- */
38
- this.name = this.identifier;
39
- /**
40
- * Define if form is readonly
41
- */
42
- this.readonly = false;
43
- /**
44
- * Define if slotted mg-component's label are displayed on top
45
- */
46
- this.labelOnTop = false;
47
- /**
48
- * Define if form is disabled
49
- */
50
- this.disabled = false;
51
- /**
52
- * Component classes
53
- */
54
- this.classCollection = new ClassList(['mg-c-form']);
55
- /**
56
- * Define required message based on mg-inputs required elements
57
- */
58
- this.setRequiredMessage = () => {
59
- // init required message
60
- this.requiredMessageText = null;
61
- this.classCollection.delete(this.classAllRequired);
62
- if (this.requiredMessage === 'hide')
63
- return;
64
- else if (this.requiredMessage === 'default') {
65
- this.requiredMessageText = this.messages.form.required;
66
- return;
67
- }
68
- // If the form is disabled or readonly none of them are required
69
- // Check if all fields are not editable (readonly or disabled)
70
- const isEditable = input => !(input.disabled || input.readonly);
71
- const isMgInputToggle = input => input.nodeName === 'MG-INPUT-TOGGLE';
72
- if (!this.disabled && !this.readonly && this.mgInputs.some(input => isEditable(input) && !isMgInputToggle(input))) {
73
- // Get editable inputs
74
- const editableInputs = this.mgInputs.filter(isEditable);
75
- // Get required inputs
76
- // mg-input-toggle can not be required
77
- const requiredInputs = editableInputs.filter(input => !isMgInputToggle(input) && input.required);
78
- // All inputs are required
79
- if ([requiredInputs.length, editableInputs.length].every(length => length === 1) ||
80
- (requiredInputs.length > 1 && requiredInputs.length === editableInputs.filter(input => !isMgInputToggle(input)).length)) {
81
- this.requiredMessageText = this.getRequiredMessageBasedOnCount(requiredInputs, 'allRequiredSingle', 'allRequired');
82
- this.classCollection.add(this.classAllRequired);
83
- }
84
- // Some fields are required
85
- else if (requiredInputs.length > 0) {
86
- this.requiredMessageText = this.getRequiredMessageBasedOnCount(requiredInputs, 'requiredSingle', 'required');
87
- }
88
- }
89
- };
90
- /**
91
- * Returns a required message based on the count of required inputs.
92
- * @param requiredInputs - An array of required input elements.
93
- * @param keySingle - The key for the singular message format.
94
- * @param keyPlural - The key for the plural message format.
95
- * @returns The appropriate required message based on the count of required inputs.
96
- */
97
- this.getRequiredMessageBasedOnCount = (requiredInputs, keySingle, keyPlural) => this.messages.form[requiredInputs.length === 1 ? keySingle : keyPlural];
98
- /**
99
- * Check if form is valid
100
- */
101
- this.checkValidity = () => {
102
- // Update required on input event
103
- this.setRequiredMessage();
104
- this.valid = !this.mgInputs.some(input => input.invalid);
105
- this.invalid = !this.valid;
106
- // We need to send valid event if it is the same value
107
- this.formValid.emit(this.valid);
108
- };
109
- /**
110
- * Handle Form Submit
111
- * @param event - submit event
112
- */
113
- this.handleFormSubmit = (event) => {
114
- event.preventDefault();
115
- this.formSubmit.emit();
116
- };
117
- /**
118
- * Set mgInputs
119
- */
120
- this.setMgInputs = () => {
121
- // Get slotted mgInputs
122
- this.mgInputs = Array.from(this.element.querySelectorAll('*')).filter((node) => node.nodeName.startsWith('MG-INPUT'));
123
- // Set inputs readonly or disabled based on form configuration
124
- // Othewise listen to events
125
- this.mgInputs.forEach(input => {
126
- if (this.labelOnTop) {
127
- input.labelOnTop = true;
128
- }
129
- if (this.readonly) {
130
- input.readonly = true;
131
- }
132
- else if (this.disabled) {
133
- input.disabled = true;
134
- }
135
- else {
136
- input.addEventListener('input-valid', this.checkValidity);
137
- }
138
- });
139
- };
140
- }
141
- watchIdentifier(newValue) {
142
- if (!isValideID(newValue)) {
143
- console.error(`<mg-form> prop "identifier" value is invalid. Passed value: ${toString(newValue)}.`);
144
- }
145
- }
146
- validateRequiredMessage(newValue) {
147
- if (newValue && !requiredMessageStatus.includes(newValue)) {
148
- throw new Error(`<mg-form> prop "requiredMessage" must be one of: ${requiredMessageStatus.join(', ')}. Passed value: ${toString(newValue)}.`);
149
- }
150
- }
151
- validateAriaRole(newValue) {
152
- if (newValue && !roles.includes(newValue)) {
153
- throw new Error(`<mg-form> prop "ariaRole" must be one of: ${roles.join(', ')}. Passed value: ${toString(newValue)}.`);
154
- }
155
- }
156
- handlelabelOnTop(newValue) {
157
- if (newValue) {
158
- this.classCollection.add(this.classLabelOnTop);
159
- }
160
- else {
161
- this.classCollection.delete(this.classLabelOnTop);
162
- }
163
- }
164
- handleAttributeChange() {
165
- this.setMgInputs();
166
- this.setRequiredMessage();
167
- }
168
- /**
169
- * Display inputs/fieldsets errors if it exists.
170
- */
171
- async displayError() {
172
- if (!this.readonly) {
173
- const mgFieldsets = Array.from(this.element.querySelectorAll('*')).filter((node) => node.nodeName.startsWith('MG-FIELDSET'));
174
- [...mgFieldsets, ...this.mgInputs].forEach(input => {
175
- var _a;
176
- (_a = input.displayError) === null || _a === void 0 ? void 0 : _a.call(input);
177
- });
178
- this.checkValidity();
179
- }
180
- }
181
- /**
182
- * Reset form inputs values, validity and error state
183
- */
184
- async reset() {
185
- if (!this.readonly) {
186
- await Promise.all(this.mgInputs.map(async (input) => {
187
- if (input.reset !== undefined) {
188
- await input.reset();
189
- }
190
- }));
191
- this.checkValidity();
192
- this.formReset.emit(true);
193
- }
194
- }
195
- /*************
196
- * Lifecycle *
197
- *************/
198
- /**
199
- * Check if component props are well configured on init
200
- */
201
- componentWillLoad() {
202
- // Get locales
203
- this.messages = initLocales(this.element).messages;
204
- this.watchIdentifier(this.identifier);
205
- this.validateAriaRole(this.ariaRole);
206
- this.validateRequiredMessage(this.requiredMessage);
207
- this.handlelabelOnTop(this.labelOnTop);
208
- // Get slotted mgButtons
209
- this.mgButtons = Array.from(this.element.querySelectorAll('mg-button'));
210
- // Set button form identifier
211
- this.mgButtons.forEach(mgButton => {
212
- mgButton.setAttribute('form', this.identifier);
213
- if (mgButton.type === 'reset') {
214
- mgButton.addEventListener('click', () => {
215
- this.reset();
216
- });
217
- }
218
- });
219
- // Set mgInputs
220
- this.setMgInputs();
221
- // Check validity when slotted mgInputs are ready
222
- Promise.all(this.mgInputs.map(async (input) => {
223
- try {
224
- await input.componentOnReady();
225
- }
226
- catch (_a) { } // prevent error with VueJS first render
227
- })).then(() => {
228
- // Define required message and check validity
229
- this.checkValidity();
230
- });
231
- }
232
- /**
233
- * Add slot listeners
234
- */
235
- componentDidLoad() {
236
- // Update mgInputs when mgForm content change
237
- const observerOptions = { childList: true, subtree: true };
238
- new MutationObserver(mutations => {
239
- if (mutations.some(mutation => Object.keys(observerOptions).includes(mutation.type))) {
240
- this.setMgInputs();
241
- this.checkValidity();
242
- }
243
- }).observe(this.element, observerOptions);
244
- }
245
- /**
246
- * Render
247
- * @returns HTML Element
248
- */
249
- render() {
250
- return (h("form", { key: '8b698b2a33af00e36691abab5adff5488b736218', class: this.classCollection.join(), id: this.identifier, name: this.name, onSubmit: this.handleFormSubmit, role: this.ariaRole }, this.requiredMessageText && h("p", { key: '2e1fb5c4030ecb99d1f18c57d5c3fe238db4d12e', innerHTML: this.requiredMessageText }), h("slot", { key: '568fb8ac9ab0e3521899c05472592ebd15cc91fa' }), !this.readonly && !this.disabled && h("slot", { key: 'd4f38320de58f3b1d491083a34d1b5366d22b935', name: "actions" })));
251
- }
252
- get element() { return this; }
253
- static get watchers() { return {
254
- "identifier": ["watchIdentifier"],
255
- "requiredMessage": ["validateRequiredMessage", "handleAttributeChange"],
256
- "ariaRole": ["validateAriaRole"],
257
- "labelOnTop": ["handlelabelOnTop"],
258
- "readonly": ["handleAttributeChange"],
259
- "disabled": ["handleAttributeChange"]
260
- }; }
261
- static get style() { return mgFormCss; }
262
- }, [257, "mg-form", {
263
- "identifier": [1],
264
- "name": [1],
265
- "readonly": [4],
266
- "requiredMessage": [1, "required-message"],
267
- "ariaRole": [1, "aria-role"],
268
- "labelOnTop": [4, "label-on-top"],
269
- "disabled": [4],
270
- "valid": [1028],
271
- "invalid": [1028],
272
- "classCollection": [32],
273
- "requiredMessageText": [32],
274
- "displayError": [64],
275
- "reset": [64]
276
- }, undefined, {
277
- "identifier": ["watchIdentifier"],
278
- "requiredMessage": ["validateRequiredMessage", "handleAttributeChange"],
279
- "ariaRole": ["validateAriaRole"],
280
- "labelOnTop": ["handlelabelOnTop"],
281
- "readonly": ["handleAttributeChange"],
282
- "disabled": ["handleAttributeChange"]
283
- }]);
284
- function defineCustomElement$1() {
285
- if (typeof customElements === "undefined") {
286
- return;
287
- }
288
- const components = ["mg-form"];
289
- components.forEach(tagName => { switch (tagName) {
290
- case "mg-form":
291
- if (!customElements.get(tagName)) {
292
- customElements.define(tagName, MgForm$1);
293
- }
294
- break;
295
- } });
296
- }
297
- defineCustomElement$1();
298
-
299
- const MgForm = MgForm$1;
300
- const defineCustomElement = defineCustomElement$1;
301
-
302
- export { MgForm, defineCustomElement };
1
+ import{transformTag as i,proxyCustomElement as t,HTMLElement as e,createEvent as s,h as r}from"@stencil/core/internal/client";import{c as a,C as h,a as o,t as n}from"./index2.js";import{i as l}from"./index3.js";import{i as d}from"./mg-input.conf.js";const m=["form","search","none","presentation"],c=["default","hide"],f=t(class extends e{constructor(i){super(),!1!==i&&this.__registerHost(),this.__attachShadow(),this.formValid=s(this,"form-valid",7),this.formSubmit=s(this,"form-submit",7),this.formReset=s(this,"form-reset",7),this.classAllRequired="mg-c-form--all-required",this.classLabelOnTop="mg-c-form--label-on-top",this.identifier=a("mg-form"),this.name=this.identifier,this.readonly=!1,this.labelOnTop=!1,this.disabled=!1,this.classCollection=new h(["mg-c-form"]),this.setRequiredMessage=()=>{if(this.requiredMessageText=null,this.classCollection.delete(this.classAllRequired),"hide"===this.requiredMessage)return;if("default"===this.requiredMessage)return void(this.requiredMessageText=this.messages.form.required);const i=i=>!(i.disabled||i.readonly),t=i=>"MG-INPUT-TOGGLE"===i.nodeName;if(!this.disabled&&!this.readonly&&this.mgInputs.some((e=>i(e)&&!t(e)))){const e=this.mgInputs.filter(i),s=e.filter((i=>!t(i)&&i.required));[s.length,e.length].every((i=>1===i))||s.length>1&&s.length===e.filter((i=>!t(i))).length?(this.requiredMessageText=this.getRequiredMessageBasedOnCount(s,"allRequiredSingle","allRequired"),this.classCollection.add(this.classAllRequired)):s.length>0&&(this.requiredMessageText=this.getRequiredMessageBasedOnCount(s,"requiredSingle","required"))}},this.getRequiredMessageBasedOnCount=(i,t,e)=>this.messages.form[1===i.length?t:e],this.checkValidity=()=>{this.setRequiredMessage(),this.valid=!this.mgInputs.some((i=>i.invalid)),this.invalid=!this.valid,this.formValid.emit(this.valid)},this.handleFormSubmit=i=>{i.preventDefault(),this.formSubmit.emit()},this.setMgInputs=()=>{this.mgInputs=Array.from(this.element.querySelectorAll("*")).filter((i=>i.nodeName.startsWith("MG-INPUT"))),this.mgInputs.forEach((i=>{this.labelOnTop&&(i.labelOnTop=!0),"MG-INPUT-FILE"===i.nodeName&&(this.readonly?i.setAttribute("hidden",""):i.removeAttribute("hidden")),this.readonly&&!d(i)?i.readonly=!0:this.disabled?i.disabled=!0:i.addEventListener("input-valid",this.checkValidity)}))}}watchIdentifier(i){o(i)||console.error(`<mg-form> prop "identifier" value is invalid. Passed value: ${n(i)}.`)}validateRequiredMessage(i){if(i&&!c.includes(i))throw Error(`<mg-form> prop "requiredMessage" must be one of: ${c.join(", ")}. Passed value: ${n(i)}.`)}validateAriaRole(i){if(i&&!m.includes(i))throw Error(`<mg-form> prop "ariaRole" must be one of: ${m.join(", ")}. Passed value: ${n(i)}.`)}handlelabelOnTop(i){i?this.classCollection.add(this.classLabelOnTop):this.classCollection.delete(this.classLabelOnTop)}handleAttributeChange(){this.setMgInputs(),this.setRequiredMessage()}async displayError(){this.readonly||([...Array.from(this.element.querySelectorAll("*")).filter((i=>i.nodeName.startsWith("MG-FIELDSET"))),...this.mgInputs].forEach((i=>{var t;null===(t=i.displayError)||void 0===t||t.call(i)})),this.checkValidity())}async reset(){this.readonly||(await Promise.all(this.mgInputs.map((async i=>{void 0!==i.reset&&await i.reset()}))),this.checkValidity(),this.formReset.emit(!0))}componentWillLoad(){this.messages=l(this.element).messages,this.watchIdentifier(this.identifier),this.validateAriaRole(this.ariaRole),this.validateRequiredMessage(this.requiredMessage),this.handlelabelOnTop(this.labelOnTop),this.mgButtons=Array.from(this.element.querySelectorAll("mg-button")),this.mgButtons.forEach((i=>{i.setAttribute("form",this.identifier),"reset"===i.type&&i.addEventListener("click",(()=>{this.reset()}))})),this.setMgInputs(),Promise.all(this.mgInputs.map((async i=>{try{await i.componentOnReady()}catch(i){}}))).then((()=>{this.checkValidity()}))}componentDidLoad(){const i={childList:!0,subtree:!0};new MutationObserver((t=>{t.some((t=>Object.keys(i).includes(t.type)))&&(this.setMgInputs(),this.checkValidity())})).observe(this.element,i)}render(){return r("form",{key:"b2e3d218d978f1194b2c461ab75cae7d491bc2c3",class:this.classCollection.join(),id:this.identifier,name:this.name,onSubmit:this.handleFormSubmit,role:this.ariaRole},this.requiredMessageText&&r("p",{key:"dd6db1a740f5fe525c3b652c2128aba6185970b8",innerHTML:this.requiredMessageText}),r("slot",{key:"5221d0c8fa5e30749c82d01490b402d9e46a63cd"}),!this.readonly&&!this.disabled&&r("slot",{key:"fb2595b8c5df85b9cefac0f43e54e463d529fff4",name:"actions"}))}get element(){return this}static get watchers(){return{identifier:[{watchIdentifier:0}],requiredMessage:[{validateRequiredMessage:0},{handleAttributeChange:0}],ariaRole:[{validateAriaRole:0}],labelOnTop:[{handlelabelOnTop:0}],readonly:[{handleAttributeChange:0}],disabled:[{handleAttributeChange:0}]}}static get style(){return".mg-u-form-legacy{--mg-c-form-inputs-title-width:calc(100% / 3 - 20px)}.mg-u-is-asterisk{color:var(--mg-b-color-danger)}.mg-c-form{--mg-c-input-title-width:var(--mg-c-form-inputs-title-width, calc(28 * var(--mg-b-size-8)));--mg-c-input-margin-bottom:var(--mg-b-size-16);--mg-c-input-title-horizontal-space:var(--mg-b-size-32)}.mg-c-form.mg-c-form--all-required{--mg-c-input-title-display:none}.mg-c-form.mg-c-form--label-on-top{--mg-c-input-margin-bottom:var(--mg-b-size-24)}.mg-c-form>p{font-size:var(--mg-b-font-size-small)}"}},[257,"mg-form",{identifier:[1],name:[1],readonly:[4],requiredMessage:[1,"required-message"],ariaRole:[1,"aria-role"],labelOnTop:[4,"label-on-top"],disabled:[4],valid:[1028],invalid:[1028],classCollection:[32],requiredMessageText:[32],displayError:[64],reset:[64]},void 0,{identifier:[{watchIdentifier:0}],requiredMessage:[{validateRequiredMessage:0},{handleAttributeChange:0}],ariaRole:[{validateAriaRole:0}],labelOnTop:[{handlelabelOnTop:0}],readonly:[{handleAttributeChange:0}],disabled:[{handleAttributeChange:0}]}]);function u(){"undefined"!=typeof customElements&&["mg-form"].forEach((t=>{"mg-form"===t&&(customElements.get(i(t))||customElements.define(i(t),f))}))}u();const g=f,b=u;export{g as MgForm,b as defineCustomElement}
@@ -1,6 +1 @@
1
- import { M as MgIcon$1, d as defineCustomElement$1 } from './mg-icon2.js';
2
-
3
- const MgIcon = MgIcon$1;
4
- const defineCustomElement = defineCustomElement$1;
5
-
6
- export { MgIcon, defineCustomElement };
1
+ import{M as o,d as s}from"./mg-icon2.js";const m=o,r=s;export{m as MgIcon,r as defineCustomElement}