@nanoporetech-digital/components 2.10.0 → 2.12.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 (423) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/cjs/{date-utils-0ae9a12d.js → date-utils-b3af910d.js} +2 -2
  3. package/dist/cjs/date-utils-b3af910d.js.map +1 -0
  4. package/dist/cjs/{global-0d4f3b77.js → global-989678ec.js} +1 -8
  5. package/dist/cjs/global-989678ec.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/nano-algolia.cjs.entry.js +5 -1
  8. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nano-components.cjs.js +2 -2
  10. package/dist/cjs/nano-datalist_3.cjs.entry.js +4 -1
  11. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nano-date-input.cjs.entry.js +16 -5
  13. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nano-date-picker.cjs.entry.js +2 -2
  15. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  16. package/dist/cjs/nano-details.cjs.entry.js +1 -2
  17. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nano-field-validator.cjs.entry.js +100 -34
  19. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-file-upload.cjs.entry.js +4 -1
  21. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nano-global-search-results.cjs.entry.js +21 -6
  23. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nano-grid_3.cjs.entry.js +1 -2
  25. package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nano-icon-button.cjs.entry.js +4 -0
  27. package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-input.cjs.entry.js +1 -1
  29. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-nav-item_2.cjs.entry.js +14 -2
  31. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -2
  33. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  34. package/dist/cjs/nano-slides.cjs.entry.js +1 -2
  35. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nano-sticker.cjs.entry.js +2 -3
  37. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-tab-group.cjs.entry.js +4 -2
  39. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nano-tab.cjs.entry.js +5 -1
  41. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
  43. package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -1
  44. package/dist/collection/components/accordion/accordion.js +1 -1
  45. package/dist/collection/components/alert/alert.js +1 -1
  46. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  47. package/dist/collection/components/algolia/algolia-input.js +5 -5
  48. package/dist/collection/components/algolia/algolia-results.js +1 -1
  49. package/dist/collection/components/algolia/algolia.js +12 -6
  50. package/dist/collection/components/algolia/algolia.js.map +1 -1
  51. package/dist/collection/components/checkbox/checkbox-group.js +2 -2
  52. package/dist/collection/components/checkbox/checkbox.js +3 -3
  53. package/dist/collection/components/datalist/datalist.js +5 -2
  54. package/dist/collection/components/datalist/datalist.js.map +1 -1
  55. package/dist/collection/components/date-input/date-input.js +65 -11
  56. package/dist/collection/components/date-input/date-input.js.map +1 -1
  57. package/dist/collection/components/date-picker/date-picker.css +1 -1
  58. package/dist/collection/components/date-picker/date-picker.js +5 -5
  59. package/dist/collection/components/details/details.js +1 -2
  60. package/dist/collection/components/details/details.js.map +1 -1
  61. package/dist/collection/components/dialog/dialog.js +1 -1
  62. package/dist/collection/components/dropdown/dropdown.js +1 -1
  63. package/dist/collection/components/field-validator/field-validator-interface.js +5 -0
  64. package/dist/collection/components/field-validator/field-validator-interface.js.map +1 -0
  65. package/dist/collection/components/field-validator/field-validator.js +167 -49
  66. package/dist/collection/components/field-validator/field-validator.js.map +1 -1
  67. package/dist/collection/components/file-upload/file-upload.js +10 -7
  68. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  69. package/dist/collection/components/global-nav/global-nav.js +4 -4
  70. package/dist/collection/components/global-search-results/global-search-results.css +7 -0
  71. package/dist/collection/components/global-search-results/global-search-results.js +19 -4
  72. package/dist/collection/components/global-search-results/global-search-results.js.map +1 -1
  73. package/dist/collection/components/grid/grid-item.js +1 -1
  74. package/dist/collection/components/grid/grid.js +0 -1
  75. package/dist/collection/components/grid/grid.js.map +1 -1
  76. package/dist/collection/components/icon/icon.js +1 -1
  77. package/dist/collection/components/icon-button/icon-button.js +23 -1
  78. package/dist/collection/components/icon-button/icon-button.js.map +1 -1
  79. package/dist/collection/components/input/input.css +1 -0
  80. package/dist/collection/components/input/input.js +5 -5
  81. package/dist/collection/components/nav-item/nav-item.js +4 -4
  82. package/dist/collection/components/range/range.js +4 -4
  83. package/dist/collection/components/resize-observe/resize-observe.js +1 -2
  84. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  85. package/dist/collection/components/select/select.css +2 -1
  86. package/dist/collection/components/select/select.js +20 -8
  87. package/dist/collection/components/select/select.js.map +1 -1
  88. package/dist/collection/components/slides/slides.js +7 -8
  89. package/dist/collection/components/slides/slides.js.map +1 -1
  90. package/dist/collection/components/sticker/sticker.js +0 -1
  91. package/dist/collection/components/sticker/sticker.js.map +1 -1
  92. package/dist/collection/components/tabs/tab-group.js +5 -3
  93. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  94. package/dist/collection/components/tabs/tab.js +5 -1
  95. package/dist/collection/components/tabs/tab.js.map +1 -1
  96. package/dist/collection/components/tooltip/tooltip.css +0 -1
  97. package/dist/collection/global/script/global.js +0 -7
  98. package/dist/collection/global/script/global.js.map +1 -1
  99. package/dist/collection/utils/date-utils.js +1 -1
  100. package/dist/collection/utils/date-utils.js.map +1 -1
  101. package/dist/components/algolia.js +5 -1
  102. package/dist/components/algolia.js.map +1 -1
  103. package/dist/components/datalist.js +4 -1
  104. package/dist/components/datalist.js.map +1 -1
  105. package/dist/components/date-picker.js +2 -2
  106. package/dist/components/date-picker.js.map +1 -1
  107. package/dist/components/grid.js +1 -2
  108. package/dist/components/grid.js.map +1 -1
  109. package/dist/components/icon-button.js +6 -1
  110. package/dist/components/icon-button.js.map +1 -1
  111. package/dist/components/index.js +0 -7
  112. package/dist/components/index.js.map +1 -1
  113. package/dist/components/input.js +1 -1
  114. package/dist/components/input.js.map +1 -1
  115. package/dist/components/nano-date-input.js +17 -4
  116. package/dist/components/nano-date-input.js.map +1 -1
  117. package/dist/components/nano-details.js +1 -2
  118. package/dist/components/nano-details.js.map +1 -1
  119. package/dist/components/nano-field-validator.js +104 -36
  120. package/dist/components/nano-field-validator.js.map +1 -1
  121. package/dist/components/nano-file-upload.js +5 -2
  122. package/dist/components/nano-file-upload.js.map +1 -1
  123. package/dist/components/nano-global-search-results.js +21 -6
  124. package/dist/components/nano-global-search-results.js.map +1 -1
  125. package/dist/components/nano-slides.js +1 -2
  126. package/dist/components/nano-slides.js.map +1 -1
  127. package/dist/components/nano-tab-group.js +4 -2
  128. package/dist/components/nano-tab-group.js.map +1 -1
  129. package/dist/components/nano-tab.js +5 -1
  130. package/dist/components/nano-tab.js.map +1 -1
  131. package/dist/components/resize-observe.js +1 -2
  132. package/dist/components/resize-observe.js.map +1 -1
  133. package/dist/components/select.js +14 -2
  134. package/dist/components/select.js.map +1 -1
  135. package/dist/components/sticker.js +2 -3
  136. package/dist/components/sticker.js.map +1 -1
  137. package/dist/components/tooltip.js +1 -1
  138. package/dist/components/tooltip.js.map +1 -1
  139. package/dist/custom-elements/index.js +191 -1983
  140. package/dist/custom-elements/index.js.map +1 -1
  141. package/dist/esm/{date-utils-e4b757ff.js → date-utils-839cb010.js} +2 -2
  142. package/dist/esm/date-utils-839cb010.js.map +1 -0
  143. package/dist/esm/{global-d5ec4d53.js → global-8047b4ff.js} +1 -8
  144. package/dist/esm/global-8047b4ff.js.map +1 -0
  145. package/dist/esm/loader.js +2 -2
  146. package/dist/esm/nano-algolia.entry.js +5 -1
  147. package/dist/esm/nano-algolia.entry.js.map +1 -1
  148. package/dist/esm/nano-components.js +2 -2
  149. package/dist/esm/nano-datalist_3.entry.js +4 -1
  150. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  151. package/dist/esm/nano-date-input.entry.js +16 -5
  152. package/dist/esm/nano-date-input.entry.js.map +1 -1
  153. package/dist/esm/nano-date-picker.entry.js +2 -2
  154. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  155. package/dist/esm/nano-details.entry.js +1 -2
  156. package/dist/esm/nano-details.entry.js.map +1 -1
  157. package/dist/esm/nano-field-validator.entry.js +100 -34
  158. package/dist/esm/nano-field-validator.entry.js.map +1 -1
  159. package/dist/esm/nano-file-upload.entry.js +4 -1
  160. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  161. package/dist/esm/nano-global-search-results.entry.js +21 -6
  162. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  163. package/dist/esm/nano-grid_3.entry.js +1 -2
  164. package/dist/esm/nano-grid_3.entry.js.map +1 -1
  165. package/dist/esm/nano-icon-button.entry.js +4 -0
  166. package/dist/esm/nano-icon-button.entry.js.map +1 -1
  167. package/dist/esm/nano-input.entry.js +1 -1
  168. package/dist/esm/nano-input.entry.js.map +1 -1
  169. package/dist/esm/nano-nav-item_2.entry.js +14 -2
  170. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  171. package/dist/esm/nano-resize-observe_2.entry.js +1 -2
  172. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  173. package/dist/esm/nano-slides.entry.js +1 -2
  174. package/dist/esm/nano-slides.entry.js.map +1 -1
  175. package/dist/esm/nano-sticker.entry.js +2 -3
  176. package/dist/esm/nano-sticker.entry.js.map +1 -1
  177. package/dist/esm/nano-tab-group.entry.js +4 -2
  178. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  179. package/dist/esm/nano-tab.entry.js +5 -1
  180. package/dist/esm/nano-tab.entry.js.map +1 -1
  181. package/dist/esm/nano-tooltip.entry.js +1 -1
  182. package/dist/esm/nano-tooltip.entry.js.map +1 -1
  183. package/dist/esm-es5/date-utils-839cb010.js +5 -0
  184. package/dist/esm-es5/date-utils-839cb010.js.map +1 -0
  185. package/dist/esm-es5/{global-d5ec4d53.js → global-8047b4ff.js} +2 -2
  186. package/dist/esm-es5/global-8047b4ff.js.map +1 -0
  187. package/dist/esm-es5/loader.js +1 -1
  188. package/dist/esm-es5/loader.js.map +1 -1
  189. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  190. package/dist/esm-es5/nano-algolia.entry.js.map +1 -1
  191. package/dist/esm-es5/nano-components.js +1 -1
  192. package/dist/esm-es5/nano-components.js.map +1 -1
  193. package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
  194. package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
  195. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  196. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  197. package/dist/esm-es5/nano-date-picker.entry.js +1 -1
  198. package/dist/esm-es5/nano-date-picker.entry.js.map +1 -1
  199. package/dist/esm-es5/nano-details.entry.js +1 -1
  200. package/dist/esm-es5/nano-details.entry.js.map +1 -1
  201. package/dist/esm-es5/nano-field-validator.entry.js +1 -1
  202. package/dist/esm-es5/nano-field-validator.entry.js.map +1 -1
  203. package/dist/esm-es5/nano-file-upload.entry.js +1 -1
  204. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  205. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  206. package/dist/esm-es5/nano-global-search-results.entry.js.map +1 -1
  207. package/dist/esm-es5/nano-grid_3.entry.js +1 -1
  208. package/dist/esm-es5/nano-grid_3.entry.js.map +1 -1
  209. package/dist/esm-es5/nano-icon-button.entry.js +2 -2
  210. package/dist/esm-es5/nano-icon-button.entry.js.map +1 -1
  211. package/dist/esm-es5/nano-input.entry.js +1 -1
  212. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  213. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  214. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  215. package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
  216. package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
  217. package/dist/esm-es5/nano-slides.entry.js +2 -2
  218. package/dist/esm-es5/nano-slides.entry.js.map +1 -1
  219. package/dist/esm-es5/nano-sticker.entry.js +1 -1
  220. package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
  221. package/dist/esm-es5/nano-tab-group.entry.js +2 -2
  222. package/dist/esm-es5/nano-tab-group.entry.js.map +1 -1
  223. package/dist/esm-es5/nano-tab.entry.js +2 -2
  224. package/dist/esm-es5/nano-tab.entry.js.map +1 -1
  225. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  226. package/dist/esm-es5/nano-tooltip.entry.js.map +1 -1
  227. package/dist/nano-components/nano-components.esm.js +1 -1
  228. package/dist/nano-components/nano-components.esm.js.map +1 -1
  229. package/dist/nano-components/nano-components.js +1 -1
  230. package/dist/nano-components/p-01667573.entry.js +5 -0
  231. package/dist/nano-components/{p-a81db037.entry.js.map → p-01667573.entry.js.map} +1 -1
  232. package/dist/nano-components/p-018b7047.entry.js +5 -0
  233. package/dist/nano-components/p-018b7047.entry.js.map +1 -0
  234. package/dist/nano-components/p-0193a282.entry.js +5 -0
  235. package/dist/nano-components/p-0193a282.entry.js.map +1 -0
  236. package/dist/nano-components/p-0320410c.entry.js +5 -0
  237. package/dist/nano-components/p-0320410c.entry.js.map +1 -0
  238. package/dist/nano-components/{p-c9a2d24c.entry.js → p-055f7d35.entry.js} +2 -2
  239. package/dist/nano-components/p-055f7d35.entry.js.map +1 -0
  240. package/dist/nano-components/p-2b478ca1.system.entry.js +5 -0
  241. package/dist/nano-components/p-2b478ca1.system.entry.js.map +1 -0
  242. package/dist/nano-components/p-32900c91.entry.js +5 -0
  243. package/dist/nano-components/p-32900c91.entry.js.map +1 -0
  244. package/dist/nano-components/p-33fce1a6.js +5 -0
  245. package/dist/nano-components/p-33fce1a6.js.map +1 -0
  246. package/dist/nano-components/p-371aebe7.system.entry.js +23 -0
  247. package/dist/nano-components/p-371aebe7.system.entry.js.map +1 -0
  248. package/dist/nano-components/p-41899a31.system.entry.js +5 -0
  249. package/dist/nano-components/p-41899a31.system.entry.js.map +1 -0
  250. package/dist/nano-components/{p-bc394857.system.entry.js → p-4558a9c6.system.entry.js} +2 -2
  251. package/dist/nano-components/p-4558a9c6.system.entry.js.map +1 -0
  252. package/dist/nano-components/p-53957ec6.system.js +5 -0
  253. package/dist/nano-components/{p-e7140887.system.js.map → p-53957ec6.system.js.map} +1 -1
  254. package/dist/nano-components/p-561500f0.system.entry.js +5 -0
  255. package/dist/nano-components/p-561500f0.system.entry.js.map +1 -0
  256. package/dist/nano-components/p-596c1711.system.entry.js +5 -0
  257. package/dist/nano-components/p-596c1711.system.entry.js.map +1 -0
  258. package/dist/nano-components/p-5f4fc2b4.entry.js +5 -0
  259. package/dist/nano-components/p-5f4fc2b4.entry.js.map +1 -0
  260. package/dist/nano-components/p-6a949280.system.entry.js +5 -0
  261. package/dist/nano-components/p-6a949280.system.entry.js.map +1 -0
  262. package/dist/nano-components/{p-bf9aa89d.system.entry.js → p-6af10533.system.entry.js} +3 -3
  263. package/dist/nano-components/p-6af10533.system.entry.js.map +1 -0
  264. package/dist/nano-components/p-70272eae.js +5 -0
  265. package/dist/nano-components/p-70272eae.js.map +1 -0
  266. package/dist/nano-components/{p-96150b2c.system.entry.js → p-72893d12.system.entry.js} +2 -2
  267. package/dist/nano-components/p-72893d12.system.entry.js.map +1 -0
  268. package/dist/nano-components/p-755d9227.entry.js +5 -0
  269. package/dist/nano-components/p-755d9227.entry.js.map +1 -0
  270. package/dist/nano-components/p-7bd25494.entry.js +5 -0
  271. package/dist/nano-components/p-7bd25494.entry.js.map +1 -0
  272. package/dist/nano-components/p-7c837460.entry.js +5 -0
  273. package/dist/nano-components/p-7c837460.entry.js.map +1 -0
  274. package/dist/nano-components/{p-93880c28.system.js → p-82e28afd.system.js} +2 -2
  275. package/dist/nano-components/p-82e28afd.system.js.map +1 -0
  276. package/dist/nano-components/p-8378428e.system.js +5 -0
  277. package/dist/nano-components/p-8378428e.system.js.map +1 -0
  278. package/dist/nano-components/p-8df4f125.system.entry.js +5 -0
  279. package/dist/nano-components/p-8df4f125.system.entry.js.map +1 -0
  280. package/dist/nano-components/{p-1b120f53.entry.js → p-91614b43.entry.js} +2 -2
  281. package/dist/nano-components/p-91614b43.entry.js.map +1 -0
  282. package/dist/nano-components/{p-d0385948.system.entry.js → p-93596c3d.system.entry.js} +2 -2
  283. package/dist/nano-components/p-93596c3d.system.entry.js.map +1 -0
  284. package/dist/nano-components/p-96d9b8b9.system.entry.js +5 -0
  285. package/dist/nano-components/{p-fc3702a0.system.entry.js.map → p-96d9b8b9.system.entry.js.map} +1 -1
  286. package/dist/nano-components/{p-3e930ac7.entry.js → p-9d9b0b66.entry.js} +2 -2
  287. package/dist/nano-components/p-9d9b0b66.entry.js.map +1 -0
  288. package/dist/nano-components/p-9ffdf6cc.entry.js +5 -0
  289. package/dist/nano-components/{p-222d8095.entry.js.map → p-9ffdf6cc.entry.js.map} +1 -1
  290. package/dist/nano-components/p-a1444980.entry.js +5 -0
  291. package/dist/nano-components/p-a1444980.entry.js.map +1 -0
  292. package/dist/nano-components/p-aa84c727.system.entry.js +5 -0
  293. package/dist/nano-components/p-aa84c727.system.entry.js.map +1 -0
  294. package/dist/nano-components/p-ac5e3775.system.entry.js +5 -0
  295. package/dist/nano-components/p-ac5e3775.system.entry.js.map +1 -0
  296. package/dist/nano-components/p-b85cf493.system.entry.js +5 -0
  297. package/dist/nano-components/{p-e817ab4a.system.entry.js.map → p-b85cf493.system.entry.js.map} +1 -1
  298. package/dist/nano-components/{p-4e2c0abb.entry.js → p-ccd6c206.entry.js} +2 -2
  299. package/dist/nano-components/p-ccd6c206.entry.js.map +1 -0
  300. package/dist/nano-components/{p-1030797a.entry.js → p-d37e1489.entry.js} +2 -2
  301. package/dist/nano-components/p-d37e1489.entry.js.map +1 -0
  302. package/dist/nano-components/p-da88981f.entry.js +23 -0
  303. package/dist/nano-components/p-da88981f.entry.js.map +1 -0
  304. package/dist/nano-components/p-e8a913ac.system.entry.js +5 -0
  305. package/dist/nano-components/p-e8a913ac.system.entry.js.map +1 -0
  306. package/dist/nano-components/p-ea54ee12.entry.js +5 -0
  307. package/dist/nano-components/p-ea54ee12.entry.js.map +1 -0
  308. package/dist/nano-components/p-faba2fc1.system.entry.js +5 -0
  309. package/dist/nano-components/p-faba2fc1.system.entry.js.map +1 -0
  310. package/dist/nano-components/p-ff026352.system.entry.js +5 -0
  311. package/dist/nano-components/p-ff026352.system.entry.js.map +1 -0
  312. package/dist/types/components/algolia/algolia.d.ts +1 -0
  313. package/dist/types/components/date-input/date-input.d.ts +6 -1
  314. package/dist/types/components/field-validator/field-validator-interface.d.ts +15 -0
  315. package/dist/types/components/field-validator/field-validator.d.ts +16 -19
  316. package/dist/types/components/file-upload/file-upload.d.ts +2 -1
  317. package/dist/types/components/global-search-results/global-search-results.d.ts +1 -0
  318. package/dist/types/components/icon-button/icon-button.d.ts +2 -0
  319. package/dist/types/components/select/select.d.ts +3 -1
  320. package/dist/types/components/tabs/tab.d.ts +1 -0
  321. package/dist/types/components.d.ts +43 -10
  322. package/dist/types/interface.d.ts +1 -0
  323. package/docs-json.json +98 -12
  324. package/docs-vscode.json +1 -1
  325. package/package.json +2 -4
  326. package/dist/cjs/ResizeObserver.es-09b81a1b.js +0 -935
  327. package/dist/cjs/ResizeObserver.es-09b81a1b.js.map +0 -1
  328. package/dist/cjs/date-utils-0ae9a12d.js.map +0 -1
  329. package/dist/cjs/global-0d4f3b77.js.map +0 -1
  330. package/dist/cjs/intersection-observer-1822c787.js +0 -987
  331. package/dist/cjs/intersection-observer-1822c787.js.map +0 -1
  332. package/dist/components/ResizeObserver.es.js +0 -933
  333. package/dist/components/ResizeObserver.es.js.map +0 -1
  334. package/dist/components/intersection-observer.js +0 -985
  335. package/dist/components/intersection-observer.js.map +0 -1
  336. package/dist/esm/ResizeObserver.es-724af9fd.js +0 -933
  337. package/dist/esm/ResizeObserver.es-724af9fd.js.map +0 -1
  338. package/dist/esm/date-utils-e4b757ff.js.map +0 -1
  339. package/dist/esm/global-d5ec4d53.js.map +0 -1
  340. package/dist/esm/intersection-observer-dff9fb5b.js +0 -985
  341. package/dist/esm/intersection-observer-dff9fb5b.js.map +0 -1
  342. package/dist/esm-es5/ResizeObserver.es-724af9fd.js +0 -5
  343. package/dist/esm-es5/ResizeObserver.es-724af9fd.js.map +0 -1
  344. package/dist/esm-es5/date-utils-e4b757ff.js +0 -5
  345. package/dist/esm-es5/date-utils-e4b757ff.js.map +0 -1
  346. package/dist/esm-es5/global-d5ec4d53.js.map +0 -1
  347. package/dist/esm-es5/intersection-observer-dff9fb5b.js +0 -5
  348. package/dist/esm-es5/intersection-observer-dff9fb5b.js.map +0 -1
  349. package/dist/nano-components/p-00eaa36a.entry.js +0 -5
  350. package/dist/nano-components/p-00eaa36a.entry.js.map +0 -1
  351. package/dist/nano-components/p-1030797a.entry.js.map +0 -1
  352. package/dist/nano-components/p-11451a4b.system.entry.js +0 -5
  353. package/dist/nano-components/p-11451a4b.system.entry.js.map +0 -1
  354. package/dist/nano-components/p-11a2dcce.js +0 -5
  355. package/dist/nano-components/p-11a2dcce.js.map +0 -1
  356. package/dist/nano-components/p-1a30dfdd.system.entry.js +0 -5
  357. package/dist/nano-components/p-1a30dfdd.system.entry.js.map +0 -1
  358. package/dist/nano-components/p-1b120f53.entry.js.map +0 -1
  359. package/dist/nano-components/p-222d8095.entry.js +0 -5
  360. package/dist/nano-components/p-241d90eb.system.entry.js +0 -5
  361. package/dist/nano-components/p-241d90eb.system.entry.js.map +0 -1
  362. package/dist/nano-components/p-2c8d7273.entry.js +0 -5
  363. package/dist/nano-components/p-2c8d7273.entry.js.map +0 -1
  364. package/dist/nano-components/p-3093915f.entry.js +0 -5
  365. package/dist/nano-components/p-3093915f.entry.js.map +0 -1
  366. package/dist/nano-components/p-325c1cad.entry.js +0 -5
  367. package/dist/nano-components/p-325c1cad.entry.js.map +0 -1
  368. package/dist/nano-components/p-32f396c0.system.entry.js +0 -5
  369. package/dist/nano-components/p-32f396c0.system.entry.js.map +0 -1
  370. package/dist/nano-components/p-35108e08.entry.js +0 -5
  371. package/dist/nano-components/p-35108e08.entry.js.map +0 -1
  372. package/dist/nano-components/p-3ccb176c.system.entry.js +0 -5
  373. package/dist/nano-components/p-3ccb176c.system.entry.js.map +0 -1
  374. package/dist/nano-components/p-3e930ac7.entry.js.map +0 -1
  375. package/dist/nano-components/p-42cebbfe.system.entry.js +0 -5
  376. package/dist/nano-components/p-42cebbfe.system.entry.js.map +0 -1
  377. package/dist/nano-components/p-45070c8f.entry.js +0 -5
  378. package/dist/nano-components/p-45070c8f.entry.js.map +0 -1
  379. package/dist/nano-components/p-4e2c0abb.entry.js.map +0 -1
  380. package/dist/nano-components/p-5d17cfbb.system.entry.js +0 -23
  381. package/dist/nano-components/p-5d17cfbb.system.entry.js.map +0 -1
  382. package/dist/nano-components/p-5d5ea4ab.system.entry.js +0 -5
  383. package/dist/nano-components/p-5d5ea4ab.system.entry.js.map +0 -1
  384. package/dist/nano-components/p-6d138abf.entry.js +0 -5
  385. package/dist/nano-components/p-6d138abf.entry.js.map +0 -1
  386. package/dist/nano-components/p-71bbb7ba.entry.js +0 -5
  387. package/dist/nano-components/p-71bbb7ba.entry.js.map +0 -1
  388. package/dist/nano-components/p-72ed603c.system.entry.js +0 -5
  389. package/dist/nano-components/p-72ed603c.system.entry.js.map +0 -1
  390. package/dist/nano-components/p-76d9d1d4.entry.js +0 -5
  391. package/dist/nano-components/p-76d9d1d4.entry.js.map +0 -1
  392. package/dist/nano-components/p-88779174.system.entry.js +0 -5
  393. package/dist/nano-components/p-88779174.system.entry.js.map +0 -1
  394. package/dist/nano-components/p-93880c28.system.js.map +0 -1
  395. package/dist/nano-components/p-96150b2c.system.entry.js.map +0 -1
  396. package/dist/nano-components/p-97b13ad2.entry.js +0 -5
  397. package/dist/nano-components/p-97b13ad2.entry.js.map +0 -1
  398. package/dist/nano-components/p-a81db037.entry.js +0 -5
  399. package/dist/nano-components/p-b430a9b6.system.js +0 -5
  400. package/dist/nano-components/p-b430a9b6.system.js.map +0 -1
  401. package/dist/nano-components/p-bc394857.system.entry.js.map +0 -1
  402. package/dist/nano-components/p-bf9aa89d.system.entry.js.map +0 -1
  403. package/dist/nano-components/p-c9a2d24c.entry.js.map +0 -1
  404. package/dist/nano-components/p-d0385948.system.entry.js.map +0 -1
  405. package/dist/nano-components/p-debd9efc.js +0 -5
  406. package/dist/nano-components/p-debd9efc.js.map +0 -1
  407. package/dist/nano-components/p-e195ab77.system.js +0 -5
  408. package/dist/nano-components/p-e195ab77.system.js.map +0 -1
  409. package/dist/nano-components/p-e7140887.system.js +0 -5
  410. package/dist/nano-components/p-e817ab4a.system.entry.js +0 -5
  411. package/dist/nano-components/p-f5d4d13b.system.js +0 -5
  412. package/dist/nano-components/p-f5d4d13b.system.js.map +0 -1
  413. package/dist/nano-components/p-f66958c1.js +0 -5
  414. package/dist/nano-components/p-f66958c1.js.map +0 -1
  415. package/dist/nano-components/p-f710c763.system.entry.js +0 -5
  416. package/dist/nano-components/p-f710c763.system.entry.js.map +0 -1
  417. package/dist/nano-components/p-f9c7d961.js +0 -5
  418. package/dist/nano-components/p-f9c7d961.js.map +0 -1
  419. package/dist/nano-components/p-fc3702a0.system.entry.js +0 -5
  420. package/dist/nano-components/p-ffc2063a.entry.js +0 -23
  421. package/dist/nano-components/p-ffc2063a.entry.js.map +0 -1
  422. package/dist/nano-components/p-fff27907.system.entry.js +0 -5
  423. package/dist/nano-components/p-fff27907.system.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/details/details.scss?tag=nano-details&encapsulation=shadow","src/components/details/details.tsx"],"names":["detailsCss","Details","hostRef","_this","this","slideId","slideIds","stateChanging","isLoading","label","open","noHandle","iconRotation","onKeyDown","ev","key","onMouseDown","prototype","toggleClick","show","hide","nanoClosed","emit","displayTransition","contentEl","then","style","height","nanoOpened","contentArea","scrollHeight","resize","readTask","writeTask","attachRO","ro","ResizeObserver","observe","componentWillLoad","hasStartSlot","el","querySelector","hasEndSlot","setTimeout","componentDidLoad","connectedCallback","mo","MutationObserver","childList","subtree","attributes","disconnectedCallback","disconnect","render","h","Host","class","Object","assign","createColorClasses","color","loaded","onTouchEnd","aria-controls","aria-expanded","display","part","transform","name","ref","div","tabindex","id"],"mappings":"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","sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/form';\n\n:host {\n /**\n * @prop --padding: Default to 1em;\n\n * @prop --btn-padding: Defaults to var(--padding);\n * @prop --btn-bg-color: Defaults to var(--nano-color-contrast, #dad6d3);\n * @prop --btn-bg-color--open: Defaults to var(--nano-color-base, #dad6d3);\n * @prop --btn-bg-color--hover: Defaults to var(--nano-color-tint, #{map.get($colors, offwhite)});\n\n * @prop --btn-text-color: Defaults to var(--nano-color-base, #455556);\n * @prop --btn-text-color--open: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n * @prop --btn-text-color--hover: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n\n * @prop --content-bg-color: Defaults to transparent;\n * @prop --content-text-color: Defaults to #455556;\n * @prop --content-transition: Defaults to height .2s ease-out;\n\n * @prop --border-width: Defaults to none;\n * @prop --border-color: Defaults to none;\n * @prop --border-style: Defaults to none;\n * @prop --border-radius: Defaults to none;\n * @prop --box-shadow: Defaults to none;\n * @prop --focus-style: Defaults to #{$control-focus-style}\n */\n\n @include text-inherit();\n\n --padding: 1em;\n --btn-padding: var(--padding);\n --btn-bg-color: var(--nano-color-contrast, #dad6d3);\n --btn-bg-color--open: var(--nano-color-base, #dad6d3);\n --btn-bg-color--hover: var(--nano-color-tint, #{map.get($colors, offwhite)});\n --btn-text-color: var(--nano-color-base, #455556);\n --btn-text-color--open: var(--nano-color-contrast, var(--btn-text-color));\n --btn-text-color--hover: var(--nano-color-contrast, var(--btn-text-color));\n --content-bg-color: transparent;\n --content-text-color: #455556;\n --content-transition: height 0.2s ease-out;\n --border-width: none;\n --border-color: none;\n --border-style: none;\n --border-radius: none;\n --box-shadow: none;\n --focus-style: #{$control-focus-style};\n\n display: block;\n border-style: var(--border-style);\n border-width: var(--border-width-dims);\n border-color: var(--border-color);\n border-radius: var(--border-radius-dims);\n box-shadow: var(--box-shadow);\n}\n\n:host(:last-of-type) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n --border-radius-dims: 0 0 var(--border-radius) var(--border-radius);\n\n .open .content {\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n }\n}\n\n:host(:first-of-type) {\n --border-radius-dims: var(--border-radius) var(--border-radius) 0 0;\n --border-width-dims: var(--border-width);\n}\n\n:host(:first-of-type:last-of-type) {\n --border-radius-dims: var(--border-radius);\n --border-width-dims: var(--border-width);\n}\n\n:host(:not(:last-of-type):not(:first-of-type)) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n}\n\n:host(.nano-color) {\n --btn-bg-color: var(--nano-color-contrast, #{nano-color(primary, contrast)});\n --btn-bg-color--open: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-bg-color--hover: var(--nano-color-tint, #{nano-color(primary, tint)});\n --btn-text-color: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-text-color--open:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n --btn-text-color--hover:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n}\n\nbutton {\n @include input-cover;\n\n padding: var(--btn-padding);\n text-align: inherit;\n position: relative;\n font-size: 1em;\n margin: 0;\n transition: 0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;\n display: flex;\n align-items: center;\n background: var(--btn-bg-color);\n color: var(--btn-text-color);\n border-radius: var(--border-radius-dims);\n\n &:focus {\n box-shadow: var(--focus-style);\n outline: none;\n position: relative;\n z-index: 1;\n }\n\n :hover & {\n background: var(--btn-bg-color--hover);\n color: var(--btn-text-color--hover);\n }\n\n .open & {\n background: var(--btn-bg-color--open);\n color: var(--btn-text-color--open);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .label {\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n flex: 1;\n display: inline-block;\n }\n\n .icon {\n line-height: 0;\n flex-direction: column;\n justify-content: center;\n display: inline-block;\n color: currentColor;\n transition: 0.3s ease transform;\n transform-origin: center;\n\n &--start {\n @include margin(0, var(--padding), 0, 0);\n }\n\n &--end {\n @include margin(0, 0, 0, var(--padding));\n }\n\n ::slotted(nano-icon) {\n --color: 'currentColor';\n }\n }\n}\n\n.content {\n color: var(--content-text-color);\n background: var(--content-bg-color);\n height: 0;\n overflow: hidden;\n transition: 0.2s ease border-radius;\n outline: none;\n\n .loaded & {\n transition: var(--content-transition), 0.2s ease border-radius;\n }\n\n > * {\n opacity: 0;\n transition: opacity 0.2s ease-out;\n\n .open & {\n opacity: 1;\n }\n }\n\n &__area {\n padding: var(--padding);\n }\n}\n","import {\n Component,\n Event,\n EventEmitter,\n Prop,\n h,\n Element,\n Watch,\n Host,\n State,\n writeTask,\n readTask,\n} from '@stencil/core';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { Color } from '../../interface';\nimport { createColorClasses } from '../../utils/theme';\nimport { displayTransition } from '../../utils';\n\n/**\n * A simple element used to hide or reveal more content with slide effect. Can be used independently or nested within a [accordion](story/components-accordion--accordion) element to add 'one item open at a time' support.\n */\n/**\n * @slot - content that will be hidden / revealed\n * @slot icon-start - used for icons at the start of the handle\n * @slot label - can be used when you wish to insert complex label markup\n * @slot icon-end - used for icons at the end of the handle\n * @part button - the main details ui control\n * @part label - the text wrapper of the ui control\n * @part icon--start - the icon wrapper at the start of the ui control\n * @part icon--end - the icon wrapper at the end of the ui control\n * @part content - the main content wrapper\n */\n@Component({\n tag: 'nano-details',\n styleUrl: 'details.scss',\n shadow: true,\n})\nexport class Details {\n private hasStartSlot: boolean;\n private hasEndSlot: boolean;\n private slideId = `nano-details-${slideIds++}`;\n private mo?: MutationObserver;\n private ro?: ResizeObserver;\n private contentArea: HTMLDivElement;\n private stateChanging: boolean = false;\n\n @State() isLoading = true;\n\n @Element() private el: HTMLNanoDetailsElement;\n\n private contentEl: HTMLElement;\n\n /**\n * Button / handle text to be used if no complex markup required.\n * Otherwise use label slot.\n */\n @Prop() label: string = '';\n\n /**\n * Should item be open on load\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Have no handle - you will need to control the hiding / showing of content with script\n */\n @Prop() noHandle: boolean = false;\n\n /**\n * Icon slot rotation amount (degrees) on open\n */\n @Prop() iconRotation: number = 90;\n\n /**\n * Color to use from your application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * Emitted when the component opens.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoOpened: EventEmitter;\n\n /**\n * Emitted when the component closes.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoClosed: EventEmitter;\n\n @Watch('open')\n toggleClick() {\n this.stateChanging = true;\n if (this.open) this.show();\n else this.hide();\n }\n\n private onKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.open = !this.open;\n break;\n }\n };\n\n private onMouseDown = () => {\n if (this.stateChanging) return;\n this.open = !this.open;\n };\n\n private hide() {\n this.nanoClosed.emit(this.open);\n displayTransition(this.contentEl, 'is-shown', false).then(\n () => (this.stateChanging = false)\n );\n this.contentEl.style.height = '0px';\n }\n\n private show() {\n this.nanoOpened.emit();\n displayTransition(this.contentEl, 'is-shown', true).then(() => {\n this.stateChanging = false;\n });\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n }\n\n private resize() {\n if (\n !this.open ||\n !this.contentArea ||\n !this.contentEl ||\n this.stateChanging\n )\n return;\n readTask(() => {\n if (this.contentArea.scrollHeight > 0) {\n writeTask(() => {\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n });\n }\n });\n }\n\n private attachRO() {\n if (this.ro || !this.contentArea) return;\n\n const ro = (this.ro = new ResizeObserver(() => this.resize()));\n ro.observe(this.contentArea);\n }\n\n componentWillLoad() {\n this.hasStartSlot = !!this.el.querySelector('[slot=\"icon-start\"]');\n this.hasEndSlot = !!this.el.querySelector('[slot=\"icon-end\"]');\n setTimeout(() => {\n this.isLoading = false;\n }, 100);\n }\n\n componentDidLoad() {\n if (this.open) {\n // disable animation on start\n setTimeout(() => {\n this.show();\n }, 0);\n }\n this.attachRO();\n }\n\n connectedCallback() {\n const mo = (this.mo = new MutationObserver(() => this.resize()));\n mo.observe(this.el, { childList: true, subtree: true, attributes: false });\n this.attachRO();\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div\n class={{\n open: this.open,\n loaded: !this.isLoading,\n }}\n >\n <button\n onKeyDown={this.onKeyDown}\n onMouseDown={this.onMouseDown}\n onTouchEnd={this.onMouseDown}\n aria-controls={this.slideId}\n aria-expanded={this.open ? 'true' : 'false'}\n style={{ display: this.noHandle ? 'none' : '' }}\n part=\"button\"\n >\n {this.hasStartSlot ? (\n <span\n part=\"icon--start\"\n class=\"icon icon--start\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-start\" />\n </span>\n ) : (\n ''\n )}\n <div class=\"label\" part=\"label\">\n {this.label ? this.label : <slot name=\"label\" />}\n </div>\n {this.hasEndSlot ? (\n <span\n part=\"icon--end\"\n class=\"icon icon--end\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-end\" />\n </span>\n ) : (\n ''\n )}\n </button>\n <div\n class=\"content\"\n ref={(div) => (this.contentEl = div)}\n tabindex=\"-1\"\n id={this.slideId}\n part=\"content\"\n >\n <div ref={(div) => (this.contentArea = div)} class=\"content__area\">\n <slot />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\nlet slideIds = 0;\n"]}
1
+ {"version":3,"sources":["src/components/details/details.scss?tag=nano-details&encapsulation=shadow","src/components/details/details.tsx"],"names":["detailsCss","Details","hostRef","_this","this","slideId","slideIds","stateChanging","isLoading","label","open","noHandle","iconRotation","onKeyDown","ev","key","onMouseDown","prototype","toggleClick","show","hide","nanoClosed","emit","displayTransition","contentEl","then","style","height","nanoOpened","contentArea","scrollHeight","resize","readTask","writeTask","attachRO","ro","ResizeObserver","observe","componentWillLoad","hasStartSlot","el","querySelector","hasEndSlot","setTimeout","componentDidLoad","connectedCallback","mo","MutationObserver","childList","subtree","attributes","disconnectedCallback","disconnect","render","h","Host","class","Object","assign","createColorClasses","color","loaded","onTouchEnd","aria-controls","aria-expanded","display","part","transform","name","ref","div","tabindex","id"],"mappings":"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","sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/form';\n\n:host {\n /**\n * @prop --padding: Default to 1em;\n\n * @prop --btn-padding: Defaults to var(--padding);\n * @prop --btn-bg-color: Defaults to var(--nano-color-contrast, #dad6d3);\n * @prop --btn-bg-color--open: Defaults to var(--nano-color-base, #dad6d3);\n * @prop --btn-bg-color--hover: Defaults to var(--nano-color-tint, #{map.get($colors, offwhite)});\n\n * @prop --btn-text-color: Defaults to var(--nano-color-base, #455556);\n * @prop --btn-text-color--open: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n * @prop --btn-text-color--hover: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n\n * @prop --content-bg-color: Defaults to transparent;\n * @prop --content-text-color: Defaults to #455556;\n * @prop --content-transition: Defaults to height .2s ease-out;\n\n * @prop --border-width: Defaults to none;\n * @prop --border-color: Defaults to none;\n * @prop --border-style: Defaults to none;\n * @prop --border-radius: Defaults to none;\n * @prop --box-shadow: Defaults to none;\n * @prop --focus-style: Defaults to #{$control-focus-style}\n */\n\n @include text-inherit();\n\n --padding: 1em;\n --btn-padding: var(--padding);\n --btn-bg-color: var(--nano-color-contrast, #dad6d3);\n --btn-bg-color--open: var(--nano-color-base, #dad6d3);\n --btn-bg-color--hover: var(--nano-color-tint, #{map.get($colors, offwhite)});\n --btn-text-color: var(--nano-color-base, #455556);\n --btn-text-color--open: var(--nano-color-contrast, var(--btn-text-color));\n --btn-text-color--hover: var(--nano-color-contrast, var(--btn-text-color));\n --content-bg-color: transparent;\n --content-text-color: #455556;\n --content-transition: height 0.2s ease-out;\n --border-width: none;\n --border-color: none;\n --border-style: none;\n --border-radius: none;\n --box-shadow: none;\n --focus-style: #{$control-focus-style};\n\n display: block;\n border-style: var(--border-style);\n border-width: var(--border-width-dims);\n border-color: var(--border-color);\n border-radius: var(--border-radius-dims);\n box-shadow: var(--box-shadow);\n}\n\n:host(:last-of-type) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n --border-radius-dims: 0 0 var(--border-radius) var(--border-radius);\n\n .open .content {\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n }\n}\n\n:host(:first-of-type) {\n --border-radius-dims: var(--border-radius) var(--border-radius) 0 0;\n --border-width-dims: var(--border-width);\n}\n\n:host(:first-of-type:last-of-type) {\n --border-radius-dims: var(--border-radius);\n --border-width-dims: var(--border-width);\n}\n\n:host(:not(:last-of-type):not(:first-of-type)) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n}\n\n:host(.nano-color) {\n --btn-bg-color: var(--nano-color-contrast, #{nano-color(primary, contrast)});\n --btn-bg-color--open: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-bg-color--hover: var(--nano-color-tint, #{nano-color(primary, tint)});\n --btn-text-color: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-text-color--open:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n --btn-text-color--hover:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n}\n\nbutton {\n @include input-cover;\n\n padding: var(--btn-padding);\n text-align: inherit;\n position: relative;\n font-size: 1em;\n margin: 0;\n transition: 0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;\n display: flex;\n align-items: center;\n background: var(--btn-bg-color);\n color: var(--btn-text-color);\n border-radius: var(--border-radius-dims);\n\n &:focus {\n box-shadow: var(--focus-style);\n outline: none;\n position: relative;\n z-index: 1;\n }\n\n :hover & {\n background: var(--btn-bg-color--hover);\n color: var(--btn-text-color--hover);\n }\n\n .open & {\n background: var(--btn-bg-color--open);\n color: var(--btn-text-color--open);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .label {\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n flex: 1;\n display: inline-block;\n }\n\n .icon {\n line-height: 0;\n flex-direction: column;\n justify-content: center;\n display: inline-block;\n color: currentColor;\n transition: 0.3s ease transform;\n transform-origin: center;\n\n &--start {\n @include margin(0, var(--padding), 0, 0);\n }\n\n &--end {\n @include margin(0, 0, 0, var(--padding));\n }\n\n ::slotted(nano-icon) {\n --color: 'currentColor';\n }\n }\n}\n\n.content {\n color: var(--content-text-color);\n background: var(--content-bg-color);\n height: 0;\n overflow: hidden;\n transition: 0.2s ease border-radius;\n outline: none;\n\n .loaded & {\n transition: var(--content-transition), 0.2s ease border-radius;\n }\n\n > * {\n opacity: 0;\n transition: opacity 0.2s ease-out;\n\n .open & {\n opacity: 1;\n }\n }\n\n &__area {\n padding: var(--padding);\n }\n}\n","import {\n Component,\n Event,\n EventEmitter,\n Prop,\n h,\n Element,\n Watch,\n Host,\n State,\n writeTask,\n readTask,\n} from '@stencil/core';\nimport { Color } from '../../interface';\nimport { createColorClasses } from '../../utils/theme';\nimport { displayTransition } from '../../utils';\n\n/**\n * A simple element used to hide or reveal more content with slide effect. Can be used independently or nested within a [accordion](story/components-accordion--accordion) element to add 'one item open at a time' support.\n */\n/**\n * @slot - content that will be hidden / revealed\n * @slot icon-start - used for icons at the start of the handle\n * @slot label - can be used when you wish to insert complex label markup\n * @slot icon-end - used for icons at the end of the handle\n * @part button - the main details ui control\n * @part label - the text wrapper of the ui control\n * @part icon--start - the icon wrapper at the start of the ui control\n * @part icon--end - the icon wrapper at the end of the ui control\n * @part content - the main content wrapper\n */\n@Component({\n tag: 'nano-details',\n styleUrl: 'details.scss',\n shadow: true,\n})\nexport class Details {\n private hasStartSlot: boolean;\n private hasEndSlot: boolean;\n private slideId = `nano-details-${slideIds++}`;\n private mo?: MutationObserver;\n private ro?: ResizeObserver;\n private contentArea: HTMLDivElement;\n private stateChanging: boolean = false;\n\n @State() isLoading = true;\n\n @Element() private el: HTMLNanoDetailsElement;\n\n private contentEl: HTMLElement;\n\n /**\n * Button / handle text to be used if no complex markup required.\n * Otherwise use label slot.\n */\n @Prop() label: string = '';\n\n /**\n * Should item be open on load\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Have no handle - you will need to control the hiding / showing of content with script\n */\n @Prop() noHandle: boolean = false;\n\n /**\n * Icon slot rotation amount (degrees) on open\n */\n @Prop() iconRotation: number = 90;\n\n /**\n * Color to use from your application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * Emitted when the component opens.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoOpened: EventEmitter;\n\n /**\n * Emitted when the component closes.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoClosed: EventEmitter;\n\n @Watch('open')\n toggleClick() {\n this.stateChanging = true;\n if (this.open) this.show();\n else this.hide();\n }\n\n private onKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.open = !this.open;\n break;\n }\n };\n\n private onMouseDown = () => {\n if (this.stateChanging) return;\n this.open = !this.open;\n };\n\n private hide() {\n this.nanoClosed.emit(this.open);\n displayTransition(this.contentEl, 'is-shown', false).then(\n () => (this.stateChanging = false)\n );\n this.contentEl.style.height = '0px';\n }\n\n private show() {\n this.nanoOpened.emit();\n displayTransition(this.contentEl, 'is-shown', true).then(() => {\n this.stateChanging = false;\n });\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n }\n\n private resize() {\n if (\n !this.open ||\n !this.contentArea ||\n !this.contentEl ||\n this.stateChanging\n )\n return;\n readTask(() => {\n if (this.contentArea.scrollHeight > 0) {\n writeTask(() => {\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n });\n }\n });\n }\n\n private attachRO() {\n if (this.ro || !this.contentArea) return;\n\n const ro = (this.ro = new ResizeObserver(() => this.resize()));\n ro.observe(this.contentArea);\n }\n\n componentWillLoad() {\n this.hasStartSlot = !!this.el.querySelector('[slot=\"icon-start\"]');\n this.hasEndSlot = !!this.el.querySelector('[slot=\"icon-end\"]');\n setTimeout(() => {\n this.isLoading = false;\n }, 100);\n }\n\n componentDidLoad() {\n if (this.open) {\n // disable animation on start\n setTimeout(() => {\n this.show();\n }, 0);\n }\n this.attachRO();\n }\n\n connectedCallback() {\n const mo = (this.mo = new MutationObserver(() => this.resize()));\n mo.observe(this.el, { childList: true, subtree: true, attributes: false });\n this.attachRO();\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div\n class={{\n open: this.open,\n loaded: !this.isLoading,\n }}\n >\n <button\n onKeyDown={this.onKeyDown}\n onMouseDown={this.onMouseDown}\n onTouchEnd={this.onMouseDown}\n aria-controls={this.slideId}\n aria-expanded={this.open ? 'true' : 'false'}\n style={{ display: this.noHandle ? 'none' : '' }}\n part=\"button\"\n >\n {this.hasStartSlot ? (\n <span\n part=\"icon--start\"\n class=\"icon icon--start\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-start\" />\n </span>\n ) : (\n ''\n )}\n <div class=\"label\" part=\"label\">\n {this.label ? this.label : <slot name=\"label\" />}\n </div>\n {this.hasEndSlot ? (\n <span\n part=\"icon--end\"\n class=\"icon icon--end\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-end\" />\n </span>\n ) : (\n ''\n )}\n </button>\n <div\n class=\"content\"\n ref={(div) => (this.contentEl = div)}\n tabindex=\"-1\"\n id={this.slideId}\n part=\"content\"\n >\n <div ref={(div) => (this.contentArea = div)} class=\"content__area\">\n <slot />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\nlet slideIds = 0;\n"]}
@@ -1,5 +1,5 @@
1
1
  var __awaiter=this&&this.__awaiter||function(e,t,r,n){function i(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,a){function s(e){try{u(n.next(e))}catch(t){a(t)}}function o(e){try{u(n["throw"](e))}catch(t){a(t)}}function u(e){e.done?r(e.value):i(e.value).then(s,o)}u((n=n.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,s;return s={next:o(0),throw:o(1),return:o(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function o(e){return function(t){return u([e,t])}}function u(s){if(n)throw new TypeError("Generator is already executing.");while(r)try{if(n=1,i&&(a=s[0]&2?i["return"]:s[0]?i["throw"]||((a=i["return"])&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;if(i=0,a)s=[s[0]&2,a.value];switch(s[0]){case 0:case 1:a=s;break;case 4:r.label++;return{value:s[1],done:false};case 5:r.label++;i=s[1];s=[0];continue;case 7:s=r.ops.pop();r.trys.pop();continue;default:if(!(a=r.trys,a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){r.label=s[1];break}if(s[0]===6&&r.label<a[1]){r.label=a[1];a=s;break}if(a&&r.label<a[2]){r.label=a[2];r.ops.push(s);break}if(a[2])r.ops.pop();r.trys.pop();continue}s=t.call(e,r)}catch(o){s=[6,o];i=0}finally{n=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(e,t){for(var r=0,n=t.length,i=e.length;r<n;r++,i++)e[i]=t[r];return e};
2
2
  /*!
3
3
  * Web Components for Nanopore digital Web Apps
4
- */import{k as getRenderingRef,j as forceUpdate,r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-c42becad.js";var appendToMap=function(e,t,r){var n=e.get(t);if(!n){e.set(t,[r])}else if(!n.includes(r)){n.push(r)}};var debounce=function(e,t){var r;return function(){var n=[];for(var i=0;i<arguments.length;i++){n[i]=arguments[i]}if(r){clearTimeout(r)}r=setTimeout((function(){r=0;e.apply(void 0,n)}),t)}};var isConnected=function(e){return!("isConnected"in e)||e.isConnected};var cleanupElements=debounce((function(e){for(var t=0,r=e.keys();t<r.length;t++){var n=r[t];e.set(n,e.get(n).filter(isConnected))}}),2e3);var stencilSubscription=function(){if(typeof getRenderingRef!=="function"){return{}}var e=new Map;return{dispose:function(){return e.clear()},get:function(t){var r=getRenderingRef();if(r){appendToMap(e,t,r)}},set:function(t){var r=e.get(t);if(r){e.set(t,r.filter(forceUpdate))}cleanupElements(e)},reset:function(){e.forEach((function(e){return e.forEach(forceUpdate)}));cleanupElements(e)}}};var createObservableMap=function(e,t){if(t===void 0){t=function(e,t){return e!==t}}var r=new Map(Object.entries(e!==null&&e!==void 0?e:{}));var n={dispose:[],get:[],set:[],reset:[]};var i=function(){r=new Map(Object.entries(e!==null&&e!==void 0?e:{}));n.reset.forEach((function(e){return e()}))};var a=function(){n.dispose.forEach((function(e){return e()}));i()};var s=function(e){n.get.forEach((function(t){return t(e)}));return r.get(e)};var o=function(e,i){var a=r.get(e);if(t(i,a,e)){r.set(e,i);n.set.forEach((function(t){return t(e,i,a)}))}};var u=typeof Proxy==="undefined"?{}:new Proxy(e,{get:function(e,t){return s(t)},ownKeys:function(e){return Array.from(r.keys())},getOwnPropertyDescriptor:function(){return{enumerable:true,configurable:true}},has:function(e,t){return r.has(t)},set:function(e,t,r){o(t,r);return true}});var l=function(e,t){n[e].push(t);return function(){removeFromArray(n[e],t)}};var c=function(t,r){var n=l("set",(function(e,n){if(e===t){r(n)}}));var i=l("reset",(function(){return r(e[t])}));return function(){n();i()}};var f=function(){var e=[];for(var t=0;t<arguments.length;t++){e[t]=arguments[t]}var r=e.reduce((function(e,t){if(t.set){e.push(l("set",t.set))}if(t.get){e.push(l("get",t.get))}if(t.reset){e.push(l("reset",t.reset))}if(t.dispose){e.push(l("dispose",t.dispose))}return e}),[]);return function(){return r.forEach((function(e){return e()}))}};var h=function(e){var t=r.get(e);n.set.forEach((function(r){return r(e,t,t)}))};return{state:u,get:s,set:o,on:l,onChange:c,use:f,dispose:a,reset:i,forceUpdate:h}};var removeFromArray=function(e,t){var r=e.indexOf(t);if(r>=0){e[r]=e[e.length-1];e.length--}};var createStore=function(e,t){var r=createObservableMap(e,t);r.use(stencilSubscription());return r};var FieldValidator=function(){function e(e){var t=this;registerInstance(this,e);this.nanoPayloadChange=createEvent(this,"nanoPayloadChange",7);this.nanoSubmit=createEvent(this,"nanoSubmit",7);this.nanoInvalid=createEvent(this,"nanoInvalid",7);this.submitted=false;this.fields=[];this.internalValidate=false;this.validateOn="submitThenDirty";this.scrollToInvalid=true;this._dirty=false;this.handleStoreChange=function(e,r){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(e){switch(e.label){case 0:if(!(this.validateOn==="dirty"&&this.dirty))return[3,2];this.internalValidate=true;return[4,this.validateAllFields()];case 1:e.sent();this._valid=this.activeForm.checkValidity();this.internalValidate=false;e.label=2;case 2:this.nanoPayloadChange.emit(this.store.state);return[2]}}))}))};this.handleFieldChange=function(e){t._dirty=true;t.setFieldValue([e.target])};this.handleFormInvalid=function(e){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:e.preventDefault();this._valid=false;if(this.internalValidate)return[2];if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;return[4,this.validateAllFields()];case 1:t.sent();if(this.validateOn==="submit"){this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(this._valid){this.submitForm();return[2]}}this.scrollToFirstInvalid();this.nanoInvalid.emit();return[2]}}))}))};this.handleSubmit=function(e){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:e.preventDefault();if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;return[4,this.validateAllFields()];case 1:t.sent();this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(!this._valid){this.scrollToFirstInvalid();return[2]}this.submitForm();return[2]}}))}))}}e.prototype.userFormChange=function(){if(!!this.userForm)this.activeForm=this.userForm};Object.defineProperty(e.prototype,"activeForm",{get:function(){return this._activeForm},set:function(e){if(this._activeForm)this._activeForm.removeEventListener("invalid",this.handleFormInvalid,true);if(e)e.addEventListener("invalid",this.handleFormInvalid,true);this._activeForm=e},enumerable:false,configurable:true});e.prototype.validateOnChange=function(){var e=this;this.fields.forEach((function(t){if(t.tagName==="NANO-CHECKBOX"){var r=t.closest("nano-checkbox-group");if(r)r.validateOn=e.validateOn}else{t.validateOn=e.validateOn}}))};Object.defineProperty(e.prototype,"dirty",{get:function(){return this._dirty},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"valid",{get:function(){return this._valid},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"payload",{get:function(){return this.store.state},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"showValidation",{get:function(){return this.validateOn==="dirty"&&this.dirty||this.submitted},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"validationState",{get:function(){var e=this;var t=[];this.fields.forEach((function(r){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(n){e=t.find((function(e){return e.name===r.name}));if(e){e.validityMessage=r.validityMessage.length?r.validityMessage:e.validityMessage;if(!e.fields.find((function(e){return e===r})))e.fields.push(r);if(e.valid&&r.invalid)e.valid=false;return[2]}t.push({fields:[r],name:r.name,valid:!r.invalid,value:this.store.state[r.name],dirty:false,validityMessage:r.validityMessage});return[2]}))}))}));return t},enumerable:false,configurable:true});e.prototype.attachSlotObserver=function(){var e=this;if(!!this.mo)return;var t=this.mo=new MutationObserver((function(t){var r=e.host.querySelector("form");if(r!==e.activeForm)e.activeForm=r;e.setupFields()}));t.observe(this.host,{childList:true,attributes:true,attributeFilter:["name"],subtree:true})};e.prototype.setupFields=function(){var e=this;var t=Array.from(this.host.querySelectorAll("\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n "));t=t.filter((function(e){return!!e.name&&!!e.name.length}));if(!t.filter((function(t){return!e.fields.includes(t)})).length)return;this.fields=t;this.validateOnChange();this.setFieldValue(this.fields);this.nanoPayloadChange.emit(this.store.state)};e.prototype.setFieldValue=function(e){var t=this;e.forEach((function(e){var r=e.name;if(!r.length)return;switch(e.tagName){case"NANO-CHECKBOX":var n=e;if(n.type==="radio"||n.type==="segment"||n.type==="segment-pill"){if(n.checked)t.store.state[r]=n.value;else if(!n.checked&&n.value===t.store.state[r])t.store.state[r]=""}else if(t.fields.filter((function(e){return e.name===r&&e.tagName==="NANO-CHECKBOX"})).length>1){var i=Array.isArray(t.store.state[r])?t.store.state[r]:[];if(n.checked){if(!t.store.state[r].includes(n.value)){t.store.state[r]=__spreadArray(__spreadArray([],i),[n.value])}}else{t.store.state[r]=i.filter((function(e){return e!==n.value}))}}else t.store.state[r]=n.value;break;case"NANO-FILE-UPLOAD":t.store.state[r]=e.files;break;default:t.store.state[r]=e.value;break}}))};e.prototype.validate=function(e,t){return __awaiter(this,void 0,void 0,(function(){var r;var n=this;return __generator(this,(function(i){switch(i.label){case 0:if(!this.validation)return[2];r=this.validation(e,t,this.store.state);if(!r)return[2];return[4,Promise.all(Object.entries(r).map((function(e){var t=e[0],r=e[1];return __awaiter(n,void 0,void 0,(function(){var e,n,i;return __generator(this,(function(a){switch(a.label){case 0:e=this.fields.find((function(e){return e.name===t}));n=e;if(e.tagName==="NANO-CHECKBOX"){i=e.closest("nano-checkbox-group");n=i||e}if(!(n.validityMessage===r.msg&&r.valid))return[3,2];return[4,this.setFieldError(n,"")];case 1:a.sent();return[3,4];case 2:if(!!r.valid)return[3,4];return[4,this.setFieldError(n,r.msg)];case 3:a.sent();a.label=4;case 4:return[2]}}))}))})))];case 1:i.sent();return[2]}}))}))};e.prototype.setFieldError=function(e,t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(r){switch(r.label){case 0:if(!e["showError"])return[3,2];return[4,e.showError(t)];case 1:r.sent();return[3,4];case 2:return[4,e.setError(t)];case 3:r.sent();r.label=4;case 4:return[2]}}))}))};e.prototype.validateAllFields=function(){return __awaiter(this,void 0,void 0,(function(){var e=this;return __generator(this,(function(t){switch(t.label){case 0:return[4,Object.entries(this.store.state).reduce((function(t,r){var n=r[0],i=r[1];return __awaiter(e,void 0,void 0,(function(){return __generator(this,(function(e){switch(e.label){case 0:return[4,t];case 1:e.sent();return[4,this.validate(n,i)];case 2:e.sent();return[2]}}))}))}),undefined)];case 1:t.sent();return[2]}}))}))};e.prototype.scrollToFirstInvalid=function(){var e=this;if(!this.scrollToInvalid)return;setTimeout((function(){var t=e.validationState.find((function(e){return!e.valid}));if(!t)return;t.fields[0].scrollIntoView({behavior:"smooth",block:"nearest"})}),200)};e.prototype.submitForm=function(){var e=this.nanoSubmit.emit();if(e.defaultPrevented)return;this.activeForm.submit()};e.prototype.connectedCallback=function(){this.userForm=this.host.querySelector("form")};e.prototype.componentDidLoad=function(){var e=this;requestAnimationFrame((function(){e.store=createStore({});e.setupFields();e.attachSlotObserver();e.store.on("set",(function(t,r){return e.handleStoreChange(t,r)}));e.host.addEventListener("nanoChange",e.handleFieldChange);e.host.addEventListener("submit",e.handleSubmit)}))};e.prototype.disconnectedCallback=function(){if(this.mo)this.mo.disconnect();this.store.dispose();this.host.removeEventListener("nanoChange",this.handleFieldChange);this.host.removeEventListener("submit",this.handleSubmit);if(this.activeForm)this.activeForm.removeEventListener("invalid",this.handleFormInvalid,true)};e.prototype.render=function(){var e=this;return h(Host,null,this.userForm&&h("slot",null),!this.userForm&&h("form",{ref:function(t){return e.activeForm=t}},h("slot",null)))};Object.defineProperty(e.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{userForm:["userFormChange"],validateOn:["validateOnChange"]}},enumerable:false,configurable:true});return e}();export{FieldValidator as nano_field_validator};
4
+ */import{k as getRenderingRef,j as forceUpdate,r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-c42becad.js";var appendToMap=function(e,t,r){var n=e.get(t);if(!n){e.set(t,[r])}else if(!n.includes(r)){n.push(r)}};var debounce=function(e,t){var r;return function(){var n=[];for(var i=0;i<arguments.length;i++){n[i]=arguments[i]}if(r){clearTimeout(r)}r=setTimeout((function(){r=0;e.apply(void 0,n)}),t)}};var isConnected=function(e){return!("isConnected"in e)||e.isConnected};var cleanupElements=debounce((function(e){for(var t=0,r=e.keys();t<r.length;t++){var n=r[t];e.set(n,e.get(n).filter(isConnected))}}),2e3);var stencilSubscription=function(){if(typeof getRenderingRef!=="function"){return{}}var e=new Map;return{dispose:function(){return e.clear()},get:function(t){var r=getRenderingRef();if(r){appendToMap(e,t,r)}},set:function(t){var r=e.get(t);if(r){e.set(t,r.filter(forceUpdate))}cleanupElements(e)},reset:function(){e.forEach((function(e){return e.forEach(forceUpdate)}));cleanupElements(e)}}};var createObservableMap=function(e,t){if(t===void 0){t=function(e,t){return e!==t}}var r=new Map(Object.entries(e!==null&&e!==void 0?e:{}));var n={dispose:[],get:[],set:[],reset:[]};var i=function(){r=new Map(Object.entries(e!==null&&e!==void 0?e:{}));n.reset.forEach((function(e){return e()}))};var a=function(){n.dispose.forEach((function(e){return e()}));i()};var s=function(e){n.get.forEach((function(t){return t(e)}));return r.get(e)};var o=function(e,i){var a=r.get(e);if(t(i,a,e)){r.set(e,i);n.set.forEach((function(t){return t(e,i,a)}))}};var u=typeof Proxy==="undefined"?{}:new Proxy(e,{get:function(e,t){return s(t)},ownKeys:function(e){return Array.from(r.keys())},getOwnPropertyDescriptor:function(){return{enumerable:true,configurable:true}},has:function(e,t){return r.has(t)},set:function(e,t,r){o(t,r);return true}});var l=function(e,t){n[e].push(t);return function(){removeFromArray(n[e],t)}};var c=function(t,r){var n=l("set",(function(e,n){if(e===t){r(n)}}));var i=l("reset",(function(){return r(e[t])}));return function(){n();i()}};var f=function(){var e=[];for(var t=0;t<arguments.length;t++){e[t]=arguments[t]}var r=e.reduce((function(e,t){if(t.set){e.push(l("set",t.set))}if(t.get){e.push(l("get",t.get))}if(t.reset){e.push(l("reset",t.reset))}if(t.dispose){e.push(l("dispose",t.dispose))}return e}),[]);return function(){return r.forEach((function(e){return e()}))}};var h=function(e){var t=r.get(e);n.set.forEach((function(r){return r(e,t,t)}))};return{state:u,get:s,set:o,on:l,onChange:c,use:f,dispose:a,reset:i,forceUpdate:h}};var removeFromArray=function(e,t){var r=e.indexOf(t);if(r>=0){e[r]=e[e.length-1];e.length--}};var createStore=function(e,t){var r=createObservableMap(e,t);r.use(stencilSubscription());return r};var FieldValidator=function(){function e(e){var t=this;registerInstance(this,e);this.nanoPayloadChange=createEvent(this,"nanoPayloadChange",7);this.nanoSubmit=createEvent(this,"nanoSubmit",7);this.nanoInvalid=createEvent(this,"nanoInvalid",7);this.submitted=false;this.fields=[];this.internalValidate=false;this.validateOn="submitThenDirty";this.scrollToInvalid=true;this._dirty=false;this.handleStoreChange=function(e,r){return __awaiter(t,void 0,void 0,(function(){var t;return __generator(this,(function(n){switch(n.label){case 0:t=this.fields.find((function(t){return t.name===e}));if(t&&t.value!==r)this.storeToFields([t]);if(!(this.validateOn==="dirty"&&this.dirty))return[3,2];this.internalValidate=true;return[4,this.validateAllFields()];case 1:n.sent();this._valid=this.activeForm.checkValidity();this.internalValidate=false;n.label=2;case 2:this.nanoPayloadChange.emit(this._store.state);return[2]}}))}))};this.handleFieldChange=function(e){t._dirty=true;t.fieldsToStore([e.target])};this.handleFormInvalid=function(e){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:e.preventDefault();this._valid=false;if(this.internalValidate)return[2];if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;return[4,this.validateAllFields()];case 1:t.sent();this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(this.validateOn==="submit"){if(this._valid){this.submitForm();return[2]}}this.scrollToFirstInvalid();this.nanoInvalid.emit();return[2]}}))}))};this.handleSubmit=function(e){return __awaiter(t,void 0,void 0,(function(){return __generator(this,(function(t){switch(t.label){case 0:e.preventDefault();if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this.submitted=true;return[4,this.validateAllFields()];case 1:t.sent();this.internalValidate=true;this._valid=this.activeForm.checkValidity();this.internalValidate=false;if(!this._valid){this.scrollToFirstInvalid();return[2]}this.submitForm();return[2]}}))}))}}e.prototype.userFormChange=function(){if(!!this.userForm)this.activeForm=this.userForm};Object.defineProperty(e.prototype,"activeForm",{get:function(){return this._activeForm},set:function(e){if(!e)return;if(this._activeForm){this._activeForm.removeEventListener("invalid",this.handleFormInvalid,true)}e.addEventListener("invalid",this.handleFormInvalid,true);this._activeForm=e},enumerable:false,configurable:true});e.prototype.validateOnChange=function(){var e=this;this.fields.forEach((function(t){if(t.tagName==="NANO-CHECKBOX"){var r=t.closest("nano-checkbox-group");if(r)r.validateOn=e.validateOn}else{t.validateOn=e.validateOn}}))};Object.defineProperty(e.prototype,"dirty",{get:function(){return this._dirty},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"valid",{get:function(){return this._valid},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"store",{get:function(){return this._store},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"payload",{get:function(){return this._store.state},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"showValidation",{get:function(){return this.validateOn==="dirty"&&this.dirty||this.submitted},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"validationState",{get:function(){var e=this;var t=[];this.fields.forEach((function(r){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(n){e=t.find((function(e){return e.name===r.name}));if(e){e.validityMessage=r.validityMessage.length?r.validityMessage:e.validityMessage;if(!e.fields.find((function(e){return e===r})))e.fields.push(r);if(e.valid&&r.invalid)e.valid=false;return[2]}t.push({fields:[r],name:r.name,valid:!r.invalid,value:this._store.state[r.name],dirty:false,validityMessage:r.validityMessage});return[2]}))}))}));return t},enumerable:false,configurable:true});e.prototype.setStore=function(e){return __awaiter(this,void 0,void 0,(function(){var t=this;return __generator(this,(function(r){Object.entries(e).forEach((function(e){var r=e[0],n=e[1];return t.store.state[r]=n}));return[2]}))}))};e.prototype.attachSlotObserver=function(){var e=this;if(!!this.mo)return;var t=this.mo=new MutationObserver((function(t){var r=e.host.querySelector("form");if(r&&r!==e.activeForm)e.activeForm=r;e.setupFields()}));t.observe(this.host,{childList:true,attributes:true,attributeFilter:["name"],subtree:true})};e.prototype.setupFields=function(){var e=this;var t=Array.from(this.host.querySelectorAll("\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n "));t=t.filter((function(e){return!!e.name&&!!e.name.length}));if(!t.filter((function(t){return!e.fields.includes(t)})).length)return;this.fields=t;this.storeToFields(this.fields);this.validateOnChange();this.fieldsToStore(this.fields);this.nanoPayloadChange.emit(this._store.state)};e.prototype.storeToFields=function(e){var t=this;e.forEach((function(e){var r=e.name;if(!r.length||typeof t._store.state[r]==="undefined")return;switch(e.tagName){case"NANO-CHECKBOX":var n=e;if(n.type==="radio"||n.type==="segment"||n.type==="segment-pill"){if(t._store.state[r]===n.value)n.checked=true;else n.checked=false}else if(Array.isArray(t._store.state[r])){if(t._store.state[r].includes(n.value))n.checked=true;else n.checked=false}else{if(t._store.state[r]===n.value)n.checked=true;else n.checked=false}break;case"NANO-FILE-UPLOAD":e.files=t._store.state[r];break;default:e.value=t._store.state[r];break}}))};e.prototype.fieldsToStore=function(e){var t=this;e.forEach((function(e){var r=e.name;if(!r.length)return;switch(e.tagName){case"NANO-CHECKBOX":var n=e;if(n.type==="radio"||n.type==="segment"||n.type==="segment-pill"){if(n.checked)t._store.state[r]=n.value;else if(!n.checked&&(n.value===t._store.state[r]||!t._store.state[r]))t._store.state[r]=""}else if(t.fields.filter((function(e){return e.name===r&&e.tagName==="NANO-CHECKBOX"})).length>1){var i=Array.isArray(t._store.state[r])?t._store.state[r]:[];if(n.checked){if(!t._store.state[r].includes(n.value)){t._store.state[r]=__spreadArray(__spreadArray([],i),[n.value])}}else{t._store.state[r]=i.filter((function(e){return e!==n.value}))}}else{if(n.checked)t._store.state[r]=n.value;else t._store.state[r]=""}break;case"NANO-FILE-UPLOAD":t._store.state[r]=e.files;break;default:t._store.state[r]=e.value;break}}))};e.prototype.validate=function(e,t){return __awaiter(this,void 0,void 0,(function(){var r;var n=this;return __generator(this,(function(i){switch(i.label){case 0:if(!this.validation)return[2];r=this.validation(e,t,this._store.state);if(!r)return[2];return[4,Promise.all(Object.entries(r).map((function(e){var t=e[0],r=e[1];return __awaiter(n,void 0,void 0,(function(){var e,n,i;return __generator(this,(function(a){switch(a.label){case 0:e=this.fields.find((function(e){return e.name===t}));n=e;if(e.tagName==="NANO-CHECKBOX"){i=e.closest("nano-checkbox-group");n=i||e}if(!(n.validityMessage===r.msg&&r.valid))return[3,2];return[4,this.setFieldError(n,"")];case 1:a.sent();return[3,4];case 2:if(!!r.valid)return[3,4];return[4,this.setFieldError(n,r.msg)];case 3:a.sent();a.label=4;case 4:return[2]}}))}))})))];case 1:i.sent();return[2]}}))}))};e.prototype.setFieldError=function(e,t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(r){switch(r.label){case 0:if(!e["showError"])return[3,2];return[4,e.showError(t)];case 1:r.sent();return[3,4];case 2:return[4,e.setError(t)];case 3:r.sent();r.label=4;case 4:return[2]}}))}))};e.prototype.validateAllFields=function(){return __awaiter(this,void 0,void 0,(function(){var e=this;return __generator(this,(function(t){switch(t.label){case 0:return[4,Object.entries(this._store.state).reduce((function(t,r){var n=r[0],i=r[1];return __awaiter(e,void 0,void 0,(function(){return __generator(this,(function(e){switch(e.label){case 0:return[4,t];case 1:e.sent();return[4,this.validate(n,i)];case 2:e.sent();return[2]}}))}))}),undefined)];case 1:t.sent();return[2]}}))}))};e.prototype.scrollToFirstInvalid=function(){var e=this;if(!this.scrollToInvalid)return;setTimeout((function(){var t=e.validationState.find((function(e){return!e.valid}));if(!t)return;t.fields[0].scrollIntoView({behavior:"smooth",block:"nearest"})}),200)};e.prototype.submitForm=function(){var e=this.nanoSubmit.emit();if(e.defaultPrevented)return;this.activeForm.submit()};e.prototype.connectedCallback=function(){this.userForm=this.host.querySelector("form");this._store=createStore({})};e.prototype.componentDidLoad=function(){var e=this;requestAnimationFrame((function(){e.setupFields();e.attachSlotObserver();e._store.on("set",(function(t,r){return e.handleStoreChange(t,r)}));e.host.addEventListener("nanoChange",e.handleFieldChange);e.host.addEventListener("submit",e.handleSubmit)}))};e.prototype.disconnectedCallback=function(){if(this.mo)this.mo.disconnect();this._store.reset();this.host.removeEventListener("nanoChange",this.handleFieldChange);this.host.removeEventListener("submit",this.handleSubmit);if(this.activeForm)this.activeForm.removeEventListener("invalid",this.handleFormInvalid,true)};e.prototype.render=function(){var e=this;return h(Host,null,this.userForm&&h("slot",null),!this.userForm&&h("form",{ref:function(t){return e.activeForm=t}},h("slot",null)))};Object.defineProperty(e.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{userForm:["userFormChange"],validateOn:["validateOnChange"]}},enumerable:false,configurable:true});return e}();export{FieldValidator as nano_field_validator};
5
5
  //# sourceMappingURL=nano-field-validator.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["node_modules/@stencil/store/dist/index.mjs","src/components/field-validator/field-validator.tsx"],"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","_i","arguments","length","clearTimeout","setTimeout","apply","isConnected","maybeElement","cleanupElements","_a","keys","key","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","createObservableMap","defaultState","shouldUpdate","a","b","states","Object","entries","handlers","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","createStore","FieldValidator","class_1","hostRef","_this","this","submitted","fields","internalValidate","validateOn","scrollToInvalid","_dirty","handleStoreChange","_key","_newVal","__awaiter","dirty","validateAllFields","sent","_valid","activeForm","checkValidity","nanoPayloadChange","emit","store","handleFieldChange","ev","setFieldValue","target","handleFormInvalid","preventDefault","submitForm","scrollToFirstInvalid","nanoInvalid","handleSubmit","e","prototype","userFormChange","userForm","defineProperty","_activeForm","form","removeEventListener","addEventListener","validateOnChange","field","tagName","cbg","closest","validationState","found","find","v","name","validityMessage","f","valid","invalid","attachSlotObserver","mo","MutationObserver","_entries","host","querySelector","setupFields","observe","childList","attributes","attributeFilter","subtree","querySelectorAll","fieldName","cb_1","type","checked","currentArr","isArray","__spreadArray","files","validate","newVal","validation","res","Promise","all","o","validityTarget","msg","setFieldError","_b","showError","setError","memo","undefined","invalidField","scrollIntoView","behavior","block","nanoSubmit","defaultPrevented","submit","connectedCallback","componentDidLoad","requestAnimationFrame","disconnectedCallback","disconnect","render","h","Host","ref"],"mappings":"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","sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(defaultState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n const unReset = on('reset', () => cb(defaultState[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import {\n Component,\n Prop,\n h,\n Host,\n Element,\n ComponentInterface,\n State,\n Watch,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { createStore, ObservableMap } from '@stencil/store';\n\ntype NanoFormEles =\n | HTMLNanoInputElement\n | HTMLNanoCheckboxElement\n | HTMLNanoSelectElement\n | HTMLNanoDateInputElement\n | HTMLNanoFileUploadElement;\ntype NanoEvent = CustomEvent & { target: NanoFormEles };\ninterface ValueStore {\n [key: string]: any;\n}\n\ninterface ValidationState {\n fields: NanoFormEles[];\n valid: boolean;\n validityMessage: string;\n dirty: boolean;\n name: string | number;\n value: any;\n}\n\n/**\n * A toolbox for `nano-...` form fields and form validation.\n *\n * - Easy to add validation accross field dependencies - e.g. \"When Field1 contains '123' Field2 must contain '456'\"\n * - Easy access to whole form and individual field validity states\n * - Easy access to form data payload\n * - Scroll to invalid field on submit\n */\n@Component({\n tag: 'nano-field-validator',\n})\nexport class FieldValidator implements ComponentInterface {\n // Internal State\n\n @Element() host: HTMLNanoFieldValidatorElement;\n @State() store: ObservableMap<ValueStore>;\n @State() userForm: HTMLFormElement;\n @State() submitted = false;\n @Watch('userForm')\n userFormChange() {\n if (!!this.userForm) this.activeForm = this.userForm;\n }\n\n private get activeForm() {\n return this._activeForm;\n }\n private set activeForm(form: HTMLFormElement) {\n if (this._activeForm)\n this._activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n if (form) form.addEventListener('invalid', this.handleFormInvalid, true);\n this._activeForm = form;\n }\n private _activeForm: HTMLFormElement;\n private mo: MutationObserver;\n private fields: NanoFormEles[] = [];\n // annoyingly, whenever we attempt to checkValidty it fires `invalid` events.\n // this is used to prevent infinite loops / multiple calls\n private internalValidate = false;\n\n // Public API\n\n /** When should the fields perform validation. Will override / sync all nested `nano-...` controls */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /** Sync up validateOn with all fields */\n @Watch('validateOn')\n validateOnChange() {\n this.fields.forEach((field) => {\n if (field.tagName === 'NANO-CHECKBOX') {\n const cbg = field.closest('nano-checkbox-group');\n if (cbg) cbg.validateOn = this.validateOn;\n } else {\n (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).validateOn =\n this.validateOn;\n }\n });\n }\n\n /** Tries to scroll to the first invalid field on submit */\n @Prop() scrollToInvalid = true;\n\n /** Returns true if any nested fields have been changed @readonly */\n @Prop({ reflect: true })\n get dirty() {\n return this._dirty;\n }\n @State() _dirty = false;\n\n /** Returns true if all the nested fields are currently valid @readonly */\n @Prop({ reflect: true })\n get valid() {\n return this._valid;\n }\n @State() _valid: boolean;\n\n /** The current form payload as a reactive store. @readonly */\n @Prop()\n get payload() {\n return this.store.state;\n }\n\n /** Returns true if validation errors will be displayed to the user */\n @Prop()\n get showValidation() {\n return (this.validateOn === 'dirty' && this.dirty) || this.submitted;\n }\n\n /** Get the current validation state of all form fields. @readonly\n * ```\n {\n fields: NanoFormEles[];\n valid: boolean;\n validityMessage: string;\n dirty: boolean;\n name: string | number;\n value: any;\n }[]\n ```\n */\n @Prop() get validationState(): ValidationState[] {\n const validationState: ValidationState[] = [];\n\n this.fields.forEach(async (field) => {\n const found = validationState.find((v) => v.name === field.name);\n\n if (found) {\n found.validityMessage = field.validityMessage.length\n ? field.validityMessage\n : found.validityMessage;\n if (!found.fields.find((f) => f === field)) found.fields.push(field);\n if (found.valid && field.invalid) found.valid = false;\n return;\n }\n\n validationState.push({\n fields: [field],\n name: field.name,\n valid: !field.invalid,\n value: this.store.state[field.name],\n dirty: false,\n validityMessage: field.validityMessage,\n });\n });\n return validationState;\n }\n\n /** A validation callback method.\n * @param field - The field name currently being evaluated\n * @param value - The value of the field currently being evaluated\n * @param fields - an array of all currently observered form fields and values\n * @returns field names mapped to an object of status message and validity e.g.\n * ```js\n * {field1: {msg: `This is invalid!`}, field2: {msg: `This is valid!`, valid: true}}\n * ```\n */\n @Prop() validation: (\n field: string,\n value: string,\n fields: ValueStore\n ) => { [key: string]: { msg: string; valid?: boolean } };\n\n /** Fired whenever the payload changes */\n @Event() nanoPayloadChange: EventEmitter<ValueStore>;\n\n /**\n * Fired on valid form submission.\n * Note: if you wish to prevent a form from submitting, instead\n * of using / preventing the native `submit` event, use this event\n * ```js\n * ele.addEventListener('nanoSubmit', (e) => {\n * e.preventDefault()\n * })\n * ```\n */\n @Event() nanoSubmit: EventEmitter;\n\n /** Fire on invalid form submission attempt */\n @Event() nanoInvalid: EventEmitter;\n\n // private methods\n\n private attachSlotObserver() {\n if (!!this.mo) return;\n const mo = (this.mo = new MutationObserver((_entries) => {\n const form = this.host.querySelector('form');\n if (form !== this.activeForm) this.activeForm = form;\n this.setupFields();\n }));\n mo.observe(this.host, {\n childList: true,\n attributes: true,\n attributeFilter: ['name'],\n subtree: true,\n });\n }\n\n /** Checks for new `nano-...` fields and adds them to our watch array and value store */\n private setupFields() {\n let fields = Array.from(\n this.host.querySelectorAll<NanoFormEles>(`\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n `)\n );\n fields = fields.filter((f) => !!f.name && !!f.name.length);\n\n // do we have any currently un-watched fields?\n if (!fields.filter((f) => !this.fields.includes(f)).length) return;\n\n // setup the initial store state / refresh on new fields\n this.fields = fields;\n this.validateOnChange();\n this.setFieldValue(this.fields);\n this.nanoPayloadChange.emit(this.store.state);\n }\n\n /** Loops through all `nano-...` fields and extracts their values into our store */\n private setFieldValue(fields: NanoFormEles[]) {\n fields.forEach((field) => {\n const fieldName = field.name;\n if (!fieldName.length) return;\n\n switch (field.tagName) {\n case 'NANO-CHECKBOX':\n let cb = field as HTMLNanoCheckboxElement;\n if (\n cb.type === 'radio' ||\n cb.type === 'segment' ||\n cb.type === 'segment-pill'\n ) {\n if (cb.checked) this.store.state[fieldName] = cb.value;\n else if (!cb.checked && cb.value === this.store.state[fieldName])\n this.store.state[fieldName] = '';\n } else if (\n this.fields.filter(\n (f) => f.name === fieldName && f.tagName === 'NANO-CHECKBOX'\n ).length > 1\n ) {\n const currentArr = Array.isArray(this.store.state[fieldName])\n ? this.store.state[fieldName]\n : [];\n if (cb.checked) {\n if (!this.store.state[fieldName].includes(cb.value)) {\n this.store.state[fieldName] = [...currentArr, cb.value];\n }\n } else {\n this.store.state[fieldName] = currentArr.filter(\n (v) => v !== cb.value\n );\n }\n } else this.store.state[fieldName] = cb.value;\n break;\n case 'NANO-FILE-UPLOAD':\n this.store.state[fieldName] = (\n field as HTMLNanoFileUploadElement\n ).files;\n break;\n default:\n this.store.state[fieldName] = field.value;\n break;\n }\n });\n }\n\n /** Checks for user defined validations */\n private async validate(key: string | number, newVal: any) {\n if (!this.validation) return;\n\n const res = this.validation(key as string, newVal, this.store.state);\n\n // no nothing - return\n if (!res) return;\n\n // stencil public methods are async\n // so we must to coerce our validation\n // collection loop into a promise\n await Promise.all(\n Object.entries(res).map(async ([key, o]) => {\n // switch on/off validation messages\n const field = this.fields.find((f) => f.name === key);\n let validityTarget: NanoFormEles | HTMLNanoCheckboxGroupElement = field;\n\n if (field.tagName === 'NANO-CHECKBOX') {\n const cbg = field.closest('nano-checkbox-group');\n validityTarget = cbg || field;\n }\n\n // status is now valid - clear the error\n if (validityTarget.validityMessage === o.msg && o.valid)\n await this.setFieldError(validityTarget, '');\n // status is invalid. Set the error\n else if (!o.valid) {\n await this.setFieldError(validityTarget, o.msg);\n }\n })\n );\n }\n\n /**\n * Utility to smooth out setting error messages\n * (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)\n * @param field\n * @param msg\n */\n private async setFieldError(\n field: NanoFormEles | HTMLNanoCheckboxGroupElement,\n msg: string\n ) {\n if (field['showError'])\n await (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).showError(\n msg\n );\n else await (field as HTMLNanoCheckboxElement).setError(msg);\n }\n\n /** Loops through all store entries and checks field validity */\n private async validateAllFields() {\n // This forces our loop to `await` and finish sequentially ... silly async stencil methods\n await Object.entries(this.store.state).reduce(\n async (memo, [key, value]) => {\n await memo;\n await this.validate(key, value);\n },\n undefined as any\n );\n }\n\n private scrollToFirstInvalid() {\n if (!this.scrollToInvalid) return;\n\n setTimeout(() => {\n const invalidField = this.validationState.find((f) => !f.valid);\n if (!invalidField) return;\n invalidField.fields[0].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }, 200);\n }\n\n private submitForm() {\n const nanoSubmit = this.nanoSubmit.emit();\n if (nanoSubmit.defaultPrevented) return;\n this.activeForm.submit();\n }\n\n // Event handlers\n\n /** Fired whenever store values change and potentially checks validity */\n private handleStoreChange = async (_key: string | number, _newVal: any) => {\n if (this.validateOn === 'dirty' && this.dirty) {\n this.internalValidate = true;\n await this.validateAllFields();\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n }\n this.nanoPayloadChange.emit(this.store.state);\n };\n\n /** Handles field value changes and passes to store */\n private handleFieldChange = (ev: NanoEvent) => {\n this._dirty = true;\n this.setFieldValue([ev.target]);\n };\n\n /** Handles default field validation events */\n private handleFormInvalid = async (ev: Event) => {\n ev.preventDefault();\n this._valid = false;\n\n if (this.internalValidate) return;\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n\n await this.validateAllFields();\n\n // kinda insane...but if we're only validating on submit, then if the form is currently\n // in an invalid state, when submitting, it will fire an invalid event and not\n // submit the form. So let's test to make sure it is really invalid, and submit if not\n if (this.validateOn === 'submit') {\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n if (this._valid) {\n this.submitForm();\n return;\n }\n }\n\n this.scrollToFirstInvalid();\n this.nanoInvalid.emit();\n };\n\n /** stops default form submission, checks if valid, then submits manually */\n private handleSubmit = async (e: Event) => {\n e.preventDefault();\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n await this.validateAllFields();\n\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n if (!this._valid) {\n this.scrollToFirstInvalid();\n return;\n }\n this.submitForm();\n };\n\n connectedCallback(): void {\n this.userForm = this.host.querySelector('form');\n }\n\n componentDidLoad() {\n requestAnimationFrame(() => {\n this.store = createStore<ValueStore>({});\n\n this.setupFields();\n this.attachSlotObserver();\n\n this.store.on('set', (key, value) => this.handleStoreChange(key, value));\n this.host.addEventListener('nanoChange', this.handleFieldChange);\n this.host.addEventListener('submit', this.handleSubmit);\n });\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n this.store.dispose();\n this.host.removeEventListener('nanoChange', this.handleFieldChange);\n this.host.removeEventListener('submit', this.handleSubmit);\n if (this.activeForm)\n this.activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n\n render() {\n return (\n <Host>\n {this.userForm && <slot />}\n {!this.userForm && (\n <form ref={(f) => (this.activeForm = f)}>\n <slot />\n </form>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["node_modules/@stencil/store/dist/index.mjs","src/components/field-validator/field-validator.tsx"],"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","_i","arguments","length","clearTimeout","setTimeout","apply","isConnected","maybeElement","cleanupElements","_a","keys","key","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","createObservableMap","defaultState","shouldUpdate","a","b","states","Object","entries","handlers","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","createStore","FieldValidator","class_1","hostRef","_this","this","submitted","fields","internalValidate","validateOn","scrollToInvalid","_dirty","handleStoreChange","newVal","__awaiter","found","find","field","name","storeToFields","dirty","validateAllFields","sent","_valid","activeForm","checkValidity","nanoPayloadChange","emit","_store","handleFieldChange","ev","fieldsToStore","target","handleFormInvalid","preventDefault","submitForm","scrollToFirstInvalid","nanoInvalid","handleSubmit","e","prototype","userFormChange","userForm","defineProperty","_activeForm","form","removeEventListener","addEventListener","validateOnChange","tagName","cbg","closest","validationState","v","validityMessage","f","valid","invalid","setStore","val","store","attachSlotObserver","mo","MutationObserver","_entries","host","querySelector","setupFields","observe","childList","attributes","attributeFilter","subtree","querySelectorAll","fieldName","type","checked","isArray","files","cb_1","currentArr","__spreadArray","validate","validation","res","Promise","all","o","validityTarget","msg","setFieldError","_b","showError","setError","memo","undefined","invalidField","scrollIntoView","behavior","block","nanoSubmit","defaultPrevented","submit","connectedCallback","componentDidLoad","requestAnimationFrame","disconnectedCallback","disconnect","render","h","Host","ref"],"mappings":"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","sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(defaultState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n const unReset = on('reset', () => cb(defaultState[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import {\n Component,\n Prop,\n h,\n Host,\n Element,\n ComponentInterface,\n State,\n Watch,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport { createStore, ObservableMap } from '@stencil/store';\nimport {\n NanoFormEles,\n NanoFormEvent,\n ValidationState,\n ValidatorValueStore,\n} from '../../interface';\n\n/**\n * A toolbox for `nano-...` form fields and form validation.\n *\n * - Easy to add validation accross field dependencies - e.g. \"When Field1 contains '123' Field2 must contain '456'\"\n * - Easy access to whole form and individual field validity states\n * - Easy access to form data payload\n * = Access to 2-way, data bound reactive store\n * - Scroll to invalid field on submit\n */\n@Component({\n tag: 'nano-field-validator',\n})\nexport class FieldValidator implements ComponentInterface {\n // Internal State\n\n @Element() host: HTMLNanoFieldValidatorElement;\n @State() userForm: HTMLFormElement;\n @State() submitted = false;\n @Watch('userForm')\n userFormChange() {\n if (!!this.userForm) this.activeForm = this.userForm;\n }\n\n private get activeForm() {\n return this._activeForm;\n }\n private set activeForm(form: HTMLFormElement) {\n if (!form) return;\n\n if (this._activeForm) {\n this._activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n\n form.addEventListener('invalid', this.handleFormInvalid, true);\n this._activeForm = form;\n }\n private _activeForm: HTMLFormElement;\n private mo: MutationObserver;\n private fields: NanoFormEles[] = [];\n // annoyingly, whenever we attempt to checkValidty it fires `invalid` events.\n // this is used to prevent infinite loops / multiple calls\n private internalValidate = false;\n\n // Public API\n\n /** When should the fields perform validation. Will override / sync all nested `nano-...` controls */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /** Sync up validateOn with all fields */\n @Watch('validateOn')\n validateOnChange() {\n this.fields.forEach((field) => {\n if (field.tagName === 'NANO-CHECKBOX') {\n const cbg = field.closest('nano-checkbox-group');\n if (cbg) cbg.validateOn = this.validateOn;\n } else {\n (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).validateOn =\n this.validateOn;\n }\n });\n }\n\n /** Tries to scroll to the first invalid field on submit */\n @Prop() scrollToInvalid = true;\n\n /** Returns true if any nested fields have been changed @readonly */\n @Prop({ reflect: true })\n get dirty() {\n return this._dirty;\n }\n @State() _dirty = false;\n\n /** Returns true if all the nested fields are currently valid @readonly */\n @Prop({ reflect: true })\n get valid() {\n return this._valid;\n }\n @State() _valid: boolean;\n\n /** The current form state as a stencil store. */\n @Prop() get store() {\n return this._store;\n }\n @State() _store: ObservableMap<ValidatorValueStore>;\n\n /** The current form payload as a reactive proxy. @readonly */\n @Prop()\n get payload() {\n return this._store.state;\n }\n\n /** Returns true if validation errors will be displayed to the user */\n @Prop()\n get showValidation() {\n return (this.validateOn === 'dirty' && this.dirty) || this.submitted;\n }\n\n /** Get the current validation state of all form fields. @readonly\n * ```\n {\n fields: NanoFormEles[];\n valid: boolean;\n validityMessage: string;\n dirty: boolean;\n name: string | number;\n value: any;\n }[]\n ```\n */\n @Prop() get validationState(): ValidationState[] {\n const validationState: ValidationState[] = [];\n\n this.fields.forEach(async (field) => {\n const found = validationState.find((v) => v.name === field.name);\n\n if (found) {\n found.validityMessage = field.validityMessage.length\n ? field.validityMessage\n : found.validityMessage;\n if (!found.fields.find((f) => f === field)) found.fields.push(field);\n if (found.valid && field.invalid) found.valid = false;\n return;\n }\n\n validationState.push({\n fields: [field],\n name: field.name,\n valid: !field.invalid,\n value: this._store.state[field.name],\n dirty: false,\n validityMessage: field.validityMessage,\n });\n });\n return validationState;\n }\n\n /** A validation callback method.\n * @param field - The field name currently being evaluated\n * @param value - The value of the field currently being evaluated\n * @param fields - an array of all currently observered form fields and values\n * @returns field names mapped to an object of status message and validity e.g.\n * ```js\n * {field1: {msg: `This is invalid!`}, field2: {msg: `This is valid!`, valid: true}}\n * ```\n */\n @Prop() validation: (\n field: string,\n value: string,\n fields: ValidatorValueStore\n ) => { [key: string]: { msg: string; valid?: boolean } };\n\n /**\n * Sets the state of the form using an object of key / value pairs.\n * @param state - the state to load in the store\n */\n @Method()\n async setStore(state: ValidatorValueStore) {\n Object.entries(state).forEach(\n ([key, val]) => (this.store.state[key] = val)\n );\n }\n\n /** Fired whenever the payload changes */\n @Event() nanoPayloadChange: EventEmitter<ValidatorValueStore>;\n\n /**\n * Fired on valid form submission.\n * Note: if you wish to prevent a form from submitting, instead\n * of using / preventing the native `submit` event, use this event\n * ```js\n * ele.addEventListener('nanoSubmit', (e) => {\n * e.preventDefault()\n * })\n * ```\n */\n @Event() nanoSubmit: EventEmitter;\n\n /** Fire on invalid form submission attempt */\n @Event() nanoInvalid: EventEmitter;\n\n // private methods\n\n private attachSlotObserver() {\n if (!!this.mo) return;\n const mo = (this.mo = new MutationObserver((_entries) => {\n const form = this.host.querySelector('form');\n if (form && form !== this.activeForm) this.activeForm = form;\n this.setupFields();\n }));\n mo.observe(this.host, {\n childList: true,\n attributes: true,\n attributeFilter: ['name'],\n subtree: true,\n });\n }\n\n /** Checks for new `nano-...` fields and adds them to our watch array and value store */\n private setupFields() {\n let fields = Array.from(\n this.host.querySelectorAll<NanoFormEles>(`\n nano-input,\n nano-select,\n nano-file-upload,\n nano-date-input,\n nano-checkbox\n `)\n );\n fields = fields.filter((f) => !!f.name && !!f.name.length);\n\n // do we have any currently un-watched fields?\n if (!fields.filter((f) => !this.fields.includes(f)).length) return;\n\n // setup the initial store state / refresh on new fields\n this.fields = fields;\n this.storeToFields(this.fields);\n\n this.validateOnChange();\n this.fieldsToStore(this.fields);\n this.nanoPayloadChange.emit(this._store.state);\n }\n\n private storeToFields(fields: NanoFormEles[]) {\n fields.forEach((field) => {\n const fieldName = field.name;\n if (\n !fieldName.length ||\n typeof this._store.state[fieldName] === 'undefined'\n )\n return;\n\n switch (field.tagName) {\n case 'NANO-CHECKBOX':\n let cb = field as HTMLNanoCheckboxElement;\n if (\n cb.type === 'radio' ||\n cb.type === 'segment' ||\n cb.type === 'segment-pill'\n ) {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n } else if (Array.isArray(this._store.state[fieldName])) {\n if (this._store.state[fieldName].includes(cb.value))\n cb.checked = true;\n else cb.checked = false;\n } else {\n if (this._store.state[fieldName] === cb.value) cb.checked = true;\n else cb.checked = false;\n }\n break;\n case 'NANO-FILE-UPLOAD':\n (field as HTMLNanoFileUploadElement).files =\n this._store.state[fieldName];\n break;\n default:\n field.value = this._store.state[fieldName];\n break;\n }\n });\n }\n\n /** Loops through all `nano-...` fields and extracts their values into our store */\n private fieldsToStore(fields: NanoFormEles[]) {\n fields.forEach((field) => {\n const fieldName = field.name;\n if (!fieldName.length) return;\n\n switch (field.tagName) {\n case 'NANO-CHECKBOX':\n let cb = field as HTMLNanoCheckboxElement;\n\n if (\n cb.type === 'radio' ||\n cb.type === 'segment' ||\n cb.type === 'segment-pill'\n ) {\n // radio type control - only one can be checked\n if (cb.checked) this._store.state[fieldName] = cb.value;\n else if (\n !cb.checked &&\n (cb.value === this._store.state[fieldName] ||\n !this._store.state[fieldName])\n )\n this._store.state[fieldName] = '';\n } else if (\n this.fields.filter(\n (f) => f.name === fieldName && f.tagName === 'NANO-CHECKBOX'\n ).length > 1\n ) {\n // multiple checkbox type control\n const currentArr = Array.isArray(this._store.state[fieldName])\n ? this._store.state[fieldName]\n : [];\n if (cb.checked) {\n if (!this._store.state[fieldName].includes(cb.value)) {\n this._store.state[fieldName] = [...currentArr, cb.value];\n }\n } else {\n this._store.state[fieldName] = currentArr.filter(\n (v) => v !== cb.value\n );\n }\n } else {\n // single checkbox - on or off\n if (cb.checked) this._store.state[fieldName] = cb.value;\n else this._store.state[fieldName] = '';\n }\n break;\n case 'NANO-FILE-UPLOAD':\n this._store.state[fieldName] = (\n field as HTMLNanoFileUploadElement\n ).files;\n break;\n default:\n this._store.state[fieldName] = field.value;\n break;\n }\n });\n }\n\n /** Checks for user defined validations */\n private async validate(key: string | number, newVal: any) {\n if (!this.validation) return;\n\n const res = this.validation(key as string, newVal, this._store.state);\n\n // no nothing - return\n if (!res) return;\n\n // stencil public methods are async\n // so we must coerce our validation\n // collection loop into a promise\n await Promise.all(\n Object.entries(res).map(async ([key, o]) => {\n // switch on/off validation messages\n const field = this.fields.find((f) => f.name === key);\n let validityTarget: NanoFormEles | HTMLNanoCheckboxGroupElement = field;\n\n if (field.tagName === 'NANO-CHECKBOX') {\n const cbg = field.closest('nano-checkbox-group');\n validityTarget = cbg || field;\n }\n\n // status is now valid - clear the error\n if (validityTarget.validityMessage === o.msg && o.valid)\n await this.setFieldError(validityTarget, '');\n // status is invalid. Set the error\n else if (!o.valid) {\n await this.setFieldError(validityTarget, o.msg);\n }\n })\n );\n }\n\n /**\n * Utility to smooth out setting error messages\n * (it's a different method on `nano-checkbox` 'cos they don't show errors themselves)\n * @param field\n * @param msg\n */\n private async setFieldError(\n field: NanoFormEles | HTMLNanoCheckboxGroupElement,\n msg: string\n ) {\n if (field['showError'])\n await (field as Exclude<NanoFormEles, HTMLNanoCheckboxElement>).showError(\n msg\n );\n else await (field as HTMLNanoCheckboxElement).setError(msg);\n }\n\n /** Loops through all store entries and checks field validity */\n private async validateAllFields() {\n // This forces our loop to `await` and finish sequentially ... silly async stencil methods\n await Object.entries(this._store.state).reduce(\n async (memo, [key, value]) => {\n await memo;\n await this.validate(key, value);\n },\n undefined as any\n );\n }\n\n private scrollToFirstInvalid() {\n if (!this.scrollToInvalid) return;\n\n setTimeout(() => {\n const invalidField = this.validationState.find((f) => !f.valid);\n if (!invalidField) return;\n invalidField.fields[0].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }, 200);\n }\n\n private submitForm() {\n const nanoSubmit = this.nanoSubmit.emit();\n if (nanoSubmit.defaultPrevented) return;\n this.activeForm.submit();\n }\n\n // Event handlers\n\n /** Fired whenever store values change and potentially checks validity */\n private handleStoreChange = async (key: string | number, newVal: any) => {\n const found = this.fields.find((field) => field.name === key);\n if (found && found.value !== newVal) this.storeToFields([found]);\n\n if (this.validateOn === 'dirty' && this.dirty) {\n this.internalValidate = true;\n await this.validateAllFields();\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n }\n this.nanoPayloadChange.emit(this._store.state);\n };\n\n /** Handles field value changes and passes to store */\n private handleFieldChange = (ev: NanoFormEvent) => {\n this._dirty = true;\n this.fieldsToStore([ev.target]);\n };\n\n /** Handles default field validation events */\n private handleFormInvalid = async (ev: Event) => {\n ev.preventDefault();\n this._valid = false;\n\n if (this.internalValidate) return;\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n\n await this.validateAllFields();\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n // kinda insane...but if we're only validating on submit, then if the form is currently\n // in an invalid state, when submitting, it will fire an invalid event and not\n // submit the form. So let's test to make sure it is really invalid, and submit if not\n if (this.validateOn === 'submit') {\n if (this._valid) {\n this.submitForm();\n return;\n }\n }\n\n this.scrollToFirstInvalid();\n this.nanoInvalid.emit();\n };\n\n /** stops default form submission, checks if valid, then submits manually */\n private handleSubmit = async (e: Event) => {\n e.preventDefault();\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n this.submitted = true;\n await this.validateAllFields();\n\n this.internalValidate = true;\n this._valid = this.activeForm.checkValidity();\n this.internalValidate = false;\n\n if (!this._valid) {\n this.scrollToFirstInvalid();\n return;\n }\n this.submitForm();\n };\n\n connectedCallback(): void {\n this.userForm = this.host.querySelector('form');\n this._store = createStore<ValidatorValueStore>({});\n }\n\n componentDidLoad() {\n requestAnimationFrame(() => {\n this.setupFields();\n this.attachSlotObserver();\n\n this._store.on('set', (key, value) => this.handleStoreChange(key, value));\n this.host.addEventListener('nanoChange', this.handleFieldChange);\n this.host.addEventListener('submit', this.handleSubmit);\n });\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n this._store.reset();\n this.host.removeEventListener('nanoChange', this.handleFieldChange);\n this.host.removeEventListener('submit', this.handleSubmit);\n\n if (this.activeForm)\n this.activeForm.removeEventListener(\n 'invalid',\n this.handleFormInvalid,\n true\n );\n }\n\n render() {\n return (\n <Host>\n {this.userForm && <slot />}\n {!this.userForm && (\n <form ref={(f) => (this.activeForm = f)}>\n <slot />\n </form>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  var __awaiter=this&&this.__awaiter||function(e,n,t,a){function i(e){return e instanceof t?e:new t((function(n){n(e)}))}return new(t||(t=Promise))((function(t,o){function l(e){try{s(a.next(e))}catch(n){o(n)}}function r(e){try{s(a["throw"](e))}catch(n){o(n)}}function s(e){e.done?t(e.value):i(e.value).then(l,r)}s((a=a.apply(e,n||[])).next())}))};var __generator=this&&this.__generator||function(e,n){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},a,i,o,l;return l={next:r(0),throw:r(1),return:r(2)},typeof Symbol==="function"&&(l[Symbol.iterator]=function(){return this}),l;function r(e){return function(n){return s([e,n])}}function s(l){if(a)throw new TypeError("Generator is already executing.");while(t)try{if(a=1,i&&(o=l[0]&2?i["return"]:l[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,l[1])).done)return o;if(i=0,o)l=[l[0]&2,o.value];switch(l[0]){case 0:case 1:o=l;break;case 4:t.label++;return{value:l[1],done:false};case 5:t.label++;i=l[1];l=[0];continue;case 7:l=t.ops.pop();t.trys.pop();continue;default:if(!(o=t.trys,o=o.length>0&&o[o.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!o||l[1]>o[0]&&l[1]<o[3])){t.label=l[1];break}if(l[0]===6&&t.label<o[1]){t.label=o[1];o=l;break}if(o&&t.label<o[2]){t.label=o[2];t.ops.push(l);break}if(o[2])t.ops.pop();t.trys.pop();continue}l=n.call(e,t)}catch(r){l=[6,r];i=0}finally{a=o=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(e,n){for(var t=0,a=n.length,i=e.length;t<a;t++,i++)e[i]=n[t];return e};
2
2
  /*!
3
3
  * Web Components for Nanopore digital Web Apps
4
- */import{r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-c42becad.js";var fileUploadCss='.sc-nano-file-upload-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-file-upload,*.sc-nano-file-upload::before,*.sc-nano-file-upload::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-file-upload{display:none !important}.sc-nano-file-upload-h{min-height:1rem;display:block;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, "currentColor");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--label-color--invalid:var(--nano-input-label-color-invalid, "currentColor");--drop-bg:#f2f7f9;--drop-text:#756f6a;--drop-height:3.5em;--drop-border-tint:var(--nano-color-primary-rgb, 0, 116, 149);--drop-border-width:2px;--drop-border-radius:5px;--drop-bg--invalid:var(--nano-input-background-color, white);--drop-border--invalid:var(--nano-color-danger-rgb, 239, 65, 53);--btn-bg:var(--nano-color-primary, #007495);--btn-text:var(--nano-color-primary-contrast, #fff);--btn-icon-size:var(--nano-btn-icon-size, 1.4em);--btn-padding-top:var(--nano-btn-padding-top, 0.5em);--btn-padding-bottom:var(--nano-btn-padding-bottom, 0.5em);--btn-padding-start:var(--nano-btn-padding-start, 1em);--btn-padding-end:var(--nano-btn-padding-end, 1em)}[disabled].sc-nano-file-upload-h:not([disabled=false]){opacity:0.7}[disabled].sc-nano-file-upload-h:not([disabled=false]) *.sc-nano-file-upload{pointer-events:none !important}.file-upload__label.sc-nano-file-upload{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1}[invalid].sc-nano-file-upload-h:not([invalid=false]) .file-upload__label.sc-nano-file-upload{color:var(--label-color--invalid)}.file-upload__input.sc-nano-file-upload{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload,.file-upload__more.sc-nano-file-upload,.file-upload__label.sc-nano-file-upload{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-upload__more.sc-nano-file-upload{height:1em;margin-left:3px;margin-right:0;margin-top:calc(var(--label-padding) / 2);margin-bottom:var(--label-padding);position:relative}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__more.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:3px;margin-inline-start:3px;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload{top:0;left:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload,.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:1}.file-upload__error.sc-nano-file-upload{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload{opacity:1}.file-upload__help.sc-nano-file-upload{font-style:italic;opacity:1;color:var(--help-msg-color)}.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:0}.file-upload__drop.sc-nano-file-upload{position:relative;width:100%;display:inline-block}.file-upload__drop-area.sc-nano-file-upload{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:var(--drop-bg);color:var(--drop-text);min-height:var(--drop-height);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:0.9em;position:relative;-webkit-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out;padding:0.5rem}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__drop-area.sc-nano-file-upload{opacity:0.7}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:var(--drop-bg--invalid)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:#fff}.file-upload__drop-area.sc-nano-file-upload::after{content:"";position:absolute;border-radius:var(--drop-border-radius);border-width:var(--drop-border-width);border-color:rgba(var(--drop-border-tint), 0.5);border-style:dashed;top:0;bottom:0;left:0;right:0;-webkit-transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out;transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{border-color:rgba(var(--drop-border--invalid), 1)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{top:5px;bottom:5px;left:5px;right:5px}.file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{color:rgba(var(--drop-border-tint), 1);text-decoration:underline;border-radius:2px;z-index:1;cursor:pointer;position:relative}.file-upload--focus.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__list.sc-nano-file-upload{list-style:none;margin:0;padding:0}.file-upload__list-wrap.sc-nano-file-upload{position:relative;top:-4px}.file-upload__list-item.sc-nano-file-upload{width:100%;margin:0 0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:hideListItem 0.3s ease-in-out forwards;animation:hideListItem 0.3s ease-in-out forwards}@-webkit-keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list-item--active.sc-nano-file-upload{-webkit-animation:showListItem 0.3s ease-in-out forwards;animation:showListItem 0.3s ease-in-out forwards}@-webkit-keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list.sc-nano-file-upload .list-title.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;padding:5px 5px;margin-right:2px;display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.9em;color:var(--help-msg-color)}.file-upload__list.sc-nano-file-upload .list-button.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;margin:2px}.file-upload__list.sc-nano-file-upload .list-error.sc-nano-file-upload{--color:rgba(var(--drop-border--invalid), 1)}.file-upload__button.sc-nano-file-upload{margin:0;padding:0;border:none;background-color:transparent;font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;-webkit-transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;padding-left:var(--nano-btn-padding-start, 1rem);padding-right:var(--nano-btn-padding-end, 1rem);padding-top:var(--nano-btn-padding-top, 0.5rem);padding-bottom:var(--nano-btn-padding-bottom, 0.5rem);-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5rem);font-weight:500;cursor:pointer;background:rgba(0, 0, 0, 0.02);background-color:var(--btn-bg);color:var(--btn-text);--nano-btn-icon-size:var(--btn-icon-size);--nano-btn-line-height:var(--btn-icon-size);--nano-btn-padding-top:var(--btn-padding-top);--nano-btn-padding-bottom:var(--btn-padding-bottom);--nano-btn-padding-start:var(--btn-padding-start);--nano-btn-padding-end:var(--btn-padding-end);max-width:100%;font-size:0.9em}.file-upload__button.sc-nano-file-upload::-moz-focus-inner{border:0;padding:0}.file-upload__button.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:focus{text-decoration:none;color:inherit}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--nano-btn-padding-start, 1rem);padding-inline-start:var(--nano-btn-padding-start, 1rem);-webkit-padding-end:var(--nano-btn-padding-end, 1rem);padding-inline-end:var(--nano-btn-padding-end, 1rem)}}@media print{.file-upload__button.sc-nano-file-upload{display:none}}.file-upload__button.sc-nano-file-upload:focus,.file-upload__button.button--focus.sc-nano-file-upload{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.5rem;margin-right:0;font-size:var(--nano-btn-icon-size, 1rem);vertical-align:middle;margin-top:-0.188rem;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0;margin-right:0.5rem}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}}.file-upload__button.sc-nano-file-upload:hover:not(.file-upload__button--disabled){-webkit-box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.file-upload__button.sc-nano-file-upload:active:not(.button--disabled):not(:disabled){-webkit-box-shadow:none;box-shadow:none}.file-upload__button--disabled.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload:disabled{opacity:0.6}.file-upload__button--disabled.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:disabled:hover{cursor:default}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--active.sc-nano-file-upload{background-color:var(--nano-color-primary-shade, #00637f);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled).button--keyline,.file-upload__button.button--active.button--keyline.sc-nano-file-upload{background-color:var(--btn-bg);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:focus{color:var(--btn-text)}.file-upload__button.button--keyline.sc-nano-file-upload{background:transparent;border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:var(--btn-bg);border-color:var(--btn-bg)}.file-upload__button.button--keyline.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--keyline.sc-nano-file-upload:not(.button--focus),.file-upload__button.button--keyline.button--active.sc-nano-file-upload{-webkit-box-shadow:none;box-shadow:none}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__button.sc-nano-file-upload{opacity:0.4}.file-upload--dragging.sc-nano-file-upload .file-upload__button.sc-nano-file-upload{--nano-btn-border-style:dashed}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:inherit;padding:0;border:0;outline:none;background-color:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:auto;color:var(--clear-btn-color)}.is-invalid.sc-nano-file-upload-h .file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{color:var(--clear-btn-color--invalid)}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.4rem;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.4rem;margin-inline-start:0.4rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload span.sc-nano-file-upload{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}';var fileInputIds=0;var getDataTransfer=function(){return new DataTransfer};try{getDataTransfer()}catch(_a){try{getDataTransfer=function(){return new ClipboardEvent("").clipboardData};getDataTransfer()}catch(_b){getDataTransfer=null}}var FileUpload=function(){function e(e){var n=this;registerInstance(this,e);this.nanoChange=createEvent(this,"nanoChange",7);this.nanoFocus=createEvent(this,"nanoFocus",7);this.nanoBlur=createEvent(this,"nanoBlur",7);this.nanoValidate=createEvent(this,"nanoValidate",7);this.fileInputId="nano-file-upload-"+fileInputIds++;this.canChangeFileList=!!getDataTransfer;this.removeFiles=[];this.errorMessage="";this.isDragging=false;this.fileList=[];this.maxFileSize=1;this.maxFiles=1;this.placeholder="Choose a file...";this.hideLabel=false;this.required=false;this.disabled=false;this.clearInput=false;this.showInlineError=true;this.validateOn="submit";this._invalid=false;this.onClearClick=function(){n.value=""};this.onBlur=function(){n.hasFocus=false;n.validate();if(n.validateOn==="dirty")n.showInlineValidation();n.nanoBlur.emit()};this.onFocus=function(){n.hasFocus=true;n.nanoFocus.emit()};this.validate=function(){n.errorMessage="";n.inputEl.setCustomValidity("");var e;if(!n.inputEl.validity.valid){e=n.inputEl.validationMessage}else{n.fileList.forEach((function(t){e=null;if(!n.checkFileSize(t.file.size)){e="Maximum file size exceeded. Max file size is "+n.maxFileSize+"Mb"}else if(!n.checkFileType(t.file.type))e="File type is not allowed ("+n.accept+")";t.validationMessage=e;t.valid=!e}));if(n.fileList.length>n.maxFiles)e="Maxinum number of files exceeded ("+n.maxFiles+")"}if(!!e)n.inputEl.setCustomValidity(e)};this.onInvalid=function(e){if(n.showInlineError)e.preventDefault();n.validate();n.showInlineValidation(e)};this.onFileChoose=function(e){var t=e.target.files;if(t&&t.length)n.addNewFiles(e.target.files)};this.onFileRemoveFileClick=function(e,t){if(!n.canChangeFileList)return;n.removeFiles.push(t);e.target.closest(".file-upload__list-item--active").classList.remove("file-upload__list-item--active")};this.onFileRemoveAnim=function(){if(!n.canChangeFileList||!n.removeFiles.length)return;n.fileList=n.fileList.filter((function(e){return!n.removeFiles.find((function(n){return n===e}))}));n.removeFiles=[]};this.onInputChange=function(){n.nanoChange.emit({value:n.value,files:n.files})};this.onDragStop=function(e){e.preventDefault();e.stopPropagation();n.isDragging=false};this.onDragStart=function(e){e.preventDefault();e.stopPropagation();n.isDragging=true};this.onDrop=function(e){n.onDragStop(e);if(e.dataTransfer.files&&e.dataTransfer.files.length)n.addNewFiles(e.dataTransfer.files)};this.FileUploadInput=function(e,t){var a=n.fileInputId+"-lbl";var i=n.showInlineError||n.hasHelperSlot?n.fileInputId+"-more":"";return[h("div",{class:"file-upload__"+e+"-wrap"},h("label",{class:"file-upload__"+e,htmlFor:n.fileInputId,id:a,onDrop:function(e){n.onDrop(e);n.onDragStop(e)},onDragEnd:n.onDragStop,onDragLeave:n.onDragStop,onDragEnter:n.onDragStart,onDragOver:n.onDragStart},(!!n.label||n.hasLabelSlot&&e!=="drop")&&h("div",{class:"file-upload__label "+(n.hideLabel?"visually-hide":"")},!!n.label&&!!n.label.length?n.label:"",!n.label&&n.hasLabelSlot&&e!=="drop"&&h("slot",{name:"label"})),e==="drop"&&h("div",{class:"file-upload__drop-area"},h("div",null,n.hasLabelSlot&&h("slot",{name:"label"})),h("div",null,"Drag and drop or ",h("span",null,"browse"))),e==="btn"&&h("div",{class:"file-upload__button button--keyline button--icon-start "+(n.hasFocus?"button--focus":"")},h("div",{class:"file-upload__btn-content"},h("nano-icon",{name:"regular/cloud-upload"}),h("span",null,!!n.fileList.length?n.fileList[0].file.name:n.placeholder),!!n.value&&n.clearInput&&!n.disabled&&h("button",{type:"button",class:"icon file-upload__clear-btn",tabindex:"-1",onClick:n.onClearClick},h("nano-icon",{name:"light/times"})))),h("input",{"aria-labelledby":a+" "+i+" "+t,type:"file",id:n.fileInputId,accept:n.accept,class:"file-upload__input",multiple:n.maxFiles>1,disabled:n.disabled,name:n.canChangeFileList?undefined:n.name,form:n.form,ref:function(e){if(n.canChangeFileList){n.publicInputEl=e;return}n.inputEl=e},onChange:n.onFileChoose,onFocus:n.onFocus,onReset:n.onInputChange})),h("input",{name:!n.canChangeFileList?undefined:n.name,form:n.form,ref:function(e){if(!n.canChangeFileList)return;n.inputEl=e},type:"file",id:n.fileInputId+"-hidden",tabIndex:-1,multiple:true,class:"file-upload__input",disabled:n.disabled,required:n.required,accept:n.accept,onInvalid:n.onInvalid,onChange:n.onInputChange})),n.showInlineError||n.hasHelperSlot?h("div",{class:"file-upload__more",id:i},n.showInlineError&&!!n.errorMessage.length?h("div",{class:"file-upload__error"},n.errorMessage):"",h("div",{class:"file-upload__help"},h("slot",{name:"helper"}))):""]};this.button=function(){return n.FileUploadInput("btn")};this.dropArea=function(){var e=n.fileInputId+"-list";return[n.FileUploadInput("drop",e),h("output",{class:"file-upload__list-wrap",id:e},!!n.fileList&&n.fileList.length>0&&h("ul",{class:"file-upload__list list"},n.fileList.map((function(e){return h("li",{key:e.file.name,class:"file-upload__list-item file-upload__list-item--active list-item",onAnimationEnd:function(e){return n.onFileRemoveAnim()}},h("span",{class:"list-title"},e.file.name),!e.valid&&h("nano-tooltip",{content:e.validationMessage,placement:"left"},h("nano-icon-button",{class:"list-button list-error",iconName:"light/exclamation-triangle",label:"File error"})),n.canChangeFileList&&h("nano-icon-button",{class:"list-button list-button--view",type:"button",iconName:"light/eye",label:"View file",target:"_blank",href:e.location}),n.canChangeFileList&&h("nano-icon-button",{onClick:function(t){return n.onFileRemoveFileClick(t,e)},class:"list-button list-button--remove",iconName:"light/times",label:"Remove file"}))}))))]}}e.prototype.fileListChange=function(){var e=this;if(this.canChangeFileList){this.publicInputEl.value="";this.inputEl.files=this.arrToFileList(this.fileList.map((function(e){return e.file})));setTimeout((function(){e.nanoChange.emit({value:e.value,files:e.files})}),20)}};e.prototype.shouldValidate=function(){var e=this;if(!this.inputEl)return;this.validate();requestAnimationFrame((function(){if(e.validateOn==="dirty")e.showInlineValidation()}))};Object.defineProperty(e.prototype,"invalid",{get:function(){return this._invalid},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"validityMessage",{get:function(){if(!this.inputEl)return"";return this.inputEl.validationMessage},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"files",{get:function(){return this.inputEl?Array.from(this.inputEl.files).map((function(e){e.objectURL=URL.createObjectURL(e);return e})):[]},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"value",{get:function(){return this.inputEl?this.inputEl.value:""},set:function(e){if(e===""&&this.inputEl){this.fileList=[];this.inputEl.value=""}},enumerable:false,configurable:true});e.prototype.reportValidity=function(e){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){if(e){this.validate();this.showInlineValidation()}return[2,{isValid:!this.invalid,errorMessage:this.inputEl.validationMessage}]}))}))};e.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){if(this.inputEl)this.inputEl.focus();return[2]}))}))};e.prototype.getInputElement=function(){return Promise.resolve(this.inputEl)};e.prototype.showError=function(e){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){if(this.inputEl){this.inputEl.setCustomValidity(e);this.validate();this.showInlineValidation()}return[2]}))}))};e.prototype.globalClickHandler=function(e){var n=this;if(!this.hasFocus)return;if(e.composedPath().every((function(e){return e!==n.host})))this.onBlur()};e.prototype.globalKeydownHandler=function(e){if(!this.hasFocus||e.key!=="Tab")return;if(e.target!==this.inputEl)this.onBlur()};e.prototype.onReset=function(e){var n=this.form?document.querySelector("#"+this.form):this.host.closest("form");if(!n||e.target!==this.host.closest("form"))return;this.value=""};e.prototype.arrToFileList=function(e){var n=getDataTransfer();for(var t=0,a=e.length;t<a;t++)n.items.add(e[t]);return n.files};e.prototype.checkFileSize=function(e){return e/1e6<=this.maxFileSize};e.prototype.checkFileType=function(e){if(!this.accept)return true;return this.accept.match(e)&&this.accept.match(e).length>0};e.prototype.showInlineValidation=function(e){if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this._invalid=false;this.errorMessage="";if(!this.inputEl.validity.valid){this.errorMessage=this.inputEl.validationMessage;this._invalid=true}this.nanoValidate.emit({isValid:!this._invalid,errorMessage:this.inputEl.validationMessage,originalEvent:e})};e.prototype.slotChangeObserver=function(){var e=this;if(this.mo)this.mo.disconnect();var n=this.mo=new MutationObserver((function(){return e.processSlottedContent()}));n.observe(this.host,{childList:true,subtree:true})};e.prototype.processSlottedContent=function(){this.hasLabelSlot=!!this.host.querySelectorAll('[slot="label"]');this.hasHelperSlot=!!this.host.querySelector('[slot="helper"]')};e.prototype.addNewFiles=function(e){var n=this;var t=Array.from(e).map((function(e){return{file:e,location:URL.createObjectURL(e),valid:true,validationMessage:null}}));if(this.canChangeFileList&&this.maxFiles>1){var a=t.filter((function(e){return!n.fileList.find((function(n){return n.file.name===e.file.name}))}));this.fileList=__spreadArray(__spreadArray([],this.fileList),a)}else this.fileList=t};e.prototype.disconnectedCallback=function(){if(this.mo)this.mo.disconnect()};e.prototype.componentDidLoad=function(){this.slotChangeObserver()};e.prototype.componentWillLoad=function(){this.processSlottedContent()};e.prototype.render=function(){return h(Host,null,h("div",{class:{"file-upload":true,"file-upload--dragging":this.isDragging,"file-upload--focus":this.hasFocus,"file-upload--invalid":this._invalid}},this.maxFiles>1?h(this.dropArea,null):h(this.button,null)))};Object.defineProperty(e.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{fileList:["fileListChange","shouldValidate"],maxFiles:["shouldValidate"],maxFileSize:["shouldValidate"],capture:["shouldValidate"],accept:["shouldValidate"],required:["shouldValidate"],disabled:["shouldValidate"]}},enumerable:false,configurable:true});return e}();FileUpload.style=fileUploadCss;export{FileUpload as nano_file_upload};
4
+ */import{r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-c42becad.js";var fileUploadCss='.sc-nano-file-upload-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-file-upload,*.sc-nano-file-upload::before,*.sc-nano-file-upload::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-file-upload{display:none !important}.sc-nano-file-upload-h{min-height:1rem;display:block;--invalid-msg-color:var(--nano-color-danger, #ef4135);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--label-color:var(--nano-input-label-color, "currentColor");--label-font-size:var(--nano-input-label-color, 1em);--label-padding:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--label-color--invalid:var(--nano-input-label-color-invalid, "currentColor");--drop-bg:#f2f7f9;--drop-text:#756f6a;--drop-height:3.5em;--drop-border-tint:var(--nano-color-primary-rgb, 0, 116, 149);--drop-border-width:2px;--drop-border-radius:5px;--drop-bg--invalid:var(--nano-input-background-color, white);--drop-border--invalid:var(--nano-color-danger-rgb, 239, 65, 53);--btn-bg:var(--nano-color-primary, #007495);--btn-text:var(--nano-color-primary-contrast, #fff);--btn-icon-size:var(--nano-btn-icon-size, 1.4em);--btn-padding-top:var(--nano-btn-padding-top, 0.5em);--btn-padding-bottom:var(--nano-btn-padding-bottom, 0.5em);--btn-padding-start:var(--nano-btn-padding-start, 1em);--btn-padding-end:var(--nano-btn-padding-end, 1em)}[disabled].sc-nano-file-upload-h:not([disabled=false]){opacity:0.7}[disabled].sc-nano-file-upload-h:not([disabled=false]) *.sc-nano-file-upload{pointer-events:none !important}.file-upload__label.sc-nano-file-upload{font-size:var(--label-font-size);padding:0 0 var(--label-padding);margin:0;line-height:1}[invalid].sc-nano-file-upload-h:not([invalid=false]) .file-upload__label.sc-nano-file-upload{color:var(--label-color--invalid)}.file-upload__input.sc-nano-file-upload{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload,.file-upload__more.sc-nano-file-upload,.file-upload__label.sc-nano-file-upload{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-upload__more.sc-nano-file-upload{height:1em;margin-left:3px;margin-right:0;margin-top:calc(var(--label-padding) / 2);margin-bottom:var(--label-padding);position:relative}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__more.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:3px;margin-inline-start:3px;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__error.sc-nano-file-upload,.file-upload__help.sc-nano-file-upload{top:0;left:0;position:absolute;font-size:var(--invalid-msg-font-size);line-height:1.2;-webkit-transition:0.3s ease-out opacity;transition:0.3s ease-out opacity}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload,.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:1}.file-upload__error.sc-nano-file-upload{color:var(--invalid-msg-color);font-stretch:condensed;opacity:0}.file-upload--invalid.sc-nano-file-upload .file-upload__error.sc-nano-file-upload{opacity:1}.file-upload__help.sc-nano-file-upload{font-style:italic;opacity:1;color:var(--help-msg-color)}.file-upload--invalid.sc-nano-file-upload .file-upload__help.sc-nano-file-upload{opacity:0}.file-upload__drop.sc-nano-file-upload{position:relative;width:100%;display:inline-block}.file-upload__drop-area.sc-nano-file-upload{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:var(--drop-bg);color:var(--drop-text);min-height:var(--drop-height);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:0.9em;position:relative;-webkit-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out;padding:0.5rem}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__drop-area.sc-nano-file-upload{opacity:0.7}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:var(--drop-bg--invalid)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload{background-color:#fff}.file-upload__drop-area.sc-nano-file-upload::after{content:"";position:absolute;border-radius:var(--drop-border-radius);border-width:var(--drop-border-width);border-color:rgba(var(--drop-border-tint), 0.5);border-style:dashed;top:0;bottom:0;left:0;right:0;-webkit-transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out;transition:top 0.1s ease-in-out, bottom 0.1s ease-in-out, left 0.1s ease-in-out, right 0.1s ease-in-out}.file-upload--invalid.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{border-color:rgba(var(--drop-border--invalid), 1)}.file-upload--dragging.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload::after{top:5px;bottom:5px;left:5px;right:5px}.file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{color:rgba(var(--drop-border-tint), 1);text-decoration:underline;border-radius:2px;z-index:1;cursor:pointer;position:relative}.file-upload--focus.sc-nano-file-upload .file-upload__drop-area.sc-nano-file-upload span.sc-nano-file-upload{-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__list.sc-nano-file-upload{list-style:none;margin:0;padding:0}.file-upload__list-wrap.sc-nano-file-upload{position:relative;top:-4px}.file-upload__list-item.sc-nano-file-upload{width:100%;margin:0 0 2px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:hideListItem 0.3s ease-in-out forwards;animation:hideListItem 0.3s ease-in-out forwards}@-webkit-keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes hideListItem{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list-item--active.sc-nano-file-upload{-webkit-animation:showListItem 0.3s ease-in-out forwards;animation:showListItem 0.3s ease-in-out forwards}@-webkit-keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes showListItem{0%{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform:translateZ(0);transform:translateZ(0)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform:translateZ(0);transform:translateZ(0)}}.file-upload__list.sc-nano-file-upload .list-title.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;padding:5px 5px;margin-right:2px;display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.9em;color:var(--help-msg-color)}.file-upload__list.sc-nano-file-upload .list-button.sc-nano-file-upload{background:var(--nano-color-blue--faded);border-radius:5px;margin:2px}.file-upload__list.sc-nano-file-upload .list-error.sc-nano-file-upload{--color:rgba(var(--drop-border--invalid), 1)}.file-upload__button.sc-nano-file-upload{margin:0;padding:0;border:none;background-color:transparent;font:inherit;-webkit-box-align:center;text-decoration:none;color:inherit;-webkit-transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out;transition:background-color 100ms ease-in-out, box-shadow 100ms ease-in-out, border-color 100ms ease-in-out, color 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out;padding-left:var(--nano-btn-padding-start, 1rem);padding-right:var(--nano-btn-padding-end, 1rem);padding-top:var(--nano-btn-padding-top, 0.5rem);padding-bottom:var(--nano-btn-padding-bottom, 0.5rem);-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));display:inline-block;border-radius:var(--nano-btn-border-radius, 5px);line-height:var(--nano-btn-line-height, 1.5rem);font-weight:500;cursor:pointer;background:rgba(0, 0, 0, 0.02);background-color:var(--btn-bg);color:var(--btn-text);--nano-btn-icon-size:var(--btn-icon-size);--nano-btn-line-height:var(--btn-icon-size);--nano-btn-padding-top:var(--btn-padding-top);--nano-btn-padding-bottom:var(--btn-padding-bottom);--nano-btn-padding-start:var(--btn-padding-start);--nano-btn-padding-end:var(--btn-padding-end);max-width:100%;font-size:0.9em}.file-upload__button.sc-nano-file-upload::-moz-focus-inner{border:0;padding:0}.file-upload__button.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:focus{text-decoration:none;color:inherit}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--nano-btn-padding-start, 1rem);padding-inline-start:var(--nano-btn-padding-start, 1rem);-webkit-padding-end:var(--nano-btn-padding-end, 1rem);padding-inline-end:var(--nano-btn-padding-end, 1rem)}}@media print{.file-upload__button.sc-nano-file-upload{display:none}}.file-upload__button.sc-nano-file-upload:focus,.file-upload__button.button--focus.sc-nano-file-upload{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.5rem;margin-right:0;font-size:var(--nano-btn-icon-size, 1rem);vertical-align:middle;margin-top:-0.188rem;display:inline-block}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0;margin-right:0.5rem}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.button--icon-start.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}}.file-upload__button.sc-nano-file-upload:hover:not(.file-upload__button--disabled){-webkit-box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.2))}.file-upload__button.sc-nano-file-upload:active:not(.button--disabled):not(:disabled){-webkit-box-shadow:none;box-shadow:none}.file-upload__button--disabled.sc-nano-file-upload,.file-upload__button.sc-nano-file-upload:disabled{opacity:0.6}.file-upload__button--disabled.sc-nano-file-upload:hover,.file-upload__button.sc-nano-file-upload:disabled:hover{cursor:default}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--active.sc-nano-file-upload{background-color:var(--nano-color-primary-shade, #00637f);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled).button--keyline,.file-upload__button.button--active.button--keyline.sc-nano-file-upload{background-color:var(--btn-bg);color:var(--btn-text)}.file-upload__button.sc-nano-file-upload:focus{color:var(--btn-text)}.file-upload__button.button--keyline.sc-nano-file-upload{background:transparent;border-style:var(--nano-btn-border-style, solid);border-width:var(--nano-btn-border-width, 2px);border-radius:var(--nano-btn-border-radius, 5px);color:var(--btn-bg);border-color:var(--btn-bg)}.file-upload__button.button--keyline.sc-nano-file-upload:hover:not(.button--disabled):not(:disabled),.file-upload__button.button--keyline.sc-nano-file-upload:not(.button--focus),.file-upload__button.button--keyline.button--active.sc-nano-file-upload{-webkit-box-shadow:none;box-shadow:none}[disabled].sc-nano-file-upload-h:not([disabled=false]) .file-upload__button.sc-nano-file-upload{opacity:0.4}.file-upload--dragging.sc-nano-file-upload .file-upload__button.sc-nano-file-upload{--nano-btn-border-style:dashed}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:inherit;padding:0;border:0;outline:none;background-color:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:auto;color:var(--clear-btn-color)}.is-invalid.sc-nano-file-upload-h .file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload{color:var(--clear-btn-color--invalid)}.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:0.4rem;margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.file-upload__button.sc-nano-file-upload .file-upload__clear-btn.sc-nano-file-upload nano-icon.sc-nano-file-upload{margin-left:unset;margin-right:unset;-webkit-margin-start:0.4rem;margin-inline-start:0.4rem;-webkit-margin-end:0;margin-inline-end:0}}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.file-upload__button.sc-nano-file-upload .file-upload__btn-content.sc-nano-file-upload span.sc-nano-file-upload{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}';var fileInputIds=0;var getDataTransfer=function(){return new DataTransfer};try{getDataTransfer()}catch(_a){try{getDataTransfer=function(){return new ClipboardEvent("").clipboardData};getDataTransfer()}catch(_b){getDataTransfer=null}}var FileUpload=function(){function e(e){var n=this;registerInstance(this,e);this.nanoChange=createEvent(this,"nanoChange",7);this.nanoFocus=createEvent(this,"nanoFocus",7);this.nanoBlur=createEvent(this,"nanoBlur",7);this.nanoValidate=createEvent(this,"nanoValidate",7);this.fileInputId="nano-file-upload-"+fileInputIds++;this.canChangeFileList=!!getDataTransfer;this.removeFiles=[];this.errorMessage="";this.isDragging=false;this.fileList=[];this.maxFileSize=1;this.maxFiles=1;this.placeholder="Choose a file...";this.hideLabel=false;this.required=false;this.disabled=false;this.clearInput=false;this.showInlineError=true;this.validateOn="submit";this._invalid=false;this.onClearClick=function(){n.value=""};this.onBlur=function(){n.hasFocus=false;n.validate();if(n.validateOn==="dirty")n.showInlineValidation();n.nanoBlur.emit()};this.onFocus=function(){n.hasFocus=true;n.nanoFocus.emit()};this.validate=function(){n.errorMessage="";n.inputEl.setCustomValidity("");var e;if(!n.inputEl.validity.valid){e=n.inputEl.validationMessage}else{n.fileList.forEach((function(t){e=null;if(!n.checkFileSize(t.file.size)){e="Maximum file size exceeded. Max file size is "+n.maxFileSize+"Mb"}else if(!n.checkFileType(t.file.type))e="File type is not allowed ("+n.accept+")";t.validationMessage=e;t.valid=!e}));if(n.fileList.length>n.maxFiles)e="Maxinum number of files exceeded ("+n.maxFiles+")"}if(!!e)n.inputEl.setCustomValidity(e)};this.onInvalid=function(e){if(n.showInlineError)e.preventDefault();n.validate();n.showInlineValidation(e)};this.onFileChoose=function(e){var t=e.target.files;if(t&&t.length)n.addNewFiles(e.target.files)};this.onFileRemoveFileClick=function(e,t){if(!n.canChangeFileList)return;n.removeFiles.push(t);e.target.closest(".file-upload__list-item--active").classList.remove("file-upload__list-item--active")};this.onFileRemoveAnim=function(){if(!n.canChangeFileList||!n.removeFiles.length)return;n.fileList=n.fileList.filter((function(e){return!n.removeFiles.find((function(n){return n===e}))}));n.removeFiles=[]};this.onInputChange=function(){n.nanoChange.emit({value:n.value,files:n.files})};this.onDragStop=function(e){e.preventDefault();e.stopPropagation();n.isDragging=false};this.onDragStart=function(e){e.preventDefault();e.stopPropagation();n.isDragging=true};this.onDrop=function(e){n.onDragStop(e);if(e.dataTransfer.files&&e.dataTransfer.files.length)n.addNewFiles(e.dataTransfer.files)};this.FileUploadInput=function(e,t){var a=n.fileInputId+"-lbl";var i=n.showInlineError||n.hasHelperSlot?n.fileInputId+"-more":"";return[h("div",{class:"file-upload__"+e+"-wrap"},h("label",{class:"file-upload__"+e,htmlFor:n.fileInputId,id:a,onDrop:function(e){n.onDrop(e);n.onDragStop(e)},onDragEnd:n.onDragStop,onDragLeave:n.onDragStop,onDragEnter:n.onDragStart,onDragOver:n.onDragStart},(!!n.label||n.hasLabelSlot&&e!=="drop")&&h("div",{class:"file-upload__label "+(n.hideLabel?"visually-hide":"")},!!n.label&&!!n.label.length?n.label:"",!n.label&&n.hasLabelSlot&&e!=="drop"&&h("slot",{name:"label"})),e==="drop"&&h("div",{class:"file-upload__drop-area"},h("div",null,n.hasLabelSlot&&h("slot",{name:"label"})),h("div",null,"Drag and drop or ",h("span",null,"browse"))),e==="btn"&&h("div",{class:"file-upload__button button--keyline button--icon-start "+(n.hasFocus?"button--focus":"")},h("div",{class:"file-upload__btn-content"},h("nano-icon",{name:"regular/cloud-upload"}),h("span",null,!!n.fileList.length?n.fileList[0].file.name:n.placeholder),!!n.value&&n.clearInput&&!n.disabled&&h("button",{type:"button",class:"icon file-upload__clear-btn",tabindex:"-1",onClick:n.onClearClick},h("nano-icon",{name:"light/times"})))),h("input",{"aria-labelledby":a+" "+i+" "+t,type:"file",id:n.fileInputId,accept:n.accept,class:"file-upload__input",multiple:n.maxFiles>1,disabled:n.disabled,name:n.canChangeFileList?undefined:n.name,form:n.form,ref:function(e){if(n.canChangeFileList){n.publicInputEl=e;return}n.inputEl=e},onChange:n.onFileChoose,onFocus:n.onFocus,onReset:n.onInputChange})),h("input",{name:!n.canChangeFileList?undefined:n.name,form:n.form,ref:function(e){if(!n.canChangeFileList)return;n.inputEl=e},type:"file",id:n.fileInputId+"-hidden",tabIndex:-1,multiple:true,class:"file-upload__input",disabled:n.disabled,required:n.required,accept:n.accept,onInvalid:n.onInvalid,onChange:n.onInputChange})),n.showInlineError||n.hasHelperSlot?h("div",{class:"file-upload__more",id:i},n.showInlineError&&!!n.errorMessage.length?h("div",{class:"file-upload__error"},n.errorMessage):"",h("div",{class:"file-upload__help"},h("slot",{name:"helper"}))):""]};this.button=function(){return n.FileUploadInput("btn")};this.dropArea=function(){var e=n.fileInputId+"-list";return[n.FileUploadInput("drop",e),h("output",{class:"file-upload__list-wrap",id:e},!!n.fileList&&n.fileList.length>0&&h("ul",{class:"file-upload__list list"},n.fileList.map((function(e){return h("li",{key:e.file.name,class:"file-upload__list-item file-upload__list-item--active list-item",onAnimationEnd:function(e){return n.onFileRemoveAnim()}},h("span",{class:"list-title"},e.file.name),!e.valid&&h("nano-tooltip",{content:e.validationMessage,placement:"left"},h("nano-icon-button",{class:"list-button list-error",iconName:"light/exclamation-triangle",label:"File error"})),n.canChangeFileList&&h("nano-icon-button",{class:"list-button list-button--view",type:"button",iconName:"light/eye",label:"View file",target:"_blank",href:e.location}),n.canChangeFileList&&h("nano-icon-button",{onClick:function(t){return n.onFileRemoveFileClick(t,e)},class:"list-button list-button--remove",iconName:"light/times",label:"Remove file"}))}))))]}}e.prototype.fileListChange=function(){var e=this;if(this.canChangeFileList){this.publicInputEl.value="";this.inputEl.files=this.arrToFileList(this.fileList.map((function(e){return e.file})));setTimeout((function(){e.nanoChange.emit({value:e.value,files:e.files})}),20)}};e.prototype.shouldValidate=function(){var e=this;if(!this.inputEl)return;this.validate();requestAnimationFrame((function(){if(e.validateOn==="dirty")e.showInlineValidation()}))};Object.defineProperty(e.prototype,"invalid",{get:function(){return this._invalid},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"validityMessage",{get:function(){if(!this.inputEl)return"";return this.inputEl.validationMessage},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"files",{get:function(){return this.inputEl?Array.from(this.inputEl.files).map((function(e){e.objectURL=URL.createObjectURL(e);return e})):[]},set:function(e){this.addNewFiles(this.arrToFileList(e))},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"value",{get:function(){return this.inputEl?this.inputEl.value:""},set:function(e){if(e===""&&this.inputEl){this.fileList=[];this.inputEl.value=""}},enumerable:false,configurable:true});e.prototype.reportValidity=function(e){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){if(e){this.validate();this.showInlineValidation()}return[2,{isValid:!this.invalid,errorMessage:this.inputEl.validationMessage}]}))}))};e.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){if(this.inputEl)this.inputEl.focus();return[2]}))}))};e.prototype.getInputElement=function(){return Promise.resolve(this.inputEl)};e.prototype.showError=function(e){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){if(this.inputEl){this.inputEl.setCustomValidity(e);this.validate();this.showInlineValidation()}return[2]}))}))};e.prototype.globalClickHandler=function(e){var n=this;if(!this.hasFocus)return;if(e.composedPath().every((function(e){return e!==n.host})))this.onBlur()};e.prototype.globalKeydownHandler=function(e){if(!this.hasFocus||e.key!=="Tab")return;if(e.target!==this.inputEl)this.onBlur()};e.prototype.onReset=function(e){var n=this.form?document.querySelector("#"+this.form):this.host.closest("form");if(!n||e.target!==this.host.closest("form"))return;this.value=""};e.prototype.arrToFileList=function(e){var n=getDataTransfer();for(var t=0,a=e.length;t<a;t++)n.items.add(e[t]);return n.files};e.prototype.checkFileSize=function(e){return e/1e6<=this.maxFileSize};e.prototype.checkFileType=function(e){if(!this.accept)return true;return this.accept.match(e)&&this.accept.match(e).length>0};e.prototype.showInlineValidation=function(e){if(this.validateOn==="submitThenDirty")this.validateOn="dirty";this._invalid=false;this.errorMessage="";if(!this.inputEl.validity.valid){this.errorMessage=this.inputEl.validationMessage;this._invalid=true}this.nanoValidate.emit({isValid:!this._invalid,errorMessage:this.inputEl.validationMessage,originalEvent:e})};e.prototype.slotChangeObserver=function(){var e=this;if(this.mo)this.mo.disconnect();var n=this.mo=new MutationObserver((function(){return e.processSlottedContent()}));n.observe(this.host,{childList:true,subtree:true})};e.prototype.processSlottedContent=function(){this.hasLabelSlot=!!this.host.querySelectorAll('[slot="label"]');this.hasHelperSlot=!!this.host.querySelector('[slot="helper"]')};e.prototype.addNewFiles=function(e){var n=this;var t=Array.from(e).map((function(e){return{file:e,location:URL.createObjectURL(e),valid:true,validationMessage:null}}));if(this.canChangeFileList&&this.maxFiles>1){var a=t.filter((function(e){return!n.fileList.find((function(n){return n.file.name===e.file.name}))}));this.fileList=__spreadArray(__spreadArray([],this.fileList),a)}else this.fileList=t};e.prototype.disconnectedCallback=function(){if(this.mo)this.mo.disconnect()};e.prototype.componentDidLoad=function(){this.slotChangeObserver()};e.prototype.componentWillLoad=function(){this.processSlottedContent()};e.prototype.render=function(){return h(Host,null,h("div",{class:{"file-upload":true,"file-upload--dragging":this.isDragging,"file-upload--focus":this.hasFocus,"file-upload--invalid":this._invalid}},this.maxFiles>1?h(this.dropArea,null):h(this.button,null)))};Object.defineProperty(e.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{fileList:["fileListChange","shouldValidate"],maxFiles:["shouldValidate"],maxFileSize:["shouldValidate"],capture:["shouldValidate"],accept:["shouldValidate"],required:["shouldValidate"],disabled:["shouldValidate"]}},enumerable:false,configurable:true});return e}();FileUpload.style=fileUploadCss;export{FileUpload as nano_file_upload};
5
5
  //# sourceMappingURL=nano-file-upload.entry.js.map