@mgdis/mg-components 5.3.0 → 5.5.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 (144) hide show
  1. package/dist/cjs/{index-94497267.js → index-c3450336.js} +0 -0
  2. package/dist/cjs/loader.cjs.js +3 -3
  3. package/dist/cjs/{mg-badge_29.cjs.entry.js → mg-badge_30.cjs.entry.js} +517 -715
  4. package/dist/cjs/mg-components.cjs.js +3 -3
  5. package/dist/collection/collection-manifest.json +3 -2
  6. package/dist/collection/components/atoms/mg-badge/doc/mg-badge.stories.js +0 -7
  7. package/dist/collection/components/atoms/mg-badge/mg-badge.css +6 -0
  8. package/dist/collection/components/atoms/mg-badge/mg-badge.js +5 -8
  9. package/dist/collection/components/atoms/mg-button/doc/mg-button.stories.js +0 -7
  10. package/dist/collection/components/atoms/mg-button/mg-button.conf.js +1 -1
  11. package/dist/collection/components/atoms/mg-button/mg-button.css +19 -1
  12. package/dist/collection/components/atoms/mg-button/mg-button.js +13 -30
  13. package/dist/collection/components/atoms/mg-card/mg-card.css +6 -1
  14. package/dist/collection/components/atoms/mg-character-left/mg-character-left.js +2 -3
  15. package/dist/collection/components/atoms/mg-divider/mg-divider.js +0 -6
  16. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js +20 -4
  17. package/dist/collection/components/atoms/mg-icon/mg-icon.css +27 -0
  18. package/dist/collection/components/atoms/mg-icon/mg-icon.js +7 -12
  19. package/dist/collection/components/atoms/mg-input-title/mg-input-title.js +4 -8
  20. package/dist/collection/components/atoms/mg-tag/doc/mg-tag.stories.js +1 -9
  21. package/dist/collection/components/atoms/mg-tag/mg-tag.css +58 -0
  22. package/dist/collection/components/atoms/mg-tag/mg-tag.js +60 -15
  23. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +97 -68
  24. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.css +7 -0
  25. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +17 -33
  26. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.css +7 -0
  27. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +17 -25
  28. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.css +6 -0
  29. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +24 -47
  30. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.css +7 -0
  31. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +17 -29
  32. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.css +7 -0
  33. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +18 -33
  34. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.css +6 -0
  35. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +23 -33
  36. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.css +6 -0
  37. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +23 -41
  38. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.css +6 -0
  39. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +23 -45
  40. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.css +6 -0
  41. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +16 -33
  42. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.css +1 -1
  43. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +8 -23
  44. package/dist/collection/components/molecules/menu/mg-menu-item/doc/mg-menu-item.stories.js +8 -1
  45. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.css +55 -24
  46. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +18 -33
  47. package/dist/collection/components/molecules/mg-details/mg-details.css +6 -0
  48. package/dist/collection/components/molecules/mg-details/mg-details.js +4 -8
  49. package/dist/collection/components/molecules/mg-form/mg-form.js +9 -23
  50. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.css +2 -2
  51. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +0 -6
  52. package/dist/collection/components/molecules/mg-message/mg-message.css +13 -19
  53. package/dist/collection/components/molecules/mg-message/mg-message.js +8 -27
  54. package/dist/collection/components/molecules/mg-modal/mg-modal.css +12 -7
  55. package/dist/collection/components/molecules/mg-modal/mg-modal.js +8 -26
  56. package/dist/collection/components/molecules/mg-pagination/mg-pagination.css +6 -0
  57. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +4 -13
  58. package/dist/collection/components/molecules/mg-panel/mg-panel.css +10 -5
  59. package/dist/collection/components/molecules/mg-panel/mg-panel.js +11 -22
  60. package/dist/collection/components/molecules/mg-popover/mg-popover.css +13 -9
  61. package/dist/collection/components/molecules/mg-popover/mg-popover.js +7 -23
  62. package/dist/collection/components/molecules/mg-skip-links/doc/mg-skip-links.stories.js +24 -0
  63. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.conf.js +1 -0
  64. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.css +28 -0
  65. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +77 -0
  66. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +10 -23
  67. package/dist/collection/locales/en/messages.json +3 -0
  68. package/dist/collection/locales/fr/messages.json +3 -0
  69. package/dist/components/index.d.ts +1 -0
  70. package/dist/components/index.js +1 -0
  71. package/dist/components/index2.js +8 -0
  72. package/dist/components/mg-badge2.js +6 -9
  73. package/dist/components/mg-button2.js +14 -31
  74. package/dist/components/mg-card.js +1 -37
  75. package/dist/components/mg-card2.js +39 -0
  76. package/dist/components/mg-character-left2.js +2 -3
  77. package/dist/components/mg-details.js +5 -9
  78. package/dist/components/mg-divider.js +0 -6
  79. package/dist/components/mg-form.js +9 -23
  80. package/dist/components/mg-icon2.js +28 -17
  81. package/dist/components/mg-illustrated-message.js +1 -7
  82. package/dist/components/mg-input-checkbox.js +18 -34
  83. package/dist/components/mg-input-date.js +18 -26
  84. package/dist/components/mg-input-numeric.js +25 -48
  85. package/dist/components/mg-input-password.js +18 -30
  86. package/dist/components/mg-input-radio.js +19 -34
  87. package/dist/components/mg-input-select2.js +25 -35
  88. package/dist/components/mg-input-text2.js +24 -42
  89. package/dist/components/mg-input-textarea.js +24 -46
  90. package/dist/components/mg-input-title2.js +4 -8
  91. package/dist/components/mg-input-toggle.js +17 -34
  92. package/dist/components/mg-menu-item.js +18 -33
  93. package/dist/components/mg-menu.js +9 -24
  94. package/dist/components/mg-message.js +17 -30
  95. package/dist/components/mg-modal.js +18 -30
  96. package/dist/components/mg-pagination.js +5 -14
  97. package/dist/components/mg-panel.js +20 -25
  98. package/dist/components/mg-popover.js +16 -26
  99. package/dist/components/mg-skip-links.d.ts +11 -0
  100. package/dist/components/mg-skip-links.js +66 -0
  101. package/dist/components/mg-tabs.js +10 -23
  102. package/dist/components/mg-tag.js +34 -12
  103. package/dist/components/mg-tooltip2.js +97 -68
  104. package/dist/esm/{index-aad0184c.js → index-78edde1d.js} +0 -0
  105. package/dist/esm/loader.js +3 -3
  106. package/dist/esm/{mg-badge_29.entry.js → mg-badge_30.entry.js} +517 -716
  107. package/dist/esm/mg-components.js +3 -3
  108. package/dist/esm/polyfills/core-js.js +0 -0
  109. package/dist/esm/polyfills/dom.js +0 -0
  110. package/dist/esm/polyfills/es5-html-element.js +0 -0
  111. package/dist/esm/polyfills/index.js +0 -0
  112. package/dist/esm/polyfills/system.js +0 -0
  113. package/dist/mg-components/locales/en/messages.json +3 -0
  114. package/dist/mg-components/locales/fr/messages.json +3 -0
  115. package/dist/mg-components/mg-components.css +1 -1
  116. package/dist/mg-components/mg-components.esm.js +1 -1
  117. package/dist/mg-components/{p-3899d5d2.js → p-125c54ca.js} +0 -0
  118. package/dist/mg-components/p-4961c96c.entry.js +1 -0
  119. package/dist/types/components/atoms/mg-badge/doc/mg-badge.stories.d.ts +0 -11
  120. package/dist/types/components/atoms/mg-badge/mg-badge.d.ts +1 -1
  121. package/dist/types/components/atoms/mg-button/doc/mg-button.stories.d.ts +0 -11
  122. package/dist/types/components/atoms/mg-button/mg-button.conf.d.ts +2 -2
  123. package/dist/types/components/atoms/mg-button/mg-button.d.ts +6 -6
  124. package/dist/types/components/atoms/mg-tag/doc/mg-tag.stories.d.ts +0 -13
  125. package/dist/types/components/atoms/mg-tag/mg-tag.conf.d.ts +5 -1
  126. package/dist/types/components/atoms/mg-tag/mg-tag.d.ts +27 -6
  127. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +15 -0
  128. package/dist/types/components/molecules/menu/mg-menu/mg-menu.d.ts +0 -5
  129. package/dist/types/components/molecules/menu/mg-menu-item/doc/mg-menu-item.stories.d.ts +1 -0
  130. package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +0 -4
  131. package/dist/types/components/molecules/mg-form/mg-form.d.ts +1 -1
  132. package/dist/types/components/molecules/mg-message/mg-message.d.ts +1 -1
  133. package/dist/types/components/molecules/mg-modal/mg-modal.d.ts +1 -1
  134. package/dist/types/components/molecules/mg-skip-links/doc/mg-skip-links.stories.d.ts +11 -0
  135. package/dist/types/components/molecules/mg-skip-links/mg-skip-links.conf.d.ts +7 -0
  136. package/dist/types/components/molecules/mg-skip-links/mg-skip-links.d.ts +34 -0
  137. package/dist/types/components/molecules/mg-tabs/mg-tabs.d.ts +2 -2
  138. package/dist/types/components.d.ts +37 -6
  139. package/dist/types/locales/index.d.ts +6 -0
  140. package/dist/types/stencil-public-runtime.d.ts +5 -0
  141. package/dist/types/utils/unit.test.utils.d.ts +42 -0
  142. package/package.json +36 -31
  143. package/readme.md +3 -1
  144. package/dist/mg-components/p-204af46f.entry.js +0 -1
@@ -1,3 +1,30 @@
1
+ /**
2
+ * A11Y
3
+ */
4
+ .sr-only {
5
+ border: 0 !important;
6
+ clip: rect(1px, 1px, 1px, 1px) !important;
7
+ -webkit-clip-path: inset(50%) !important;
8
+ clip-path: inset(50%) !important;
9
+ height: 1px !important;
10
+ margin: -1px !important;
11
+ overflow: hidden !important;
12
+ padding: 0 !important;
13
+ position: absolute !important;
14
+ width: 1px !important;
15
+ white-space: nowrap !important;
16
+ }
17
+
18
+ *:focus:not(:focus-visible) {
19
+ outline: none;
20
+ }
21
+
22
+ @media (prefers-reduced-motion) {
23
+ .mg-a11y-animation {
24
+ animation: none !important;
25
+ transition: none !important;
26
+ }
27
+ }
1
28
  .mg-menu-item.mg-menu-item--size-regular .mg-menu-item__navigation-button,
2
29
  .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
3
30
  padding: 1rem 2rem;
@@ -103,7 +130,7 @@
103
130
  border-left: 0.3rem solid transparent;
104
131
  }
105
132
 
106
- :host(.mg-menu-item--vertical[data-level="1"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
133
+ :host([data-style-direction-vertical][data-level="1"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
107
134
  padding-left: calc(1 * 2rem - 0.3rem);
108
135
  }
109
136
 
@@ -111,7 +138,7 @@
111
138
  z-index: calc(1 * 10);
112
139
  }
113
140
 
114
- :host(.mg-menu-item--vertical[data-level="2"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
141
+ :host([data-style-direction-vertical][data-level="2"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
115
142
  padding-left: calc(2 * 2rem - 0.3rem);
116
143
  }
117
144
 
@@ -119,7 +146,7 @@
119
146
  z-index: calc(2 * 10);
120
147
  }
121
148
 
122
- :host(.mg-menu-item--vertical[data-level="3"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
149
+ :host([data-style-direction-vertical][data-level="3"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
123
150
  padding-left: calc(3 * 2rem - 0.3rem);
124
151
  }
125
152
 
@@ -127,7 +154,7 @@
127
154
  z-index: calc(3 * 10);
128
155
  }
129
156
 
130
- :host(.mg-menu-item--vertical[data-level="4"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
157
+ :host([data-style-direction-vertical][data-level="4"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
131
158
  padding-left: calc(4 * 2rem - 0.3rem);
132
159
  }
133
160
 
@@ -135,7 +162,7 @@
135
162
  z-index: calc(4 * 10);
136
163
  }
137
164
 
138
- :host(.mg-menu-item--vertical[data-level="5"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
165
+ :host([data-style-direction-vertical][data-level="5"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
139
166
  padding-left: calc(5 * 2rem - 0.3rem);
140
167
  }
141
168
 
@@ -143,7 +170,7 @@
143
170
  z-index: calc(5 * 10);
144
171
  }
145
172
 
146
- :host(.mg-menu-item--vertical[data-level="6"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
173
+ :host([data-style-direction-vertical][data-level="6"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-regular {
147
174
  padding-left: calc(6 * 2rem - 0.3rem);
148
175
  }
149
176
 
@@ -151,7 +178,7 @@
151
178
  z-index: calc(6 * 10);
152
179
  }
153
180
 
154
- :host(.mg-menu-item--vertical[data-level="1"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
181
+ :host([data-style-direction-vertical][data-level="1"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
155
182
  padding-left: calc(1 * 3rem - 0.3rem);
156
183
  }
157
184
 
@@ -159,7 +186,7 @@
159
186
  z-index: calc(1 * 10);
160
187
  }
161
188
 
162
- :host(.mg-menu-item--vertical[data-level="2"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
189
+ :host([data-style-direction-vertical][data-level="2"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
163
190
  padding-left: calc(2 * 3rem - 0.3rem);
164
191
  }
165
192
 
@@ -167,7 +194,7 @@
167
194
  z-index: calc(2 * 10);
168
195
  }
169
196
 
170
- :host(.mg-menu-item--vertical[data-level="3"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
197
+ :host([data-style-direction-vertical][data-level="3"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
171
198
  padding-left: calc(3 * 3rem - 0.3rem);
172
199
  }
173
200
 
@@ -175,7 +202,7 @@
175
202
  z-index: calc(3 * 10);
176
203
  }
177
204
 
178
- :host(.mg-menu-item--vertical[data-level="4"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
205
+ :host([data-style-direction-vertical][data-level="4"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
179
206
  padding-left: calc(4 * 3rem - 0.3rem);
180
207
  }
181
208
 
@@ -183,7 +210,7 @@
183
210
  z-index: calc(4 * 10);
184
211
  }
185
212
 
186
- :host(.mg-menu-item--vertical[data-level="5"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
213
+ :host([data-style-direction-vertical][data-level="5"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
187
214
  padding-left: calc(5 * 3rem - 0.3rem);
188
215
  }
189
216
 
@@ -191,7 +218,7 @@
191
218
  z-index: calc(5 * 10);
192
219
  }
193
220
 
194
- :host(.mg-menu-item--vertical[data-level="6"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
221
+ :host([data-style-direction-vertical][data-level="6"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-medium {
195
222
  padding-left: calc(6 * 3rem - 0.3rem);
196
223
  }
197
224
 
@@ -199,7 +226,7 @@
199
226
  z-index: calc(6 * 10);
200
227
  }
201
228
 
202
- :host(.mg-menu-item--vertical[data-level="1"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
229
+ :host([data-style-direction-vertical][data-level="1"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
203
230
  padding-left: calc(1 * 4rem - 0.3rem);
204
231
  }
205
232
 
@@ -207,7 +234,7 @@
207
234
  z-index: calc(1 * 10);
208
235
  }
209
236
 
210
- :host(.mg-menu-item--vertical[data-level="2"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
237
+ :host([data-style-direction-vertical][data-level="2"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
211
238
  padding-left: calc(2 * 4rem - 0.3rem);
212
239
  }
213
240
 
@@ -215,7 +242,7 @@
215
242
  z-index: calc(2 * 10);
216
243
  }
217
244
 
218
- :host(.mg-menu-item--vertical[data-level="3"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
245
+ :host([data-style-direction-vertical][data-level="3"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
219
246
  padding-left: calc(3 * 4rem - 0.3rem);
220
247
  }
221
248
 
@@ -223,7 +250,7 @@
223
250
  z-index: calc(3 * 10);
224
251
  }
225
252
 
226
- :host(.mg-menu-item--vertical[data-level="4"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
253
+ :host([data-style-direction-vertical][data-level="4"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
227
254
  padding-left: calc(4 * 4rem - 0.3rem);
228
255
  }
229
256
 
@@ -231,7 +258,7 @@
231
258
  z-index: calc(4 * 10);
232
259
  }
233
260
 
234
- :host(.mg-menu-item--vertical[data-level="5"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
261
+ :host([data-style-direction-vertical][data-level="5"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
235
262
  padding-left: calc(5 * 4rem - 0.3rem);
236
263
  }
237
264
 
@@ -239,7 +266,7 @@
239
266
  z-index: calc(5 * 10);
240
267
  }
241
268
 
242
- :host(.mg-menu-item--vertical[data-level="6"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
269
+ :host([data-style-direction-vertical][data-level="6"]) .mg-menu-item__navigation-button.mg-menu-item__navigation-button--size-large {
243
270
  padding-left: calc(6 * 4rem - 0.3rem);
244
271
  }
245
272
 
@@ -252,29 +279,29 @@
252
279
  display: flex;
253
280
  }
254
281
 
255
- :host(.mg-menu-item--last) .mg-menu-item__collapse-container {
282
+ :host([data-style-position-last]) .mg-menu-item__collapse-container {
256
283
  left: unset;
257
284
  right: 0;
258
285
  }
259
286
 
260
- :host(.mg-menu-item--vertical) {
287
+ :host([data-style-direction-vertical]) {
261
288
  flex-direction: column;
262
289
  }
263
- :host(.mg-menu-item--vertical) .mg-menu-item__collapse-container {
290
+ :host([data-style-direction-vertical]) .mg-menu-item__collapse-container {
264
291
  left: unset;
265
292
  top: unset;
266
293
  position: unset;
267
294
  width: unset;
268
295
  }
269
- :host(.mg-menu-item--vertical) .mg-menu-item-chevron {
296
+ :host([data-style-direction-vertical]) .mg-menu-item-chevron {
270
297
  margin-left: auto;
271
298
  }
272
299
 
273
- :host(.mg-menu-item--horizontal) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level {
300
+ :host([data-style-direction-horizontal]) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level {
274
301
  box-shadow: var(--box-shadow);
275
302
  background-color: hsl(var(--color-light));
276
303
  }
277
- :host(.mg-menu-item--horizontal) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level ::slotted(mg-menu) {
304
+ :host([data-style-direction-horizontal]) .mg-menu-item__collapse-container.mg-menu-item__collapse-container--first-level ::slotted(mg-menu) {
278
305
  padding: 1rem 0;
279
306
  }
280
307
 
@@ -313,4 +340,8 @@
313
340
  white-space: nowrap;
314
341
  overflow: hidden;
315
342
  text-overflow: ellipsis;
343
+ }
344
+
345
+ :host([status=disabled]) {
346
+ pointer-events: none;
316
347
  }
@@ -1,7 +1,7 @@
1
1
  import { h, Host } from '@stencil/core';
2
2
  import { ClassList } from '../../../../utils/components.utils';
3
3
  import { Direction } from '../mg-menu/mg-menu.conf';
4
- import { ElementPosition, sizes, Status } from './mg-menu-item.conf';
4
+ import { sizes, Status } from './mg-menu-item.conf';
5
5
  export class MgMenuItem {
6
6
  constructor() {
7
7
  /************
@@ -9,33 +9,6 @@ export class MgMenuItem {
9
9
  ************/
10
10
  this.name = 'mg-menu-item';
11
11
  this.navigationButton = `${this.name}__navigation-button`;
12
- /**
13
- * Define menu-item status. Default: "visible"
14
- */
15
- this.status = Status.VISIBLE;
16
- /**
17
- * Define menu-item size. Default: "large".
18
- */
19
- this.size = 'large';
20
- /**
21
- * Define menu-item content expanded. Default: false.
22
- */
23
- this.expanded = false;
24
- /************
25
- * States *
26
- ************/
27
- /**
28
- * Component classes
29
- */
30
- this.classList = new ClassList([this.name]);
31
- /**
32
- * Component button classes
33
- */
34
- this.navigationButtonClassList = new ClassList([this.navigationButton]);
35
- /**
36
- * Does component have children. Default: false.
37
- */
38
- this.hasChildren = false;
39
12
  /************
40
13
  * Methods *
41
14
  ************/
@@ -72,10 +45,22 @@ export class MgMenuItem {
72
45
  * @returns {void}
73
46
  */
74
47
  this.handleElementCLick = (event) => {
75
- event.preventDefault();
48
+ if (this.hasChildren || this.status === Status.DISABLED) {
49
+ event.preventDefault();
50
+ event.stopPropagation();
51
+ }
52
+ // toggle expanded when mg-menu-item has child items
76
53
  if (this.hasChildren)
77
54
  this.toggleExpanded();
78
55
  };
56
+ this.href = undefined;
57
+ this.status = Status.VISIBLE;
58
+ this.size = 'large';
59
+ this.expanded = false;
60
+ this.navigationButtonClassList = new ClassList([this.navigationButton]);
61
+ this.direction = undefined;
62
+ this.isInMainMenu = undefined;
63
+ this.hasChildren = false;
79
64
  }
80
65
  validateStatus(newValue, oldValue) {
81
66
  if (oldValue !== undefined) {
@@ -166,7 +151,7 @@ export class MgMenuItem {
166
151
  const hasPreviousMenuItem = ((_b = this.element.previousElementSibling) === null || _b === void 0 ? void 0 : _b.nodeName) === 'MG-MENU-ITEM';
167
152
  // manage last menu item
168
153
  if (!hasNextMenuItem && hasPreviousMenuItem && this.isdirection(Direction.HORIZONTAL)) {
169
- this.classList.add(`${this.name}--${ElementPosition.LAST}`);
154
+ this.element.setAttribute('data-style-position-last', '');
170
155
  }
171
156
  // when main menu item contain an active item it will get the active style
172
157
  // AND if item is in vertical menu it will be expanded
@@ -175,7 +160,7 @@ export class MgMenuItem {
175
160
  this.expanded = this.direction === Direction.VERTICAL;
176
161
  }
177
162
  // manage menu items style depending to parent menu horientation
178
- this.classList.add(`${this.name}--${this.direction}`);
163
+ this.element.setAttribute(`data-style-direction-${this.direction}`, '');
179
164
  this.navigationButtonClassList.add(`${this.navigationButton}--${this.direction}`);
180
165
  // manage child items level
181
166
  const childItems = Array.from(this.element.querySelectorAll('mg-menu-item'));
@@ -194,9 +179,10 @@ export class MgMenuItem {
194
179
  */
195
180
  render() {
196
181
  const TagName = this.href !== undefined ? 'a' : 'button';
197
- return (h(Host, { role: "menuitem", "aria-haspopup": this.hasChildren.toString(), class: this.classList.join() }, h(TagName, { href: this.href, class: this.navigationButtonClassList.join(), tabindex: [Status.DISABLED, Status.HIDDEN].includes(this.status) ? -1 : 0, disabled: this.status === Status.DISABLED, "aria-expanded": this.hasChildren && this.expanded.toString(), "aria-current": this.status === Status.ACTIVE && 'page', onClick: this.handleElementCLick }, h("slot", { name: "illustration" }), h("div", { class: `${this.navigationButton}-center` }, h("div", { class: `${this.navigationButton}-text-content` }, h("slot", { name: "label" }), h("slot", { name: "information" })), h("slot", { name: "metadata" })), this.hasChildren && this.href === undefined && (h("span", { class: {
182
+ return (h(Host, { role: "menuitem", "aria-haspopup": this.hasChildren.toString() }, h(TagName, { href: this.href, class: this.navigationButtonClassList.join(), tabindex: [Status.DISABLED, Status.HIDDEN].includes(this.status) ? -1 : 0, disabled: this.status === Status.DISABLED, "aria-expanded": this.hasChildren && this.expanded.toString(), "aria-current": this.status === Status.ACTIVE && 'page', onClick: this.handleElementCLick }, h("slot", { name: "illustration" }), h("div", { class: `${this.navigationButton}-center` }, h("div", { class: `${this.navigationButton}-text-content` }, h("slot", { name: "label" }), h("slot", { name: "information" })), h("slot", { name: "metadata" })), this.hasChildren && this.href === undefined && (h("span", { class: {
198
183
  [`${this.navigationButton}-chevron`]: true,
199
184
  [`${this.navigationButton}-chevron--rotate`]: this.expanded === true,
185
+ 'mg-a11y-animation': true,
200
186
  } }, h("mg-icon", { icon: "chevron-down" })))), h("div", { class: { [`${this.name}__collapse-container`]: true, [`${this.name}__collapse-container--first-level`]: this.isInMainMenu && this.isdirection(Direction.HORIZONTAL) }, hidden: !this.expanded }, h("slot", null))));
201
187
  }
202
188
  static get is() { return "mg-menu-item"; }
@@ -298,7 +284,6 @@ export class MgMenuItem {
298
284
  }
299
285
  static get states() {
300
286
  return {
301
- "classList": {},
302
287
  "navigationButtonClassList": {},
303
288
  "direction": {},
304
289
  "isInMainMenu": {},
@@ -19,6 +19,12 @@
19
19
  outline: none;
20
20
  }
21
21
 
22
+ @media (prefers-reduced-motion) {
23
+ .mg-a11y-animation {
24
+ animation: none !important;
25
+ transition: none !important;
26
+ }
27
+ }
22
28
  .mg-details summary {
23
29
  display: flex;
24
30
  align-items: baseline;
@@ -1,14 +1,6 @@
1
1
  import { h } from '@stencil/core';
2
2
  export class MgDetails {
3
3
  constructor() {
4
- /**
5
- * Hide summary element
6
- */
7
- this.hideSummary = false;
8
- /**
9
- * Define if details are diplayed
10
- */
11
- this.expanded = false;
12
4
  /**
13
5
  * Handle details toggle
14
6
  *
@@ -17,6 +9,10 @@ export class MgDetails {
17
9
  this.handleToggle = () => {
18
10
  this.expanded = this.details.open;
19
11
  };
12
+ this.toggleClosed = undefined;
13
+ this.toggleOpened = undefined;
14
+ this.hideSummary = false;
15
+ this.expanded = false;
20
16
  }
21
17
  validateTitles(newValue) {
22
18
  if (newValue === undefined || newValue.trim() === '') {
@@ -5,28 +5,6 @@ export class MgForm {
5
5
  constructor() {
6
6
  // Classes
7
7
  this.classAllRequired = 'mg-form--all-required';
8
- /**
9
- * Identifier is used for the element ID (id is a reserved prop in Stencil.js)
10
- * If not set, it will be created.
11
- */
12
- this.identifier = createID('mg-form');
13
- /**
14
- * Input name
15
- * If not set the value equals the identifier
16
- */
17
- this.name = this.identifier;
18
- /**
19
- * Define if form is readonly
20
- */
21
- this.readonly = false;
22
- /**
23
- * Define if form is disabled
24
- */
25
- this.disabled = false;
26
- /**
27
- * Component classes
28
- */
29
- this.classList = new ClassList(['mg-form']);
30
8
  /**
31
9
  * Define required message based on mg-inputs required elements
32
10
  * Also
@@ -87,7 +65,7 @@ export class MgForm {
87
65
  this.mgInputs = Array.from(this.element.querySelectorAll('*')).filter((node) => node.nodeName.startsWith('MG-INPUT-'));
88
66
  // Set inputs readonly or disabled based on form configuration
89
67
  // Othewise listen to events
90
- this.mgInputs.map(input => {
68
+ this.mgInputs.forEach(input => {
91
69
  if (this.readonly)
92
70
  input.readonly = true;
93
71
  else if (this.disabled)
@@ -96,6 +74,14 @@ export class MgForm {
96
74
  input.addEventListener('input-valid', this.checkValidity);
97
75
  });
98
76
  };
77
+ this.identifier = createID('mg-form');
78
+ this.name = this.identifier;
79
+ this.readonly = false;
80
+ this.disabled = false;
81
+ this.valid = undefined;
82
+ this.invalid = undefined;
83
+ this.classList = new ClassList(['mg-form']);
84
+ this.requiredMessage = undefined;
99
85
  }
100
86
  handleAttributeChange() {
101
87
  this.setMgInputs();
@@ -20,13 +20,13 @@
20
20
  max-width: 47.5rem;
21
21
  }
22
22
  .mg-illustrated-message__illustration {
23
- max-height: 33.5rem;
23
+ max-height: 18.4rem;
24
24
  }
25
25
  .mg-illustrated-message__illustration ::slotted([slot=illustration]) {
26
26
  width: auto;
27
27
  height: auto;
28
28
  max-width: 100%;
29
- max-height: 33.5rem;
29
+ max-height: 18.4rem;
30
30
  }
31
31
  .mg-illustrated-message__illustration.mg-illustrated-message__illustration--small {
32
32
  max-height: 6rem;
@@ -2,13 +2,7 @@ import { h } from '@stencil/core';
2
2
  import { isTagName } from '../../../utils/components.utils';
3
3
  export class MgIllustratedMessage {
4
4
  constructor() {
5
- /**
6
- * Define illustration size
7
- */
8
5
  this.size = 'regular';
9
- /**
10
- * Define component orientation
11
- */
12
6
  this.direction = 'vertical';
13
7
  }
14
8
  /*************
@@ -1,47 +1,47 @@
1
+ :host {
2
+ --mg-card-padding: 0;
3
+ --mg-card-border-radius: var(--mg-message-border-radius);
4
+ --mg-card-border: none;
5
+ --mg-card-overflow: hidden;
6
+ }
7
+
1
8
  .mg-message {
2
9
  display: inline-block;
3
- position: relative;
4
- box-sizing: border-box;
5
10
  min-height: var(--default-size);
6
- overflow: hidden;
7
- background-color: white;
8
- border-radius: var(--mg-message-border-radius);
9
- box-shadow: var(--box-shadow);
10
11
  }
11
- .mg-message::before {
12
- content: "";
12
+ .mg-message__bar {
13
13
  position: absolute;
14
14
  top: 0;
15
15
  left: 0;
16
16
  width: 0.3rem;
17
17
  height: 100%;
18
18
  }
19
- .mg-message.mg-message--info::before {
19
+ .mg-message.mg-message--info .mg-message__bar {
20
20
  background-color: hsl(var(--color-info));
21
21
  }
22
22
  .mg-message.mg-message--info .mg-message__icon {
23
23
  color: hsl(var(--color-info));
24
24
  }
25
- .mg-message.mg-message--warning::before {
25
+ .mg-message.mg-message--warning .mg-message__bar {
26
26
  background-color: hsl(var(--color-warning));
27
27
  }
28
28
  .mg-message.mg-message--warning .mg-message__icon {
29
29
  color: hsl(var(--color-warning));
30
30
  }
31
- .mg-message.mg-message--success::before {
31
+ .mg-message.mg-message--success .mg-message__bar {
32
32
  background-color: hsl(var(--color-success));
33
33
  }
34
34
  .mg-message.mg-message--success .mg-message__icon {
35
35
  color: hsl(var(--color-success));
36
36
  }
37
- .mg-message.mg-message--danger::before {
37
+ .mg-message.mg-message--danger .mg-message__bar {
38
38
  background-color: hsl(var(--color-danger));
39
39
  }
40
40
  .mg-message.mg-message--danger .mg-message__icon {
41
41
  color: hsl(var(--color-danger));
42
42
  }
43
43
  .mg-message.mg-message--close-button {
44
- padding-right: 3.4rem;
44
+ --mg-card-padding: 0 3.4rem 0 0;
45
45
  }
46
46
  .mg-message.mg-message--hide {
47
47
  display: none;
@@ -50,14 +50,12 @@
50
50
  margin: 0;
51
51
  padding: 0;
52
52
  }
53
-
54
53
  .mg-message__icon {
55
54
  position: absolute;
56
55
  top: calc((var(--default-size) - var(--mg-icon-regular-size)) / 2);
57
56
  left: 1.3rem;
58
57
  line-height: 1;
59
58
  }
60
-
61
59
  .mg-message__content {
62
60
  display: flex;
63
61
  flex-wrap: wrap;
@@ -65,23 +63,19 @@
65
63
  align-content: stretch;
66
64
  padding: 0 1rem 0 3.8rem;
67
65
  }
68
-
69
66
  .mg-message__content-slot {
70
67
  flex-grow: 1;
71
68
  margin: 0.84rem 0;
72
69
  }
73
-
74
70
  .mg-message__content-separator {
75
71
  display: inline-block;
76
72
  width: 4.5rem;
77
73
  height: 0;
78
74
  }
79
-
80
75
  .mg-message__content-actions-slot {
81
76
  padding: 1rem 0;
82
77
  text-align: right;
83
78
  }
84
-
85
79
  .mg-message__close-button {
86
80
  position: absolute;
87
81
  top: 0;
@@ -13,32 +13,6 @@ export class MgMessage {
13
13
  this.closeButtonId = '';
14
14
  // Stored timer setted when hide action is run from setTimeOut
15
15
  this.storedTimer = null;
16
- /**
17
- * Identifier is used for the element ID (id is a reserved prop in Stencil.js)
18
- * If not set, it will be created.
19
- */
20
- this.identifier = createID('mg-message');
21
- /**
22
- * Message variant
23
- */
24
- this.variant = variants[0]; // info
25
- /**
26
- * Define if message has a cross button
27
- * RG 01: https://jira.mgdis.fr/browse/PDA9-140
28
- */
29
- this.closeButton = false;
30
- /**
31
- * Define if message is hidden
32
- */
33
- this.hide = false;
34
- /**
35
- * Component classes
36
- */
37
- this.classList = new ClassList(['mg-message']);
38
- /**
39
- * Define if component is using actions slot
40
- */
41
- this.hasActions = false;
42
16
  /**
43
17
  * Handle close button
44
18
  */
@@ -75,6 +49,13 @@ export class MgMessage {
75
49
  break;
76
50
  }
77
51
  };
52
+ this.identifier = createID('mg-message');
53
+ this.delay = undefined;
54
+ this.variant = variants[0];
55
+ this.closeButton = false;
56
+ this.hide = false;
57
+ this.classList = new ClassList(['mg-message']);
58
+ this.hasActions = false;
78
59
  }
79
60
  validateDelay(newValue) {
80
61
  if (newValue && newValue < 2) {
@@ -136,7 +117,7 @@ export class MgMessage {
136
117
  * @returns {HTMLElement} HTML Element
137
118
  */
138
119
  render() {
139
- return (h("div", { id: this.identifier, class: this.classList.join(), role: this.variant === 'info' ? 'status' : 'alert' }, h("span", { class: "mg-message__icon" }, h("mg-icon", { icon: this.getIcon() })), h("div", { class: "mg-message__content" }, h("span", { class: "mg-message__content-slot" }, h("slot", null)), this.hasActions && h("span", { class: "mg-message__content-separator" }), this.hasActions && (h("span", { class: "mg-message__content-actions-slot" }, h("slot", { name: "actions" })))), this.closeButton && (h("span", { class: "mg-message__close-button" }, h("mg-button", { identifier: this.closeButtonId, "is-icon": true, variant: "flat", label: this.messages.message.closeButton, onClick: this.handleClose }, h("mg-icon", { icon: "cross" }))))));
120
+ return (h("div", { id: this.identifier, class: this.classList.join(), role: this.variant === 'info' ? 'status' : 'alert' }, h("mg-card", null, h("span", { class: "mg-message__bar" }), h("span", { class: "mg-message__icon" }, h("mg-icon", { icon: this.getIcon() })), h("div", { class: "mg-message__content" }, h("span", { class: "mg-message__content-slot" }, h("slot", null)), this.hasActions && h("span", { class: "mg-message__content-separator" }), this.hasActions && (h("span", { class: "mg-message__content-actions-slot" }, h("slot", { name: "actions" })))), this.closeButton && (h("span", { class: "mg-message__close-button" }, h("mg-button", { identifier: this.closeButtonId, "is-icon": true, variant: "flat", label: this.messages.message.closeButton, onClick: this.handleClose }, h("mg-icon", { icon: "cross" })))))));
140
121
  }
141
122
  static get is() { return "mg-message"; }
142
123
  static get encapsulation() { return "shadow"; }
@@ -1,3 +1,9 @@
1
+ :host {
2
+ --mg-card-border-radius: var(--mg-modal-border-radius);
3
+ --mg-card-padding: 1.5rem 2.5rem;
4
+ --mg-card-border: none;
5
+ }
6
+
1
7
  .mg-modal {
2
8
  display: flex;
3
9
  justify-content: center;
@@ -11,21 +17,20 @@
11
17
  padding: 2rem 0;
12
18
  background-color: hsla(var(--color-light), 85%);
13
19
  }
20
+ .mg-modal mg-card {
21
+ display: flex;
22
+ width: 60rem;
23
+ max-width: 100%;
24
+ max-height: 100%;
25
+ }
14
26
  .mg-modal__dialog {
15
27
  display: flex;
16
28
  position: relative;
17
29
  flex-direction: column;
18
30
  align-self: center;
19
31
  row-gap: 3rem;
20
- padding: 1.5rem 2.5rem;
21
- width: 60rem;
22
32
  height: fit-content;
23
- max-width: 100%;
24
33
  max-height: 100%;
25
- box-sizing: border-box;
26
- background-color: hsl(var(--color-light));
27
- box-shadow: var(--box-shadow);
28
- border-radius: var(--mg-modal-border-radius);
29
34
  }
30
35
  .mg-modal__header {
31
36
  margin-bottom: 0.5rem;