@nanoporetech-digital/components 2.8.0 → 2.10.1

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 (515) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/cjs/{algoliasearch.umd-dcf18a4a.js → algoliasearch.umd-7ee60729.js} +3 -3
  3. package/dist/cjs/{algoliasearch.umd-dcf18a4a.js.map → algoliasearch.umd-7ee60729.js.map} +1 -1
  4. package/dist/cjs/{component-store-722032a5.js → component-store-19844199.js} +37 -25
  5. package/dist/cjs/component-store-19844199.js.map +1 -0
  6. package/dist/cjs/{form-control-8f530f7d.js → form-control-d54a847f.js} +26 -19
  7. package/dist/cjs/form-control-d54a847f.js.map +1 -0
  8. package/dist/cjs/index-cb62df44.js +5 -0
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/nano-algolia-filter.cjs.entry.js +1 -1
  11. package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
  12. package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
  13. package/dist/cjs/nano-checkbox-group.cjs.entry.js +58 -20
  14. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-checkbox.cjs.entry.js +27 -15
  16. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nano-components.cjs.js +1 -1
  18. package/dist/cjs/nano-datalist_3.cjs.entry.js +5 -3
  19. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-date-input.cjs.entry.js +17 -4
  21. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nano-dialog.cjs.entry.js +13 -2
  23. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nano-field-validator.cjs.entry.js +531 -0
  25. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -0
  26. package/dist/cjs/nano-file-upload.cjs.entry.js +59 -36
  27. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
  29. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-input.cjs.entry.js +36 -20
  31. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nano-nav-item_2.cjs.entry.js +65 -24
  33. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  34. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +6 -4
  35. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nano-sticker.cjs.entry.js +2 -2
  37. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
  39. package/dist/collection/collection-manifest.json +2 -1
  40. package/dist/collection/components/accordion/accordion.js +1 -1
  41. package/dist/collection/components/alert/alert.js +1 -1
  42. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  43. package/dist/collection/components/algolia/algolia-input.js +5 -5
  44. package/dist/collection/components/algolia/algolia-results.js +1 -1
  45. package/dist/collection/components/algolia/algolia.js +6 -6
  46. package/dist/collection/components/checkbox/checkbox-group.css +5 -5
  47. package/dist/collection/components/checkbox/checkbox-group.js +119 -25
  48. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  49. package/dist/collection/components/checkbox/checkbox.css +1 -1
  50. package/dist/collection/components/checkbox/checkbox.js +83 -22
  51. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  52. package/dist/collection/components/datalist/datalist.js +5 -2
  53. package/dist/collection/components/datalist/datalist.js.map +1 -1
  54. package/dist/collection/components/date-input/date-input.js +44 -12
  55. package/dist/collection/components/date-input/date-input.js.map +1 -1
  56. package/dist/collection/components/date-picker/date-picker.js +5 -5
  57. package/dist/collection/components/details/details.js +1 -1
  58. package/dist/collection/components/dialog/dialog.js +34 -1
  59. package/dist/collection/components/dialog/dialog.js.map +1 -1
  60. package/dist/collection/components/dropdown/dropdown.js +1 -1
  61. package/dist/collection/components/field-validator/field-validator.js +579 -0
  62. package/dist/collection/components/field-validator/field-validator.js.map +1 -0
  63. package/dist/collection/components/file-upload/file-upload.css +17 -5
  64. package/dist/collection/components/file-upload/file-upload.js +111 -44
  65. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  66. package/dist/collection/components/form-control/form-control.js +25 -18
  67. package/dist/collection/components/form-control/form-control.js.map +1 -1
  68. package/dist/collection/components/global-nav/global-nav.js +4 -4
  69. package/dist/collection/components/grid/grid-item.js +1 -1
  70. package/dist/collection/components/icon/icon.js +2 -2
  71. package/dist/collection/components/icon/icon.js.map +1 -1
  72. package/dist/collection/components/input/input.css +57 -5
  73. package/dist/collection/components/input/input.js +65 -29
  74. package/dist/collection/components/input/input.js.map +1 -1
  75. package/dist/collection/components/menu/menu.js +1 -2
  76. package/dist/collection/components/menu/menu.js.map +1 -1
  77. package/dist/collection/components/nav-item/nav-item.js +4 -4
  78. package/dist/collection/components/range/range.js +4 -4
  79. package/dist/collection/components/resize-observe/resize-observe.js +7 -6
  80. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  81. package/dist/collection/components/select/select.css +61 -6
  82. package/dist/collection/components/select/select.js +100 -33
  83. package/dist/collection/components/select/select.js.map +1 -1
  84. package/dist/collection/components/slides/slides.js +7 -7
  85. package/dist/collection/components/{sticky → sticker}/sticker.css +0 -0
  86. package/dist/collection/components/{sticky → sticker}/sticker.js +2 -2
  87. package/dist/collection/components/sticker/sticker.js.map +1 -0
  88. package/dist/collection/components/tabs/tab-group.js +2 -2
  89. package/dist/collection/utils/store/component-store.js +4 -13
  90. package/dist/collection/utils/store/component-store.js.map +1 -1
  91. package/dist/collection/utils/store/get-set.js +15 -1
  92. package/dist/collection/utils/store/get-set.js.map +1 -1
  93. package/dist/components/algoliasearch.umd.js +2 -2
  94. package/dist/components/algoliasearch.umd.js.map +1 -1
  95. package/dist/components/component-store.js +36 -24
  96. package/dist/components/component-store.js.map +1 -1
  97. package/dist/components/datalist.js +4 -1
  98. package/dist/components/datalist.js.map +1 -1
  99. package/dist/components/form-control.js +25 -18
  100. package/dist/components/form-control.js.map +1 -1
  101. package/dist/components/icon.js.map +1 -1
  102. package/dist/components/input.js +39 -21
  103. package/dist/components/input.js.map +1 -1
  104. package/dist/components/menu.js +1 -2
  105. package/dist/components/menu.js.map +1 -1
  106. package/dist/components/nano-checkbox-group.js +62 -21
  107. package/dist/components/nano-checkbox-group.js.map +1 -1
  108. package/dist/components/nano-checkbox.js +31 -17
  109. package/dist/components/nano-checkbox.js.map +1 -1
  110. package/dist/components/nano-date-input.js +18 -4
  111. package/dist/components/nano-date-input.js.map +1 -1
  112. package/dist/components/nano-dialog.js +13 -1
  113. package/dist/components/nano-dialog.js.map +1 -1
  114. package/dist/components/nano-field-validator.d.ts +11 -0
  115. package/dist/components/nano-field-validator.js +559 -0
  116. package/dist/components/nano-field-validator.js.map +1 -0
  117. package/dist/components/nano-file-upload.js +62 -37
  118. package/dist/components/nano-file-upload.js.map +1 -1
  119. package/dist/components/resize-observe.js +6 -4
  120. package/dist/components/resize-observe.js.map +1 -1
  121. package/dist/components/select.js +69 -25
  122. package/dist/components/select.js.map +1 -1
  123. package/dist/components/sticker.js +2 -2
  124. package/dist/components/sticker.js.map +1 -1
  125. package/dist/custom-elements/index.d.ts +6 -0
  126. package/dist/custom-elements/index.js +2606 -691
  127. package/dist/custom-elements/index.js.map +1 -1
  128. package/dist/esm/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
  129. package/dist/esm/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +1 -1
  130. package/dist/esm/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
  131. package/dist/esm/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
  132. package/dist/esm/{component-store-b6fbfa35.js → component-store-d238fee4.js} +38 -26
  133. package/dist/esm/component-store-d238fee4.js.map +1 -0
  134. package/dist/esm/{form-control-c52b6256.js → form-control-ad05507c.js} +27 -20
  135. package/dist/esm/form-control-ad05507c.js.map +1 -0
  136. package/dist/esm/{index-5f8d16e7.js → index-c42becad.js} +7 -2
  137. package/dist/esm/{index-5f8d16e7.js.map → index-c42becad.js.map} +1 -1
  138. package/dist/esm/loader.js +2 -2
  139. package/dist/esm/nano-accordion.entry.js +1 -1
  140. package/dist/esm/nano-alert.entry.js +1 -1
  141. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  142. package/dist/esm/nano-algolia-input.entry.js +4 -4
  143. package/dist/esm/nano-algolia-pagination.entry.js +2 -2
  144. package/dist/esm/nano-algolia-results.entry.js +2 -2
  145. package/dist/esm/nano-algolia.entry.js +4 -4
  146. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  147. package/dist/esm/nano-checkbox-group.entry.js +59 -21
  148. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  149. package/dist/esm/nano-checkbox.entry.js +28 -16
  150. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  151. package/dist/esm/nano-components.js +2 -2
  152. package/dist/esm/nano-datalist_3.entry.js +6 -4
  153. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  154. package/dist/esm/nano-date-input.entry.js +18 -5
  155. package/dist/esm/nano-date-input.entry.js.map +1 -1
  156. package/dist/esm/nano-date-picker.entry.js +1 -1
  157. package/dist/esm/nano-details.entry.js +1 -1
  158. package/dist/esm/nano-dialog.entry.js +14 -3
  159. package/dist/esm/nano-dialog.entry.js.map +1 -1
  160. package/dist/esm/nano-drawer.entry.js +1 -1
  161. package/dist/esm/nano-dropdown.entry.js +1 -1
  162. package/dist/esm/nano-field-validator.entry.js +527 -0
  163. package/dist/esm/nano-field-validator.entry.js.map +1 -0
  164. package/dist/esm/nano-file-upload.entry.js +60 -37
  165. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  166. package/dist/esm/nano-global-nav.entry.js +3 -3
  167. package/dist/esm/nano-global-search-results.entry.js +1 -1
  168. package/dist/esm/nano-grid_3.entry.js +1 -1
  169. package/dist/esm/nano-hero.entry.js +1 -1
  170. package/dist/esm/nano-icon-button.entry.js +1 -1
  171. package/dist/esm/nano-icon.entry.js +1 -1
  172. package/dist/esm/nano-icon.entry.js.map +1 -1
  173. package/dist/esm/nano-input.entry.js +38 -22
  174. package/dist/esm/nano-input.entry.js.map +1 -1
  175. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  176. package/dist/esm/nano-nav-item_2.entry.js +67 -26
  177. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  178. package/dist/esm/nano-range.entry.js +1 -1
  179. package/dist/esm/nano-rating.entry.js +1 -1
  180. package/dist/esm/nano-resize-observe_2.entry.js +7 -5
  181. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  182. package/dist/esm/nano-slide.entry.js +1 -1
  183. package/dist/esm/nano-slides.entry.js +1 -1
  184. package/dist/esm/nano-spinner.entry.js +1 -1
  185. package/dist/esm/nano-split-pane.entry.js +1 -1
  186. package/dist/esm/nano-sticker.entry.js +3 -3
  187. package/dist/esm/nano-sticker.entry.js.map +1 -1
  188. package/dist/esm/nano-tab-content.entry.js +1 -1
  189. package/dist/esm/nano-tab-group.entry.js +2 -2
  190. package/dist/esm/nano-tab.entry.js +1 -1
  191. package/dist/esm/nano-tooltip.entry.js +1 -1
  192. package/dist/esm-es5/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
  193. package/dist/esm-es5/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +0 -0
  194. package/dist/esm-es5/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
  195. package/dist/esm-es5/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
  196. package/dist/esm-es5/component-store-d238fee4.js +5 -0
  197. package/dist/esm-es5/component-store-d238fee4.js.map +1 -0
  198. package/dist/esm-es5/form-control-ad05507c.js +5 -0
  199. package/dist/esm-es5/form-control-ad05507c.js.map +1 -0
  200. package/dist/esm-es5/{index-5f8d16e7.js → index-c42becad.js} +2 -2
  201. package/dist/esm-es5/{index-5f8d16e7.js.map → index-c42becad.js.map} +0 -0
  202. package/dist/esm-es5/loader.js +1 -1
  203. package/dist/esm-es5/loader.js.map +1 -1
  204. package/dist/esm-es5/nano-accordion.entry.js +1 -1
  205. package/dist/esm-es5/nano-alert.entry.js +1 -1
  206. package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
  207. package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
  208. package/dist/esm-es5/nano-algolia-pagination.entry.js +1 -1
  209. package/dist/esm-es5/nano-algolia-results.entry.js +1 -1
  210. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  211. package/dist/esm-es5/nano-aspect-ratio.entry.js +1 -1
  212. package/dist/esm-es5/nano-checkbox-group.entry.js +2 -2
  213. package/dist/esm-es5/nano-checkbox-group.entry.js.map +1 -1
  214. package/dist/esm-es5/nano-checkbox.entry.js +1 -1
  215. package/dist/esm-es5/nano-checkbox.entry.js.map +1 -1
  216. package/dist/esm-es5/nano-components.js +1 -1
  217. package/dist/esm-es5/nano-components.js.map +1 -1
  218. package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
  219. package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
  220. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  221. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  222. package/dist/esm-es5/nano-date-picker.entry.js +1 -1
  223. package/dist/esm-es5/nano-details.entry.js +1 -1
  224. package/dist/esm-es5/nano-dialog.entry.js +1 -1
  225. package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
  226. package/dist/esm-es5/nano-drawer.entry.js +1 -1
  227. package/dist/esm-es5/nano-dropdown.entry.js +1 -1
  228. package/dist/esm-es5/nano-field-validator.entry.js +5 -0
  229. package/dist/esm-es5/nano-field-validator.entry.js.map +1 -0
  230. package/dist/esm-es5/nano-file-upload.entry.js +2 -2
  231. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  232. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  233. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  234. package/dist/esm-es5/nano-grid_3.entry.js +1 -1
  235. package/dist/esm-es5/nano-hero.entry.js +1 -1
  236. package/dist/esm-es5/nano-icon-button.entry.js +1 -1
  237. package/dist/esm-es5/nano-icon.entry.js +1 -1
  238. package/dist/esm-es5/nano-icon.entry.js.map +1 -1
  239. package/dist/esm-es5/nano-input.entry.js +1 -1
  240. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  241. package/dist/esm-es5/nano-menu-drawer.entry.js +1 -1
  242. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  243. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  244. package/dist/esm-es5/nano-range.entry.js +1 -1
  245. package/dist/esm-es5/nano-rating.entry.js +1 -1
  246. package/dist/esm-es5/nano-resize-observe_2.entry.js +2 -2
  247. package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
  248. package/dist/esm-es5/nano-slide.entry.js +1 -1
  249. package/dist/esm-es5/nano-slides.entry.js +1 -1
  250. package/dist/esm-es5/nano-spinner.entry.js +1 -1
  251. package/dist/esm-es5/nano-split-pane.entry.js +1 -1
  252. package/dist/esm-es5/nano-sticker.entry.js +1 -1
  253. package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
  254. package/dist/esm-es5/nano-tab-content.entry.js +1 -1
  255. package/dist/esm-es5/nano-tab-group.entry.js +1 -1
  256. package/dist/esm-es5/nano-tab.entry.js +2 -2
  257. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  258. package/dist/nano-components/nano-components.css +1 -1
  259. package/dist/nano-components/nano-components.esm.js +1 -1
  260. package/dist/nano-components/nano-components.esm.js.map +1 -1
  261. package/dist/nano-components/nano-components.js +1 -1
  262. package/dist/nano-components/p-00eaa36a.entry.js +5 -0
  263. package/dist/nano-components/p-00eaa36a.entry.js.map +1 -0
  264. package/dist/nano-components/p-01667573.entry.js +5 -0
  265. package/dist/nano-components/p-01667573.entry.js.map +1 -0
  266. package/dist/nano-components/{p-4429caac.system.entry.js → p-0c6c2141.system.entry.js} +2 -2
  267. package/dist/nano-components/{p-4429caac.system.entry.js.map → p-0c6c2141.system.entry.js.map} +0 -0
  268. package/dist/nano-components/{p-7232c046.system.entry.js → p-0d0dfc06.system.entry.js} +2 -2
  269. package/dist/nano-components/{p-7232c046.system.entry.js.map → p-0d0dfc06.system.entry.js.map} +0 -0
  270. package/dist/nano-components/{p-e562bffd.entry.js → p-0e2e3f4a.entry.js} +2 -2
  271. package/dist/nano-components/{p-e562bffd.entry.js.map → p-0e2e3f4a.entry.js.map} +0 -0
  272. package/dist/nano-components/{p-56ba0d63.entry.js → p-1030797a.entry.js} +2 -2
  273. package/dist/nano-components/{p-56ba0d63.entry.js.map → p-1030797a.entry.js.map} +0 -0
  274. package/dist/nano-components/p-129e2b4b.system.js +5 -0
  275. package/dist/nano-components/p-129e2b4b.system.js.map +1 -0
  276. package/dist/nano-components/{p-c0ddb4c3.entry.js → p-166ade3e.entry.js} +2 -2
  277. package/dist/nano-components/{p-c0ddb4c3.entry.js.map → p-166ade3e.entry.js.map} +0 -0
  278. package/dist/nano-components/{p-5653961d.system.entry.js → p-1a30dfdd.system.entry.js} +2 -2
  279. package/dist/nano-components/p-1a30dfdd.system.entry.js.map +1 -0
  280. package/dist/nano-components/p-1b120f53.entry.js +5 -0
  281. package/dist/nano-components/p-1b120f53.entry.js.map +1 -0
  282. package/dist/nano-components/{p-7d351076.system.entry.js → p-21af2a5e.system.entry.js} +2 -2
  283. package/dist/nano-components/{p-7d351076.system.entry.js.map → p-21af2a5e.system.entry.js.map} +0 -0
  284. package/dist/nano-components/p-21d6d31e.system.entry.js +5 -0
  285. package/dist/nano-components/p-21d6d31e.system.entry.js.map +1 -0
  286. package/dist/nano-components/{p-346588cc.entry.js → p-222d8095.entry.js} +2 -2
  287. package/dist/nano-components/{p-346588cc.entry.js.map → p-222d8095.entry.js.map} +0 -0
  288. package/dist/nano-components/p-241d90eb.system.entry.js +5 -0
  289. package/dist/nano-components/p-241d90eb.system.entry.js.map +1 -0
  290. package/dist/nano-components/{p-040b6cda.entry.js → p-2649fc8e.entry.js} +2 -2
  291. package/dist/nano-components/{p-040b6cda.entry.js.map → p-2649fc8e.entry.js.map} +0 -0
  292. package/dist/nano-components/{p-3456db01.entry.js → p-27efac97.entry.js} +2 -2
  293. package/dist/nano-components/{p-3456db01.entry.js.map → p-27efac97.entry.js.map} +0 -0
  294. package/dist/nano-components/{p-462ad4f1.entry.js → p-2c8d7273.entry.js} +2 -2
  295. package/dist/nano-components/{p-462ad4f1.entry.js.map → p-2c8d7273.entry.js.map} +0 -0
  296. package/dist/nano-components/{p-2e6c55e2.entry.js → p-2d53d1a0.entry.js} +2 -2
  297. package/dist/nano-components/{p-2e6c55e2.entry.js.map → p-2d53d1a0.entry.js.map} +0 -0
  298. package/dist/nano-components/{p-1f99d776.entry.js → p-3093915f.entry.js} +2 -2
  299. package/dist/nano-components/{p-1f99d776.entry.js.map → p-3093915f.entry.js.map} +0 -0
  300. package/dist/nano-components/{p-8a8f893b.system.entry.js → p-316f83a9.system.entry.js} +2 -2
  301. package/dist/nano-components/{p-8a8f893b.system.entry.js.map → p-316f83a9.system.entry.js.map} +0 -0
  302. package/dist/nano-components/{p-7246bef5.entry.js → p-325c1cad.entry.js} +2 -2
  303. package/dist/nano-components/{p-7246bef5.entry.js.map → p-325c1cad.entry.js.map} +0 -0
  304. package/dist/nano-components/{p-ec39b143.system.entry.js → p-32f396c0.system.entry.js} +2 -2
  305. package/dist/nano-components/{p-ec39b143.system.entry.js.map → p-32f396c0.system.entry.js.map} +0 -0
  306. package/dist/nano-components/p-32f4516e.js +5 -0
  307. package/dist/nano-components/p-32f4516e.js.map +1 -0
  308. package/dist/nano-components/{p-43543d18.entry.js → p-333237e8.entry.js} +2 -2
  309. package/dist/nano-components/{p-43543d18.entry.js.map → p-333237e8.entry.js.map} +0 -0
  310. package/dist/nano-components/{p-1e8321ea.entry.js → p-35108e08.entry.js} +2 -2
  311. package/dist/nano-components/{p-1e8321ea.entry.js.map → p-35108e08.entry.js.map} +0 -0
  312. package/dist/nano-components/{p-a898bf92.system.entry.js → p-379e21d9.system.entry.js} +2 -2
  313. package/dist/nano-components/{p-a898bf92.system.entry.js.map → p-379e21d9.system.entry.js.map} +0 -0
  314. package/dist/nano-components/{p-3ad1d5aa.system.entry.js → p-39d36fd1.system.entry.js} +2 -2
  315. package/dist/nano-components/{p-3ad1d5aa.system.entry.js.map → p-39d36fd1.system.entry.js.map} +0 -0
  316. package/dist/nano-components/{p-41a2e2e4.system.js → p-3a00de47.system.js} +2 -2
  317. package/dist/nano-components/{p-41a2e2e4.system.js.map → p-3a00de47.system.js.map} +0 -0
  318. package/dist/nano-components/{p-6afdb510.system.entry.js → p-3ccb176c.system.entry.js} +2 -2
  319. package/dist/nano-components/{p-6afdb510.system.entry.js.map → p-3ccb176c.system.entry.js.map} +0 -0
  320. package/dist/nano-components/{p-08b43111.entry.js → p-3e930ac7.entry.js} +2 -2
  321. package/dist/nano-components/{p-08b43111.entry.js.map → p-3e930ac7.entry.js.map} +0 -0
  322. package/dist/nano-components/{p-d8d8bac6.system.entry.js → p-42cebbfe.system.entry.js} +2 -2
  323. package/dist/nano-components/{p-d8d8bac6.system.entry.js.map → p-42cebbfe.system.entry.js.map} +0 -0
  324. package/dist/nano-components/{p-3ef30ded.system.entry.js → p-48874481.system.entry.js} +2 -2
  325. package/dist/nano-components/{p-3ef30ded.system.entry.js.map → p-48874481.system.entry.js.map} +0 -0
  326. package/dist/nano-components/{p-08ffc9a1.entry.js → p-4e2c0abb.entry.js} +2 -2
  327. package/dist/nano-components/{p-08ffc9a1.entry.js.map → p-4e2c0abb.entry.js.map} +0 -0
  328. package/dist/nano-components/{p-090f22a9.system.entry.js → p-5100ae70.system.entry.js} +2 -2
  329. package/dist/nano-components/{p-090f22a9.system.entry.js.map → p-5100ae70.system.entry.js.map} +0 -0
  330. package/dist/nano-components/{p-593de29b.system.entry.js → p-52769304.system.entry.js} +2 -2
  331. package/dist/nano-components/{p-593de29b.system.entry.js.map → p-52769304.system.entry.js.map} +0 -0
  332. package/dist/nano-components/{p-8278c5d2.system.entry.js → p-56f86047.system.entry.js} +2 -2
  333. package/dist/nano-components/{p-8278c5d2.system.entry.js.map → p-56f86047.system.entry.js.map} +0 -0
  334. package/dist/nano-components/{p-2057d480.system.entry.js → p-5b66bb8f.system.entry.js} +2 -2
  335. package/dist/nano-components/{p-2057d480.system.entry.js.map → p-5b66bb8f.system.entry.js.map} +0 -0
  336. package/dist/nano-components/{p-033296c7.system.entry.js → p-5d17cfbb.system.entry.js} +2 -2
  337. package/dist/nano-components/{p-033296c7.system.entry.js.map → p-5d17cfbb.system.entry.js.map} +0 -0
  338. package/dist/nano-components/{p-88f17c86.system.entry.js → p-5d5ea4ab.system.entry.js} +2 -2
  339. package/dist/nano-components/{p-88f17c86.system.entry.js.map → p-5d5ea4ab.system.entry.js.map} +0 -0
  340. package/dist/nano-components/p-6722447c.entry.js +5 -0
  341. package/dist/nano-components/p-6722447c.entry.js.map +1 -0
  342. package/dist/nano-components/{p-20387cde.system.entry.js → p-6b4dd158.system.entry.js} +2 -2
  343. package/dist/nano-components/{p-20387cde.system.entry.js.map → p-6b4dd158.system.entry.js.map} +0 -0
  344. package/dist/nano-components/{p-d24811c8.system.js → p-6b5760b1.system.js} +3 -3
  345. package/dist/nano-components/{p-d24811c8.system.js.map → p-6b5760b1.system.js.map} +1 -1
  346. package/dist/nano-components/p-6d138abf.entry.js +5 -0
  347. package/dist/nano-components/p-6d138abf.entry.js.map +1 -0
  348. package/dist/nano-components/{p-5066e563.system.entry.js → p-6dad332b.system.entry.js} +2 -2
  349. package/dist/nano-components/{p-5066e563.system.entry.js.map → p-6dad332b.system.entry.js.map} +0 -0
  350. package/dist/nano-components/{p-730f60ea.entry.js → p-6ddb51e4.entry.js} +2 -2
  351. package/dist/nano-components/p-6ddb51e4.entry.js.map +1 -0
  352. package/dist/nano-components/p-71e9fa33.js +5 -0
  353. package/dist/nano-components/p-71e9fa33.js.map +1 -0
  354. package/dist/nano-components/{p-313970ff.entry.js → p-73985eda.entry.js} +2 -2
  355. package/dist/nano-components/{p-313970ff.entry.js.map → p-73985eda.entry.js.map} +0 -0
  356. package/dist/nano-components/{p-58d7f10f.entry.js → p-76c903db.entry.js} +2 -2
  357. package/dist/nano-components/{p-58d7f10f.entry.js.map → p-76c903db.entry.js.map} +0 -0
  358. package/dist/nano-components/{p-3aa1d07d.entry.js → p-76d9d1d4.entry.js} +2 -2
  359. package/dist/nano-components/p-76d9d1d4.entry.js.map +1 -0
  360. package/dist/nano-components/{p-f53989c3.system.entry.js → p-7aa7425d.system.entry.js} +2 -2
  361. package/dist/nano-components/{p-f53989c3.system.entry.js.map → p-7aa7425d.system.entry.js.map} +1 -1
  362. package/dist/nano-components/{p-531d5275.system.entry.js → p-7ad4a27a.system.entry.js} +2 -2
  363. package/dist/nano-components/p-7ad4a27a.system.entry.js.map +1 -0
  364. package/dist/nano-components/{p-2ae4918d.system.entry.js → p-7e55b214.system.entry.js} +2 -2
  365. package/dist/nano-components/{p-2ae4918d.system.entry.js.map → p-7e55b214.system.entry.js.map} +0 -0
  366. package/dist/nano-components/{p-62ecd3a1.system.entry.js → p-7f1374b6.system.entry.js} +2 -2
  367. package/dist/nano-components/{p-62ecd3a1.system.entry.js.map → p-7f1374b6.system.entry.js.map} +0 -0
  368. package/dist/nano-components/{p-1e974cad.entry.js → p-7fe9d769.entry.js} +2 -2
  369. package/dist/nano-components/{p-1e974cad.entry.js.map → p-7fe9d769.entry.js.map} +0 -0
  370. package/dist/nano-components/p-85c8b070.system.entry.js +5 -0
  371. package/dist/nano-components/p-85c8b070.system.entry.js.map +1 -0
  372. package/dist/nano-components/p-866f083f.system.entry.js +5 -0
  373. package/dist/nano-components/p-866f083f.system.entry.js.map +1 -0
  374. package/dist/nano-components/p-86bd5194.entry.js +5 -0
  375. package/dist/nano-components/p-86bd5194.entry.js.map +1 -0
  376. package/dist/nano-components/{p-f2e7d2f9.system.entry.js → p-88779174.system.entry.js} +2 -2
  377. package/dist/nano-components/{p-f2e7d2f9.system.entry.js.map → p-88779174.system.entry.js.map} +0 -0
  378. package/dist/nano-components/{p-4535e3bb.entry.js → p-8b6fcd6d.entry.js} +2 -2
  379. package/dist/nano-components/{p-4535e3bb.entry.js.map → p-8b6fcd6d.entry.js.map} +0 -0
  380. package/dist/nano-components/{p-6ade3290.entry.js → p-8eb4f24a.entry.js} +2 -2
  381. package/dist/nano-components/{p-6ade3290.entry.js.map → p-8eb4f24a.entry.js.map} +0 -0
  382. package/dist/nano-components/{p-07bdf44d.entry.js → p-8fe2f846.entry.js} +2 -2
  383. package/dist/nano-components/{p-07bdf44d.entry.js.map → p-8fe2f846.entry.js.map} +0 -0
  384. package/dist/nano-components/p-96d9b8b9.system.entry.js +5 -0
  385. package/dist/nano-components/p-96d9b8b9.system.entry.js.map +1 -0
  386. package/dist/nano-components/{p-bcd69559.entry.js → p-97b13ad2.entry.js} +2 -2
  387. package/dist/nano-components/{p-bcd69559.entry.js.map → p-97b13ad2.entry.js.map} +0 -0
  388. package/dist/nano-components/{p-c9c1a345.system.entry.js → p-a02cc654.system.entry.js} +2 -2
  389. package/dist/nano-components/{p-c9c1a345.system.entry.js.map → p-a02cc654.system.entry.js.map} +0 -0
  390. package/dist/nano-components/{p-a77e3fbb.js → p-a0b93616.js} +3 -3
  391. package/dist/nano-components/{p-a77e3fbb.js.map → p-a0b93616.js.map} +1 -1
  392. package/dist/nano-components/p-a4969844.entry.js +5 -0
  393. package/dist/nano-components/p-a4969844.entry.js.map +1 -0
  394. package/dist/nano-components/{p-70dec19f.entry.js → p-a6327a9a.entry.js} +2 -2
  395. package/dist/nano-components/{p-70dec19f.entry.js.map → p-a6327a9a.entry.js.map} +0 -0
  396. package/dist/nano-components/{p-a315ed2c.entry.js → p-a9a4fc3e.entry.js} +2 -2
  397. package/dist/nano-components/{p-a315ed2c.entry.js.map → p-a9a4fc3e.entry.js.map} +1 -1
  398. package/dist/nano-components/{p-98222c39.system.entry.js → p-ab07c1fa.system.entry.js} +2 -2
  399. package/dist/nano-components/{p-98222c39.system.entry.js.map → p-ab07c1fa.system.entry.js.map} +0 -0
  400. package/dist/nano-components/{p-ab5813a7.js → p-b5c33aff.js} +2 -2
  401. package/dist/nano-components/{p-ab5813a7.js.map → p-b5c33aff.js.map} +0 -0
  402. package/dist/nano-components/p-bc394857.system.entry.js +5 -0
  403. package/dist/nano-components/p-bc394857.system.entry.js.map +1 -0
  404. package/dist/nano-components/{p-b4f8e541.entry.js → p-bce998f2.entry.js} +2 -2
  405. package/dist/nano-components/{p-b4f8e541.entry.js.map → p-bce998f2.entry.js.map} +0 -0
  406. package/dist/nano-components/{p-92f85aaf.system.entry.js → p-bf9aa89d.system.entry.js} +2 -2
  407. package/dist/nano-components/{p-92f85aaf.system.entry.js.map → p-bf9aa89d.system.entry.js.map} +0 -0
  408. package/dist/nano-components/p-c070ffd3.system.entry.js +5 -0
  409. package/dist/nano-components/p-c070ffd3.system.entry.js.map +1 -0
  410. package/dist/nano-components/p-c3830c43.entry.js +5 -0
  411. package/dist/nano-components/p-c3830c43.entry.js.map +1 -0
  412. package/dist/nano-components/{p-50514e5e.entry.js → p-c4156fea.entry.js} +2 -2
  413. package/dist/nano-components/{p-50514e5e.entry.js.map → p-c4156fea.entry.js.map} +0 -0
  414. package/dist/nano-components/p-d01bd3c3.system.js +5 -0
  415. package/dist/nano-components/p-d01bd3c3.system.js.map +1 -0
  416. package/dist/nano-components/{p-1238f0fc.system.entry.js → p-d0385948.system.entry.js} +2 -2
  417. package/dist/nano-components/{p-1238f0fc.system.entry.js.map → p-d0385948.system.entry.js.map} +0 -0
  418. package/dist/nano-components/{p-b59d2bd5.entry.js → p-d122b1ff.entry.js} +2 -2
  419. package/dist/nano-components/{p-b59d2bd5.entry.js.map → p-d122b1ff.entry.js.map} +0 -0
  420. package/dist/nano-components/{p-394c3c19.entry.js → p-defd4552.entry.js} +2 -2
  421. package/dist/nano-components/{p-394c3c19.entry.js.map → p-defd4552.entry.js.map} +0 -0
  422. package/dist/nano-components/p-e7140887.system.js +5 -0
  423. package/dist/nano-components/p-e7140887.system.js.map +1 -0
  424. package/dist/nano-components/{p-69439aa1.system.entry.js → p-e817ab4a.system.entry.js} +2 -2
  425. package/dist/nano-components/{p-69439aa1.system.entry.js.map → p-e817ab4a.system.entry.js.map} +0 -0
  426. package/dist/nano-components/{p-22884654.system.entry.js → p-eacf5b5b.system.entry.js} +2 -2
  427. package/dist/nano-components/{p-22884654.system.entry.js.map → p-eacf5b5b.system.entry.js.map} +0 -0
  428. package/dist/nano-components/p-ed336501.entry.js +5 -0
  429. package/dist/nano-components/p-ed336501.entry.js.map +1 -0
  430. package/dist/nano-components/{p-5ae80fd7.js → p-ef7f1e9c.js} +2 -2
  431. package/dist/nano-components/{p-5ae80fd7.js.map → p-ef7f1e9c.js.map} +0 -0
  432. package/dist/nano-components/{p-59b3d24b.system.js → p-f48be9f5.system.js} +2 -2
  433. package/dist/nano-components/{p-59b3d24b.system.js.map → p-f48be9f5.system.js.map} +0 -0
  434. package/dist/nano-components/p-f710c763.system.entry.js +5 -0
  435. package/dist/nano-components/p-f710c763.system.entry.js.map +1 -0
  436. package/dist/nano-components/p-f780d2f6.system.entry.js +5 -0
  437. package/dist/nano-components/p-f780d2f6.system.entry.js.map +1 -0
  438. package/dist/nano-components/{p-65c10b3f.entry.js → p-fbe3c89e.entry.js} +2 -2
  439. package/dist/nano-components/{p-65c10b3f.entry.js.map → p-fbe3c89e.entry.js.map} +0 -0
  440. package/dist/nano-components/{p-ba13bb56.entry.js → p-ffc2063a.entry.js} +2 -2
  441. package/dist/nano-components/{p-ba13bb56.entry.js.map → p-ffc2063a.entry.js.map} +0 -0
  442. package/dist/nano-components/{p-4870e76d.system.entry.js → p-fff27907.system.entry.js} +2 -2
  443. package/dist/nano-components/{p-4870e76d.system.entry.js.map → p-fff27907.system.entry.js.map} +0 -0
  444. package/dist/types/components/checkbox/checkbox-group.d.ts +12 -1
  445. package/dist/types/components/checkbox/checkbox.d.ts +11 -3
  446. package/dist/types/components/date-input/date-input.d.ts +4 -0
  447. package/dist/types/components/dialog/dialog.d.ts +4 -1
  448. package/dist/types/components/field-validator/field-validator.d.ts +125 -0
  449. package/dist/types/components/file-upload/file-upload.d.ts +8 -0
  450. package/dist/types/components/form-control/form-control.d.ts +2 -0
  451. package/dist/types/components/icon/icon.d.ts +1 -1
  452. package/dist/types/components/input/input.d.ts +9 -1
  453. package/dist/types/components/resize-observe/resize-observe.d.ts +0 -1
  454. package/dist/types/components/select/select.d.ts +12 -2
  455. package/dist/types/components/{sticky → sticker}/sticker.d.ts +0 -0
  456. package/dist/types/components.d.ts +187 -4
  457. package/dist/types/utils/store/get-set.d.ts +1 -1
  458. package/docs-json.json +454 -16
  459. package/docs-vscode.json +78 -2
  460. package/package.json +3 -2
  461. package/dist/cjs/component-store-722032a5.js.map +0 -1
  462. package/dist/cjs/form-control-8f530f7d.js.map +0 -1
  463. package/dist/collection/components/sticky/sticker.js.map +0 -1
  464. package/dist/esm/component-store-b6fbfa35.js.map +0 -1
  465. package/dist/esm/form-control-c52b6256.js.map +0 -1
  466. package/dist/esm-es5/component-store-b6fbfa35.js +0 -5
  467. package/dist/esm-es5/component-store-b6fbfa35.js.map +0 -1
  468. package/dist/esm-es5/form-control-c52b6256.js +0 -5
  469. package/dist/esm-es5/form-control-c52b6256.js.map +0 -1
  470. package/dist/nano-components/p-0618fac6.system.entry.js +0 -5
  471. package/dist/nano-components/p-0618fac6.system.entry.js.map +0 -1
  472. package/dist/nano-components/p-096682d9.system.js +0 -5
  473. package/dist/nano-components/p-096682d9.system.js.map +0 -1
  474. package/dist/nano-components/p-09e38c5f.system.entry.js +0 -5
  475. package/dist/nano-components/p-09e38c5f.system.entry.js.map +0 -1
  476. package/dist/nano-components/p-10a6216d.system.entry.js +0 -5
  477. package/dist/nano-components/p-10a6216d.system.entry.js.map +0 -1
  478. package/dist/nano-components/p-173bae15.system.entry.js +0 -5
  479. package/dist/nano-components/p-173bae15.system.entry.js.map +0 -1
  480. package/dist/nano-components/p-18176c26.system.entry.js +0 -5
  481. package/dist/nano-components/p-18176c26.system.entry.js.map +0 -1
  482. package/dist/nano-components/p-3aa1d07d.entry.js.map +0 -1
  483. package/dist/nano-components/p-4265cf95.system.entry.js +0 -5
  484. package/dist/nano-components/p-4265cf95.system.entry.js.map +0 -1
  485. package/dist/nano-components/p-457d4893.entry.js +0 -5
  486. package/dist/nano-components/p-457d4893.entry.js.map +0 -1
  487. package/dist/nano-components/p-4ee978ff.entry.js +0 -5
  488. package/dist/nano-components/p-4ee978ff.entry.js.map +0 -1
  489. package/dist/nano-components/p-531d5275.system.entry.js.map +0 -1
  490. package/dist/nano-components/p-5653961d.system.entry.js.map +0 -1
  491. package/dist/nano-components/p-5a0095f9.js +0 -5
  492. package/dist/nano-components/p-5a0095f9.js.map +0 -1
  493. package/dist/nano-components/p-5a315696.entry.js +0 -5
  494. package/dist/nano-components/p-5a315696.entry.js.map +0 -1
  495. package/dist/nano-components/p-5e7c7d3d.entry.js +0 -5
  496. package/dist/nano-components/p-5e7c7d3d.entry.js.map +0 -1
  497. package/dist/nano-components/p-730f60ea.entry.js.map +0 -1
  498. package/dist/nano-components/p-802e1416.system.entry.js +0 -5
  499. package/dist/nano-components/p-802e1416.system.entry.js.map +0 -1
  500. package/dist/nano-components/p-829d7f05.system.entry.js +0 -5
  501. package/dist/nano-components/p-829d7f05.system.entry.js.map +0 -1
  502. package/dist/nano-components/p-9d35768b.entry.js +0 -5
  503. package/dist/nano-components/p-9d35768b.entry.js.map +0 -1
  504. package/dist/nano-components/p-aaef7cc7.js +0 -5
  505. package/dist/nano-components/p-aaef7cc7.js.map +0 -1
  506. package/dist/nano-components/p-af7abf5e.entry.js +0 -5
  507. package/dist/nano-components/p-af7abf5e.entry.js.map +0 -1
  508. package/dist/nano-components/p-df0897ec.system.js +0 -5
  509. package/dist/nano-components/p-df0897ec.system.js.map +0 -1
  510. package/dist/nano-components/p-e1f46998.system.js +0 -5
  511. package/dist/nano-components/p-e1f46998.system.js.map +0 -1
  512. package/dist/nano-components/p-e7c69d4f.entry.js +0 -5
  513. package/dist/nano-components/p-e7c69d4f.entry.js.map +0 -1
  514. package/dist/nano-components/p-f79c3ea0.entry.js +0 -5
  515. package/dist/nano-components/p-f79c3ea0.entry.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, e as Host, g as getElement } from './index-5f8d16e7.js';
4
+ import { r as registerInstance, c as createEvent, h, e as Host, g as getElement } from './index-c42becad.js';
5
5
  import { l as lockBodyScrolling, u as unlockBodyScrolling } from './scroll-881feb46.js';
6
6
  import { M as Modal } from './modal-215df46b.js';
7
7
  import { h as hasSlot } from './slot-cff5ef4f.js';
8
- import { C as ComponentStore } from './component-store-b6fbfa35.js';
8
+ import { C as ComponentStore } from './component-store-d238fee4.js';
9
9
  import './dom-faa69d29.js';
10
10
  import './tabbable-614f515e.js';
11
11
  import './_commonjsHelpers-e401b2a2.js';
@@ -44,6 +44,8 @@ let Dialog = class {
44
44
  this.noUserDismiss = false;
45
45
  /** The method of storage. Either session storage, url hash (after the '#') or url query (after the '?'). */
46
46
  this.storeMethod = 'url-hash';
47
+ /** Relocate the dialog to the root of the DOM. Useful for elements bound via css `transform: ...` */
48
+ this.hoist = false;
47
49
  this.handleKeyDown = (event) => {
48
50
  if (event.key === 'Escape') {
49
51
  this.requestClose();
@@ -78,6 +80,11 @@ let Dialog = class {
78
80
  handleOpenChange() {
79
81
  this.open ? this.show() : this.hide();
80
82
  }
83
+ handleHoistChange() {
84
+ if (!this.hoist || document.body.children[0] === this.host)
85
+ return;
86
+ document.body.prepend(this.host);
87
+ }
81
88
  /** Shows the dialog */
82
89
  async show() {
83
90
  if (this.willShow) {
@@ -137,6 +144,7 @@ let Dialog = class {
137
144
  });
138
145
  }
139
146
  connectedCallback() {
147
+ this.handleHoistChange();
140
148
  this.modal = new Modal(this.host);
141
149
  if (this.panel) {
142
150
  this.addedTransEnd = true;
@@ -157,6 +165,8 @@ let Dialog = class {
157
165
  }
158
166
  }
159
167
  disconnectedCallback() {
168
+ if (!this.panel)
169
+ return;
160
170
  unlockBodyScrolling(this.host);
161
171
  this.addedTransEnd = false;
162
172
  this.panel.removeEventListener('transitionend', this.handleTransitionEnd);
@@ -174,7 +184,8 @@ let Dialog = class {
174
184
  }
175
185
  get host() { return getElement(this); }
176
186
  static get watchers() { return {
177
- "open": ["handleOpenChange"]
187
+ "open": ["handleOpenChange"],
188
+ "hoist": ["handleHoistChange"]
178
189
  }; }
179
190
  };
180
191
  Dialog.style = dialogCss;
@@ -1 +1 @@
1
- {"file":"nano-dialog.entry.js","mappings":"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","names":[],"sources":["./src/components/dialog/dialog.scss?tag=nano-dialog&encapsulation=shadow","./src/components/dialog/dialog.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\n@import '../../global/style/nano-theme/form';\n\n/**\n * @prop --width: The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.\n * @prop --border-radius: defaults to #{$layer-border-radius};\n * @prop --content-background: defaults to #{$layer-bg-color};\n * @prop --footer-background: defaults to #{map.get($colors, celsius)};\n * @prop --box-shadow: defaults to $layer-shadow-xlarge;\n * @prop --close-button-color: defaults to #{map.get($colors, mediumgrey)};\n * @prop --scrim-color: overlay colour of alert display. Defaults to #{$layer-overlay-dark};\n * @prop --tint-color: colour used to highlight items in the dialog - top ribbon, bottom close button. Default #{map.get($colors, blue)};\n * @prop --width: defaults to 31rem;\n */\n:host {\n --border-radius: #{$layer-border-radius};\n --content-background: #fafafa;\n --footer-content: #{map.get($colors, lightgrey)};\n --scrim-color: #{$layer-overlay-dark};\n --box-shadow: #{$layer-shadow-large};\n --close-button-color: #{map.get($colors, palegrey)};\n --width: 60rem;\n --tint-color: #{darken(map.get($colors, blue), 5%)};\n --body-padding-v: #{$spacing-large};\n --body-padding-h: #{$spacing-large};\n --header-padding-v: #{$spacing-medium};\n --header-padding-h: #{$spacing-large};\n --footer-padding-v: #{$spacing-medium};\n --footer-padding-h: #{$spacing-large};\n}\n\n.dialog {\n $self: &;\n\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: #{$layer-index-modal};\n\n &:not(.dialog--visible) {\n @include hidden;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n z-index: 2;\n width: var(--width);\n max-width: calc(100% - #{$spacing-xlarge});\n max-height: calc(92% - #{$spacing-xlarge});\n background-color: var(--content-background);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n opacity: 0;\n transform: scale(0.8);\n transition: #{$transition-fast} opacity, #{$transition-fast} transform;\n\n &:focus {\n outline: none;\n }\n\n .dialog--with-ribbon & {\n border-top: 5px solid var(--tint-color);\n }\n\n .dialog--open & {\n display: flex;\n opacity: 1;\n transform: none;\n }\n\n .dialog--nodismiss & {\n animation: cannotClose 0.25s ease-in-out 1;\n\n @keyframes cannotClose {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(1.08);\n }\n\n 100% {\n transform: scale(1);\n }\n }\n }\n }\n\n &__header {\n flex: 0 0 auto;\n display: flex;\n min-width: var(--width);\n width: 100%;\n background-color: var(--content-background);\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n transition: #{$transition-xfast} box-shadow;\n\n .dialog--visible & {\n min-width: auto;\n }\n\n [stuck] & {\n box-shadow: #{$layer-shadow-medium};\n }\n }\n\n &__title {\n flex: 1 1 auto;\n font-size: #{$fontsize-large};\n line-height: 1.6;\n padding: var(--header-padding-v) var(--header-padding-h);\n }\n\n & &__close-icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: #{$fontsize-xlarge};\n padding: 0 var(--header-padding-h);\n\n --color: var(--close-button-color);\n }\n\n &__body {\n padding: 0 var(--body-padding-h) var(--body-padding-v);\n\n .dialog:not(.dialog--has-header) & {\n padding-top: var(--body-padding-v);\n }\n\n & ::slotted(*) {\n max-width: 100%;\n }\n\n &-wrap {\n flex: 1 1 auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n border-radius: var(--border-radius);\n\n .dialog:not(.dialog--has-header) & {\n border-radius: 0 0 inherit inherit;\n }\n\n .dialog:not(.dialog--has-footer) & {\n border-radius: inherit inherit 0 0;\n }\n }\n }\n\n &__footer {\n width: 100%;\n padding: var(--footer-padding-v) var(--footer-padding-h);\n background: var(--footer-content);\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n position: relative;\n top: 1px;\n\n .dialog--visible & {\n min-width: auto;\n }\n\n ::slotted(button) {\n margin-right: #{$spacing-small} !important;\n }\n\n .dialog:not(.dialog--has-footer) & {\n display: none;\n }\n }\n\n &__close-txt {\n color: var(--tint-color);\n border: none;\n text-decoration: underline;\n margin: 0;\n text-underline-offset: 4px;\n background-color: transparent;\n font: inherit;\n -webkit-box-align: center;\n cursor: pointer;\n font-size: #{$fontsize-small};\n padding: 0.5rem;\n border-radius: #{$border-radius-small};\n transition: box-shadow 100ms ease-in-out;\n\n &:focus {\n outline: none;\n box-shadow: #{$control-focus-style};\n }\n }\n\n &__overlay {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: var(--scrim-color);\n opacity: 0;\n transition: #{$transition-fast} opacity;\n backdrop-filter: blur(#{$layer-overlay-blur});\n\n .dialog--open & {\n opacity: 1;\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n h,\n Host,\n ComponentInterface,\n} from '@stencil/core';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport Modal from '../../utils/modal';\nimport { hasSlot } from '../../utils';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\n\nlet id = 0;\n\n/**\n * Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.\n *\n * @slot - The dialog's content.\n * @slot label - The dialog's label. Alternatively, you can use the label prop.\n * @slot footer - The dialog's footer, usually one or more buttons representing various options.\n */\n@Component({\n tag: 'nano-dialog',\n styleUrl: 'dialog.scss',\n shadow: true,\n})\nexport class Dialog implements ComponentInterface {\n private componentId = `dialog-${++id}`;\n private modal: Modal;\n private panel: HTMLElement;\n private willShow = false;\n private willHide = false;\n private originalTrigger: HTMLElement | null;\n private overlay: HTMLElement;\n private addedTransEnd = false;\n\n @Element() host: HTMLNanoDialogElement;\n @State() isVisible = false;\n @State() noDismiss = false;\n @State() hasFooter = false;\n\n /** Show a colour ribbon at the top of the modal */\n @Prop() showRibbon = true;\n\n /** Indicates whether or not the dialog is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** The dialog's label as displayed in the header. You should always include a relevant\n * label even when using `no-header`, as it is required for proper accessibility. */\n @Prop() label!: string;\n\n /** Set to true to disable the header. This will also remove the default close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noHeader = false;\n\n /** Set to true to disable the footer. This will also remove the footer close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noFooter = false;\n\n /** An alternative to `preventDefault()` on the `nanoRequestClose` event. This will hide the close button and disable clicks on the overlay or presses the `Escape` key */\n @Prop() noUserDismiss = false;\n\n /** Store search queries (against this ID) to the component store. Use in conjunction with storeMethod */\n @Prop() storeId?: string;\n\n /** The method of storage. Either session storage, url hash (after the '#') or url query (after the '?'). */\n @Prop() storeMethod: StorageMethods = 'url-hash';\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n /** Emitted when the dialog opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the dialog opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the dialog closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the dialog closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /** Emitted when the dialog opens and the panel gains focus. Calling `event.preventDefault()` will prevent\n * focus and allow you to set it on a different element in the dialog, such as an input or button. */\n @Event() nanoInitialFocus: EventEmitter;\n\n /** Emitted when the user clicks the close button, clicks the overlay, or presses the `Escape` key. Calling `event.preventDefault()` will prevent the dialog from closing. */\n @Event() nanoRequestClose: EventEmitter;\n\n /** Shows the dialog */\n @Method()\n async show() {\n if (this.willShow) {\n return;\n }\n\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.originalTrigger = document.activeElement as HTMLElement;\n this.willShow = true;\n this.isVisible = true;\n this.open = true;\n this.modal.activate();\n\n lockBodyScrolling(this.host);\n\n if (this.open) {\n // Wait for the next frame before setting initial focus so the dialog is technically visible\n this.host.addEventListener(\n 'nanoAfterShow',\n () => {\n const nanoInitialFocus = this.nanoInitialFocus.emit();\n if (!nanoInitialFocus.defaultPrevented) {\n this.panel.focus({ preventScroll: true });\n }\n },\n { once: true }\n );\n }\n }\n\n /** Hides the dialog */\n @Method()\n async hide() {\n if (this.willHide) {\n return;\n }\n\n const nanoHide = this.nanoHide.emit();\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.willHide = true;\n this.open = false;\n this.modal.deactivate();\n unlockBodyScrolling(this.host);\n this.stopVideos();\n\n // Restore focus to the original trigger\n const trigger = this.originalTrigger;\n if (trigger && typeof trigger.focus === 'function') {\n setTimeout(() => trigger.focus());\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n const nanoOverlayDismiss = this.nanoRequestClose.emit();\n\n if (!nanoOverlayDismiss.defaultPrevented && !this.noUserDismiss) {\n this.hide();\n } else {\n this.noDismiss = true;\n setTimeout((_) => (this.noDismiss = false), 250);\n }\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n event\n .composedPath()\n .find((node) => node === this.panel || node === this.overlay)\n ) {\n // Ensure we only emit one event when the target element is no longer visible\n this.isVisible = this.open;\n this.willShow = false;\n this.willHide = false;\n this.open ? this.nanoAfterShow.emit() : this.nanoAfterHide.emit();\n }\n };\n\n private handleSlotChange = () => {\n this.hasFooter = hasSlot(this.host, 'footer');\n };\n\n private stopVideos() {\n var videos: (HTMLVideoElement | HTMLIFrameElement)[] = Array.from(\n this.host.querySelectorAll('iframe,video')\n );\n videos.forEach((video) => {\n if (video.tagName.toLowerCase() === 'video')\n (video as HTMLVideoElement).pause();\n else {\n const src = video.src;\n video.src = src;\n }\n });\n }\n\n connectedCallback() {\n this.modal = new Modal(this.host);\n if (this.panel) {\n this.addedTransEnd = true;\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n componentWillLoad() {\n this.handleSlotChange();\n // Show on init if open\n if (this.open) this.show();\n if (this.storeId)\n ComponentStore.init(this, ['open'], this.storeMethod, this.storeId);\n }\n\n componentDidLoad() {\n if (!this.addedTransEnd) {\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n disconnectedCallback() {\n unlockBodyScrolling(this.host);\n this.addedTransEnd = false;\n this.panel.removeEventListener('transitionend', this.handleTransitionEnd);\n }\n\n render() {\n return (\n <Host showing={this.isVisible ? true : undefined}>\n <div\n part=\"base\"\n class={{\n dialog: true,\n 'dialog--open': this.open,\n 'dialog--visible': this.isVisible,\n 'dialog--has-footer': !this.noFooter,\n 'dialog--has-header': !this.noHeader,\n 'dialog--nodismiss': this.noDismiss,\n 'dialog--with-ribbon': this.showRibbon,\n }}\n onKeyDown={this.handleKeyDown}\n >\n <div\n part=\"overlay\"\n class=\"dialog__overlay\"\n ref={(el) => (this.overlay = el)}\n onClick={this.requestClose}\n />\n\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class=\"dialog__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-label={this.noHeader ? this.label : null}\n aria-labelledby={\n !this.noHeader ? `${this.componentId}-title` : null\n }\n tabIndex={0}\n >\n <div class=\"dialog__body-wrap\">\n {!this.noHeader && (\n <nano-sticker>\n <header part=\"header\" class=\"dialog__header\">\n <span\n part=\"title\"\n class=\"dialog__title\"\n id={`${this.componentId}-title`}\n >\n <slot name=\"label\">\n {/* If there's no label, use an invisible character to prevent the heading from collapsing */}\n {this.label || String.fromCharCode(65279)}\n </slot>\n </span>\n {!this.noUserDismiss && (\n <nano-icon-button\n exportparts=\"base:close-button\"\n class=\"dialog__close-icon\"\n label=\"close dialog\"\n onClick={this.requestClose}\n iconName=\"light/times\"\n />\n )}\n </header>\n </nano-sticker>\n )}\n <div part=\"body\" class=\"dialog__body\">\n <slot />\n </div>\n {!this.noFooter && (this.hasFooter || !this.noUserDismiss) && (\n <nano-sticker position=\"bottom\">\n <footer part=\"footer\" class=\"dialog__footer\">\n <slot name=\"footer\" onSlotchange={this.handleSlotChange} />\n {!this.noUserDismiss && (\n <button\n class=\"dialog__close-txt\"\n onClick={this.requestClose}\n >\n Close\n </button>\n )}\n </footer>\n </nano-sticker>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"nano-dialog.entry.js","mappings":"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","names":[],"sources":["./src/components/dialog/dialog.scss?tag=nano-dialog&encapsulation=shadow","./src/components/dialog/dialog.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/layers';\n@import '../../global/style/nano-theme/form';\n\n/**\n * @prop --width: The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.\n * @prop --border-radius: defaults to #{$layer-border-radius};\n * @prop --content-background: defaults to #{$layer-bg-color};\n * @prop --footer-background: defaults to #{map.get($colors, celsius)};\n * @prop --box-shadow: defaults to $layer-shadow-xlarge;\n * @prop --close-button-color: defaults to #{map.get($colors, mediumgrey)};\n * @prop --scrim-color: overlay colour of alert display. Defaults to #{$layer-overlay-dark};\n * @prop --tint-color: colour used to highlight items in the dialog - top ribbon, bottom close button. Default #{map.get($colors, blue)};\n * @prop --width: defaults to 31rem;\n */\n:host {\n --border-radius: #{$layer-border-radius};\n --content-background: #fafafa;\n --footer-content: #{map.get($colors, lightgrey)};\n --scrim-color: #{$layer-overlay-dark};\n --box-shadow: #{$layer-shadow-large};\n --close-button-color: #{map.get($colors, palegrey)};\n --width: 60rem;\n --tint-color: #{darken(map.get($colors, blue), 5%)};\n --body-padding-v: #{$spacing-large};\n --body-padding-h: #{$spacing-large};\n --header-padding-v: #{$spacing-medium};\n --header-padding-h: #{$spacing-large};\n --footer-padding-v: #{$spacing-medium};\n --footer-padding-h: #{$spacing-large};\n}\n\n.dialog {\n $self: &;\n\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: #{$layer-index-modal};\n\n &:not(.dialog--visible) {\n @include hidden;\n }\n\n &__panel {\n display: flex;\n flex-direction: column;\n z-index: 2;\n width: var(--width);\n max-width: calc(100% - #{$spacing-xlarge});\n max-height: calc(92% - #{$spacing-xlarge});\n background-color: var(--content-background);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n opacity: 0;\n transform: scale(0.8);\n transition: #{$transition-fast} opacity, #{$transition-fast} transform;\n\n &:focus {\n outline: none;\n }\n\n .dialog--with-ribbon & {\n border-top: 5px solid var(--tint-color);\n }\n\n .dialog--open & {\n display: flex;\n opacity: 1;\n transform: none;\n }\n\n .dialog--nodismiss & {\n animation: cannotClose 0.25s ease-in-out 1;\n\n @keyframes cannotClose {\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(1.08);\n }\n\n 100% {\n transform: scale(1);\n }\n }\n }\n }\n\n &__header {\n flex: 0 0 auto;\n display: flex;\n min-width: var(--width);\n width: 100%;\n background-color: var(--content-background);\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n transition: #{$transition-xfast} box-shadow;\n\n .dialog--visible & {\n min-width: auto;\n }\n\n [stuck] & {\n box-shadow: #{$layer-shadow-medium};\n }\n }\n\n &__title {\n flex: 1 1 auto;\n font-size: #{$fontsize-large};\n line-height: 1.6;\n padding: var(--header-padding-v) var(--header-padding-h);\n }\n\n & &__close-icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-size: #{$fontsize-xlarge};\n padding: 0 var(--header-padding-h);\n\n --color: var(--close-button-color);\n }\n\n &__body {\n padding: 0 var(--body-padding-h) var(--body-padding-v);\n\n .dialog:not(.dialog--has-header) & {\n padding-top: var(--body-padding-v);\n }\n\n & ::slotted(*) {\n max-width: 100%;\n }\n\n &-wrap {\n flex: 1 1 auto;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n border-radius: var(--border-radius);\n\n .dialog:not(.dialog--has-header) & {\n border-radius: 0 0 inherit inherit;\n }\n\n .dialog:not(.dialog--has-footer) & {\n border-radius: inherit inherit 0 0;\n }\n }\n }\n\n &__footer {\n width: 100%;\n padding: var(--footer-padding-v) var(--footer-padding-h);\n background: var(--footer-content);\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n position: relative;\n top: 1px;\n\n .dialog--visible & {\n min-width: auto;\n }\n\n ::slotted(button) {\n margin-right: #{$spacing-small} !important;\n }\n\n .dialog:not(.dialog--has-footer) & {\n display: none;\n }\n }\n\n &__close-txt {\n color: var(--tint-color);\n border: none;\n text-decoration: underline;\n margin: 0;\n text-underline-offset: 4px;\n background-color: transparent;\n font: inherit;\n -webkit-box-align: center;\n cursor: pointer;\n font-size: #{$fontsize-small};\n padding: 0.5rem;\n border-radius: #{$border-radius-small};\n transition: box-shadow 100ms ease-in-out;\n\n &:focus {\n outline: none;\n box-shadow: #{$control-focus-style};\n }\n }\n\n &__overlay {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: var(--scrim-color);\n opacity: 0;\n transition: #{$transition-fast} opacity;\n backdrop-filter: blur(#{$layer-overlay-blur});\n\n .dialog--open & {\n opacity: 1;\n }\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n State,\n Watch,\n h,\n Host,\n ComponentInterface,\n} from '@stencil/core';\nimport { lockBodyScrolling, unlockBodyScrolling } from '../../utils/scroll';\nimport Modal from '../../utils/modal';\nimport { hasSlot } from '../../utils';\nimport {\n ComponentStore,\n StorageMethods,\n} from '../../utils/store/component-store';\n\nlet id = 0;\n\n/**\n * Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.\n *\n * @slot - The dialog's content.\n * @slot label - The dialog's label. Alternatively, you can use the label prop.\n * @slot footer - The dialog's footer, usually one or more buttons representing various options.\n */\n@Component({\n tag: 'nano-dialog',\n styleUrl: 'dialog.scss',\n shadow: true,\n})\nexport class Dialog implements ComponentInterface {\n private componentId = `dialog-${++id}`;\n private modal: Modal;\n private panel: HTMLElement;\n private willShow = false;\n private willHide = false;\n private originalTrigger: HTMLElement | null;\n private overlay: HTMLElement;\n private addedTransEnd = false;\n\n @Element() host: HTMLNanoDialogElement;\n @State() isVisible = false;\n @State() noDismiss = false;\n @State() hasFooter = false;\n\n /** Show a colour ribbon at the top of the modal */\n @Prop() showRibbon = true;\n\n /** Indicates whether or not the dialog is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n /** The dialog's label as displayed in the header. You should always include a relevant\n * label even when using `no-header`, as it is required for proper accessibility. */\n @Prop() label!: string;\n\n /** Set to true to disable the header. This will also remove the default close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noHeader = false;\n\n /** Set to true to disable the footer. This will also remove the footer close button,\n * so please ensure you provide an easy, accessible way for users to dismiss the dialog. */\n @Prop() noFooter = false;\n\n /** An alternative to `preventDefault()` on the `nanoRequestClose` event. This will hide the close button and disable clicks on the overlay or presses the `Escape` key */\n @Prop() noUserDismiss = false;\n\n /** Store search queries (against this ID) to the component store. Use in conjunction with storeMethod */\n @Prop() storeId?: string;\n\n /** The method of storage. Either session storage, url hash (after the '#') or url query (after the '?'). */\n @Prop() storeMethod: StorageMethods = 'url-hash';\n\n /** Relocate the dialog to the root of the DOM. Useful for elements bound via css `transform: ...` */\n @Prop() hoist = false;\n\n @Watch('hoist')\n handleHoistChange() {\n if (!this.hoist || document.body.children[0] === this.host) return;\n document.body.prepend(this.host);\n }\n\n /** Emitted when the dialog opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event() nanoShow: EventEmitter;\n\n /** Emitted after the dialog opens and all transitions are complete. */\n @Event() nanoAfterShow: EventEmitter;\n\n /** Emitted when the dialog closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event() nanoHide: EventEmitter;\n\n /** Emitted after the dialog closes and all transitions are complete. */\n @Event() nanoAfterHide: EventEmitter;\n\n /** Emitted when the dialog opens and the panel gains focus. Calling `event.preventDefault()` will prevent\n * focus and allow you to set it on a different element in the dialog, such as an input or button. */\n @Event() nanoInitialFocus: EventEmitter;\n\n /** Emitted when the user clicks the close button, clicks the overlay, or presses the `Escape` key. Calling `event.preventDefault()` will prevent the dialog from closing. */\n @Event() nanoRequestClose: EventEmitter;\n\n /** Shows the dialog */\n @Method()\n async show() {\n if (this.willShow) {\n return;\n }\n\n const nanoShow = this.nanoShow.emit();\n if (nanoShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.originalTrigger = document.activeElement as HTMLElement;\n this.willShow = true;\n this.isVisible = true;\n this.open = true;\n this.modal.activate();\n\n lockBodyScrolling(this.host);\n\n if (this.open) {\n // Wait for the next frame before setting initial focus so the dialog is technically visible\n this.host.addEventListener(\n 'nanoAfterShow',\n () => {\n const nanoInitialFocus = this.nanoInitialFocus.emit();\n if (!nanoInitialFocus.defaultPrevented) {\n this.panel.focus({ preventScroll: true });\n }\n },\n { once: true }\n );\n }\n }\n\n /** Hides the dialog */\n @Method()\n async hide() {\n if (this.willHide) {\n return;\n }\n\n const nanoHide = this.nanoHide.emit();\n if (nanoHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.willHide = true;\n this.open = false;\n this.modal.deactivate();\n unlockBodyScrolling(this.host);\n this.stopVideos();\n\n // Restore focus to the original trigger\n const trigger = this.originalTrigger;\n if (trigger && typeof trigger.focus === 'function') {\n setTimeout(() => trigger.focus());\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n const nanoOverlayDismiss = this.nanoRequestClose.emit();\n\n if (!nanoOverlayDismiss.defaultPrevented && !this.noUserDismiss) {\n this.hide();\n } else {\n this.noDismiss = true;\n setTimeout((_) => (this.noDismiss = false), 250);\n }\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n if (\n event.propertyName === 'opacity' &&\n event\n .composedPath()\n .find((node) => node === this.panel || node === this.overlay)\n ) {\n // Ensure we only emit one event when the target element is no longer visible\n this.isVisible = this.open;\n this.willShow = false;\n this.willHide = false;\n this.open ? this.nanoAfterShow.emit() : this.nanoAfterHide.emit();\n }\n };\n\n private handleSlotChange = () => {\n this.hasFooter = hasSlot(this.host, 'footer');\n };\n\n private stopVideos() {\n var videos: (HTMLVideoElement | HTMLIFrameElement)[] = Array.from(\n this.host.querySelectorAll('iframe,video')\n );\n videos.forEach((video) => {\n if (video.tagName.toLowerCase() === 'video')\n (video as HTMLVideoElement).pause();\n else {\n const src = video.src;\n video.src = src;\n }\n });\n }\n\n connectedCallback() {\n this.handleHoistChange();\n this.modal = new Modal(this.host);\n if (this.panel) {\n this.addedTransEnd = true;\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n componentWillLoad() {\n this.handleSlotChange();\n // Show on init if open\n if (this.open) this.show();\n if (this.storeId)\n ComponentStore.init(this, ['open'], this.storeMethod, this.storeId);\n }\n\n componentDidLoad() {\n if (!this.addedTransEnd) {\n this.panel.addEventListener('transitionend', this.handleTransitionEnd);\n }\n }\n\n disconnectedCallback() {\n if (!this.panel) return;\n unlockBodyScrolling(this.host);\n this.addedTransEnd = false;\n this.panel.removeEventListener('transitionend', this.handleTransitionEnd);\n }\n\n render() {\n return (\n <Host showing={this.isVisible ? true : undefined}>\n <div\n part=\"base\"\n class={{\n dialog: true,\n 'dialog--open': this.open,\n 'dialog--visible': this.isVisible,\n 'dialog--has-footer': !this.noFooter,\n 'dialog--has-header': !this.noHeader,\n 'dialog--nodismiss': this.noDismiss,\n 'dialog--with-ribbon': this.showRibbon,\n }}\n onKeyDown={this.handleKeyDown}\n >\n <div\n part=\"overlay\"\n class=\"dialog__overlay\"\n ref={(el) => (this.overlay = el)}\n onClick={this.requestClose}\n />\n\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class=\"dialog__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-label={this.noHeader ? this.label : null}\n aria-labelledby={\n !this.noHeader ? `${this.componentId}-title` : null\n }\n tabIndex={0}\n >\n <div class=\"dialog__body-wrap\">\n {!this.noHeader && (\n <nano-sticker>\n <header part=\"header\" class=\"dialog__header\">\n <span\n part=\"title\"\n class=\"dialog__title\"\n id={`${this.componentId}-title`}\n >\n <slot name=\"label\">\n {/* If there's no label, use an invisible character to prevent the heading from collapsing */}\n {this.label || String.fromCharCode(65279)}\n </slot>\n </span>\n {!this.noUserDismiss && (\n <nano-icon-button\n exportparts=\"base:close-button\"\n class=\"dialog__close-icon\"\n label=\"close dialog\"\n onClick={this.requestClose}\n iconName=\"light/times\"\n />\n )}\n </header>\n </nano-sticker>\n )}\n <div part=\"body\" class=\"dialog__body\">\n <slot />\n </div>\n {!this.noFooter && (this.hasFooter || !this.noUserDismiss) && (\n <nano-sticker position=\"bottom\">\n <footer part=\"footer\" class=\"dialog__footer\">\n <slot name=\"footer\" onSlotchange={this.handleSlotChange} />\n {!this.noUserDismiss && (\n <button\n class=\"dialog__close-txt\"\n onClick={this.requestClose}\n >\n Close\n </button>\n )}\n </footer>\n </nano-sticker>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, e as Host, g as getElement } from './index-5f8d16e7.js';
4
+ import { r as registerInstance, c as createEvent, h, e as Host, g as getElement } from './index-c42becad.js';
5
5
  import { u as unlockBodyScrolling, l as lockBodyScrolling } from './scroll-881feb46.js';
6
6
  import { M as Modal } from './modal-215df46b.js';
7
7
  import './dom-faa69d29.js';
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, g as getElement } from './index-5f8d16e7.js';
4
+ import { r as registerInstance, c as createEvent, h, g as getElement } from './index-c42becad.js';
5
5
  import { P as Popover } from './popover-a03563f3.js';
6
6
  import { g as getActiveElement } from './active-element-75b7c8a0.js';
7
7
  import { a as getNearestTabbableElement } from './tabbable-614f515e.js';