@madie/madie-design-system 1.2.25 → 1.2.26

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 (74) hide show
  1. package/components/MadieAlert/index.jsx +70 -2
  2. package/coverage/clover.xml +38 -12
  3. package/coverage/coverage-final.json +1 -1
  4. package/coverage/lcov-report/index.html +17 -17
  5. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  6. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  7. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  8. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  9. package/coverage/lcov-report/react/components/DateField/DateField.jsx.html +1 -1
  10. package/coverage/lcov-report/react/components/DateField/index.html +1 -1
  11. package/coverage/lcov-report/react/components/DateTimeField/DateTimeField.jsx.html +1 -1
  12. package/coverage/lcov-report/react/components/DateTimeField/index.html +1 -1
  13. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  14. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  15. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  16. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  17. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +1 -1
  18. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +1 -1
  19. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  20. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  21. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +1 -1
  22. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  23. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  24. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  25. package/coverage/lcov-report/react/components/InputLabel/index.html +1 -1
  26. package/coverage/lcov-report/react/components/InputLabel/index.jsx.html +1 -1
  27. package/coverage/lcov-report/react/components/MadieAlert/index.html +15 -15
  28. package/coverage/lcov-report/react/components/MadieAlert/index.jsx.html +219 -15
  29. package/coverage/lcov-report/react/components/MadieDeleteDialog/index.html +1 -1
  30. package/coverage/lcov-report/react/components/MadieDeleteDialog/index.jsx.html +1 -1
  31. package/coverage/lcov-report/react/components/MadieDialog/index.html +1 -1
  32. package/coverage/lcov-report/react/components/MadieDialog/index.jsx.html +1 -1
  33. package/coverage/lcov-report/react/components/MadieDiscardDialog/index.html +1 -1
  34. package/coverage/lcov-report/react/components/MadieDiscardDialog/index.jsx.html +1 -1
  35. package/coverage/lcov-report/react/components/MadieSpinner/index.html +1 -1
  36. package/coverage/lcov-report/react/components/MadieSpinner/index.jsx.html +1 -1
  37. package/coverage/lcov-report/react/components/MadieTooltip/index.html +1 -1
  38. package/coverage/lcov-report/react/components/MadieTooltip/index.jsx.html +1 -1
  39. package/coverage/lcov-report/react/components/MadieTooltipIcon/index.html +1 -1
  40. package/coverage/lcov-report/react/components/MadieTooltipIcon/index.jsx.html +1 -1
  41. package/coverage/lcov-report/react/components/Pagination/index.html +1 -1
  42. package/coverage/lcov-report/react/components/Pagination/index.jsx.html +1 -1
  43. package/coverage/lcov-report/react/components/Popover/index.html +1 -1
  44. package/coverage/lcov-report/react/components/Popover/index.js.html +1 -1
  45. package/coverage/lcov-report/react/components/ReadOnlyTextField/index.html +1 -1
  46. package/coverage/lcov-report/react/components/ReadOnlyTextField/index.jsx.html +1 -1
  47. package/coverage/lcov-report/react/components/Select/index.html +1 -1
  48. package/coverage/lcov-report/react/components/Select/index.jsx.html +1 -1
  49. package/coverage/lcov-report/react/components/Tabs/Tab.js.html +1 -1
  50. package/coverage/lcov-report/react/components/Tabs/index.html +1 -1
  51. package/coverage/lcov-report/react/components/Tabs/index.js.html +1 -1
  52. package/coverage/lcov-report/react/components/TextArea/index.html +1 -1
  53. package/coverage/lcov-report/react/components/TextArea/index.jsx.html +1 -1
  54. package/coverage/lcov-report/react/components/TextField/index.html +1 -1
  55. package/coverage/lcov-report/react/components/TextField/index.jsx.html +1 -1
  56. package/coverage/lcov-report/react/components/Toast/index.html +1 -1
  57. package/coverage/lcov-report/react/components/Toast/index.jsx.html +1 -1
  58. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  59. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  60. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  61. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  62. package/coverage/lcov-report/react/index.html +1 -1
  63. package/coverage/lcov-report/react/index.js.html +1 -1
  64. package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
  65. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +1 -1
  66. package/coverage/lcov-report/react/lib/index.html +1 -1
  67. package/coverage/lcov.info +87 -24
  68. package/dist/browser.js +1 -1
  69. package/dist/index.js +1 -1
  70. package/dist/react/index.js +7 -7
  71. package/dist/react/index.js.map +1 -1
  72. package/package-lock.json +2 -2
  73. package/package.json +1 -1
  74. package/test/components/MadieAlert.test.js +117 -1
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
26
+ <span class="strong">97.05% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>7/7</span>
28
+ <span class='fraction'>33/34</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.66% </span>
33
+ <span class="strong">83.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>6/9</span>
35
+ <span class='fraction'>30/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
42
+ <span class='fraction'>6/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>7/7</span>
49
+ <span class='fraction'>33/33</span>
50
50
  </div>
51
51
 
52
52
 
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="index.jsx"><a href="index.jsx.html">index.jsx</a></td>
83
- <td data-value="100" class="pic high">
84
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
83
+ <td data-value="97.05" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
85
85
  </td>
86
+ <td data-value="97.05" class="pct high">97.05%</td>
87
+ <td data-value="34" class="abs high">33/34</td>
88
+ <td data-value="83.33" class="pct high">83.33%</td>
89
+ <td data-value="36" class="abs high">30/36</td>
86
90
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="7" class="abs high">7/7</td>
88
- <td data-value="66.66" class="pct medium">66.66%</td>
89
- <td data-value="9" class="abs medium">6/9</td>
90
- <td data-value="100" class="pct high">100%</td>
91
- <td data-value="1" class="abs high">1/1</td>
91
+ <td data-value="6" class="abs high">6/6</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="7" class="abs high">7/7</td>
93
+ <td data-value="33" class="abs high">33/33</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
26
+ <span class="strong">97.05% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>7/7</span>
28
+ <span class='fraction'>33/34</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">66.66% </span>
33
+ <span class="strong">83.33% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>6/9</span>
35
+ <span class='fraction'>30/36</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
42
+ <span class='fraction'>6/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>7/7</span>
49
+ <span class='fraction'>33/33</span>
50
50
  </div>
51
51
 
52
52
 
@@ -136,41 +136,173 @@
136
136
  <a name='L71'></a><a href='#L71'>71</a>
137
137
  <a name='L72'></a><a href='#L72'>72</a>
138
138
  <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
208
+ <span class="cline-any cline-neutral">&nbsp;</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <span class="cline-any cline-neutral">&nbsp;</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-neutral">&nbsp;</span>
219
+ <span class="cline-any cline-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-yes">1x</span>
223
+ <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-neutral">&nbsp;</span>
140
225
  <span class="cline-any cline-neutral">&nbsp;</span>
141
226
  <span class="cline-any cline-neutral">&nbsp;</span>
142
227
  <span class="cline-any cline-neutral">&nbsp;</span>
143
228
  <span class="cline-any cline-neutral">&nbsp;</span>
144
229
  <span class="cline-any cline-neutral">&nbsp;</span>
145
230
  <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-yes">8x</span>
146
232
  <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-yes">8x</span>
234
+ <span class="cline-any cline-yes">3x</span>
235
+ <span class="cline-any cline-yes">14x</span>
236
+ <span class="cline-any cline-yes">14x</span>
147
237
  <span class="cline-any cline-neutral">&nbsp;</span>
238
+ <span class="cline-any cline-yes">14x</span>
239
+ <span class="cline-any cline-yes">4x</span>
240
+ <span class="cline-any cline-yes">10x</span>
241
+ <span class="cline-any cline-yes">10x</span>
242
+ <span class="cline-any cline-yes">1x</span>
243
+ <span class="cline-any cline-yes">9x</span>
244
+ <span class="cline-any cline-yes">5x</span>
148
245
  <span class="cline-any cline-neutral">&nbsp;</span>
149
246
  <span class="cline-any cline-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-yes">10x</span>
248
+ <span class="cline-any cline-yes">1x</span>
249
+ <span class="cline-any cline-yes">9x</span>
150
250
  <span class="cline-any cline-neutral">&nbsp;</span>
151
251
  <span class="cline-any cline-neutral">&nbsp;</span>
152
252
  <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-yes">8x</span>
153
254
  <span class="cline-any cline-yes">1x</span>
154
255
  <span class="cline-any cline-neutral">&nbsp;</span>
155
256
  <span class="cline-any cline-neutral">&nbsp;</span>
156
257
  <span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-yes">1x</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-yes">14x</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-yes">3x</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-yes">8x</span>
266
+ <span class="cline-any cline-yes">5x</span>
267
+ <span class="cline-any cline-yes">3x</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-yes">8x</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-yes">8x</span>
278
+ <span class="cline-any cline-yes">8x</span>
279
+ <span class="cline-any cline-yes">8x</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-yes">8x</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
157
284
  <span class="cline-any cline-neutral">&nbsp;</span>
158
285
  <span class="cline-any cline-neutral">&nbsp;</span>
159
286
  <span class="cline-any cline-neutral">&nbsp;</span>
160
287
  <span class="cline-any cline-neutral">&nbsp;</span>
161
288
  <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-yes">2x</span>
163
289
  <span class="cline-any cline-neutral">&nbsp;</span>
164
290
  <span class="cline-any cline-neutral">&nbsp;</span>
165
291
  <span class="cline-any cline-neutral">&nbsp;</span>
166
292
  <span class="cline-any cline-neutral">&nbsp;</span>
167
293
  <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-yes">2x</span>
169
294
  <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-yes">2x</span>
171
- <span class="cline-any cline-yes">2x</span>
172
295
  <span class="cline-any cline-neutral">&nbsp;</span>
173
- <span class="cline-any cline-yes">2x</span>
296
+ <span class="cline-any cline-neutral">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-yes">3x</span>
304
+ <span class="cline-any cline-yes">3x</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
306
  <span class="cline-any cline-neutral">&nbsp;</span>
175
307
  <span class="cline-any cline-neutral">&nbsp;</span>
176
308
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -208,13 +340,18 @@
208
340
  <span class="cline-any cline-neutral">&nbsp;</span>
209
341
  <span class="cline-any cline-neutral">&nbsp;</span>
210
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-yes">1x</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
347
  <span class="cline-any cline-neutral">&nbsp;</span>
212
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React from "react";
348
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useEffect, useState } from "react";
213
349
  &nbsp;
214
350
  import ErrorIcon from "@mui/icons-material/Error"; // warning
215
351
  import InfoIcon from "@mui/icons-material/Info"; // info
216
352
  import CancelIcon from "@mui/icons-material/Cancel"; // error
217
353
  import CheckCircleIcon from "@mui/icons-material/CheckCircle"; //success
354
+ import ContentCopyIcon from "@mui/icons-material/ContentCopy"; //copy
218
355
  &nbsp;
219
356
  import { IconButton } from "@mui/material";
220
357
  import ClearIcon from "@mui/icons-material/Clear";
@@ -230,7 +367,47 @@ const MadieAlert = ({
230
367
  canClose = <span class="branch-0 cbranch-no" title="branch not covered" >true,</span>
231
368
  alertProps, // props to pass to outer component
232
369
  closeButtonProps, // props to pass to close button
370
+ copyButton,
233
371
  }) =&gt; {
372
+ const [copyText, setCopyText] = useState("");
373
+ &nbsp;
374
+ const copyButtonBuilder = (content) =&gt; {
375
+ const traversal = (contentNode, parentNode = true) =&gt; {
376
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!contentNode) <span class="cstat-no" title="statement not covered" >return "";</span>
377
+ let result = "";
378
+ &nbsp;
379
+ if (Array.isArray(contentNode.props?.children)) {
380
+ contentNode.props.children.forEach((child, index) =&gt; {
381
+ result += traversal(child, false);
382
+ if (parentNode &amp;&amp; index == 1) {
383
+ result += "\n";
384
+ } else if (contentNode.type === "ul") {
385
+ result = "\n" + result + "\n";
386
+ }
387
+ });
388
+ } else if (typeof contentNode.props?.children === "object") {
389
+ result += traversal(contentNode.props.children, false);
390
+ } else if (
391
+ typeof contentNode.props?.children === "string" ||
392
+ typeof contentNode.props?.children === "number"
393
+ ) {
394
+ result += contentNode.props.children.toString();
395
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>if (
396
+ typeof contentNode === "string" ||
397
+ <span class="branch-1 cbranch-no" title="branch not covered" > typeof contentNode === "number"</span>
398
+ ) {
399
+ result += contentNode.toString();
400
+ }
401
+ return result;
402
+ };
403
+ return traversal(content).trim();
404
+ };
405
+ &nbsp;
406
+ useEffect(() =&gt; {
407
+ if (content &amp;&amp; copyButton) {
408
+ setCopyText(copyButtonBuilder(content));
409
+ }
410
+ }, [content]);
234
411
  // we have four states to render for
235
412
  const typeSelect = {
236
413
  warning: ErrorIcon,
@@ -239,7 +416,6 @@ const MadieAlert = ({
239
416
  success: CheckCircleIcon,
240
417
  };
241
418
  const Icon = typeSelect[type];
242
- &nbsp;
243
419
  const alertClass = classNames("madie-alert", type);
244
420
  const iconClass = classNames("alert-icon", type);
245
421
  &nbsp;
@@ -248,6 +424,30 @@ const MadieAlert = ({
248
424
  &lt;div className={alertClass} {...alertProps}&gt;
249
425
  &lt;Icon className={iconClass} /&gt;
250
426
  &lt;div id="content"&gt;{content &amp;&amp; content}&lt;/div&gt;
427
+ {copyButton &amp;&amp; (
428
+ &lt;IconButton
429
+ sx={{
430
+ marginLeft: "auto",
431
+ "&amp;:after": {
432
+ content: `''`,
433
+ position: "absolute",
434
+ left: "0px",
435
+ width: "1px",
436
+ height: "40px",
437
+ backgroundColor: "#B0B0B0",
438
+ pointerEvents: "none",
439
+ },
440
+ }}
441
+ &gt;
442
+ &lt;ContentCopyIcon
443
+ onClick={(e) =&gt; {
444
+ e.preventDefault();
445
+ navigator.clipboard.writeText(copyText);
446
+ }}
447
+ sx={{ color: "#242424" }}
448
+ /&gt;
449
+ &lt;/IconButton&gt;
450
+ )}
251
451
  {canClose &amp;&amp; (
252
452
  &lt;IconButton
253
453
  sx={{
@@ -279,6 +479,10 @@ MadieAlert.propTypes = {
279
479
  canClose: PropTypes.bool,
280
480
  alertProps: PropTypes.object,
281
481
  closeButtonProps: PropTypes.object,
482
+ copyButton: PropTypes.bool,
483
+ };
484
+ MadieAlert.defaultProps = {
485
+ copyButton: false,
282
486
  };
283
487
  &nbsp;
284
488
  export default MadieAlert;
@@ -289,7 +493,7 @@ export default MadieAlert;
289
493
  <div class='footer quiet pad2 space-top1 center small'>
290
494
  Code coverage generated by
291
495
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
292
- at 2024-08-15T18:03:52.549Z
496
+ at 2024-08-19T15:22:58.799Z
293
497
  </div>
294
498
  <script src="../../../prettify.js"></script>
295
499
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -232,7 +232,7 @@ export default MadieDeleteDialog;
232
232
  <div class='footer quiet pad2 space-top1 center small'>
233
233
  Code coverage generated by
234
234
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
235
- at 2024-08-15T18:03:52.549Z
235
+ at 2024-08-19T15:22:58.799Z
236
236
  </div>
237
237
  <script src="../../../prettify.js"></script>
238
238
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -1009,7 +1009,7 @@ export default MadieDialog;
1009
1009
  <div class='footer quiet pad2 space-top1 center small'>
1010
1010
  Code coverage generated by
1011
1011
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1012
- at 2024-08-15T18:03:52.549Z
1012
+ at 2024-08-19T15:22:58.799Z
1013
1013
  </div>
1014
1014
  <script src="../../../prettify.js"></script>
1015
1015
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -217,7 +217,7 @@ export default MadieDiscardDialog;
217
217
  <div class='footer quiet pad2 space-top1 center small'>
218
218
  Code coverage generated by
219
219
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
220
- at 2024-08-15T18:03:52.549Z
220
+ at 2024-08-19T15:22:58.799Z
221
221
  </div>
222
222
  <script src="../../../prettify.js"></script>
223
223
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -175,7 +175,7 @@ export default MadieSpinner;
175
175
  <div class='footer quiet pad2 space-top1 center small'>
176
176
  Code coverage generated by
177
177
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
178
- at 2024-08-15T18:03:52.549Z
178
+ at 2024-08-19T15:22:58.799Z
179
179
  </div>
180
180
  <script src="../../../prettify.js"></script>
181
181
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -217,7 +217,7 @@ export default MadieToolTip;
217
217
  <div class='footer quiet pad2 space-top1 center small'>
218
218
  Code coverage generated by
219
219
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
220
- at 2024-08-15T18:03:52.549Z
220
+ at 2024-08-19T15:22:58.799Z
221
221
  </div>
222
222
  <script src="../../../prettify.js"></script>
223
223
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -163,7 +163,7 @@ TooltipIcon.propTypes = {
163
163
  <div class='footer quiet pad2 space-top1 center small'>
164
164
  Code coverage generated by
165
165
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
166
- at 2024-08-15T18:03:52.549Z
166
+ at 2024-08-19T15:22:58.799Z
167
167
  </div>
168
168
  <script src="../../../prettify.js"></script>
169
169
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -721,7 +721,7 @@ export { Pagination };
721
721
  <div class='footer quiet pad2 space-top1 center small'>
722
722
  Code coverage generated by
723
723
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
724
- at 2024-08-15T18:03:52.549Z
724
+ at 2024-08-19T15:22:58.799Z
725
725
  </div>
726
726
  <script src="../../../prettify.js"></script>
727
727
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -463,7 +463,7 @@ export default MadiePopover;
463
463
  <div class='footer quiet pad2 space-top1 center small'>
464
464
  Code coverage generated by
465
465
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
466
- at 2024-08-15T18:03:52.549Z
466
+ at 2024-08-19T15:22:58.799Z
467
467
  </div>
468
468
  <script src="../../../prettify.js"></script>
469
469
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -499,7 +499,7 @@ export default ReadOnlyTextField;
499
499
  <div class='footer quiet pad2 space-top1 center small'>
500
500
  Code coverage generated by
501
501
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
502
- at 2024-08-15T18:03:52.549Z
502
+ at 2024-08-19T15:22:58.799Z
503
503
  </div>
504
504
  <script src="../../../prettify.js"></script>
505
505
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-08-15T18:03:52.549Z
104
+ at 2024-08-19T15:22:58.799Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -631,7 +631,7 @@ export default Select;
631
631
  <div class='footer quiet pad2 space-top1 center small'>
632
632
  Code coverage generated by
633
633
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
634
- at 2024-08-15T18:03:52.549Z
634
+ at 2024-08-19T15:22:58.799Z
635
635
  </div>
636
636
  <script src="../../../prettify.js"></script>
637
637
  <script>