@epa-wg/custom-element-dist 0.0.1 → 0.0.22

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 (172) hide show
  1. package/README.md +4 -4
  2. package/bin/build.sh +1 -1
  3. package/coverage/coverage-final.json +15 -11
  4. package/coverage/index.html +25 -25
  5. package/coverage/src/custom-element/coverage.svg +1 -1
  6. package/coverage/src/custom-element/custom-element.js/coverage.svg +1 -1
  7. package/coverage/src/custom-element/custom-element.js.html +600 -417
  8. package/coverage/src/custom-element/custom-element1-1.js/coverage.svg +10 -0
  9. package/coverage/src/custom-element/custom-element1-1.js.html +2374 -0
  10. package/coverage/src/custom-element/custom-element1.js/coverage.svg +10 -0
  11. package/coverage/src/custom-element/custom-element1.js.html +2374 -0
  12. package/coverage/src/custom-element/http-request.js.html +9 -9
  13. package/coverage/src/custom-element/index.html +49 -19
  14. package/coverage/src/custom-element/local-storage.js.html +6 -6
  15. package/coverage/src/custom-element/location-element.js.html +1 -1
  16. package/coverage/src/index.html +1 -1
  17. package/coverage/src/mocks/handlers.ts.html +1 -1
  18. package/coverage/src/mocks/index.html +1 -1
  19. package/coverage/src/stories/{attributes.stories.ts.html → attributes.test.stories.ts.html} +51 -15
  20. package/coverage/src/stories/{css.stories.ts.html → css.test.stories.ts.html} +77 -17
  21. package/coverage/src/stories/{dom-merge.stories.ts.html → dom-merge.test.stories.ts.html} +60 -12
  22. package/coverage/src/stories/{external-template.stories.ts.html → external-template.test.stories.ts.html} +42 -12
  23. package/coverage/src/stories/form.test.stories.ts.html +658 -0
  24. package/coverage/src/stories/http-request.stories.ts.html +7 -7
  25. package/coverage/src/stories/index.html +71 -41
  26. package/coverage/src/stories/{local-storage.stories.ts.html → local-storage.test.stories.ts.html} +56 -20
  27. package/coverage/src/stories/{location-element.stories.ts.html → location-element.test.stories.ts.html} +53 -17
  28. package/coverage/src/stories/renderPlay.ts.html +12 -15
  29. package/coverage/src/stories/slice-events.test.stories.ts/coverage.svg +10 -0
  30. package/coverage/src/stories/{slice-events.stories.ts.html → slice-events.test.stories.ts.html} +264 -15
  31. package/coverage/src/stories/slots.test.stories.ts/coverage.svg +10 -0
  32. package/coverage/src/stories/slots.test.stories.ts.html +739 -0
  33. package/coverage/src/sum.ts.html +1 -1
  34. package/dist/custom-element-BISbI4SU.js +463 -0
  35. package/dist/custom-element-N-sWiqGK.cjs +53 -0
  36. package/dist/custom-element-bundle.cjs +1 -1
  37. package/dist/custom-element-bundle.js +2 -2
  38. package/dist/mockServiceWorker.js +1 -1
  39. package/package.json +4 -4
  40. package/public/mockServiceWorker.js +1 -1
  41. package/src/custom-element/custom-element.d.ts +4 -0
  42. package/src/custom-element/custom-element.js +103 -42
  43. package/src/custom-element/custom-element1-1.js +763 -0
  44. package/src/custom-element/custom-element1.js +763 -0
  45. package/src/custom-element/custom-element1.js0 +750 -0
  46. package/src/custom-element/custom-element2.js0 +759 -0
  47. package/src/custom-element/custom-element3.js0 +763 -0
  48. package/src/custom-element/demo/a.html +38 -41
  49. package/src/custom-element/demo/b.html +13 -0
  50. package/src/custom-element/demo/data-slices.html +32 -0
  51. package/src/custom-element/demo/form.html +193 -0
  52. package/src/custom-element/demo/s.xml +19 -14
  53. package/src/custom-element/demo/s.xslt +22 -38
  54. package/src/custom-element/demo/s1.xslt +60 -0
  55. package/src/custom-element/ide/customData-dce.json +14 -1
  56. package/src/custom-element/ide/web-types-dce.json +7 -2
  57. package/src/custom-element/ide/web-types-xsl.json +2 -2
  58. package/src/custom-element/index.html +1 -0
  59. package/src/custom-element.test.ts +24 -8
  60. package/src/stories/{attributes.stories.ts → attributes.test.stories.ts} +19 -7
  61. package/src/stories/{css.stories.ts → css.test.stories.ts} +29 -9
  62. package/src/stories/{dom-merge.stories.ts → dom-merge.test.stories.ts} +19 -3
  63. package/src/stories/{external-template.stories.ts → external-template.test.stories.ts} +13 -3
  64. package/src/stories/form.test.stories.ts +191 -0
  65. package/src/stories/http-request.stories.ts +6 -6
  66. package/src/stories/http-request.test.ts +0 -9
  67. package/src/stories/{local-storage.stories.ts → local-storage.test.stories.ts} +24 -12
  68. package/src/stories/{location-element.stories.ts → location-element.test.stories.ts} +21 -9
  69. package/src/stories/renderPlay.ts +1 -2
  70. package/src/stories/{slice-events.stories.ts → slice-events.test.stories.ts} +88 -5
  71. package/src/stories/slots.test.stories.ts +218 -0
  72. package/storybook-static/assets/{Color-RQJUDNI5-C4yZhNbM.js → Color-PRSJMWNM-e4s261EJ.js} +1 -1
  73. package/storybook-static/assets/{Configure-C7d36rng.js → Configure-DWut7txe.js} +1 -1
  74. package/storybook-static/assets/DocsRenderer-K4EAMTCU-CaXVGjCl.js +2 -0
  75. package/storybook-static/assets/WithTooltip-KJL26V4Q--B8vdnMi.js +1 -0
  76. package/storybook-static/assets/{attributes.stories-ZB0RTY1d.js → attributes.test.stories-IuwazrdL.js} +21 -21
  77. package/storybook-static/assets/css.test.stories-D9WaxrEv.js +96 -0
  78. package/storybook-static/assets/custom-element-BV8-hRQS.js +219 -0
  79. package/storybook-static/assets/{dom-merge.stories-CgHZUABU.js → dom-merge.test.stories-BhbNeum_.js} +5 -6
  80. package/storybook-static/assets/{entry-preview-CQqNFx4W.js → entry-preview-DrgzXgwT.js} +1 -1
  81. package/storybook-static/assets/{entry-preview-docs-CWgqLfd3.js → entry-preview-docs-Bxv0qQWs.js} +1 -1
  82. package/storybook-static/assets/{external-template.stories-DtSLMxvg.js → external-template.test.stories-Bpr_wxBo.js} +23 -24
  83. package/storybook-static/assets/form.test.stories-3tURbEdv.js +250 -0
  84. package/storybook-static/assets/{formatter-B5HCVTEV-tKeEfJA9.js → formatter-2WMMO6ZP-SJtgH3vM.js} +5 -5
  85. package/storybook-static/assets/http-request.stories-8K_qSs8C.js +300 -0
  86. package/storybook-static/assets/iframe-CM82WlGY.js +2 -0
  87. package/storybook-static/assets/index-CEZitmnt.js +548 -0
  88. package/storybook-static/assets/index-CVRyq5ci.js +27 -0
  89. package/storybook-static/assets/{index-DnEJ_bKa.js → index-D1MP-Zis.js} +1 -1
  90. package/storybook-static/assets/index-DNL-IEpS.js +1 -0
  91. package/storybook-static/assets/index-DXimoRZY.js +1 -0
  92. package/storybook-static/assets/index-DuIEV_9C.js +13 -0
  93. package/storybook-static/assets/{lit-element-B4_0akdT.js → lit-element-CenEXOuS.js} +2 -2
  94. package/storybook-static/assets/{local-storage.stories-BkO6djDz.js → local-storage.test.stories-CtisAQBB.js} +28 -24
  95. package/storybook-static/assets/{location-element.stories-DCIOUd0D.js → location-element.test.stories-5O_t_m4Y.js} +11 -11
  96. package/storybook-static/assets/preview-4Up_z4Em.js +7 -0
  97. package/storybook-static/assets/{preview-CkgAD_DE.js → preview-5Y0XiZgz.js} +2 -2
  98. package/storybook-static/assets/preview-BKCN0mOr.js +1 -0
  99. package/storybook-static/assets/preview-DRnyIGXK.js +48 -0
  100. package/storybook-static/assets/preview-FpHGYA1q.js +1 -0
  101. package/storybook-static/assets/{preview-PxUn-cIn.js → preview-TCN6m6T-.js} +1 -1
  102. package/storybook-static/assets/slice-events.test.stories-BSXCLIA5.js +231 -0
  103. package/storybook-static/assets/slots.test.stories-B1vqfHmN.js +214 -0
  104. package/storybook-static/assets/syntaxhighlighter-BP7B2CQK-BWFH_0wQ.js +1 -0
  105. package/storybook-static/iframe.html +153 -10
  106. package/storybook-static/index.html +1 -1
  107. package/storybook-static/index.json +1 -1
  108. package/storybook-static/mockServiceWorker.js +1 -1
  109. package/storybook-static/project.json +1 -1
  110. package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js +35 -29
  111. package/storybook-static/sb-addons/chromatic-com-storybook-9/manager-bundle.js.LEGAL.txt +1 -1
  112. package/storybook-static/sb-addons/essentials-actions-3/manager-bundle.js +1 -1
  113. package/storybook-static/sb-addons/essentials-backgrounds-4/manager-bundle.js +5 -5
  114. package/storybook-static/sb-addons/essentials-controls-2/manager-bundle.js +35 -35
  115. package/storybook-static/sb-addons/essentials-measure-7/manager-bundle.js +1 -1
  116. package/storybook-static/sb-addons/essentials-outline-8/manager-bundle.js +1 -1
  117. package/storybook-static/sb-addons/essentials-toolbars-6/manager-bundle.js +1 -1
  118. package/storybook-static/sb-addons/essentials-viewport-5/manager-bundle.js +1 -1
  119. package/storybook-static/sb-addons/interactions-10/manager-bundle.js +18 -16
  120. package/storybook-static/sb-addons/links-1/manager-bundle.js +1 -1
  121. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +1 -1
  122. package/storybook-static/sb-manager/WithTooltip-KJL26V4Q-5LS5AN27.js +1 -0
  123. package/storybook-static/sb-manager/{chunk-S4VOIVUE.js → chunk-B3YDJJJH.js} +9 -9
  124. package/storybook-static/sb-manager/{chunk-FEE35O7J.js → chunk-BLWCBWKL.js} +3 -3
  125. package/storybook-static/sb-manager/{chunk-XCO5HRLK.js → chunk-GUVK2GTO.js} +3 -3
  126. package/storybook-static/sb-manager/chunk-LFRML3ZV.js +186 -0
  127. package/storybook-static/sb-manager/chunk-MC7RAF2B.js +274 -0
  128. package/storybook-static/sb-manager/{chunk-XP3HGWTR.js → chunk-ZR5JZWHI.js} +1 -1
  129. package/storybook-static/sb-manager/{formatter-B5HCVTEV-7DCBOGO6.js → formatter-2WMMO6ZP-JI7RHVTW.js} +1 -1
  130. package/storybook-static/sb-manager/globals-module-info.js +1 -1
  131. package/storybook-static/sb-manager/globals-runtime.js +1 -1
  132. package/storybook-static/sb-manager/index.js +1 -1
  133. package/storybook-static/sb-manager/runtime.js +1 -1
  134. package/storybook-static/sb-manager/{syntaxhighlighter-JOJW2KGS-VF6EEVPI.js → syntaxhighlighter-BP7B2CQK-WOJYHKQR.js} +1 -1
  135. package/storybook-static/sb-preview/runtime.js +28 -11
  136. package/vite.config.js +5 -5
  137. package/dist/custom-element-B4v-KaIh.cjs +0 -53
  138. package/dist/custom-element-_g0GTup2.js +0 -436
  139. package/src/stories/attributes.test.ts +0 -14
  140. package/src/stories/css.test.ts +0 -12
  141. package/src/stories/dom-merge.test.ts +0 -12
  142. package/src/stories/external-template.test.ts +0 -12
  143. package/src/stories/local-storage.test.ts +0 -12
  144. package/src/stories/location-element.test.ts +0 -14
  145. package/src/stories/slice-events.test.ts +0 -12
  146. package/storybook-static/assets/DocsRenderer-K4EAMTCU-BLMupvSb.js +0 -2
  147. package/storybook-static/assets/WithTooltip-Y7J54OF7-BAQSPSFk.js +0 -1
  148. package/storybook-static/assets/css.stories-CLSX-Xxd.js +0 -86
  149. package/storybook-static/assets/custom-element-BLZZ00dz.js +0 -53
  150. package/storybook-static/assets/http-request.stories-CUzlXO89.js +0 -300
  151. package/storybook-static/assets/iframe-gCvlWuoC.js +0 -2
  152. package/storybook-static/assets/index-CBQwM6ST.js +0 -508
  153. package/storybook-static/assets/index-CDavW7r9.js +0 -193
  154. package/storybook-static/assets/index-CQA5dlr6.js +0 -13
  155. package/storybook-static/assets/index-DgaNIR0t.js +0 -1
  156. package/storybook-static/assets/index-Dkj0J1ds.js +0 -1
  157. package/storybook-static/assets/preview-C6t8KBFr.js +0 -1
  158. package/storybook-static/assets/preview-CYD85dwb.js +0 -7
  159. package/storybook-static/assets/preview-D8LadFCz.js +0 -48
  160. package/storybook-static/assets/preview-DNpCpRPf.js +0 -1
  161. package/storybook-static/assets/slice-events.stories-DXKjXI37.js +0 -115
  162. package/storybook-static/assets/syntaxhighlighter-JOJW2KGS-C04pIVD3.js +0 -1
  163. package/storybook-static/sb-manager/WithTooltip-Y7J54OF7-CEHQ77YF.js +0 -1
  164. package/storybook-static/sb-manager/chunk-E3WK6ZOZ.js +0 -234
  165. package/storybook-static/sb-manager/chunk-E6ABNH5R.js +0 -183
  166. /package/coverage/src/stories/{attributes.stories.ts → attributes.test.stories.ts}/coverage.svg +0 -0
  167. /package/coverage/src/stories/{css.stories.ts → css.test.stories.ts}/coverage.svg +0 -0
  168. /package/coverage/src/stories/{dom-merge.stories.ts → dom-merge.test.stories.ts}/coverage.svg +0 -0
  169. /package/coverage/src/stories/{external-template.stories.ts → external-template.test.stories.ts}/coverage.svg +0 -0
  170. /package/coverage/src/stories/{local-storage.stories.ts → form.test.stories.ts}/coverage.svg +0 -0
  171. /package/coverage/src/stories/{location-element.stories.ts → local-storage.test.stories.ts}/coverage.svg +0 -0
  172. /package/coverage/src/stories/{slice-events.stories.ts → location-element.test.stories.ts}/coverage.svg +0 -0
@@ -0,0 +1,658 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/stories/form.test.stories.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/stories</a> form.test.stories.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>45/45</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>1/1</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>7/7</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>44/44</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
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>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-neutral">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">5x</span>
271
+ <span class="cline-any cline-yes">5x</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-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-yes">1x</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-yes">1x</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-yes">1x</span>
306
+ <span class="cline-any cline-yes">1x</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-yes">1x</span>
309
+ <span class="cline-any cline-yes">1x</span>
310
+ <span class="cline-any cline-yes">1x</span>
311
+ <span class="cline-any cline-yes">1x</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-yes">1x</span>
314
+ <span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-neutral">&nbsp;</span>
318
+ <span class="cline-any cline-neutral">&nbsp;</span>
319
+ <span class="cline-any cline-yes">1x</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-yes">1x</span>
340
+ <span class="cline-any cline-yes">1x</span>
341
+ <span class="cline-any cline-yes">1x</span>
342
+ <span class="cline-any cline-yes">1x</span>
343
+ <span class="cline-any cline-yes">1x</span>
344
+ <span class="cline-any cline-yes">1x</span>
345
+ <span class="cline-any cline-yes">1x</span>
346
+ <span class="cline-any cline-yes">1x</span>
347
+ <span class="cline-any cline-yes">1x</span>
348
+ <span class="cline-any cline-yes">1x</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-yes">1x</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-neutral">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-yes">1x</span>
373
+ <span class="cline-any cline-yes">1x</span>
374
+ <span class="cline-any cline-yes">1x</span>
375
+ <span class="cline-any cline-yes">1x</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-yes">1x</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
385
+ <span class="cline-any cline-neutral">&nbsp;</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-neutral">&nbsp;</span>
388
+ <span class="cline-any cline-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-yes">1x</span>
400
+ <span class="cline-any cline-yes">1x</span>
401
+ <span class="cline-any cline-yes">1x</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-yes">1x</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-yes">1x</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-yes">1x</span>
429
+ <span class="cline-any cline-yes">1x</span>
430
+ <span class="cline-any cline-yes">1x</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-yes">1x</span>
433
+ <span class="cline-any cline-yes">1x</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-yes">1x</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-yes">1x</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-yes">1x</span>
445
+ <span class="cline-any cline-yes">1x</span>
446
+ <span class="cline-any cline-yes">1x</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">// noinspection DuplicatedCode
449
+ &nbsp;
450
+ import type { StoryObj } from '@storybook/web-components';
451
+ import {expect, within, userEvent} from '@storybook/test';
452
+ &nbsp;
453
+ import '../custom-element/custom-element.js';
454
+ &nbsp;
455
+ type TProps = { title: string; body:string};
456
+ &nbsp;
457
+ type Story = StoryObj&lt;TProps&gt;;
458
+ &nbsp;
459
+ function render(args: TProps)
460
+ {
461
+ const {title, body} = args;
462
+ return `
463
+ &lt;fieldset&gt;
464
+ &lt;legend&gt;${ title }&lt;/legend&gt;
465
+ ${ body }
466
+ &lt;/fieldset&gt;
467
+ `;
468
+ }
469
+ const meta =
470
+ { title: 'form'
471
+ , render
472
+ };
473
+ &nbsp;
474
+ export default meta;
475
+ &nbsp;
476
+ export const SystemMessage:Story =
477
+ { args : {title: 'custom-validity boolean', body:`
478
+ &lt;p&gt;type and then clear test in input should lead to system validation message shown next to input field.
479
+ Something like &lt;q&gt;Please fill out this field&lt;/q&gt;.&lt;/p&gt;
480
+ &lt;custom-element&gt;
481
+ &lt;template&gt;
482
+ &lt;form&gt;
483
+ &lt;label&gt; Email
484
+ &lt;input slice="username" slice-event="input" placeholder="non-empty" required data-testid="input-1"&gt;
485
+ &lt;/label&gt;
486
+ &lt;if test="//username/@validation-message"&gt;
487
+ &lt;var data-testid="validation-msg"&gt;{//username/@validation-message}&lt;/var&gt;
488
+ &lt;/if&gt;
489
+ &lt;button&gt;Next&lt;/button&gt;
490
+ &lt;/form&gt;
491
+ &lt;/template&gt;
492
+ &lt;/custom-element&gt;
493
+ `}
494
+ , play: async ({canvasElement}) =&gt;
495
+ {
496
+ const titleText = SystemMessage.args!.title as string;
497
+ const canvas = within(canvasElement);
498
+ &nbsp;
499
+ await expect( canvas.queryByTestId('validation-msg')).toBeNull();
500
+ const input = await canvas.findByTestId('input-1');
501
+ input.focus();
502
+ await userEvent.keyboard('abc');
503
+ &nbsp;
504
+ await userEvent.clear(input);
505
+ await expect( canvas.queryByTestId('validation-msg')).toBeInTheDocument();
506
+ },
507
+ };
508
+ &nbsp;
509
+ export const FormData:Story =
510
+ { args : {title: 'form-data populated', body:`
511
+ &lt;p&gt;type and then clear test in input should lead to system validation message shown next to input field.
512
+ Something like &lt;q&gt;Please fill out this field&lt;/q&gt;.&lt;/p&gt;
513
+ &lt;custom-element&gt;
514
+ &lt;template&gt;
515
+ &lt;form slice="signin-form" &gt;
516
+ &lt;input name="f1" placeholder="non-empty" required data-testid="input-1"/&gt;
517
+ &lt;input name="f2" placeholder="non-empty" required data-testid="input-2"/&gt;
518
+ &lt;input name="f3" placeholder="non-empty" required data-testid="input-3"/&gt;
519
+ &nbsp;
520
+ &lt;button data-testid="next-button"&gt;Next&lt;/button&gt;&lt;br/&gt;
521
+ f1: &lt;code data-testid="c1"&gt;{ /datadom/slice/signin-form/form-data/f1 }&lt;/code&gt;&lt;br/&gt;
522
+ f2: &lt;code data-testid="c2"&gt;{ //form-data/f2 }&lt;/code&gt;&lt;br/&gt;
523
+ f3: &lt;code data-testid="c3"&gt;{/datadom/slice/signin-form/form-data/f3}&lt;/code&gt;&lt;br/&gt;
524
+ &lt;/form&gt;
525
+ &lt;/template&gt;
526
+ &lt;/custom-element&gt;
527
+ `}
528
+ , play: async ({canvasElement}) =&gt;
529
+ {
530
+ const canvas = within(canvasElement);
531
+ await userEvent.type(canvas.getByTestId('input-1'), 'ABC');
532
+ await userEvent.click(canvas.getByRole('button'));
533
+ await expect( await canvas.findByText('ABC')).toBeInTheDocument();
534
+ await userEvent.type(canvas.getByTestId('input-2'), 'DCE');
535
+ await userEvent.click(canvas.getByRole('button'));
536
+ await expect( await canvas.findByText('DCE')).toBeInTheDocument();
537
+ await userEvent.type(canvas.getByTestId('input-3'), 'XYZ');
538
+ canvas.getByTestId('input-1').focus();
539
+ await expect( await canvas.findByText('XYZ')).toBeInTheDocument();
540
+ },
541
+ };
542
+ export const SetValidityMessage:Story =
543
+ { args : {title: 'setCustomValidity', body:`
544
+ &lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/setCustomValidity"&gt;setCustomValidity()&lt;/a&gt;
545
+ invoked by &lt;code&gt;custom-validity&lt;/code&gt; attribute. Type in the input fiels to observe the chars count in
546
+ text, click "next" and observe same message in dropdown.
547
+ &lt;/p&gt;
548
+ &lt;custom-element&gt;
549
+ &lt;template&gt;
550
+ &lt;form&gt;
551
+ &lt;input slice="s1" slice-event="input keyup" placeholder="type to see the custom error"
552
+ custom-validity=" concat( 'char count ', string-length(//s1) ) "
553
+ data-testid="input-1"/&gt;&lt;br/&gt;
554
+ s1: &lt;code data-testid="c1"&gt;{ //s1 }&lt;/code&gt;&lt;br/&gt;
555
+ @validation-message: &lt;var data-testid="validation-msg"&gt;{//s1/@validation-message}&lt;/var&gt;
556
+ &lt;button&gt;next&lt;/button&gt;
557
+ &lt;/form&gt;
558
+ &lt;/template&gt;
559
+ &lt;/custom-element&gt;
560
+ `}
561
+ , play: async ({canvasElement}) =&gt;
562
+ {
563
+ const canvas = within(canvasElement);
564
+ await userEvent.type(canvas.getByTestId('input-1'), 'ABC');
565
+ await expect( canvas.getByText('ABC')).toBeInTheDocument();
566
+ await expect( canvas.getByText('char count 3')).toBeInTheDocument();
567
+ },
568
+ };
569
+ &nbsp;
570
+ export const FormCustomValidityBoolean:Story =
571
+ { args : {title: 'form custom-validity, boolean', body:`
572
+ &lt;p&gt; Form is valid only when input text length longer of 3 characters. &lt;/p&gt;
573
+ &lt;custom-element&gt;
574
+ &lt;template&gt;
575
+ &lt;form slice="form-1" custom-validity=" string-length(//form-1//f1) &amp;gt; 3 "
576
+ data-testid="form-1"
577
+ &gt;
578
+ &lt;input name="f1" data-testid="input-1"/&gt;&lt;br/&gt;
579
+ &nbsp;
580
+ &lt;input type="hidden" name="id" value="form--form-custom-validity-boolean"/&gt;
581
+ &lt;input type="hidden" name="viewMode" value="story"/&gt;
582
+ //form-1//f1: &lt;code data-testid="c1"&gt;{ //form-1//f1 }&lt;/code&gt;&lt;br/&gt;
583
+ &lt;button&gt;next&lt;/button&gt;
584
+ &lt;/form&gt;
585
+ &lt;/template&gt;
586
+ &lt;/custom-element&gt;
587
+ `}
588
+ , play: async ({canvasElement}) =&gt;
589
+ {
590
+ const canvas = within(canvasElement);
591
+ await userEvent.type(canvas.getByTestId('input-1'), 'AB');
592
+ await userEvent.click(canvas.getByRole('button'));
593
+ &nbsp;
594
+ await expect( canvas.getByText('AB')).toBeInTheDocument(); // i.e. not reloaded by form submit
595
+ },
596
+ };
597
+ export const FormCustomValidityString:Story =
598
+ { args : {title: 'form custom-validity, string', body:`
599
+ &lt;p&gt; Form is valid only when input text is longer of 3 characters, @validation-message propagated in form slot &lt;/p&gt;
600
+ &lt;custom-element&gt;
601
+ &lt;template&gt;
602
+ &lt;form slice="form-1"
603
+ custom-validity=" string-length(//form-1//f1) &amp;gt; 3 ?? concat('should be more than 3 characters, now is ',string-length(//form-1//f1) ) "
604
+ data-testid="form-1"
605
+ &gt;
606
+ &lt;input name="f1" data-testid="input-1"/&gt;&lt;br/&gt;
607
+ &nbsp;
608
+ &lt;input type="hidden" name="id" value="form--form-custom-validity-string"/&gt;
609
+ &lt;input type="hidden" name="viewMode" value="story"/&gt;
610
+ //form-1//f1: &lt;code data-testid="c1"&gt;{ //form-1//f1 }&lt;/code&gt;&lt;br/&gt;
611
+ //form-1/@validation-message: &lt;code data-testid="c1"&gt;{ //@validation-message }&lt;/code&gt;&lt;br/&gt;
612
+ &lt;button&gt;next&lt;/button&gt;
613
+ &lt;/form&gt;
614
+ &lt;/template&gt;
615
+ &lt;/custom-element&gt;
616
+ `}
617
+ , play: async ({canvasElement}) =&gt;
618
+ {
619
+ const canvas = within(canvasElement);
620
+ await userEvent.type(canvas.getByTestId('input-1'), 'AB');
621
+ await userEvent.click(canvas.getByRole('button'));
622
+ &nbsp;
623
+ await expect( canvas.getByText('AB')).toBeInTheDocument(); // i.e. not reloaded by form submit
624
+ await expect( canvas.getByText('should be more than 3 characters, now is 2')).toBeInTheDocument();
625
+ },
626
+ };
627
+ // custom validity rules on form : boolean and string values
628
+ &nbsp;
629
+ &nbsp;
630
+ const TestStories = { SystemMessage, FormData, SetValidityMessage, FormCustomValidityBoolean, FormCustomValidityString};
631
+ &nbsp;
632
+ /* istanbul ignore else -- @preserve */
633
+ if( 'test' === import.meta.env.MODE )
634
+ {
635
+ const {playStories} = await import('./renderPlay');
636
+ const {describe} = await import('vitest')
637
+ describe('slots', () =&gt; playStories( TestStories, meta ) );
638
+ }
639
+ &nbsp;</pre></td></tr></table></pre>
640
+
641
+ <div class='push'></div><!-- for sticky footer -->
642
+ </div><!-- /wrapper -->
643
+ <div class='footer quiet pad2 space-top1 center small'>
644
+ Code coverage generated by
645
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
646
+ at 2024-06-25T03:55:40.964Z
647
+ </div>
648
+ <script src="../../prettify.js"></script>
649
+ <script>
650
+ window.onload = function () {
651
+ prettyPrint();
652
+ };
653
+ </script>
654
+ <script src="../../sorter.js"></script>
655
+ <script src="../../block-navigation.js"></script>
656
+ </body>
657
+ </html>
658
+