@nanoporetech-digital/components 1.14.1 → 1.15.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 (492) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/{algolia-data-4d5ee8da.js → algolia-data-a98ccf4f.js} +2 -2
  3. package/dist/cjs/algolia-data-a98ccf4f.js.map +1 -0
  4. package/dist/cjs/algoliasearch.umd-5dc661c5.js +12 -0
  5. package/dist/cjs/algoliasearch.umd-5dc661c5.js.map +1 -0
  6. package/dist/cjs/{component-store-4dfd3a12.js → component-store-8d99743e.js} +2 -2
  7. package/dist/cjs/{component-store-4dfd3a12.js.map → component-store-8d99743e.js.map} +1 -1
  8. package/dist/cjs/{global-befb7a64.js → global-aa92d50f.js} +5 -3
  9. package/dist/cjs/global-aa92d50f.js.map +1 -0
  10. package/dist/cjs/{index-197e7a3f.js → index-f12395b8.js} +3 -1
  11. package/dist/cjs/index-f12395b8.js.map +1 -0
  12. package/dist/cjs/loader.cjs.js +3 -3
  13. package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
  14. package/dist/cjs/nano-alert.cjs.entry.js +2 -2
  15. package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
  16. package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nano-algolia-input.cjs.entry.js +5 -5
  18. package/dist/cjs/nano-algolia-input.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -2
  20. package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
  21. package/dist/cjs/nano-algolia.cjs.entry.js +5 -5
  22. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
  24. package/dist/cjs/nano-checkbox-group.cjs.entry.js +2 -2
  25. package/dist/cjs/nano-checkbox.cjs.entry.js +2 -2
  26. package/dist/cjs/nano-components.cjs.js +3 -3
  27. package/dist/cjs/nano-date-input.cjs.entry.js +43 -15
  28. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nano-date-picker_2.cjs.entry.js +31 -11
  30. package/dist/cjs/nano-date-picker_2.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nano-details.cjs.entry.js +14 -8
  32. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nano-dialog.cjs.entry.js +5 -9
  34. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nano-drawer.cjs.entry.js +1 -1
  36. package/dist/cjs/nano-file-upload.cjs.entry.js +7 -14
  37. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-global-nav.cjs.entry.js +4 -4
  39. package/dist/cjs/nano-global-search-results.cjs.entry.js +2 -2
  40. package/dist/cjs/nano-grid_3.cjs.entry.js +1 -1
  41. package/dist/cjs/nano-hero.cjs.entry.js +1 -1
  42. package/dist/cjs/nano-icon-button.cjs.entry.js +2 -2
  43. package/dist/cjs/nano-icon.cjs.entry.js +1 -1
  44. package/dist/cjs/nano-input.cjs.entry.js +12 -2
  45. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
  47. package/dist/cjs/nano-menu.cjs.entry.js +2 -2
  48. package/dist/cjs/nano-nav-item_2.cjs.entry.js +2 -2
  49. package/dist/cjs/nano-range.cjs.entry.js +2 -2
  50. package/dist/cjs/nano-rating.cjs.entry.js +1 -1
  51. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
  52. package/dist/cjs/nano-select-option.cjs.entry.js +1 -1
  53. package/dist/cjs/nano-slide.cjs.entry.js +1 -1
  54. package/dist/cjs/nano-slides.cjs.entry.js +2 -2
  55. package/dist/cjs/nano-spinner.cjs.entry.js +2 -2
  56. package/dist/cjs/nano-sticker.cjs.entry.js +1 -1
  57. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  58. package/dist/cjs/nano-tab-group.cjs.entry.js +3 -3
  59. package/dist/cjs/nano-tab.cjs.entry.js +2 -2
  60. package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
  61. package/dist/collection/components/accordion/accordion.js +1 -1
  62. package/dist/collection/components/alert/alert.css +3 -3
  63. package/dist/collection/components/alert/alert.js +1 -1
  64. package/dist/collection/components/algolia/algolia-data.js.map +1 -1
  65. package/dist/collection/components/algolia/algolia-filter.js +3 -3
  66. package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
  67. package/dist/collection/components/algolia/algolia-input.js +7 -7
  68. package/dist/collection/components/algolia/algolia-input.js.map +1 -1
  69. package/dist/collection/components/algolia/algolia-results.js +1 -1
  70. package/dist/collection/components/algolia/algolia.js +7 -7
  71. package/dist/collection/components/algolia/algolia.js.map +1 -1
  72. package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js +7 -2
  73. package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js.map +1 -1
  74. package/dist/collection/components/checkbox/checkbox-group.css +2 -2
  75. package/dist/collection/components/checkbox/checkbox-group.js +2 -2
  76. package/dist/collection/components/checkbox/checkbox.css +2 -2
  77. package/dist/collection/components/checkbox/checkbox.js +3 -3
  78. package/dist/collection/components/date-input/date-input.css +0 -4
  79. package/dist/collection/components/date-input/date-input.js +70 -21
  80. package/dist/collection/components/date-input/date-input.js.map +1 -1
  81. package/dist/collection/components/date-picker/date-picker.css +15 -4
  82. package/dist/collection/components/date-picker/date-picker.js +44 -16
  83. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  84. package/dist/collection/components/details/details.css +3 -3
  85. package/dist/collection/components/details/details.js +13 -7
  86. package/dist/collection/components/details/details.js.map +1 -1
  87. package/dist/collection/components/dialog/dialog.css +2 -3
  88. package/dist/collection/components/dialog/dialog.js +6 -10
  89. package/dist/collection/components/dialog/dialog.js.map +1 -1
  90. package/dist/collection/components/dropdown/dropdown.js +2 -1
  91. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  92. package/dist/collection/components/file-upload/file-upload-interface.js.map +1 -1
  93. package/dist/collection/components/file-upload/file-upload.css +9 -17
  94. package/dist/collection/components/file-upload/file-upload.js +17 -20
  95. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  96. package/dist/collection/components/global-nav/global-nav.css +2 -2
  97. package/dist/collection/components/global-nav/global-nav.js +4 -4
  98. package/dist/collection/components/global-search-results/global-search-results.css +3 -3
  99. package/dist/collection/components/grid/grid-item.js +1 -1
  100. package/dist/collection/components/icon/icon.js +1 -1
  101. package/dist/collection/components/icon-button/icon-button.css +2 -2
  102. package/dist/collection/components/input/input.css +5 -6
  103. package/dist/collection/components/input/input.js +25 -6
  104. package/dist/collection/components/input/input.js.map +1 -1
  105. package/dist/collection/components/menu/menu.css +7 -7
  106. package/dist/collection/components/nav-item/nav-item.js +4 -4
  107. package/dist/collection/components/range/range.css +4 -4
  108. package/dist/collection/components/range/range.js +4 -4
  109. package/dist/collection/components/resize-observe/resize-observe.js +1 -1
  110. package/dist/collection/components/select/select.css +4 -4
  111. package/dist/collection/components/select/select.js +5 -5
  112. package/dist/collection/components/slides/slides.css +2 -2
  113. package/dist/collection/components/slides/slides.js +7 -7
  114. package/dist/collection/components/spinner/spinner.css +2 -2
  115. package/dist/collection/components/tabs/tab-group.css +6 -6
  116. package/dist/collection/components/tabs/tab-group.js +2 -2
  117. package/dist/collection/components/tabs/tab.css +2 -2
  118. package/dist/collection/global/script/global.js +4 -2
  119. package/dist/collection/global/script/global.js.map +1 -1
  120. package/dist/collection/utils/testing/index.js +91 -18
  121. package/dist/collection/utils/testing/index.js.map +1 -1
  122. package/dist/custom-elements/index.js +131 -74
  123. package/dist/custom-elements/index.js.map +1 -1
  124. package/dist/esm/{algolia-data-6db3f5f2.js → algolia-data-b31a9800.js} +2 -2
  125. package/dist/esm/algolia-data-b31a9800.js.map +1 -0
  126. package/dist/esm/algoliasearch.umd-7ecbe0e9.js +10 -0
  127. package/dist/esm/algoliasearch.umd-7ecbe0e9.js.map +1 -0
  128. package/dist/esm/{component-store-6736ee0f.js → component-store-93172454.js} +2 -2
  129. package/dist/esm/{component-store-6736ee0f.js.map → component-store-93172454.js.map} +1 -1
  130. package/dist/esm/{global-c85d24a2.js → global-118ae701.js} +5 -3
  131. package/dist/esm/global-118ae701.js.map +1 -0
  132. package/dist/esm/{index-8e9bc704.js → index-912ef959.js} +3 -1
  133. package/dist/esm/index-912ef959.js.map +1 -0
  134. package/dist/esm/loader.js +3 -3
  135. package/dist/esm/nano-accordion.entry.js +1 -1
  136. package/dist/esm/nano-alert.entry.js +2 -2
  137. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  138. package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
  139. package/dist/esm/nano-algolia-input.entry.js +5 -5
  140. package/dist/esm/nano-algolia-input.entry.js.map +1 -1
  141. package/dist/esm/nano-algolia-pagination.entry.js +2 -2
  142. package/dist/esm/nano-algolia-results.entry.js +2 -2
  143. package/dist/esm/nano-algolia.entry.js +5 -5
  144. package/dist/esm/nano-algolia.entry.js.map +1 -1
  145. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  146. package/dist/esm/nano-checkbox-group.entry.js +2 -2
  147. package/dist/esm/nano-checkbox.entry.js +2 -2
  148. package/dist/esm/nano-components.js +3 -3
  149. package/dist/esm/nano-date-input.entry.js +43 -15
  150. package/dist/esm/nano-date-input.entry.js.map +1 -1
  151. package/dist/esm/nano-date-picker_2.entry.js +31 -11
  152. package/dist/esm/nano-date-picker_2.entry.js.map +1 -1
  153. package/dist/esm/nano-details.entry.js +14 -8
  154. package/dist/esm/nano-details.entry.js.map +1 -1
  155. package/dist/esm/nano-dialog.entry.js +5 -9
  156. package/dist/esm/nano-dialog.entry.js.map +1 -1
  157. package/dist/esm/nano-drawer.entry.js +1 -1
  158. package/dist/esm/nano-file-upload.entry.js +7 -14
  159. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  160. package/dist/esm/nano-global-nav.entry.js +4 -4
  161. package/dist/esm/nano-global-search-results.entry.js +2 -2
  162. package/dist/esm/nano-grid_3.entry.js +1 -1
  163. package/dist/esm/nano-hero.entry.js +1 -1
  164. package/dist/esm/nano-icon-button.entry.js +2 -2
  165. package/dist/esm/nano-icon.entry.js +1 -1
  166. package/dist/esm/nano-input.entry.js +12 -2
  167. package/dist/esm/nano-input.entry.js.map +1 -1
  168. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  169. package/dist/esm/nano-menu.entry.js +2 -2
  170. package/dist/esm/nano-nav-item_2.entry.js +2 -2
  171. package/dist/esm/nano-range.entry.js +2 -2
  172. package/dist/esm/nano-rating.entry.js +1 -1
  173. package/dist/esm/nano-resize-observe_2.entry.js +1 -1
  174. package/dist/esm/nano-select-option.entry.js +1 -1
  175. package/dist/esm/nano-slide.entry.js +1 -1
  176. package/dist/esm/nano-slides.entry.js +2 -2
  177. package/dist/esm/nano-spinner.entry.js +2 -2
  178. package/dist/esm/nano-sticker.entry.js +1 -1
  179. package/dist/esm/nano-tab-content.entry.js +1 -1
  180. package/dist/esm/nano-tab-group.entry.js +3 -3
  181. package/dist/esm/nano-tab.entry.js +2 -2
  182. package/dist/esm/nano-tooltip.entry.js +1 -1
  183. package/dist/esm-es5/{algolia-data-6db3f5f2.js → algolia-data-b31a9800.js} +2 -2
  184. package/dist/esm-es5/algolia-data-b31a9800.js.map +1 -0
  185. package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js +4 -0
  186. package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js.map +1 -0
  187. package/dist/esm-es5/{component-store-6736ee0f.js → component-store-93172454.js} +2 -2
  188. package/dist/esm-es5/{component-store-6736ee0f.js.map → component-store-93172454.js.map} +0 -0
  189. package/dist/esm-es5/{global-c85d24a2.js → global-118ae701.js} +2 -2
  190. package/dist/esm-es5/global-118ae701.js.map +1 -0
  191. package/dist/esm-es5/index-912ef959.js +2 -0
  192. package/dist/esm-es5/index-912ef959.js.map +1 -0
  193. package/dist/esm-es5/loader.js +1 -1
  194. package/dist/esm-es5/loader.js.map +1 -1
  195. package/dist/esm-es5/nano-accordion.entry.js +1 -1
  196. package/dist/esm-es5/nano-alert.entry.js +1 -1
  197. package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
  198. package/dist/esm-es5/nano-algolia-filter.entry.js.map +1 -1
  199. package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
  200. package/dist/esm-es5/nano-algolia-input.entry.js.map +1 -1
  201. package/dist/esm-es5/nano-algolia-pagination.entry.js +1 -1
  202. package/dist/esm-es5/nano-algolia-results.entry.js +1 -1
  203. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  204. package/dist/esm-es5/nano-algolia.entry.js.map +1 -1
  205. package/dist/esm-es5/nano-aspect-ratio.entry.js +1 -1
  206. package/dist/esm-es5/nano-checkbox-group.entry.js +1 -1
  207. package/dist/esm-es5/nano-checkbox.entry.js +1 -1
  208. package/dist/esm-es5/nano-components.js +1 -1
  209. package/dist/esm-es5/nano-components.js.map +1 -1
  210. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  211. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  212. package/dist/esm-es5/nano-date-picker_2.entry.js +1 -1
  213. package/dist/esm-es5/nano-date-picker_2.entry.js.map +1 -1
  214. package/dist/esm-es5/nano-details.entry.js +1 -1
  215. package/dist/esm-es5/nano-details.entry.js.map +1 -1
  216. package/dist/esm-es5/nano-dialog.entry.js +1 -1
  217. package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
  218. package/dist/esm-es5/nano-drawer.entry.js +1 -1
  219. package/dist/esm-es5/nano-file-upload.entry.js +1 -1
  220. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  221. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  222. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  223. package/dist/esm-es5/nano-grid_3.entry.js +1 -1
  224. package/dist/esm-es5/nano-hero.entry.js +1 -1
  225. package/dist/esm-es5/nano-icon-button.entry.js +1 -1
  226. package/dist/esm-es5/nano-icon.entry.js +1 -1
  227. package/dist/esm-es5/nano-input.entry.js +1 -1
  228. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  229. package/dist/esm-es5/nano-menu-drawer.entry.js +1 -1
  230. package/dist/esm-es5/nano-menu.entry.js +1 -1
  231. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  232. package/dist/esm-es5/nano-range.entry.js +1 -1
  233. package/dist/esm-es5/nano-rating.entry.js +1 -1
  234. package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
  235. package/dist/esm-es5/nano-select-option.entry.js +1 -1
  236. package/dist/esm-es5/nano-slide.entry.js +1 -1
  237. package/dist/esm-es5/nano-slides.entry.js +2 -2
  238. package/dist/esm-es5/nano-spinner.entry.js +1 -1
  239. package/dist/esm-es5/nano-sticker.entry.js +1 -1
  240. package/dist/esm-es5/nano-tab-content.entry.js +1 -1
  241. package/dist/esm-es5/nano-tab-group.entry.js +1 -1
  242. package/dist/esm-es5/nano-tab.entry.js +1 -1
  243. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  244. package/dist/nano-components/nano-components.esm.js +1 -1
  245. package/dist/nano-components/nano-components.esm.js.map +1 -1
  246. package/dist/nano-components/nano-components.js +1 -1
  247. package/dist/nano-components/{p-dbd71a33.system.entry.js → p-007c6041.system.entry.js} +2 -2
  248. package/dist/nano-components/{p-dbd71a33.system.entry.js.map → p-007c6041.system.entry.js.map} +0 -0
  249. package/dist/nano-components/{p-83bf885b.entry.js → p-02177814.entry.js} +2 -2
  250. package/dist/nano-components/{p-83bf885b.entry.js.map → p-02177814.entry.js.map} +0 -0
  251. package/dist/nano-components/{p-df2764c8.system.entry.js → p-046af455.system.entry.js} +2 -2
  252. package/dist/nano-components/{p-df2764c8.system.entry.js.map → p-046af455.system.entry.js.map} +0 -0
  253. package/dist/nano-components/p-05c062ae.js +4 -0
  254. package/dist/nano-components/p-05c062ae.js.map +1 -0
  255. package/dist/nano-components/{p-4d17169a.entry.js → p-104a9d64.entry.js} +2 -2
  256. package/dist/nano-components/p-104a9d64.entry.js.map +1 -0
  257. package/dist/nano-components/{p-55b80a92.system.entry.js → p-10f24f67.system.entry.js} +2 -2
  258. package/dist/nano-components/{p-55b80a92.system.entry.js.map → p-10f24f67.system.entry.js.map} +0 -0
  259. package/dist/nano-components/{p-6403dd02.system.entry.js → p-1c7614c4.system.entry.js} +2 -2
  260. package/dist/nano-components/p-1c7614c4.system.entry.js.map +1 -0
  261. package/dist/nano-components/{p-007c6ccc.system.entry.js → p-1d16e897.system.entry.js} +2 -2
  262. package/dist/nano-components/{p-007c6ccc.system.entry.js.map → p-1d16e897.system.entry.js.map} +0 -0
  263. package/dist/nano-components/{p-daf1462f.system.entry.js → p-21a6f295.system.entry.js} +2 -2
  264. package/dist/nano-components/{p-daf1462f.system.entry.js.map → p-21a6f295.system.entry.js.map} +0 -0
  265. package/dist/nano-components/{p-acbc08ea.system.entry.js → p-273b19b0.system.entry.js} +2 -2
  266. package/dist/nano-components/{p-acbc08ea.system.entry.js.map → p-273b19b0.system.entry.js.map} +0 -0
  267. package/dist/nano-components/p-28123e6e.entry.js +2 -0
  268. package/dist/nano-components/p-28123e6e.entry.js.map +1 -0
  269. package/dist/nano-components/{p-f1cd2d9b.entry.js → p-2ae39fa1.entry.js} +2 -2
  270. package/dist/nano-components/{p-f1cd2d9b.entry.js.map → p-2ae39fa1.entry.js.map} +0 -0
  271. package/dist/nano-components/{p-9393bfbb.system.entry.js → p-2edaf0eb.system.entry.js} +3 -3
  272. package/dist/nano-components/{p-9393bfbb.system.entry.js.map → p-2edaf0eb.system.entry.js.map} +0 -0
  273. package/dist/nano-components/{p-e7e898f5.system.entry.js → p-2f876f68.system.entry.js} +2 -2
  274. package/dist/nano-components/{p-e7e898f5.system.entry.js.map → p-2f876f68.system.entry.js.map} +0 -0
  275. package/dist/nano-components/{p-19962dda.system.entry.js → p-305ba54b.system.entry.js} +2 -2
  276. package/dist/nano-components/{p-19962dda.system.entry.js.map → p-305ba54b.system.entry.js.map} +0 -0
  277. package/dist/nano-components/{p-5f9e92b0.system.entry.js → p-30a22cd0.system.entry.js} +2 -2
  278. package/dist/nano-components/{p-5f9e92b0.system.entry.js.map → p-30a22cd0.system.entry.js.map} +0 -0
  279. package/dist/nano-components/{p-cc8fb176.system.entry.js → p-31c52d0a.system.entry.js} +2 -2
  280. package/dist/nano-components/{p-cc8fb176.system.entry.js.map → p-31c52d0a.system.entry.js.map} +0 -0
  281. package/dist/nano-components/{p-c6f7ce64.system.entry.js → p-325f32b3.system.entry.js} +2 -2
  282. package/dist/nano-components/p-325f32b3.system.entry.js.map +1 -0
  283. package/dist/nano-components/{p-3f9a70f8.entry.js → p-3b2ea5fd.entry.js} +2 -2
  284. package/dist/nano-components/{p-3f9a70f8.entry.js.map → p-3b2ea5fd.entry.js.map} +0 -0
  285. package/dist/nano-components/{p-0283a2ec.js → p-4370f8ae.js} +2 -2
  286. package/dist/nano-components/p-4370f8ae.js.map +1 -0
  287. package/dist/nano-components/{p-8097b205.system.js → p-4647a31f.system.js} +2 -2
  288. package/dist/nano-components/{p-8097b205.system.js.map → p-4647a31f.system.js.map} +0 -0
  289. package/dist/nano-components/{p-447ed63d.system.entry.js → p-491096f0.system.entry.js} +2 -2
  290. package/dist/nano-components/p-491096f0.system.entry.js.map +1 -0
  291. package/dist/nano-components/{p-1de83f90.system.entry.js → p-4e21bfe1.system.entry.js} +2 -2
  292. package/dist/nano-components/{p-1de83f90.system.entry.js.map → p-4e21bfe1.system.entry.js.map} +0 -0
  293. package/dist/nano-components/{p-6855167a.entry.js → p-4fa0b560.entry.js} +2 -2
  294. package/dist/nano-components/{p-6855167a.entry.js.map → p-4fa0b560.entry.js.map} +0 -0
  295. package/dist/nano-components/{p-7db31794.system.entry.js → p-4fbc3c8b.system.entry.js} +2 -2
  296. package/dist/nano-components/{p-7db31794.system.entry.js.map → p-4fbc3c8b.system.entry.js.map} +0 -0
  297. package/dist/nano-components/{p-5198e4c6.system.js → p-508484f8.system.js} +2 -2
  298. package/dist/nano-components/p-508484f8.system.js.map +1 -0
  299. package/dist/nano-components/p-5672ebbb.system.entry.js +2 -0
  300. package/dist/nano-components/p-5672ebbb.system.entry.js.map +1 -0
  301. package/dist/nano-components/{p-7a8ea050.entry.js → p-574143b5.entry.js} +2 -2
  302. package/dist/nano-components/{p-7a8ea050.entry.js.map → p-574143b5.entry.js.map} +0 -0
  303. package/dist/nano-components/{p-ff530ea6.system.entry.js → p-57434dc5.system.entry.js} +2 -2
  304. package/dist/nano-components/{p-ff530ea6.system.entry.js.map → p-57434dc5.system.entry.js.map} +0 -0
  305. package/dist/nano-components/{p-44cf7aeb.entry.js → p-574f1393.entry.js} +2 -2
  306. package/dist/nano-components/p-574f1393.entry.js.map +1 -0
  307. package/dist/nano-components/{p-24ad4b09.entry.js → p-580eac05.entry.js} +2 -2
  308. package/dist/nano-components/{p-24ad4b09.entry.js.map → p-580eac05.entry.js.map} +0 -0
  309. package/dist/nano-components/{p-fc9828c7.entry.js → p-59aba360.entry.js} +2 -2
  310. package/dist/nano-components/{p-fc9828c7.entry.js.map → p-59aba360.entry.js.map} +0 -0
  311. package/dist/nano-components/{p-c8945124.system.js → p-698a8ab3.system.js} +2 -2
  312. package/dist/nano-components/p-698a8ab3.system.js.map +1 -0
  313. package/dist/nano-components/{p-c05d2d62.entry.js → p-6a3eee01.entry.js} +2 -2
  314. package/dist/nano-components/{p-c05d2d62.entry.js.map → p-6a3eee01.entry.js.map} +0 -0
  315. package/dist/nano-components/{p-ddaa8946.entry.js → p-6aab52a0.entry.js} +2 -2
  316. package/dist/nano-components/p-6aab52a0.entry.js.map +1 -0
  317. package/dist/nano-components/{p-4b9a1f76.entry.js → p-6dc59ae8.entry.js} +2 -2
  318. package/dist/nano-components/{p-4b9a1f76.entry.js.map → p-6dc59ae8.entry.js.map} +0 -0
  319. package/dist/nano-components/{p-057177d7.entry.js → p-6eba639a.entry.js} +3 -3
  320. package/dist/nano-components/{p-057177d7.entry.js.map → p-6eba639a.entry.js.map} +0 -0
  321. package/dist/nano-components/{p-185dedd1.system.entry.js → p-73d969d0.system.entry.js} +2 -2
  322. package/dist/nano-components/{p-185dedd1.system.entry.js.map → p-73d969d0.system.entry.js.map} +0 -0
  323. package/dist/nano-components/{p-4a319e09.system.entry.js → p-7dc79f13.system.entry.js} +2 -2
  324. package/dist/nano-components/{p-4a319e09.system.entry.js.map → p-7dc79f13.system.entry.js.map} +0 -0
  325. package/dist/nano-components/{p-fd6ff03f.entry.js → p-7df31b1c.entry.js} +2 -2
  326. package/dist/nano-components/{p-fd6ff03f.entry.js.map → p-7df31b1c.entry.js.map} +0 -0
  327. package/dist/nano-components/{p-172053d0.system.entry.js → p-7e208086.system.entry.js} +2 -2
  328. package/dist/nano-components/{p-172053d0.system.entry.js.map → p-7e208086.system.entry.js.map} +0 -0
  329. package/dist/nano-components/{p-173755c4.system.entry.js → p-7e4129b4.system.entry.js} +2 -2
  330. package/dist/nano-components/{p-173755c4.system.entry.js.map → p-7e4129b4.system.entry.js.map} +0 -0
  331. package/dist/nano-components/{p-f3bb5f81.entry.js → p-7e68796f.entry.js} +2 -2
  332. package/dist/nano-components/{p-f3bb5f81.entry.js.map → p-7e68796f.entry.js.map} +0 -0
  333. package/dist/nano-components/{p-a17e6ab1.entry.js → p-81d7fd45.entry.js} +2 -2
  334. package/dist/nano-components/{p-a17e6ab1.entry.js.map → p-81d7fd45.entry.js.map} +0 -0
  335. package/dist/nano-components/{p-981f997c.entry.js → p-82571543.entry.js} +2 -2
  336. package/dist/nano-components/p-82571543.entry.js.map +1 -0
  337. package/dist/nano-components/{p-016c6482.system.entry.js → p-844a1134.system.entry.js} +2 -2
  338. package/dist/nano-components/{p-016c6482.system.entry.js.map → p-844a1134.system.entry.js.map} +0 -0
  339. package/dist/nano-components/p-8535a942.entry.js +2 -0
  340. package/dist/nano-components/{p-6d718c9a.entry.js.map → p-8535a942.entry.js.map} +1 -1
  341. package/dist/nano-components/{p-e422c66f.entry.js → p-8c1d85ae.entry.js} +2 -2
  342. package/dist/nano-components/{p-e422c66f.entry.js.map → p-8c1d85ae.entry.js.map} +0 -0
  343. package/dist/nano-components/{p-46f84983.system.entry.js → p-8ed6acea.system.entry.js} +2 -2
  344. package/dist/nano-components/{p-46f84983.system.entry.js.map → p-8ed6acea.system.entry.js.map} +0 -0
  345. package/dist/nano-components/p-9164e5e2.system.entry.js +2 -0
  346. package/dist/nano-components/p-9164e5e2.system.entry.js.map +1 -0
  347. package/dist/nano-components/{p-896b7462.system.entry.js → p-9371d81b.system.entry.js} +2 -2
  348. package/dist/nano-components/{p-896b7462.system.entry.js.map → p-9371d81b.system.entry.js.map} +0 -0
  349. package/dist/nano-components/{p-b49d1e17.system.entry.js → p-95a4c3f2.system.entry.js} +2 -2
  350. package/dist/nano-components/{p-b49d1e17.system.entry.js.map → p-95a4c3f2.system.entry.js.map} +0 -0
  351. package/dist/nano-components/{p-06cc7501.entry.js → p-96ba0d00.entry.js} +2 -2
  352. package/dist/nano-components/{p-06cc7501.entry.js.map → p-96ba0d00.entry.js.map} +0 -0
  353. package/dist/nano-components/p-99637978.entry.js +2 -0
  354. package/dist/nano-components/p-99637978.entry.js.map +1 -0
  355. package/dist/nano-components/{p-56a8af2c.entry.js → p-9ccd832b.entry.js} +2 -2
  356. package/dist/nano-components/{p-56a8af2c.entry.js.map → p-9ccd832b.entry.js.map} +0 -0
  357. package/dist/nano-components/{p-2116ecb5.js → p-a1680208.js} +2 -2
  358. package/dist/nano-components/{p-2116ecb5.js.map → p-a1680208.js.map} +0 -0
  359. package/dist/nano-components/{p-b4a53bea.entry.js → p-a53a193c.entry.js} +2 -2
  360. package/dist/nano-components/{p-b4a53bea.entry.js.map → p-a53a193c.entry.js.map} +0 -0
  361. package/dist/nano-components/{p-b74ba77b.system.entry.js → p-a7ac7964.system.entry.js} +2 -2
  362. package/dist/nano-components/{p-b74ba77b.system.entry.js.map → p-a7ac7964.system.entry.js.map} +0 -0
  363. package/dist/nano-components/{p-30c68e8e.system.entry.js → p-aadd8c31.system.entry.js} +2 -2
  364. package/dist/nano-components/{p-30c68e8e.system.entry.js.map → p-aadd8c31.system.entry.js.map} +0 -0
  365. package/dist/nano-components/p-ab666582.entry.js +2 -0
  366. package/dist/nano-components/p-ab666582.entry.js.map +1 -0
  367. package/dist/nano-components/p-acd5d0f0.system.entry.js +2 -0
  368. package/dist/nano-components/p-acd5d0f0.system.entry.js.map +1 -0
  369. package/dist/nano-components/p-af9f6453.system.js +2 -0
  370. package/dist/nano-components/p-af9f6453.system.js.map +1 -0
  371. package/dist/nano-components/p-b1d3ab54.system.entry.js +2 -0
  372. package/dist/nano-components/p-b1d3ab54.system.entry.js.map +1 -0
  373. package/dist/nano-components/{p-bd04677f.entry.js → p-b3131821.entry.js} +2 -2
  374. package/dist/nano-components/{p-bd04677f.entry.js.map → p-b3131821.entry.js.map} +0 -0
  375. package/dist/nano-components/{p-ef46375f.entry.js → p-b7a58722.entry.js} +2 -2
  376. package/dist/nano-components/{p-ef46375f.entry.js.map → p-b7a58722.entry.js.map} +0 -0
  377. package/dist/nano-components/p-bb0619e6.js +2 -0
  378. package/dist/nano-components/p-bb0619e6.js.map +1 -0
  379. package/dist/nano-components/{p-081356e2.entry.js → p-c3f861c5.entry.js} +2 -2
  380. package/dist/nano-components/{p-081356e2.entry.js.map → p-c3f861c5.entry.js.map} +0 -0
  381. package/dist/nano-components/{p-ab384425.system.entry.js → p-c655e010.system.entry.js} +2 -2
  382. package/dist/nano-components/{p-ab384425.system.entry.js.map → p-c655e010.system.entry.js.map} +0 -0
  383. package/dist/nano-components/p-c72b22be.entry.js +2 -0
  384. package/dist/nano-components/p-c72b22be.entry.js.map +1 -0
  385. package/dist/nano-components/{p-d7ddc7e3.entry.js → p-d250987a.entry.js} +2 -2
  386. package/dist/nano-components/{p-d7ddc7e3.entry.js.map → p-d250987a.entry.js.map} +0 -0
  387. package/dist/nano-components/{p-b1badcb1.system.entry.js → p-d393d10a.system.entry.js} +2 -2
  388. package/dist/nano-components/{p-b1badcb1.system.entry.js.map → p-d393d10a.system.entry.js.map} +0 -0
  389. package/dist/nano-components/{p-868872fa.entry.js → p-db271541.entry.js} +2 -2
  390. package/dist/nano-components/{p-868872fa.entry.js.map → p-db271541.entry.js.map} +0 -0
  391. package/dist/nano-components/p-dccd86ec.system.js +4 -0
  392. package/dist/nano-components/p-dccd86ec.system.js.map +1 -0
  393. package/dist/nano-components/p-e0cc37fb.entry.js +2 -0
  394. package/dist/nano-components/{p-b19e2af5.entry.js.map → p-e0cc37fb.entry.js.map} +1 -1
  395. package/dist/nano-components/{p-db4ba5d8.system.entry.js → p-e28536b4.system.entry.js} +2 -2
  396. package/dist/nano-components/{p-db4ba5d8.system.entry.js.map → p-e28536b4.system.entry.js.map} +0 -0
  397. package/dist/nano-components/{p-b2804245.entry.js → p-ebf34764.entry.js} +2 -2
  398. package/dist/nano-components/{p-b2804245.entry.js.map → p-ebf34764.entry.js.map} +0 -0
  399. package/dist/nano-components/p-edddeaae.system.js +2 -0
  400. package/dist/nano-components/{p-f2d24fc6.system.js.map → p-edddeaae.system.js.map} +1 -1
  401. package/dist/nano-components/{p-d7a2499b.entry.js → p-ef5d9308.entry.js} +2 -2
  402. package/dist/nano-components/{p-d7a2499b.entry.js.map → p-ef5d9308.entry.js.map} +0 -0
  403. package/dist/nano-components/p-f234e064.system.entry.js +2 -0
  404. package/dist/nano-components/p-f234e064.system.entry.js.map +1 -0
  405. package/dist/nano-components/{p-6dae7bdd.system.entry.js → p-f27c9429.system.entry.js} +2 -2
  406. package/dist/nano-components/{p-6dae7bdd.system.entry.js.map → p-f27c9429.system.entry.js.map} +0 -0
  407. package/dist/nano-components/{p-3c25067f.entry.js → p-f3688bce.entry.js} +2 -2
  408. package/dist/nano-components/{p-3c25067f.entry.js.map → p-f3688bce.entry.js.map} +0 -0
  409. package/dist/nano-components/{p-66a5132f.system.entry.js → p-f86db7c0.system.entry.js} +2 -2
  410. package/dist/nano-components/{p-66a5132f.system.entry.js.map → p-f86db7c0.system.entry.js.map} +0 -0
  411. package/dist/nano-components/{p-7e259efb.system.entry.js → p-fa86645d.system.entry.js} +2 -2
  412. package/dist/nano-components/p-fa86645d.system.entry.js.map +1 -0
  413. package/dist/nano-components/{p-b5ff5764.entry.js → p-fdfa03d7.entry.js} +2 -2
  414. package/dist/nano-components/{p-b5ff5764.entry.js.map → p-fdfa03d7.entry.js.map} +0 -0
  415. package/dist/nano-components/p-ff2ff5b0.js +2 -0
  416. package/dist/nano-components/p-ff2ff5b0.js.map +1 -0
  417. package/dist/nano-components/p-ff5890b4.entry.js +2 -0
  418. package/dist/nano-components/p-ff5890b4.entry.js.map +1 -0
  419. package/dist/nano-components/{p-dbe19aba.entry.js → p-ffab923c.entry.js} +2 -2
  420. package/dist/nano-components/{p-dbe19aba.entry.js.map → p-ffab923c.entry.js.map} +0 -0
  421. package/dist/themes/nanopore.css +1 -1
  422. package/dist/types/components/date-input/date-input.d.ts +9 -0
  423. package/dist/types/components/date-picker/date-picker.d.ts +9 -4
  424. package/dist/types/components/details/details.d.ts +1 -0
  425. package/dist/types/components/file-upload/file-upload-interface.d.ts +4 -3
  426. package/dist/types/components/file-upload/file-upload.d.ts +2 -12
  427. package/dist/types/components/input/input.d.ts +1 -0
  428. package/dist/types/components.d.ts +16 -7
  429. package/dist/types/utils/testing/index.d.ts +4 -1
  430. package/docs-json.json +60 -31
  431. package/docs-vscode.json +4 -0
  432. package/package.json +8 -7
  433. package/dist/cjs/algolia-data-4d5ee8da.js.map +0 -1
  434. package/dist/cjs/algoliasearch.umd-51f0001d.js +0 -12
  435. package/dist/cjs/algoliasearch.umd-51f0001d.js.map +0 -1
  436. package/dist/cjs/global-befb7a64.js.map +0 -1
  437. package/dist/cjs/index-197e7a3f.js.map +0 -1
  438. package/dist/esm/algolia-data-6db3f5f2.js.map +0 -1
  439. package/dist/esm/algoliasearch.umd-2c129faa.js +0 -10
  440. package/dist/esm/algoliasearch.umd-2c129faa.js.map +0 -1
  441. package/dist/esm/global-c85d24a2.js.map +0 -1
  442. package/dist/esm/index-8e9bc704.js.map +0 -1
  443. package/dist/esm-es5/algolia-data-6db3f5f2.js.map +0 -1
  444. package/dist/esm-es5/algoliasearch.umd-2c129faa.js +0 -4
  445. package/dist/esm-es5/algoliasearch.umd-2c129faa.js.map +0 -1
  446. package/dist/esm-es5/global-c85d24a2.js.map +0 -1
  447. package/dist/esm-es5/index-8e9bc704.js +0 -2
  448. package/dist/esm-es5/index-8e9bc704.js.map +0 -1
  449. package/dist/nano-components/p-01e5c484.system.entry.js +0 -2
  450. package/dist/nano-components/p-01e5c484.system.entry.js.map +0 -1
  451. package/dist/nano-components/p-0283a2ec.js.map +0 -1
  452. package/dist/nano-components/p-03e4f363.system.js +0 -2
  453. package/dist/nano-components/p-03e4f363.system.js.map +0 -1
  454. package/dist/nano-components/p-19aecfb6.js +0 -2
  455. package/dist/nano-components/p-19aecfb6.js.map +0 -1
  456. package/dist/nano-components/p-23da4de5.js +0 -4
  457. package/dist/nano-components/p-23da4de5.js.map +0 -1
  458. package/dist/nano-components/p-2e2b4393.system.entry.js +0 -2
  459. package/dist/nano-components/p-2e2b4393.system.entry.js.map +0 -1
  460. package/dist/nano-components/p-32c68c7c.entry.js +0 -2
  461. package/dist/nano-components/p-32c68c7c.entry.js.map +0 -1
  462. package/dist/nano-components/p-38ed336b.entry.js +0 -2
  463. package/dist/nano-components/p-38ed336b.entry.js.map +0 -1
  464. package/dist/nano-components/p-447ed63d.system.entry.js.map +0 -1
  465. package/dist/nano-components/p-44cf7aeb.entry.js.map +0 -1
  466. package/dist/nano-components/p-4573be34.entry.js +0 -2
  467. package/dist/nano-components/p-4573be34.entry.js.map +0 -1
  468. package/dist/nano-components/p-4d17169a.entry.js.map +0 -1
  469. package/dist/nano-components/p-5198e4c6.system.js.map +0 -1
  470. package/dist/nano-components/p-6403dd02.system.entry.js.map +0 -1
  471. package/dist/nano-components/p-68eb3c21.entry.js +0 -2
  472. package/dist/nano-components/p-68eb3c21.entry.js.map +0 -1
  473. package/dist/nano-components/p-6d718c9a.entry.js +0 -2
  474. package/dist/nano-components/p-6edd2945.system.entry.js +0 -2
  475. package/dist/nano-components/p-6edd2945.system.entry.js.map +0 -1
  476. package/dist/nano-components/p-7e259efb.system.entry.js.map +0 -1
  477. package/dist/nano-components/p-981f997c.entry.js.map +0 -1
  478. package/dist/nano-components/p-b19e2af5.entry.js +0 -2
  479. package/dist/nano-components/p-c6f7ce64.system.entry.js.map +0 -1
  480. package/dist/nano-components/p-c8945124.system.js.map +0 -1
  481. package/dist/nano-components/p-cb750e49.system.js +0 -4
  482. package/dist/nano-components/p-cb750e49.system.js.map +0 -1
  483. package/dist/nano-components/p-ddaa8946.entry.js.map +0 -1
  484. package/dist/nano-components/p-eb090a2c.system.entry.js +0 -2
  485. package/dist/nano-components/p-eb090a2c.system.entry.js.map +0 -1
  486. package/dist/nano-components/p-f2d24fc6.system.js +0 -2
  487. package/dist/nano-components/p-f31f23ad.entry.js +0 -2
  488. package/dist/nano-components/p-f31f23ad.entry.js.map +0 -1
  489. package/dist/nano-components/p-fc189b6d.js +0 -2
  490. package/dist/nano-components/p-fc189b6d.js.map +0 -1
  491. package/dist/nano-components/p-fd4630d0.system.entry.js +0 -2
  492. package/dist/nano-components/p-fd4630d0.system.entry.js.map +0 -1
@@ -9,7 +9,7 @@
9
9
  }
10
10
  /**
11
11
  * @prop --indicator-transition: Only relevant to placement 'start'. defaults to var(--nano-transition-fast, 0.3s);
12
- * @prop --indicator-color: defaults to #90c6e7 on placement 'top' and #0084a9 on placement 'start';
12
+ * @prop --indicator-color: defaults to #90c6e7 on placement 'top' and #007495 on placement 'start';
13
13
  * @prop --indicator-track-color: Only relevant to placement 'start'. defaults to #e4e6e8;
14
14
  * @prop --indicator-size: defaults to 5px on placement 'top' and 2px on placement 'start';
15
15
 
@@ -28,7 +28,7 @@
28
28
  * @prop --tabs-padding-bottom: defaults to 0;
29
29
  * @prop --tabs-bg-rgb: defaults to var(--bg-color);
30
30
  * @prop --tab-border-radius: defaults to var(--border-radius);
31
- * @prop --tab-text-color: defaults to #0084a9 on placement 'top' and #455556 on placement 'start';
31
+ * @prop --tab-text-color: defaults to #007495 on placement 'top' and #455556 on placement 'start';
32
32
  */
33
33
  :host {
34
34
  --indicator-transition: var(--nano-transition-fast, 0.3s);
@@ -47,7 +47,7 @@
47
47
  --tabs-padding-bottom: 0;
48
48
  --tabs-bg-rgb: var(--background-rgb);
49
49
  --tab-border-radius: var(--border-radius);
50
- --tab-text-color: #0084a9;
50
+ --tab-text-color: #007495;
51
51
  --shadow-opacity: 0.1;
52
52
  display: block;
53
53
  position: relative;
@@ -81,16 +81,16 @@
81
81
  --tabs-padding-top: 0;
82
82
  --tabs-padding-bottom: 0;
83
83
  --tab-text-color: #455556;
84
- --indicator-color: #0084a9;
84
+ --indicator-color: #007495;
85
85
  --indicator-size: 2px;
86
86
  }
87
87
 
88
88
  :host(.nano-color) {
89
- --indicator-color: var(--nano-color-tint, var(--nano-color-primary-tint, #2696b6));
89
+ --indicator-color: var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5));
90
90
  --tab-text-color: rgba(var(--nano-color-base-rgb), 0.7);
91
91
  }
92
92
  :host(.nano-color) ::slotted(nano-tab) {
93
- --active-text-color: var(--nano-color-shade, var(--nano-color-primary-shade, #007090));
93
+ --active-text-color: var(--nano-color-shade, var(--nano-color-primary-shade, #00637f));
94
94
  }
95
95
 
96
96
  .nano-tab-group {
@@ -440,7 +440,7 @@ export class TabGroup {
440
440
  "references": {
441
441
  "Color": {
442
442
  "location": "import",
443
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
443
+ "path": "/builds/Xi7NpFYo/0/Digital/nano-components/packages/components/src/interface.d.ts"
444
444
  }
445
445
  }
446
446
  },
@@ -483,7 +483,7 @@ export class TabGroup {
483
483
  "references": {
484
484
  "StorageMethods": {
485
485
  "location": "import",
486
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/utils/store/component-store.ts"
486
+ "path": "/builds/Xi7NpFYo/0/Digital/nano-components/packages/components/src/utils/store/component-store.ts"
487
487
  }
488
488
  }
489
489
  },
@@ -16,7 +16,7 @@
16
16
  * @prop --active-bg-rgb: Defaults to var(--bg-rgb);
17
17
  * @prop --disabled-bg-rgb: Defaults to var(--bg-rgb);
18
18
 
19
- * @prop --text-color: Defaults to #0084a9;
19
+ * @prop --text-color: Defaults to #007495;
20
20
  * @prop --disabled-text-color: Defaults to #455556;
21
21
  * @prop --active-text-color: Defaults to #0c5a71;
22
22
 
@@ -32,7 +32,7 @@
32
32
  --bg-rgb: var(--nano-layer-bg-rgb, 255, 255, 255);
33
33
  --active-bg-rgb: var(--bg-rgb);
34
34
  --disabled-bg-rgb: var(--bg-rgb);
35
- --text-color: #0084a9;
35
+ --text-color: #007495;
36
36
  --disabled-text-color: #455556;
37
37
  --active-text-color: #0c5a71;
38
38
  --h-font-size: 0.93em;
@@ -29,9 +29,11 @@ if (Build.isBrowser) {
29
29
  return true;
30
30
  };
31
31
  if (!docIsReady()) {
32
- const mutationO = new MutationObserver((_) => {
33
- if (docIsReady())
32
+ let mutationO = new MutationObserver((_) => {
33
+ if (docIsReady()) {
34
34
  mutationO.disconnect();
35
+ mutationO = null;
36
+ }
35
37
  });
36
38
  mutationO.observe(document.documentElement, {
37
39
  childList: false,
@@ -1 +1 @@
1
- {"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/global/script/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,gBAAgB;AAEhB,OAAO,wBAAwB,CAAC;AAEhC,wBAAwB;AAExB,IACE,CAAC,CAAC,sBAAsB,IAAI,MAAM,CAAC;EACnC,CAAC,CAAC,2BAA2B,IAAI,MAAM,CAAC;EACxC,CAAC,CAAC,mBAAmB,IAAI,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAAC,EACpE;EACA,MAAM;EACJ,yDAAyD,CAAC,uBAAuB,CAClF,CAAC;CACH;AAED,mBAAmB;AAEnB,IAAI,CAAC,CAAC,gBAAgB,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;EACzD,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;IACf,MAAM;IACJ,mDAAmD,CAAC,0BAA0B,CAC/E,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;MACX,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;IAC3D,CAAC,CAAC,CAAC;EACL,CAAC,EAAE,CAAC,CAAC,CAAC;CACP;;EAAM,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;AAEhE,wDAAwD;AAExD,IAAI,KAAK,CAAC,SAAS,EAAE;EACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC;EACxC,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;MAAE,OAAO,KAAK,CAAC;IACzD,QAAQ,CAAC,eAAe,CAAC,aAAa,CACpC,IAAI,WAAW,CAAC,qBAAqB,CAAC,CACvC,CAAC;IACF,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;EAEF,IAAI,CAAC,UAAU,EAAE,EAAE;IACjB,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;MAC3C,IAAI,UAAU,EAAE;QAAE,SAAS,CAAC,UAAU,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;MAC1C,SAAS,EAAE,KAAK;MAChB,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;GACJ;CACF","sourcesContent":["import { Build } from '@stencil/core';\n\n// focus options\n\nimport 'focus-options-polyfill';\n\n// Intersection observer\n\nif (\n !('IntersectionObserver' in window) ||\n !('IntersectionObserverEntry' in window) ||\n !('intersectionRatio' in window.IntersectionObserverEntry.prototype)\n) {\n import(\n /* webpackChunkName: 'polyfills-intersection-observer' */ 'intersection-observer'\n );\n}\n\n// scroll-behaviour\n\nif (!('scrollBehavior' in document.documentElement.style)) {\n setTimeout((_) => {\n import(\n /* webpackChunkName: 'polyfills-scroll-behavior' */ 'scroll-behavior-polyfill'\n ).then((_) => {\n document.documentElement.style.scrollBehavior = 'smooth';\n });\n }, 0);\n} else document.documentElement.style.scrollBehavior = 'smooth';\n\n// fire global 'ready' event when everything is hydrated\n\nif (Build.isBrowser) {\n const docEle = document.documentElement;\n const docIsReady = () => {\n if (!docEle.classList.contains('hydrated')) return false;\n document.documentElement.dispatchEvent(\n new CustomEvent('nanoComponentsReady')\n );\n return true;\n };\n\n if (!docIsReady()) {\n const mutationO = new MutationObserver((_) => {\n if (docIsReady()) mutationO.disconnect();\n });\n\n mutationO.observe(document.documentElement, {\n childList: false,\n subtree: false,\n attributes: true,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../../src/global/script/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,gBAAgB;AAEhB,OAAO,wBAAwB,CAAC;AAEhC,wBAAwB;AAExB,IACE,CAAC,CAAC,sBAAsB,IAAI,MAAM,CAAC;EACnC,CAAC,CAAC,2BAA2B,IAAI,MAAM,CAAC;EACxC,CAAC,CAAC,mBAAmB,IAAI,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAAC,EACpE;EACA,MAAM;EACJ,yDAAyD,CAAC,uBAAuB,CAClF,CAAC;CACH;AAED,mBAAmB;AAEnB,IAAI,CAAC,CAAC,gBAAgB,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;EACzD,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;IACf,MAAM;IACJ,mDAAmD,CAAC,0BAA0B,CAC/E,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;MACX,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;IAC3D,CAAC,CAAC,CAAC;EACL,CAAC,EAAE,CAAC,CAAC,CAAC;CACP;;EAAM,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;AAEhE,wDAAwD;AAExD,IAAI,KAAK,CAAC,SAAS,EAAE;EACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC;EACxC,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;MAAE,OAAO,KAAK,CAAC;IACzD,QAAQ,CAAC,eAAe,CAAC,aAAa,CACpC,IAAI,WAAW,CAAC,qBAAqB,CAAC,CACvC,CAAC;IACF,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;EAEF,IAAI,CAAC,UAAU,EAAE,EAAE;IACjB,IAAI,SAAS,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;MACzC,IAAI,UAAU,EAAE,EAAE;QAChB,SAAS,CAAC,UAAU,EAAE,CAAC;QACvB,SAAS,GAAG,IAAI,CAAC;OAClB;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;MAC1C,SAAS,EAAE,KAAK;MAChB,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;GACJ;CACF","sourcesContent":["import { Build } from '@stencil/core';\n\n// focus options\n\nimport 'focus-options-polyfill';\n\n// Intersection observer\n\nif (\n !('IntersectionObserver' in window) ||\n !('IntersectionObserverEntry' in window) ||\n !('intersectionRatio' in window.IntersectionObserverEntry.prototype)\n) {\n import(\n /* webpackChunkName: 'polyfills-intersection-observer' */ 'intersection-observer'\n );\n}\n\n// scroll-behaviour\n\nif (!('scrollBehavior' in document.documentElement.style)) {\n setTimeout((_) => {\n import(\n /* webpackChunkName: 'polyfills-scroll-behavior' */ 'scroll-behavior-polyfill'\n ).then((_) => {\n document.documentElement.style.scrollBehavior = 'smooth';\n });\n }, 0);\n} else document.documentElement.style.scrollBehavior = 'smooth';\n\n// fire global 'ready' event when everything is hydrated\n\nif (Build.isBrowser) {\n const docEle = document.documentElement;\n const docIsReady = () => {\n if (!docEle.classList.contains('hydrated')) return false;\n document.documentElement.dispatchEvent(\n new CustomEvent('nanoComponentsReady')\n );\n return true;\n };\n\n if (!docIsReady()) {\n let mutationO = new MutationObserver((_) => {\n if (docIsReady()) {\n mutationO.disconnect();\n mutationO = null;\n }\n });\n\n mutationO.observe(document.documentElement, {\n childList: false,\n subtree: false,\n attributes: true,\n });\n }\n}\n"]}
@@ -32,23 +32,17 @@ export class E2EPlayGround {
32
32
  this.props = props;
33
33
  this.page = await createPage({
34
34
  html: `
35
- <body>
36
- <style>
37
- :root {
38
- ${this.css}
39
- }
40
- </style>
41
- ${this.template.replace(/(\{\{ attrs \}\})/g, this.attrs)}
42
- </body>
35
+ <style>
36
+ :root {
37
+ ${this.css}
38
+ }
39
+ </style>
40
+ ${this.template.replace(/(\{\{ attrs \}\})/g, this.attrs)}
43
41
  `,
44
42
  viewportWidth: this.viewportWidth,
45
43
  viewportHeight: this.viewportHeight,
44
+ dir: docOpts ? docOpts.dir : 'ltr',
46
45
  });
47
- if (docOpts) {
48
- await this.page.evaluate(() => {
49
- document.dir = docOpts.dir;
50
- });
51
- }
52
46
  return this.page;
53
47
  }
54
48
  reportA11y() {
@@ -90,18 +84,42 @@ export class E2EPlayGround {
90
84
  }
91
85
  }
92
86
  }
93
- export async function getFocusedElement(page) {
94
- return page.evaluateHandle(() => document.activeElement);
87
+ export async function getFocusedElement(page, shadowEleSelector = null) {
88
+ if (!shadowEleSelector)
89
+ return page.evaluateHandle(() => document.activeElement);
90
+ else {
91
+ return page.evaluateHandle((shadowEleSelector) => document.querySelector(shadowEleSelector).shadowRoot.activeElement, shadowEleSelector);
92
+ }
95
93
  }
96
94
  export async function createPage(optionsOrHtml) {
97
95
  const options = typeof optionsOrHtml === 'string'
98
- ? { html: optionsOrHtml, viewportWidth: 600 }
96
+ ? { html: optionsOrHtml, viewportWidth: 600, dir: 'ltr' }
99
97
  : optionsOrHtml;
100
98
  const page = (await newE2EPage());
99
+ // setup navigator langs for consistent localization
100
+ await page.evaluate(() => {
101
+ Object.defineProperty(navigator, 'language', {
102
+ get: function () {
103
+ return 'en-GB';
104
+ },
105
+ });
106
+ Object.defineProperty(navigator, 'languages', {
107
+ get: function () {
108
+ return ['en-GB'];
109
+ },
110
+ });
111
+ });
101
112
  const viewport = Object.assign({ height: options.viewportHeight || page.viewport().height }, { width: options.viewportWidth });
113
+ // set viewport size
102
114
  await page.setViewport(viewport);
115
+ // add content
103
116
  await page.setContent(`<link rel="stylesheet" href="/themes/nanopore.css">
104
- <div class="screenshot" style="padding: 1rem;">${options.html}</div>`, { waitUntil: 'networkidle0' });
117
+ <div class="screenshot" style="padding: 1rem;">${options.html}</div>`, { waitUntil: 'networkidle2' });
118
+ // set the direction - need to set here as stencil removes it on setContent
119
+ await page.evaluate((dir) => {
120
+ document.documentElement.setAttribute('dir', dir);
121
+ document.dir = dir;
122
+ }, options.dir);
105
123
  // monkey patch screenshot function to add some extra features
106
124
  const screenshot = page.screenshot;
107
125
  page.screenshot = async function () {
@@ -120,6 +138,7 @@ export async function createPage(optionsOrHtml) {
120
138
  width: Math.round(width),
121
139
  height: options.viewportHeight || Math.round(height),
122
140
  },
141
+ captureBeyondViewport: false,
123
142
  });
124
143
  };
125
144
  await page.evaluate(async (source) => await window.eval(source), axe.source);
@@ -161,9 +180,63 @@ export const kebabize = (str) => {
161
180
  };
162
181
  export const screenshotSettings = (dirname) => {
163
182
  return {
164
- failureThreshold: 0.001,
183
+ failureThreshold: 0.002,
165
184
  failureThresholdType: 'percent',
166
185
  customSnapshotsDir: `${dirname}/__screenshots__/${process.platform}`,
167
186
  };
168
187
  };
188
+ export const waitForVisibleSnippet = (selector) => {
189
+ return `
190
+ (function () {
191
+ function isVisible(elem) {
192
+ if (!(elem instanceof Element)) throw Error('DomUtil: elem is not an element.');
193
+ const style = getComputedStyle(elem);
194
+ if (style.display === 'none') return false;
195
+ if (style.visibility !== 'visible') return false;
196
+ if (style.opacity < 0.1) return false;
197
+ if (elem.offsetWidth + elem.offsetHeight + elem.getBoundingClientRect().height +
198
+ elem.getBoundingClientRect().width === 0) {
199
+ return false;
200
+ }
201
+ const elemCenter = {
202
+ x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,
203
+ y: elem.getBoundingClientRect().top + elem.offsetHeight / 2
204
+ };
205
+ if (elemCenter.x < 0) return false;
206
+ if (elemCenter.x > (document.documentElement.clientWidth || window.innerWidth)) return false;
207
+ if (elemCenter.y < 0) return false;
208
+ if (elemCenter.y > (document.documentElement.clientHeight || window.innerHeight)) return false;
209
+ let pointContainer = document.elementFromPoint(elemCenter.x, elemCenter.y);
210
+ do {
211
+ if (pointContainer === elem) return true;
212
+ } while (pointContainer = pointContainer.parentNode);
213
+ return false;
214
+ }
215
+ return isVisible(document.querySelector("${selector}"));
216
+ })()
217
+ `;
218
+ };
219
+ export const stringifyFormSnippet = `
220
+ <div id="form-result"></div>
221
+ <script>
222
+ var form = document.querySelector('form');
223
+ var result = document.querySelector('#form-result');
224
+ form.addEventListener('submit', (e) => {
225
+ e.preventDefault();
226
+ var data = new FormData(event.target);
227
+ var object = {};
228
+ data.forEach((value, key) => {
229
+ // Reflect.has in favor of: object.hasOwnProperty(key)
230
+ if(!Reflect.has(object, key)){
231
+ object[key] = value;
232
+ return;
233
+ }
234
+ if(!Array.isArray(object[key])){
235
+ object[key] = [object[key]];
236
+ }
237
+ object[key].push(value);
238
+ });
239
+ result.innerHTML = JSON.stringify(object);
240
+ })
241
+ </script>`;
169
242
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/testing/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { Page as PuppeteerPage } from 'puppeteer';\nimport axe, { RunOptions, ContextObject } from 'axe-core';\nimport { MatchImageSnapshotOptions } from 'jest-image-snapshot';\n\ndeclare global {\n interface Window {\n axe: typeof axe;\n }\n}\n\nexport interface NanoE2EPage\n extends E2EPage,\n Pick<PuppeteerPage, 'screenshot' | 'viewport'> {\n reportA11y: (contextQuery?: string) => Promise<string>;\n}\n\ntype NanoE2EPageOptions = {\n html: string;\n viewportWidth: number;\n viewportHeight?: number;\n};\n\nexport class E2EPlayGround<T> {\n public props: Partial<T>;\n public viewportHeight: number;\n /** element template string. Add `{{ attrs }}` to place the attributes */\n public template: string;\n public cssVars: { [key: string]: string };\n public viewportWidth = 600;\n public page: NanoE2EPage;\n public tag: string;\n\n constructor(setup: { template: string; tag: string } | string) {\n setup =\n typeof setup === 'string'\n ? { template: `<${setup} {{ attrs }}></${setup}>`, tag: setup }\n : setup;\n this.template = setup.template;\n this.tag = setup.tag;\n }\n\n private get attrs() {\n if (!this.props) return '';\n return Object.entries(this.props)\n .map(([attr, value]) => `${kebabize(attr)}=\"${value}\"`)\n .join(' ');\n }\n\n private get css() {\n if (!this.cssVars) return '';\n return Object.entries(this.cssVars)\n .map(([attr, value]) => `${attr}: ${value}`)\n .join('\\n');\n }\n\n public async newPage(props?: Partial<T>, docOpts?: { dir: 'rtl' | 'ltr' }) {\n if (!this.template || !this.tag) {\n console.warn('no template set');\n return;\n }\n\n this.props = props;\n this.page = await createPage({\n html: `\n <body>\n <style>\n :root {\n ${this.css}\n }\n </style>\n ${this.template.replace(/(\\{\\{ attrs \\}\\})/g, this.attrs)}\n </body>\n `,\n viewportWidth: this.viewportWidth,\n viewportHeight: this.viewportHeight,\n });\n\n if (docOpts) {\n await this.page.evaluate(() => {\n document.dir = docOpts.dir;\n });\n }\n return this.page;\n }\n\n public reportA11y() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.reportA11y(this.tag);\n }\n\n public component() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.find(this.tag);\n }\n\n public async componentQuery(selectorStr: string, shadow = true) {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n if (!selectorStr) {\n console.warn('selectorStr not set');\n return;\n }\n\n if (shadow) {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document\n .querySelector(tag)\n .shadowRoot.querySelector(selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n } else {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document.querySelector(tag + ' ' + selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n }\n }\n}\n\nexport async function getFocusedElement(page: E2EPage) {\n return page.evaluateHandle(() => document.activeElement);\n}\n\nexport async function createPage(optionsOrHtml?: string | NanoE2EPageOptions) {\n const options: NanoE2EPageOptions =\n typeof optionsOrHtml === 'string'\n ? { html: optionsOrHtml, viewportWidth: 600 }\n : optionsOrHtml;\n\n const page = (await newE2EPage()) as NanoE2EPage;\n\n const viewport = Object.assign(\n { height: options.viewportHeight || page.viewport().height },\n { width: options.viewportWidth }\n );\n await page.setViewport(viewport);\n await page.setContent(\n `<link rel=\"stylesheet\" href=\"/themes/nanopore.css\">\n <div class=\"screenshot\" style=\"padding: 1rem;\">${options.html}</div>`,\n { waitUntil: 'networkidle0' }\n );\n\n // monkey patch screenshot function to add some extra features\n const screenshot = page.screenshot;\n page.screenshot = async function () {\n // get the element's height, and set viewport to that height\n // this enables us to get full page, clipped screenshots\n const htmlElement = await page.$('.screenshot');\n let { width, height } = await htmlElement.boundingBox();\n\n await page.setViewport({\n width: page.viewport().width,\n height: options.viewportHeight || Math.round(height),\n });\n\n return screenshot.call(page, {\n clip: {\n x: 0,\n y: 0,\n width: Math.round(width),\n height: options.viewportHeight || Math.round(height),\n },\n });\n };\n\n await page.evaluate(async (source) => await window.eval(source), axe.source);\n\n page.reportA11y = async (contextQuery?: string) => {\n const result = await page.evaluate(async (contextQuery) => {\n const context: ContextObject = {\n include: contextQuery ? [[contextQuery]] : undefined,\n exclude: [[contextQuery + ' .button--primary']],\n };\n const opts: RunOptions = {};\n return await window.axe.run(context, opts);\n }, contextQuery);\n\n // we only want serious issues and we want to ignore nanopore buttons. We know though they're bad.\n const violations = result.violations\n .filter((violation) => [`serious`, `critical`].includes(violation.impact))\n .filter((violation) => {\n violation.nodes = violation.nodes.filter(\n (node) => !node.target.join().match('.button--')\n );\n return !!violation.nodes.length;\n });\n\n const outout = violations\n .map(\n (violations, index) => `(${index}) [Type: ${violations.id}]: ${\n violations.description\n } (${violations.help}).\n Elements: ${violations.nodes\n .map((node, index) => `[${index}]'${node.target}'`)\n .join(`, `)}.`\n )\n .join(`\\n\\n`);\n return outout;\n };\n\n return page;\n}\n\nexport const kebabize = (str) => {\n return str\n .split('')\n .map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n })\n .join('');\n};\n\nexport const screenshotSettings = (\n dirname: string\n): MatchImageSnapshotOptions => {\n return {\n failureThreshold: 0.001,\n failureThresholdType: 'percent',\n customSnapshotsDir: `${dirname}/__screenshots__/${process.platform}`,\n };\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/testing/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage, E2EPage } from '@stencil/core/testing';\nimport { Page as PuppeteerPage } from 'puppeteer';\nimport axe, { RunOptions, ContextObject } from 'axe-core';\nimport { MatchImageSnapshotOptions } from 'jest-image-snapshot';\n\ndeclare global {\n interface Window {\n axe: typeof axe;\n }\n}\n\nexport interface NanoE2EPage\n extends E2EPage,\n Pick<PuppeteerPage, 'screenshot' | 'viewport'> {\n reportA11y: (contextQuery?: string) => Promise<string>;\n}\n\ntype NanoE2EPageOptions = {\n html: string;\n viewportWidth: number;\n viewportHeight?: number;\n dir: 'ltr' | 'rtl';\n};\n\nexport class E2EPlayGround<T> {\n public props: Partial<T>;\n public viewportHeight: number;\n /** element template string. Add `{{ attrs }}` to place the attributes */\n public template: string;\n public cssVars: { [key: string]: string };\n public viewportWidth = 600;\n public page: NanoE2EPage;\n public tag: string;\n\n constructor(setup: { template: string; tag: string } | string) {\n setup =\n typeof setup === 'string'\n ? { template: `<${setup} {{ attrs }}></${setup}>`, tag: setup }\n : setup;\n this.template = setup.template;\n this.tag = setup.tag;\n }\n\n private get attrs() {\n if (!this.props) return '';\n return Object.entries(this.props)\n .map(([attr, value]) => `${kebabize(attr)}=\"${value}\"`)\n .join(' ');\n }\n\n private get css() {\n if (!this.cssVars) return '';\n return Object.entries(this.cssVars)\n .map(([attr, value]) => `${attr}: ${value}`)\n .join('\\n');\n }\n\n public async newPage(props?: Partial<T>, docOpts?: { dir: 'rtl' | 'ltr' }) {\n if (!this.template || !this.tag) {\n console.warn('no template set');\n return;\n }\n\n this.props = props;\n this.page = await createPage({\n html: `\n <style>\n :root {\n ${this.css}\n }\n </style>\n ${this.template.replace(/(\\{\\{ attrs \\}\\})/g, this.attrs)}\n `,\n viewportWidth: this.viewportWidth,\n viewportHeight: this.viewportHeight,\n dir: docOpts ? docOpts.dir : 'ltr',\n });\n\n return this.page;\n }\n\n public reportA11y() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.reportA11y(this.tag);\n }\n\n public component() {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n return this.page.find(this.tag);\n }\n\n public async componentQuery(selectorStr: string, shadow = true) {\n if (!this.page) {\n console.warn('no page rendered');\n return;\n }\n if (!selectorStr) {\n console.warn('selectorStr not set');\n return;\n }\n\n if (shadow) {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document\n .querySelector(tag)\n .shadowRoot.querySelector(selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n } else {\n return (\n await this.page.waitForFunction(\n (args) => {\n const [tag, selectorStr] = args;\n return document.querySelector(tag + ' ' + selectorStr);\n },\n {},\n [this.tag, selectorStr]\n )\n ).asElement();\n }\n }\n}\n\nexport async function getFocusedElement(\n page: E2EPage,\n shadowEleSelector: string = null\n) {\n if (!shadowEleSelector)\n return page.evaluateHandle(() => document.activeElement);\n else {\n return page.evaluateHandle(\n (shadowEleSelector) =>\n document.querySelector(shadowEleSelector).shadowRoot.activeElement,\n shadowEleSelector\n );\n }\n}\n\nexport async function createPage(optionsOrHtml?: string | NanoE2EPageOptions) {\n const options: NanoE2EPageOptions =\n typeof optionsOrHtml === 'string'\n ? { html: optionsOrHtml, viewportWidth: 600, dir: 'ltr' }\n : optionsOrHtml;\n\n const page = (await newE2EPage()) as NanoE2EPage;\n\n // setup navigator langs for consistent localization\n await page.evaluate(() => {\n Object.defineProperty(navigator, 'language', {\n get: function () {\n return 'en-GB';\n },\n });\n Object.defineProperty(navigator, 'languages', {\n get: function () {\n return ['en-GB'];\n },\n });\n });\n const viewport = Object.assign(\n { height: options.viewportHeight || page.viewport().height },\n { width: options.viewportWidth }\n );\n // set viewport size\n await page.setViewport(viewport);\n\n // add content\n await page.setContent(\n `<link rel=\"stylesheet\" href=\"/themes/nanopore.css\">\n <div class=\"screenshot\" style=\"padding: 1rem;\">${options.html}</div>`,\n { waitUntil: 'networkidle2' }\n );\n\n // set the direction - need to set here as stencil removes it on setContent\n await page.evaluate((dir) => {\n document.documentElement.setAttribute('dir', dir);\n document.dir = dir;\n }, options.dir);\n\n // monkey patch screenshot function to add some extra features\n const screenshot = page.screenshot;\n page.screenshot = async function () {\n // get the element's height, and set viewport to that height\n // this enables us to get full page, clipped screenshots\n const htmlElement = await page.$('.screenshot');\n let { width, height } = await htmlElement.boundingBox();\n\n await page.setViewport({\n width: page.viewport().width,\n height: options.viewportHeight || Math.round(height),\n });\n\n return screenshot.call(page, {\n clip: {\n x: 0,\n y: 0,\n width: Math.round(width),\n height: options.viewportHeight || Math.round(height),\n },\n captureBeyondViewport: false,\n });\n };\n\n await page.evaluate(async (source) => await window.eval(source), axe.source);\n\n page.reportA11y = async (contextQuery?: string) => {\n const result = await page.evaluate(async (contextQuery) => {\n const context: ContextObject = {\n include: contextQuery ? [[contextQuery]] : undefined,\n exclude: [[contextQuery + ' .button--primary']],\n };\n const opts: RunOptions = {};\n return await window.axe.run(context, opts);\n }, contextQuery);\n\n // we only want serious issues and we want to ignore nanopore buttons. We know though they're bad.\n const violations = result.violations\n .filter((violation) => [`serious`, `critical`].includes(violation.impact))\n .filter((violation) => {\n violation.nodes = violation.nodes.filter(\n (node) => !node.target.join().match('.button--')\n );\n return !!violation.nodes.length;\n });\n\n const outout = violations\n .map(\n (violations, index) => `(${index}) [Type: ${violations.id}]: ${\n violations.description\n } (${violations.help}).\n Elements: ${violations.nodes\n .map((node, index) => `[${index}]'${node.target}'`)\n .join(`, `)}.`\n )\n .join(`\\n\\n`);\n return outout;\n };\n\n return page;\n}\n\nexport const kebabize = (str) => {\n return str\n .split('')\n .map((letter, idx) => {\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`\n : letter;\n })\n .join('');\n};\n\nexport const screenshotSettings = (\n dirname: string\n): MatchImageSnapshotOptions => {\n return {\n failureThreshold: 0.002,\n failureThresholdType: 'percent',\n customSnapshotsDir: `${dirname}/__screenshots__/${process.platform}`,\n };\n};\n\nexport const waitForVisibleSnippet = (selector) => {\n return `\n (function () {\n function isVisible(elem) {\n if (!(elem instanceof Element)) throw Error('DomUtil: elem is not an element.');\n const style = getComputedStyle(elem);\n if (style.display === 'none') return false;\n if (style.visibility !== 'visible') return false;\n if (style.opacity < 0.1) return false;\n if (elem.offsetWidth + elem.offsetHeight + elem.getBoundingClientRect().height +\n elem.getBoundingClientRect().width === 0) {\n return false;\n }\n const elemCenter = {\n x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,\n y: elem.getBoundingClientRect().top + elem.offsetHeight / 2\n };\n if (elemCenter.x < 0) return false;\n if (elemCenter.x > (document.documentElement.clientWidth || window.innerWidth)) return false;\n if (elemCenter.y < 0) return false;\n if (elemCenter.y > (document.documentElement.clientHeight || window.innerHeight)) return false;\n let pointContainer = document.elementFromPoint(elemCenter.x, elemCenter.y);\n do {\n if (pointContainer === elem) return true;\n } while (pointContainer = pointContainer.parentNode);\n return false;\n }\n return isVisible(document.querySelector(\"${selector}\"));\n })()\n`;\n};\n\nexport const stringifyFormSnippet = `\n<div id=\"form-result\"></div>\n<script>\n var form = document.querySelector('form');\n var result = document.querySelector('#form-result');\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n var data = new FormData(event.target);\n var object = {};\n data.forEach((value, key) => {\n // Reflect.has in favor of: object.hasOwnProperty(key)\n if(!Reflect.has(object, key)){\n object[key] = value;\n return;\n }\n if(!Array.isArray(object[key])){\n object[key] = [object[key]];\n }\n object[key].push(value);\n });\n result.innerHTML = JSON.stringify(object);\n })\n</script>`;\n"]}