@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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/nav-item/nav-item.scss?tag=nano-nav-item&encapsulation=shadow","src/components/nav-item/nav-item.tsx","src/components/select/select.scss?tag=nano-select&encapsulation=scoped","src/components/select/select.tsx"],"names":["navItemCss","NavItem","[object Object]","hostRef","this","hasSecondarySlot","hasAnchorEle","didBlur","animating","didOpen","isInGlobalNav","isInMenuDrawer","isInMenu","isLegacy","document","head","attachShadow","hasFocus","href","target","disabled","open","selected","secondaryActiveWidth","secondaryFallback","closeOnBlur","notification","closeSecondary","async","nanoClosing","emit","secondaryMenu","secondaryDiv","status","displayTransition","openSecondary","window","innerWidth","call","nanoOpening","toggleSecondary","handleFocus","nanoFocus","handleHostBlur","el","removeAttribute","nanoBlur","handleHostClick","ev","foundlink","closest","btn","click","handleMouseEnter","globalNavEle","classList","contains","timeToWait","getSiblings","length","clearTimeout","waitHide","fromHover","waitShow","setTimeout","handleMouseLeave","handleClick","_a","querySelector","blur","relatedTarget","foundThisNavEle","focus","preventScroll","removeEventListener","nanoClose","panelio","IntersectionObserver","data","boundingClientRect","top","scrollIntoView","behavior","disconnect","threshold","observe","addEventListener","tabIndex","nanoOpen","found","parentElement","secondaryEle","link","getDirectChildren","h","Host","class","has-secondary","secondary-open","has-focus","nano-global-nav","nano-menu-drawer","nano-menu","legacy","onBlur","dir","ownerDocument","onMouseEnter","onMouseLeave","onClick","role","nav-item","ref","a","onFocus","name","div","tabindex","selectCss","selectIds","Select","valueItems","selectId","rtl","onInit","currInsertIndex","showErrorMsg","errorMessage","hasLabelSlot","hasHelperSlot","hasHelperEndSlot","inputSearchVal","_invalid","autofocus","validateOn","showInlineError","hideLabel","floatLabel","multiple","readonly","required","allowCustomValues","_value","_options","_eOptions","clearSelect","mask","debounce","dropDownConfig","customValidate","nativeSelect","setCustomValidity","valArray","isValidValues","max","min","showInlineValidation","validity","valid","validationMessage","nanoValidate","isValid","invalid","originalEvent","handleInvalid","preventDefault","requestAnimationFrame","setValue","e","value","detail","inputCtrl","includes","slice","removeValue","toFind","filter","val","setFocus","setOptions","datalist","activeOptions","map","ao","label","filterMeta","handleDocumentKeyDown","rm","key","previousElementSibling","dataset","nextElementSibling","previousSibling","nextSibling","event","Event","dispatchEvent","clearSelectValue","stopPropagation","onDragStart","ele","dragVal","onDragEnd","onDragLeave","spanVal","to","indexOf","from","tmpArr","tmpVal","onMultiInput","trim","nanoSearchChange","_inputCtrl","input","setDataListOpts","selectWrap","_selectWrap","_datalist","validityMessage","split","Array","isArray","options","opts","opt","debounceEvent","shouldValidate","nanoChange","currDWConfig","Object","assign","tetherTo","validateFirst","Promise","resolve","message","find","mo","MutationObserver","processSlottedContent","childList","subtree","querySelectorAll","console","warn","form","kev","raf","getActiveElement","closestElement","tagName","toLowerCase","debounceChanged","CustomEvent","slotChangeObserver","labelId","moreId","helperEndId","compWrapOptions","placeholder","wrapOptions","hasValue","controlId","controlOptions","clearControl","type","aria-disabled","createColorClasses","color","has-value","is-invalid","has-label","has-float-label","has-multiple","has-clr-btn","masked","FormControlWrap","FormControl","onClearText","control","endValueSlot","slot","multipleValues","getLabel","id","aria-labelledby","readOnly","onNanoOptionsUpdated","onNanoSelect","onNanoDeselect","undefined","select","onInvalid","autoFocus","autocomplete","onKeyDown","onInput","onTouchStart","onMouseDown","i","toReturn","onDragOver","draggable","data-value","span","push","onTouchEnd","onMouseUp"],"mappings":"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","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n\n:host {\n // These can be overwritten, but are autatically set from context components\n\n // --padding-top: inherit;\n // --padding-bottom: inherit;\n // --padding-start: inherit;\n // --padding-end: inherit;\n // --margin: inherit;\n\n // --secondary-padding-top: inherit;\n // --secondary-padding-bottom: inherit;\n // --secondary-padding-start: inherit;\n // --secondary-padding-end: inherit;\n\n // --border-bottom: inherit;\n // --icon-size: inherit;\n\n // --color: inherit;\n // --color-hover: inherit;\n // --color-focus: inherit;\n // --color-selected: inherit;\n // --color-open: inherit;\n\n // --bg-color: inherit;\n // --bg-color-hover: inherit;\n // --bg-color-selected: inherit;\n // --bg-color-open: inherit;\n // --bg-color-focus: inherit;\n\n // --secondary-bg-color: inherit;\n // --secondary-color: inherit;\n\n opacity: inherit;\n display: block;\n color: var(--color) !important;\n margin: var(--margin);\n\n ::slotted(*),\n * {\n box-sizing: border-box;\n }\n\n ::slotted(button),\n button {\n background: none;\n border: none;\n margin: 0;\n }\n\n ::slotted(button),\n ::slotted(a),\n ::slotted(a:visited),\n button,\n a,\n a:visited {\n @include text-inherit();\n @include padding(\n var(--padding-top),\n var(--padding-end),\n var(--padding-bottom),\n var(--padding-start)\n );\n\n display: var(--display, block);\n white-space: nowrap;\n color: var(--color) !important;\n background-color: var(--bg-color);\n }\n\n ::slotted(nano-icon[slot='icon-start']) {\n @include padding(null, var(--padding-end), null, null);\n }\n\n ::slotted(nano-icon[slot='icon-end']) {\n @include padding(null, null, null, var(--padding-start));\n }\n\n .link {\n &::slotted(nano-icon[slot='icon-start']),\n ::slotted(nano-icon[slot='icon-start']) {\n @include padding(null, 0, null, var(--padding-start));\n }\n\n &::slotted(nano-icon[slot='icon-end']),\n ::slotted(nano-icon[slot='icon-end']) {\n @include padding(null, var(--padding-end), null, 0);\n }\n }\n\n .link,\n button,\n a {\n border-bottom: var(--border-bottom);\n display: flex;\n align-items: center;\n }\n\n .secondary-menu {\n display: none;\n }\n\n ::slotted(a:hover),\n ::slotted(button:hover),\n .link:hover,\n button:hover,\n a:hover {\n text-decoration: inherit !important;\n }\n\n button:focus,\n a:focus {\n color: var(--color-focus, var(--color-hover, var(--color))) !important;\n background-color:\n var(\n --bg-color-focus,\n var(--bg-color-hover, var(--bg-color))\n );\n outline: var(--focus-outline, none);\n }\n\n ::slotted(a:focus),\n ::slotted(button:focus) {\n color: var(--color-focus, var(--color-hover, var(--color))) !important;\n background-color:\n var(\n --bg-color-focus,\n var(--bg-color-hover, var(--bg-color))\n );\n outline: none;\n }\n}\n\n.nav-item {\n &.selected {\n .link,\n button,\n a {\n color: var(--color-selected, var(--color-open, var(--color))) !important;\n background-color:\n var(\n --bg-color-selected,\n var(--bg-color-open, var(--bg-color))\n );\n }\n }\n\n &.secondary-open {\n button,\n a {\n color: var(--color-open, var(--color-selected, var(--color))) !important;\n background-color:\n var(\n --bg-color-open,\n var(--secondary-bg-color, var(--bg-color-selected, var(--bg-color)))\n );\n }\n }\n\n &.disabled {\n opacity: 0.6;\n\n button,\n a {\n color: var(--color-disabled, var(--color)) !important;\n }\n }\n\n &:not(.nano-menu) {\n ::slotted(a:hover),\n ::slotted(button:hover),\n .link:hover,\n button:hover,\n a:hover {\n color: var(--color-hover, var(--color-hover, var(--color))) !important;\n background-color:\n var(\n --bg-color-hover,\n var(--bg-color-focus, var(--bg-color))\n );\n }\n }\n}\n\n:host(.has-focus) {\n .link {\n color: var(--color-focus, var(--color-hover, var(--color))) !important;\n background-color:\n var(\n --bg-color-focus,\n var(--bg-color-hover, var(--bg-color))\n );\n outline: var(--focus-outline, 5px auto -webkit-focus-ring-color);\n }\n}\n\n:host(.nano-global-nav-menu),\n:host(.nano-menu) {\n a,\n a:visited,\n button,\n .link {\n display: flex;\n justify-content: flex-start;\n flex-direction: row;\n align-items: center;\n color: 'currentColor';\n text-decoration: inherit;\n white-space: normal;\n cursor: pointer;\n line-height: 1.2;\n width: 100%;\n }\n\n .text {\n @include padding(null, var(--padding-end), null, 0);\n\n flex: 1;\n }\n\n ::slotted(a),\n ::slotted(button) {\n flex: 1;\n }\n\n ::slotted(a:focus),\n ::slotted(button:focus) {\n box-shadow: none;\n }\n\n .secondary-menu {\n display: none;\n position: absolute;\n color: var(--secondary-color, 'currentColor');\n min-height: 100%;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 1;\n opacity: 0;\n transition: opacity 0.2s ease, transform 0.3s ease;\n background-color: var(--secondary-bg-color, white);\n transform: translateX(100%);\n\n &:focus {\n outline: none;\n }\n\n &.open {\n opacity: 1;\n transform: translateX(0);\n transition: opacity 0.3s ease, transform 0.2s ease;\n }\n }\n}\n\n:host(.nano-global-nav-menu) {\n ::slotted(nano-icon[slot='icon-start']) {\n @include padding(0, var(--padding-end), 0, 0);\n }\n\n ::slotted(nano-icon[slot='icon-end']) {\n @include padding(0, var(--padding-end), 0, 0);\n\n font-size: 10px;\n flex: 0 0 10px;\n pointer-events: none;\n }\n\n button,\n a {\n ::slotted(nano-icon[slot='icon-end']) {\n padding: 0;\n }\n }\n}\n\n:host(.nano-global-nav-menu[dir='rtl']),\n:host(.nano-menu[dir='rtl']) {\n .secondary-menu {\n left: auto;\n right: 0;\n transform: translateX(-100%);\n\n &.open {\n transform: translateX(0);\n }\n }\n}\n\n:host(.nano-menu) {\n .secondary-menu-content {\n @include padding(\n var(--secondary-padding-top),\n var(--secondary-padding-end),\n var(--secondary-padding-bottom),\n var(--secondary-padding-start)\n );\n }\n}\n\n// I'm sorry. Horrible IE fixes for collapsing stuff :/\n:host(.nano-global-nav-bar.legacy) {\n margin: 0 11px;\n\n ::slotted(a) {\n @include padding(7px, 6px, 7px, 6px);\n }\n}\n\n:host(.nano-global-nav-menu.legacy) {\n ::slotted(a) {\n @include padding(8px, 12px, 8px, 12px);\n }\n}\n\n:host(.nano-global-nav-bar) {\n .link,\n a,\n button {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-stretch: expanded;\n }\n\n .text {\n flex: 1 0 auto;\n }\n\n ::slotted(nano-icon[slot='icon-end']) {\n @include margin(0, 0, 0, var(--padding-end));\n }\n\n ::slotted(nano-icon[slot='icon-start']) {\n @include margin(0, var(--padding-start), 0, 0);\n }\n}\n\n:host(.nano-global-nav-bar.has-secondary) {\n button {\n position: relative;\n font-stretch: expanded;\n\n &::before {\n content: '';\n background: rgb(134, 190, 226);\n height: 3px;\n left: 0;\n bottom: -14px;\n right: 5px;\n position: absolute;\n transform: translateZ(0) scaleX(0);\n transform-origin: 0;\n transition: 0.2s ease transform;\n }\n }\n\n .selected button::before,\n .secondary-open button::before {\n transform: translateZ(0) scaleX(1);\n }\n\n .secondary-open button::before {\n opacity: 0.5;\n }\n\n .secondary-menu {\n display: none;\n transition: transform 0.3s ease;\n transform: translateY(-100%) translateZ(0);\n background-color: var(--secondary-bg-color, #196c82);\n color: var(--secondary-color);\n position: absolute;\n box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.15);\n left: 0;\n right: 0;\n z-index: -2;\n outline: none;\n\n &.open {\n transform: translateY(12px) translateZ(0);\n }\n }\n}\n\n:host(.nano-menu-drawer) {\n .link,\n a,\n button {\n @include padding(\n calc(var(--padding-top) / 2),\n 0,\n calc(var(--padding-bottom) / 2),\n var(--padding-start)\n );\n\n display: flex;\n justify-content: flex-start;\n flex-direction: row;\n align-items: center;\n color: currentColor;\n text-decoration: inherit;\n white-space: normal;\n border: none;\n cursor: pointer;\n line-height: 1.2;\n width: 100%;\n }\n\n .text {\n @include padding(null, var(--padding-end), null, 0);\n\n text-align: left;\n flex: 0 1 auto;\n min-width: 130px;\n width: 130px;\n }\n\n ::slotted(nano-icon[slot='icon-start']) {\n @include padding(0, var(--padding-end), 0, 0);\n\n font-size: var(--icon-size);\n width: var(--icon-size);\n flex: 0 0 var(--icon-size);\n }\n\n ::slotted(nano-icon[slot='icon-end']) {\n @include padding(0, var(--padding-end), 0, 0);\n\n font-size: 10px;\n flex: 0 0 20px;\n min-width: 20px;\n }\n\n .secondary-menu {\n display: none;\n position: absolute;\n background-color: var(--secondary-bg-color);\n color: var(--secondary-color);\n height: 100vh;\n top: 0;\n right: 0;\n left: auto;\n bottom: 0;\n transform: translateX(0);\n z-index: -1;\n transition: transform 0.3s ease, opacity 0.2s ease;\n overflow-y: auto;\n width: var(--secondary-width, 400px);\n max-width: 62vw;\n opacity: 1;\n\n @include padding(\n var(--secondary-padding-top, var(--padding-top)),\n var(--secondary-padding-end, var(--padding-end)),\n var(--secondary-padding-bottom, var(--padding-bottom)),\n var(--secondary-padding-start, var(--padding-start))\n );\n\n &:focus {\n outline: none;\n }\n\n &.open {\n transform: translateX(100%);\n // opacity: 1;\n }\n }\n\n .notification {\n position: relative;\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n width: 6px;\n height: 6px;\n background-color: #ef4135;\n inset-inline-start: 10px;\n top: 7px;\n border-radius: 50%;\n\n @media (min-width: 52em) {\n width: 7px;\n height: 7px;\n inset-inline-start: 8px;\n top: 5px;\n }\n }\n }\n}\n\n:host(.nano-menu-drawer.legacy) {\n .link,\n a,\n button {\n width: auto;\n }\n\n ::slotted(nano-icon[slot='icon-end']) {\n @include padding(0, calc(var(--padding-end) * 2), 0, 0);\n\n font-size: 10px;\n flex: 0 0 20px;\n min-width: 20px;\n }\n}\n\n:host(.nano-menu-drawer[dir='rtl']) {\n .text {\n text-align: right;\n }\n\n .secondary-menu {\n right: auto;\n left: 0;\n transform: translateX(0%);\n\n &.open {\n transform: translateX(-100%);\n opacity: 1;\n }\n }\n}\n","import {\n Component,\n h,\n Host,\n Element,\n Prop,\n Watch,\n EventEmitter,\n Event,\n State,\n Method,\n ComponentInterface,\n} from '@stencil/core';\nimport { displayTransition, getDirectChildren, getSiblings } from '../../utils';\nimport { NavItemEventDetail } from '../../interface';\n\n/**\n * Nav items to be used with the various nav items.\n * [Globla-Nav](/story/compounds-global-nav)\n * [Menu-Drawer](/story/components-menu-drawer)\n * [Dropdown](/story/components-dropdown)\n */\n@Component({\n tag: 'nano-nav-item',\n styleUrl: 'nav-item.scss',\n shadow: true,\n})\nexport class NavItem implements ComponentInterface {\n private hasSecondarySlot: boolean = false;\n private hasAnchorEle: boolean = false;\n private secondaryDiv: HTMLDivElement;\n private btn: HTMLButtonElement | HTMLAnchorElement;\n private didBlur: boolean = false;\n private fromHover: boolean;\n private animating: boolean = false;\n private waitHide: number;\n private waitShow: number;\n private globalNavEle?: HTMLNanoGlobalNavElement;\n\n @State() didOpen: boolean = false;\n @State() isInGlobalNav: boolean = false;\n @State() isInMenuDrawer: boolean = false;\n @State() isInMenu: boolean = false;\n @State() isLegacy: boolean = !document.head.attachShadow;\n @State() hasFocus: boolean = false;\n @Element() private el: HTMLNanoNavItemElement;\n\n /**\n * Href to link to\n */\n @Prop({ mutable: true }) href: string = null;\n\n /**\n * Target to use for links\n */\n @Prop() target: '_self' | '_blank' | '_parent' | '_top' = '_self';\n\n /**\n * Disable the nav item\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether a secondary menu should be or is currently open\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Whether this menu item is currently 'selected'\n */\n @Prop({ reflect: true }) selected: boolean = false;\n\n /**\n * Screen pixel width to activate the secondary menu\n */\n @Prop() secondaryActiveWidth: number = 0;\n\n /**\n * Secondary fallback function for when the secondary menu is no longer active.\n */\n @Prop() secondaryFallback = () => {};\n\n /**\n * Whether secondary menus should close on blur\n */\n @Prop() closeOnBlur: boolean = true;\n\n /**\n * Will show an indicator badge - only when placed in a nano-menu-draw\n */\n @Prop() notification: boolean = false;\n\n /**\n * Emitted when the nav item closes it's secondary navigation.\n */\n @Event() nanoClose!: EventEmitter<NavItemEventDetail>;\n\n /**\n * Emitted when the nav item opens it's secondary navigation.\n */\n @Event() nanoOpen!: EventEmitter<NavItemEventDetail>;\n\n /**\n * Emitted when the nav item is about to open it's secondary navigation.\n */\n @Event() nanoOpening!: EventEmitter<NavItemEventDetail>;\n\n /**\n * Emitted when the nav item is about to close it's secondary navigation.\n */\n @Event() nanoClosing!: EventEmitter<NavItemEventDetail>;\n\n /**\n * Emitted when the nav item loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the nav item has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Sets focus on the first button or anchor present. Use this method instead of the global\n * `element.focus()`.\n */\n @Method()\n async setFocus() {\n if (!this.btn) return;\n this.btn.focus();\n }\n\n /**\n * Public open watcher\n */\n @Watch('open')\n openChange() {\n this.open ? this.openSecondary() : this.closeSecondary();\n }\n\n /**\n * Internal open watcher\n */\n @Watch('didOpen')\n didOpenChange() {\n if (!this.hasSecondarySlot) return;\n\n if (!this.didOpen) {\n /* the secondadry panel is not closing via hover,\n remove blur events, add focus back to originating button */\n if (!this.fromHover) {\n this.btn.removeEventListener('focusout', this.blur);\n this.secondaryDiv.removeEventListener('focusout', this.blur);\n }\n setTimeout(() => {\n if (!this.fromHover && !this.didBlur)\n this.btn.focus({ preventScroll: true });\n this.nanoClose.emit({ secondaryMenu: this.secondaryDiv });\n }, 50);\n } else {\n this.didBlur = false;\n\n /* the secondadry panel is not opening via hover,\n scroll content into view, focus on it and add blur events */\n if (!this.fromHover) {\n const panelio = new (window as any).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n if (data[0].boundingClientRect.top < 0) {\n this.secondaryDiv.scrollIntoView({\n behavior: 'smooth',\n });\n }\n panelio.disconnect();\n },\n { threshold: 1 }\n );\n panelio.observe(this.secondaryDiv);\n this.secondaryDiv.focus({ preventScroll: true });\n\n this.btn.addEventListener('focusout', this.blur);\n this.secondaryDiv.addEventListener('focusout', this.blur);\n window.addEventListener('blur', this.blur);\n\n this.el.tabIndex = -1;\n this.nanoOpen.emit({ secondaryMenu: this.secondaryDiv });\n }\n }\n }\n\n private closeSecondary = async () => {\n this.open = false;\n if (!this.hasSecondarySlot || !this.didOpen) return;\n\n this.nanoClosing.emit({ secondaryMenu: this.secondaryDiv });\n let status = await displayTransition(this.secondaryDiv, 'open', false);\n this.didOpen = status !== 'hidden';\n };\n\n private openSecondary = async () => {\n if (window.innerWidth < this.secondaryActiveWidth) {\n this.secondaryFallback.call(this);\n return;\n }\n this.open = true;\n if (!this.hasSecondarySlot || this.didOpen) return;\n\n this.nanoOpening.emit({ secondaryMenu: this.secondaryDiv });\n let status = await displayTransition(this.secondaryDiv, 'open', true);\n this.didOpen = status === 'shown';\n };\n\n private toggleSecondary = () => {\n if (!this.hasSecondarySlot) return;\n if (this.didOpen) this.closeSecondary();\n else this.openSecondary();\n };\n\n private handleFocus = () => {\n this.hasFocus = true;\n // opens secondary panel when activated via hover\n if (this.href && !this.animating && this.hasSecondarySlot)\n this.openSecondary();\n this.nanoFocus.emit();\n };\n\n private handleHostBlur = () => {\n if (this.animating) return;\n\n // tab index is added to host when secondary panel opens\n // to return focus after secondary panel closes. Remove now if it was added\n this.el.removeAttribute('tabindex');\n this.hasFocus = false;\n this.nanoBlur.emit();\n };\n\n // direct host clicks to internal button\n private handleHostClick = (ev: MouseEvent) => {\n if (!this.hasAnchorEle) return;\n let foundlink = (ev.target as HTMLElement).closest('a, button');\n if (!foundlink) this.btn.click();\n };\n\n // handles secondary menu hover behaviour.\n private handleMouseEnter = async () => {\n if (\n !this.href ||\n this.animating ||\n !this.hasSecondarySlot ||\n (this.globalNavEle && !this.globalNavEle.classList.contains('ready'))\n )\n return;\n\n // if there are sibling secondary panels currently open,\n // we need to wait before opening otherwise we get unwanted overlapping\n let timeToWait = 0;\n if (getSiblings(this.el, '.secondary-open.has-secondary').length)\n timeToWait = 300;\n\n clearTimeout(this.waitHide);\n this.fromHover = true;\n this.animating = true;\n this.waitShow = window.setTimeout(\n async () => await this.openSecondary(),\n timeToWait\n );\n this.animating = false;\n };\n\n // handles secondary menu hover-out behaviour.\n private handleMouseLeave = () => {\n if (!this.href) return;\n clearTimeout(this.waitShow);\n this.fromHover = true;\n this.animating = true;\n\n // prevent closing immediately - makes navigating to items within more forgiving\n this.waitHide = window.setTimeout(\n async () => await this.closeSecondary(),\n 300\n );\n this.animating = false;\n };\n\n private handleClick = () => {\n this.fromHover = false;\n if (this.hasSecondarySlot) this.toggleSecondary();\n else this.el.querySelector<HTMLElement>('*')?.click();\n };\n\n // utility to traverse up, to see if element is nested within current nav-item\n private foundThisNavEle(el: HTMLElement): boolean {\n let found = el.closest('nano-nav-item');\n found = found === el ? el.parentElement.closest('nano-nav-item') : found;\n\n if (!found) return false;\n if (found === this.el) return true;\n return this.foundThisNavEle(found);\n }\n\n private blur = (ev: FocusEvent) => {\n if (!this.didOpen || this.animating) return;\n if (!this.closeOnBlur) return;\n\n // if event is associated with this element don't close\n if (ev && ev.relatedTarget) {\n if (\n ev.relatedTarget === this.el ||\n ev.relatedTarget === this.btn ||\n this.foundThisNavEle(ev.relatedTarget as HTMLElement)\n ) {\n this.secondaryDiv.focus({ preventScroll: true });\n return;\n }\n }\n\n this.btn.removeEventListener('focusout', this.blur);\n this.secondaryDiv.removeEventListener('focusout', this.blur);\n window.removeEventListener('blur', this.blur);\n\n this.didBlur = true;\n\n this.open = false;\n if (!ev.relatedTarget)\n setTimeout(() => {\n this.el.focus({ preventScroll: true });\n }, 50);\n };\n\n componentWillLoad() {\n let secondaryEle = this.el.querySelector('[slot=\"secondary\"]');\n this.hasSecondarySlot = !!secondaryEle;\n\n let link = getDirectChildren(this.el, 'a, button')[0] as\n | HTMLAnchorElement\n | HTMLButtonElement;\n this.hasAnchorEle = !!link;\n\n if (link) {\n this.href = (link as HTMLAnchorElement).href\n ? (link as HTMLAnchorElement).href\n : null;\n this.btn = link;\n if (this.hasSecondarySlot)\n this.btn.addEventListener('click', this.toggleSecondary);\n\n this.btn.addEventListener('focus', this.handleFocus);\n this.btn.addEventListener('blur', this.handleHostBlur);\n }\n }\n\n connectedCallback() {\n this.isInGlobalNav = false;\n this.isInMenuDrawer = false;\n this.globalNavEle = this.el.closest('nano-global-nav');\n\n this.isInMenuDrawer = !!this.el.closest('nano-menu-drawer');\n this.isInMenu = !!this.el.closest('nano-menu');\n this.isInGlobalNav =\n this.el.parentElement === this.globalNavEle ||\n !!this.el.closest('.global-nav');\n }\n\n render() {\n return (\n <Host\n class={{\n 'has-secondary': this.hasSecondarySlot,\n 'secondary-open': this.open,\n selected: this.selected,\n 'has-focus': this.hasFocus,\n disabled: this.disabled,\n 'nano-global-nav': this.isInGlobalNav,\n 'nano-menu-drawer': this.isInMenuDrawer,\n 'nano-menu': this.isInMenu,\n legacy: this.isLegacy,\n }}\n onBlur={this.handleHostBlur}\n dir={(this.el.ownerDocument as Document).dir === 'rtl' ? 'rtl' : null}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleHostClick}\n role=\"menuitem\"\n >\n <div\n class={{\n 'nav-item': true,\n 'secondary-open': this.open,\n selected: this.selected,\n }}\n >\n {this.href && !this.hasAnchorEle && !this.disabled && (\n <a\n target={this.target}\n ref={(a) => (this.btn = a)}\n href={this.href}\n onFocus={this.handleFocus}\n class={{\n notification: this.notification,\n }}\n >\n <slot name=\"icon-start\" />\n <span class=\"text\">\n <slot />\n </span>\n <slot name=\"icon-end\" />\n </a>\n )}\n {((!this.hasAnchorEle && !this.href) || this.disabled) && (\n <button\n ref={(btn) => (this.btn = btn)}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n disabled={this.disabled}\n class={{\n notification: this.notification,\n }}\n >\n <slot name=\"icon-start\" />\n <span class=\"text\">\n <slot />\n </span>\n <slot name=\"icon-end\" />\n </button>\n )}\n {this.hasAnchorEle && !this.disabled && (\n <div class=\"link\">\n <slot name=\"icon-start\" />\n <slot />\n <slot name=\"icon-end\" />\n </div>\n )}\n {this.hasSecondarySlot && !this.disabled && (\n <div\n class=\"secondary-menu\"\n ref={(div) => (this.secondaryDiv = div)}\n tabindex=\"-1\"\n >\n <div class=\"secondary-menu-content\">\n <slot name=\"secondary\" />\n </div>\n <div\n class=\"secondary-menu-mask\"\n onClick={this.closeSecondary}\n ></div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/layers';\n@import '../form-control/form-control';\n@import '../form-control/form-control-vars';\n\n:host {\n @include formControlVars;\n\n position: relative;\n width: 100%;\n padding: 0 !important;\n font-family: $font-family-base;\n display: block;\n}\n\n:host(.nano-color) {\n --input-border-style--focus: #{$input-border-style} var(--nano-color-tint, #{nano-color(primary, tint)});\n --multi-input-value-bg: var(--nano-color-tint-rgb);\n --multi-input-value-border: var(--nano-color-shade);\n --multi-input-value-text-color: var(--nano-color-contrast);\n\n color: current-color(base);\n}\n\n:host-context(nano-item:not(.item-label)) {\n --padding-start: 0;\n}\n\n:host([disabled]:not([disabled='false'])) {\n * {\n pointer-events: none !important;\n }\n}\n\nselect {\n display: none;\n}\n\n.select__native-input {\n @include border-radius(var(--input-border-radius));\n @include padding(0, var(--padding-end), 0, var(--padding-start));\n @include text-inherit();\n\n text-overflow: ellipsis;\n color: var(--input-text-color);\n display: inline-block;\n flex: 1;\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n border: 0;\n outline: none;\n background: transparent;\n appearance: none;\n margin: 0;\n box-sizing: border-box;\n resize: none;\n overflow: hidden;\n cursor: default;\n line-height: 2.5em;\n min-height: 2.5em;\n\n .has-float-label & {\n line-height: 2.1em;\n min-height: 2.1em;\n padding-top: 1.4em;\n }\n\n &::selection {\n background: transparent;\n }\n\n &::-moz-selection {\n background: transparent;\n }\n\n &::placeholder {\n color: var(--placeholder-color);\n font-family: inherit;\n font-style: var(--placeholder-font-style);\n font-weight: var(--placeholder-font-weight);\n opacity: var(--placeholder-opacity);\n line-height: inherit;\n min-height: inherit;\n }\n\n &::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n }\n\n &:-webkit-autofill {\n background-color: transparent;\n }\n\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n appearance: none;\n }\n\n &:invalid {\n box-shadow: none;\n }\n\n &::-ms-clear,\n &::-ms-reveal {\n display: none;\n }\n\n &.resizable {\n resize: vertical;\n overflow: auto;\n }\n\n .form-ctrl__textarea & {\n line-height: 1.5em;\n padding-top: var(--padding-top);\n padding-bottom: var(--padding-bottom);\n white-space: pre-wrap;\n\n &::placeholder {\n line-height: 1.5em;\n }\n }\n\n .has-float-label.textarea & {\n padding-top: 1.8em;\n }\n\n :host(.masked) & {\n opacity: 0;\n position: absolute;\n left: 0;\n top: 0;\n }\n}\n\n.select__mask {\n @include border-radius(var(--input-border-radius));\n @include padding(0, var(--padding-end), 0, var(--padding-start));\n @include text-inherit();\n\n pointer-events: none;\n line-height: 2.5em;\n min-height: 2.5em;\n}\n\n// multi stuff\n\n.select__multi {\n &-wrap {\n @include padding(\n 0,\n 0,\n calc(var(--padding-bottom) / 2),\n 0\n );\n\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n overflow: hidden;\n\n :host(.has-float-label) & {\n padding-top: 1.3em;\n }\n }\n\n &-input {\n @include text-inherit();\n @include padding(\n calc(var(--padding-top) / 2),\n var(--padding-end),\n 0,\n var(--padding-start)\n );\n\n min-width: 50px;\n width: 100%;\n max-height: 100%;\n appearance: none;\n border: 0;\n outline: none;\n display: inline-block;\n background: transparent;\n flex: 0;\n position: relative;\n min-height: calc(2.5em - var(--padding-top));\n box-sizing: border-box;\n\n :host(.legacy) & {\n box-sizing: content-box;\n }\n\n &:last-child {\n flex: 1;\n }\n }\n\n &-value {\n margin-top: 5px;\n margin-inline-start: var(--padding-start);\n margin-inline-end: -3px;\n background: rgba(var(--multi-input-value-bg), 0.8);\n color: var(--multi-input-value-text-color);\n border: 1px solid;\n border-color: var(--multi-input-value-border);\n padding: 0.2em 0.5em;\n line-height: 1;\n max-width: 100%;\n display: flex;\n align-items: center;\n font-size: var(--input-font-size);\n letter-spacing: 1px;\n\n span {\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n overflow: hidden;\n line-height: 1.2;\n }\n }\n\n &-value-remove {\n @include margin(0);\n @include background-position(center);\n @include padding(0, 0, 0, 0.5em);\n\n color: inherit;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n appearance: none;\n display: flex;\n align-items: center;\n top: 0;\n font-size: 1em;\n\n nano-icon {\n --color: var(--multi-input-value-text-color);\n }\n }\n}\n\n.form-ctrl__float-label {\n width: calc(100% - (1em + (var(--padding-start) * 2)));\n\n :host(.has-focus.has-multiple) & {\n transform: translateY(-110%);\n font-size: 0.8em;\n }\n\n :host(.has-value.has-multiple) & {\n transform: translateY(38%);\n top: 0;\n }\n}\n\n:host(.has-focus) select,\n:host(.has-focus) a,\n:host(.has-focus) button {\n pointer-events: auto;\n}\n","import {\n Build,\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n Watch,\n h,\n VNode,\n Listen,\n} from '@stencil/core';\n\nimport {\n Color,\n SelectChangeEventDetail,\n InputChangeEventDetail,\n ControlValidityEventDetail,\n ControlValidity,\n} from '../../interface';\nimport {\n debounceEvent,\n createColorClasses,\n closestElement,\n raf,\n getActiveElement,\n debounce,\n} from '../../utils';\nimport type { Dropdown } from '../dropdown/dropdown';\nimport { FormControl, FormControlWrap } from '../form-control/form-control';\nimport { OptionInterface } from '../option/option-interface';\n\nlet selectIds = 0;\n\n/**\n * The select component is a wrapper to the HTML select element with custom styling and additional functionality.\n * It accepts most of the same properties as the HTML [select](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).\n * It's multi selection functionality is vastly improved from the native solution. It allows for the control of\n * value order through drag and drop or changing the insertion point with arrow keys. It also can allow for user defined values.\n *\n * @slot start - suitable for inline action buttons or icons that may add extra contextual information\n * @slot end - suitable for inline action buttons or icons that may add extra contextual information\n * @slot value-start - similar to 'start', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot value-end - similar to 'end', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot helper-end - helper text to accompany the form field on the side.\n * @slot down-arrow - use this to replace the default down arrow\n * @slot - default slot; nest `nano-option` elements\n */\n@Component({\n tag: 'nano-select',\n styleUrl: 'select.scss',\n scoped: true,\n})\nexport class Select implements ComponentInterface {\n private nativeSelect?: HTMLSelectElement;\n private valueItems: Array<HTMLSpanElement> = [];\n private dragVal: string;\n private mo?: MutationObserver;\n private selectId = `nano-select-${selectIds++}`;\n private rtl: boolean = false;\n private onInit: boolean = true;\n\n private get inputCtrl() {\n return this._inputCtrl;\n }\n private set inputCtrl(input) {\n if (input === this._inputCtrl) return;\n this._inputCtrl = input;\n this.setDataListOpts();\n }\n private _inputCtrl?: HTMLInputElement;\n\n // we don't want these rendered eles decorated with @State\n // because that will cause re-renders. Use get/set to set datalist options\n private _selectWrap: HTMLElement;\n private get selectWrap() {\n return this._selectWrap;\n }\n private set selectWrap(ele: HTMLElement) {\n if (this._selectWrap === ele) return;\n this._selectWrap = ele;\n this.setDataListOpts();\n }\n\n private _datalist: HTMLNanoDatalistElement;\n private get datalist() {\n return this._datalist;\n }\n private set datalist(ele: HTMLNanoDatalistElement) {\n if (this._datalist === ele) return;\n this._datalist = ele;\n this.setDataListOpts();\n }\n\n constructor() {\n this.showInlineValidation = debounce(this.showInlineValidation, 50);\n }\n\n @State() currInsertIndex: number = -1;\n @State() showErrorMsg = false;\n @State() errorMessage: string = '';\n @State() hasFocus = false;\n @State() hasLabelSlot: boolean = false;\n @State() hasHelperSlot: boolean = false;\n @State() hasHelperEndSlot = false;\n @State() inputSearchVal: string = '';\n\n @Element() el!: HTMLNanoSelectElement;\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set.\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n if (!this.nativeSelect) return '';\n return this.nativeSelect.validationMessage;\n }\n\n /**\n * The color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * This Boolean attribute lets you specify that a form control should have select focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, the user cannot interact with the select.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * String to place within a label element. Alternatively use the 'label' slot\n */\n @Prop() label!: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.\n */\n @Prop() multiple?: boolean = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.selectId + '-name';\n\n /**\n * Instructional text that shows before the select has a value. Text set here will be placed inside the label when a value is set. If you don't want this behaviour just set the first option to have no value.\n */\n @Prop() placeholder?: string | null;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * The initial size of the control.\n */\n @Prop() size?: number;\n\n /**\n * Maximum number of options that can be selected when multiple is true\n */\n @Prop() max?: number;\n\n /**\n * Minimum number of options that can be selected when multiple is true\n */\n @Prop() min?: number;\n\n /**\n * The form element to associate the select with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * in multiple mode, allow users to enter their own values\n */\n @Prop() allowCustomValues: boolean = false;\n\n /**\n * The value of the select.\n */\n @Prop()\n get value() {\n return this._value;\n }\n set value(val: string | string[]) {\n if (typeof val === 'string') {\n if (this.multiple) this._value = val.split(',');\n else this._value = val;\n } else if (Array.isArray(val)) {\n if (this.multiple) this._value = val;\n else this._value = val[0];\n }\n }\n private _value: Array<string> | string = this.multiple ? [] : '';\n\n /**\n * You can set options via js as an array of strings: `domElement.options = ['option 1', 'option 2']` or\n * objects `domElement.options = [{label: 'option 1', value: 'opt-1'}]`. See `nano-option` docs for all available properties.\n * Alternatively, you can nest `<nano-option>` elements within a `<nano-select>`\n * Regardless - reading `options` will return the current component options - slotted or otherwise\n */\n @Prop()\n get options(): Array<OptionInterface | string> {\n if (this._options.length) return this._options;\n\n if (!this.datalist || !this.datalist.activeOptions) return [];\n\n return this._eOptions.map((ao) => {\n const { value, selected, label, filterMeta } = ao;\n return { value, selected, label, filterMeta };\n });\n }\n set options(opts: Array<OptionInterface | string>) {\n this._options = opts.map((opt) => {\n if (typeof opt === 'string') return { value: opt, label: opt };\n else return opt;\n });\n }\n private _options: OptionInterface[] = [];\n @State() _eOptions: OptionInterface[] = [];\n\n /**\n * If `true`, a clear icon will appear in the select when there is a value. Clicking it clears the select.\n */\n @Prop() clearSelect = false;\n\n /**\n * Hide the native select element and cover with a value 'mask'.\n * Enables a fluid nano-select width upon value change (if required). Doesn't work with multiple=\"true\".\n */\n @Prop() mask = false;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `nanoSearchChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n\n @Watch('debounce')\n protected debounceChanged() {\n this.nanoSearchChange = debounceEvent(this.nanoSearchChange, this.debounce);\n }\n\n @Watch('required')\n @Watch('disabled')\n @Watch('min')\n @Watch('max')\n @Watch('readonly')\n protected shouldValidate() {\n if (this.onInit) return;\n if (this.invalid) this.showErrorMsg = this._invalid = false;\n\n this.customValidate();\n if (this.validateOn !== 'dirty') return;\n this.showInlineValidation();\n }\n\n /**\n * Update the native select element when the value changes\n */\n // eslint-disable-next-line @stencil/no-unused-watch\n @Watch('value')\n valueChanged() {\n if (this.onInit) {\n if (this.multiple) this.currInsertIndex = this.value.length - 1;\n return;\n }\n requestAnimationFrame(() => {\n this.shouldValidate();\n this.nanoChange.emit({ value: this.value });\n });\n }\n\n /** nano-dropdown config options you can pass to the nested dropdown component */\n @Prop({ mutable: true }) dropDownConfig?: Partial<Dropdown> = {};\n\n @Watch('dropDownConfig')\n setDataListOpts() {\n if (!this.datalist || !this.selectWrap) return;\n\n this.datalist.input = this.inputCtrl;\n\n const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n ...this.dropDownConfig,\n tetherTo: this.selectWrap,\n };\n }\n\n // Custom Events\n\n /**\n * Emitted when the value has changed.\n */\n @Event() nanoChange!: EventEmitter<SelectChangeEventDetail>;\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the select has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the select has been created.\n * @internal\n */\n @Event() nanoDidLoad!: EventEmitter<void>;\n\n /**\n * Emitted when the select has been removed.\n * @internal\n */\n @Event() nanoDidUnload!: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred on a multiple=\"true\" input\n */\n @Event() nanoSearchChange!: EventEmitter<InputChangeEventDetail>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // Public Methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return new Promise((resolve) => {\n if (validateFirst) {\n this.customValidate();\n this.showInlineValidation();\n }\n setTimeout(() => {\n resolve({\n isValid: !this._invalid,\n errorMessage: this.nativeSelect.validationMessage,\n });\n }, 50);\n });\n }\n\n /**\n * Sets focus on the specified `nano-select`. Use this method instead of the global\n * `select.focus()`.\n */\n @Method()\n async setFocus() {\n if (!this.inputCtrl) return;\n this.inputCtrl.focus();\n setTimeout(() => this.inputCtrl.click(), 50);\n }\n\n /**\n * Returns the native `<select>` element used under the hood.\n */\n @Method()\n getSelectElement(): Promise<HTMLSelectElement> {\n return Promise.resolve(this.nativeSelect!);\n }\n\n /**\n * Invalidate the field and show a custom error message.\n * To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (this.nativeSelect) {\n this.nativeSelect.setCustomValidity(message);\n this.showInlineValidation();\n }\n }\n\n /* Logic */\n\n private get valArray() {\n return typeof this.value === 'string'\n ? this.value.length\n ? [this.value]\n : []\n : this.value;\n }\n\n private isValidValues() {\n return this.valArray.find((val) =>\n (this.options as OptionInterface[]).find((opt) => opt.value === val)\n );\n }\n\n private customValidate = () => {\n this.nativeSelect.setCustomValidity('');\n\n // add custom validations 'cos html5 validations are a bit rubbish on selects\n if (this.required && !this.valArray.length) {\n this.nativeSelect.setCustomValidity('Please fill in this field.');\n return true;\n }\n if (\n this.valArray.length &&\n !this.allowCustomValues &&\n !this.isValidValues()\n ) {\n this.nativeSelect.setCustomValidity(\n 'Please choose an item from this field.'\n );\n return true;\n }\n if (this.max && this.valArray.length > this.max) {\n this.nativeSelect.setCustomValidity(\n `Only up to ${this.max} values are allowed.`\n );\n return true;\n }\n if (this.min && this.valArray.length < this.min) {\n this.nativeSelect.setCustomValidity(\n `You must select a minimum of ${this.min} values.`\n );\n return true;\n }\n return false;\n };\n\n private showInlineValidation = (ev?: Event) => {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n this._invalid = false;\n this.showErrorMsg = false;\n this.errorMessage = '';\n\n if (!this.nativeSelect.validity.valid) {\n this.errorMessage = this.nativeSelect.validationMessage;\n this._invalid = true;\n this.showErrorMsg = true;\n }\n this.nanoValidate.emit({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n originalEvent: ev,\n });\n };\n\n private handleInvalid = (ev: Event) => {\n this._invalid = true;\n\n if (this.validateOn === 'submit') {\n this._invalid = this.showErrorMsg = this.customValidate();\n }\n if (this.showInlineError) ev.preventDefault();\n\n requestAnimationFrame(() => this.showInlineValidation(ev));\n };\n\n private setValue = (e: CustomEvent<HTMLNanoOptionElement>) => {\n e.preventDefault();\n\n if (!this.multiple) {\n this.value = e.detail.value;\n this.selectWrap.clientWidth; // force reflow\n this.inputCtrl.focus();\n return;\n }\n if (this.value && this.value.length && this.value.includes(e.detail.value))\n return;\n if (this.max && this.value.length === this.max) return;\n\n this.currInsertIndex++;\n this.value = [\n ...this.value.slice(0, this.currInsertIndex),\n e.detail.value,\n ...this.value.slice(this.currInsertIndex),\n ];\n this.inputSearchVal = '';\n // this.selectWrap.clientWidth; // force reflow\n };\n\n private removeValue = (toFind?: string) => {\n if (!this.multiple || !this.value.length) return;\n\n if (!toFind) toFind = this.value[this.value.length - 1];\n this.value = (this.value as Array<string>).filter((val) => val !== toFind);\n\n this.currInsertIndex--;\n // this.selectWrap.clientWidth; // force reflow\n this.setFocus();\n };\n\n private slotChangeObserver() {\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.el, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have label / helper content\n this.hasLabelSlot = !!this.el.querySelectorAll('[slot=\"label\"]').length;\n this.hasHelperSlot = !!this.el.querySelector('[slot=\"helper\"]');\n this.hasHelperEndSlot = !!this.el.querySelector('[slot=\"helper-end\"]');\n\n // breaking change introduced in v2. Rm in v3\n if (\n !!this.el.querySelector('select:not([class*=\"sc-nano-select\"]) option')\n ) {\n console.warn(\n 'nesting `<option>` elements was removed in v2. Please update your code to use `<nano-option>` elements instead.',\n this.el\n );\n }\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"legacy\"]')) {\n console.warn(\n 'The `legacy` slot has been removed. Please update your code',\n this.el\n );\n }\n }\n\n private getLabel(toFind: string) {\n let label = (this.options as OptionInterface[]).find((opt) => {\n return !opt.disabled && opt.value?.length && opt.value === toFind;\n });\n return label && label.label ? label.label : toFind;\n }\n\n /* Event handling */\n\n @Listen('reset', { target: 'body' })\n onReset(e) {\n const form = this.form\n ? document.querySelector('#' + this.form)\n : this.el.closest('form');\n if (!form || e.target !== this.el.closest('form')) return;\n\n this.clearSelectValue();\n }\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let target: Element;\n\n raf(() => {\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n target = getActiveElement();\n } else target = e.target as Element;\n\n if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {\n this.onBlur();\n }\n });\n }\n\n private setOptions = () => {\n if (\n !this.datalist ||\n !this.datalist.activeOptions ||\n !this.datalist.activeOptions.length\n )\n return;\n\n this._eOptions = this.datalist.activeOptions.map((ao) => {\n const { value, selected, label, filterMeta } = ao;\n return { value, selected, label, filterMeta };\n });\n };\n\n private handleDocumentKeyDown = (ev: KeyboardEvent) => {\n if (!this.multiple || !this.hasFocus) return;\n\n if (!this.inputSearchVal) {\n let rm: HTMLSpanElement;\n\n switch (ev.key) {\n case 'Backspace':\n if (this.inputCtrl.previousElementSibling)\n rm = this.inputCtrl.previousElementSibling as HTMLSpanElement;\n else break;\n\n this.removeValue(rm.dataset.value || null);\n break;\n\n case 'Delete':\n if (this.inputCtrl.nextElementSibling)\n rm = this.inputCtrl.nextElementSibling as HTMLSpanElement;\n else break;\n\n this.removeValue(rm.dataset.value || null);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n if (!this.value.length) break;\n\n if (ev.key === 'ArrowLeft' && this.inputCtrl.previousSibling)\n this.currInsertIndex--;\n if (ev.key === 'ArrowRight' && this.inputCtrl.nextSibling)\n this.currInsertIndex++;\n\n setTimeout(() => {\n this.inputCtrl.focus();\n }, 20);\n ev.preventDefault();\n break;\n }\n }\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n\n requestAnimationFrame(() => {\n if (this.validateOn === 'dirty' && !this.hasFocus)\n this.showInlineValidation();\n });\n this.nanoBlur.emit();\n\n if (!this.allowCustomValues && this.multiple) {\n this.inputSearchVal = '';\n const event = new window.Event('change');\n this.inputCtrl.dispatchEvent(event);\n }\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.nanoFocus.emit();\n };\n\n private clearSelectValue = (ev?: Event) => {\n if (this.clearSelect && !this.readonly && !this.disabled && ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n if (this.multiple) {\n this.value = [];\n this.currInsertIndex = -1;\n } else this.value = '';\n\n this.inputCtrl.value = '';\n const event = new window.Event('change');\n this.inputCtrl.dispatchEvent(event);\n };\n\n private onClick = () => {\n this.setFocus();\n };\n\n /* Multi event handlers */\n\n private onDragStart = (ev: MouseEvent) => {\n let ele = ev.target as HTMLSpanElement;\n this.dragVal = ele.dataset.value;\n };\n\n private onDragEnd = (ev) => {\n this.dragVal = null;\n ev.preventDefault();\n };\n\n private onDragLeave = (ev: MouseEvent) => {\n let ele = ev.target as HTMLSpanElement;\n let spanVal: string =\n ele.dataset && ele.dataset.value ? ele.dataset.value : null;\n\n if (\n !spanVal ||\n this.dragVal === spanVal ||\n !this.value.includes(this.dragVal)\n ) {\n ev.preventDefault();\n return;\n }\n\n let to = this.value.indexOf(spanVal);\n let from = this.value.indexOf(this.dragVal);\n let tmpArr = this.value as Array<string>;\n let tmpVal = tmpArr[to];\n\n tmpArr[to] = tmpArr[from];\n tmpArr[from] = tmpVal;\n this.value = [...tmpArr];\n };\n\n private onMultiInput = (ev) => {\n this.inputSearchVal = ev.target.value.trim();\n this.nanoSearchChange.emit({ value: ev.target.value.trim() });\n };\n\n /* Stencil Component lifecycle hooks */\n\n connectedCallback() {\n this.debounceChanged();\n\n if (!Build.isBrowser) return;\n\n this.el.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.el,\n })\n );\n }\n\n disconnectedCallback() {\n document.dispatchEvent(\n new CustomEvent('nanoDidUnload', {\n detail: this.el,\n })\n );\n\n if (!Build.isBrowser) return;\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n this.customValidate();\n this.setDataListOpts();\n raf(() => (this.onInit = false));\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n render() {\n const labelId = this.selectId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot\n ? this.selectId + '-moreId'\n : '';\n const helperEndId = this.hasHelperEndSlot ? this.selectId + '-helper' : '';\n\n this.rtl = (this.el.ownerDocument as Document).dir === 'rtl';\n this.valueItems = [];\n\n const compWrapOptions = (({\n el,\n floatLabel,\n label,\n errorMessage,\n showInlineError,\n hasHelperSlot,\n hasHelperEndSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n rtl,\n }) => ({\n el,\n floatLabel,\n label,\n errorMessage,\n showInlineError,\n hasHelperSlot,\n hasHelperEndSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n rtl,\n }))(this);\n const wrapOptions = {\n ...compWrapOptions,\n labelId,\n moreId,\n helperEndId,\n hasValue: !!this.value.length || !!this.inputSearchVal.length,\n controlId: this.selectId,\n };\n\n const controlOptions = (({ readonly, disabled }) => ({\n readonly,\n disabled,\n clearControl: this.clearSelect,\n }))(this);\n\n return (\n <Host\n type={this.multiple ? 'select-multiple' : 'select-one'}\n aria-disabled={this.disabled ? 'true' : null}\n class={{\n ...createColorClasses(this.color),\n 'has-value': !!this.value.length || !!this.inputSearchVal.length,\n 'has-focus': this.hasFocus,\n 'is-invalid': this.invalid,\n 'has-label': this.label !== null && !this.floatLabel,\n 'has-float-label': this.label !== null && this.floatLabel,\n rtl: this.rtl,\n 'has-multiple': this.multiple,\n 'has-clr-btn': this.clearSelect,\n masked: this.mask,\n }}\n >\n <FormControlWrap {...wrapOptions}>\n <FormControl\n {...controlOptions}\n onClearText={this.clearSelectValue}\n control={this.el}\n ref={(el) => (this.selectWrap = el)}\n endValueSlot={\n <slot name=\"down-arrow\">\n <nano-icon slot=\"value-end\" name=\"light/chevron-down\" />\n </slot>\n }\n >\n {this.multiple && (\n <div class=\"select__multi-wrap select\">\n {this.multipleValues(labelId, moreId, helperEndId)}\n </div>\n )}\n {!this.multiple && [\n this.mask && (\n <div class=\"select__mask\">\n {this.getLabel(this.value as string)}\n </div>\n ),\n <input\n id={this.selectId}\n class=\"select__native-input\"\n ref={(input) => (this.inputCtrl = input)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n form={this.form}\n placeholder={this.placeholder}\n readOnly={true}\n required={this.required}\n value={this.getLabel(this.value as string)}\n onFocus={this.onFocus}\n />,\n ]}\n </FormControl>\n </FormControlWrap>\n {!this.readonly && !this.disabled && (\n <nano-datalist\n onNanoOptionsUpdated={this.setOptions}\n ref={(el) => (this.datalist = el)}\n selected={this.valArray}\n type={this.multiple ? 'selctMulti' : 'select'}\n onNanoSelect={this.setValue}\n onNanoDeselect={(e) => {\n e.preventDefault();\n this.removeValue(e.detail.value);\n }}\n options={this._options.length ? this._options : undefined}\n >\n {this.allowCustomValues && this.multiple && !!this.inputSearchVal && (\n <nano-option\n slot=\"list-top\"\n value={this.inputSearchVal}\n selected={false}\n label={this.inputSearchVal}\n onNanoSelect={() => this.inputCtrl.focus()}\n >\n <span slot=\"check-icon\"></span>\n Add '{this.inputSearchVal}'\n </nano-option>\n )}\n <slot />\n </nano-datalist>\n )}\n\n <select\n id={this.selectId + '-hidden'}\n class=\"select__native-ctrl\"\n ref={(select) => (this.nativeSelect = select)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n form={this.form}\n multiple={this.multiple}\n name={this.name}\n required={this.required}\n onInvalid={this.handleInvalid}\n >\n {this.allowCustomValues &&\n this.valArray.map((val) => {\n return (\n <option value={val} selected={true}>\n {val}\n </option>\n );\n })}\n {!this.allowCustomValues &&\n this.options.map((opt: OptionInterface) => {\n return (\n <option\n value={opt.value}\n selected={this.valArray.includes(opt.value)}\n disabled={opt.disabled}\n label={opt.label}\n >\n {this.valArray.includes(opt.value)}\n </option>\n );\n })}\n </select>\n </Host>\n );\n }\n\n private multipleValues(\n labelId: string,\n moreId: string,\n helperEndId: string\n ): VNode | (VNode | VNode[])[] {\n let input: VNode = (\n <input\n class=\"select__multi-input\"\n id={this.selectId}\n ref={(input) => (this.inputCtrl = input)}\n readOnly={this.readonly}\n disabled={this.disabled}\n autoFocus={this.autofocus}\n autocomplete=\"off\"\n onKeyDown={this.handleDocumentKeyDown}\n onInput={this.onMultiInput}\n value={this.inputSearchVal}\n onTouchStart={this.onClick}\n onMouseDown={this.onClick}\n onFocus={this.onFocus}\n placeholder={\n this.placeholder && !this.value.length ? this.placeholder : ''\n }\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n />\n );\n if (!this.value.length) return input;\n\n return (this.value as Array<string>).map((val, i) => {\n let toReturn: VNode | VNode[] = (\n <span\n onDragStart={this.onDragStart}\n onDragLeave={this.onDragLeave}\n onDragEnd={this.onDragEnd}\n onDragOver={(e) => e.preventDefault()}\n draggable\n data-value={val}\n ref={(span) => this.valueItems.push(span)}\n class=\"select__multi-value\"\n >\n <span>{this.getLabel(val)}</span>\n <button\n class=\"select__multi-value-remove\"\n type=\"button\"\n tabindex=\"-1\"\n onTouchEnd={() => {\n this.removeValue(val);\n }}\n onMouseUp={() => {\n this.removeValue(val);\n }}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n </button>\n </span>\n );\n if (i === 0 && this.currInsertIndex < 0)\n toReturn = [input, toReturn as VNode];\n else if (i === this.currInsertIndex)\n toReturn = [toReturn as VNode, input];\n return toReturn;\n });\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- System.register(["./p-59b3d24b.system.js","./p-0784f2ad.system.js"],(function(o){"use strict";var n,t,a;return{setters:[function(o){n=o.r;t=o.h},function(o){a=o.f}],execute:function(){var e=".sc-nano-icon-button-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-icon-button,*.sc-nano-icon-button::before,*.sc-nano-icon-button::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-icon-button{display:none !important}.sc-nano-icon-button-h{display:inline-block;--border-radius:var(--nano-border-radius-medium, 4px);--active-color:#005c75;--hover-color:#007495;--nano-color-base:var(--color, #687576);--background:transparent;--padding:var(--nano-spacing-small, 8px)}.icon-button.sc-nano-icon-button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-radius:var(--border-radius);background:var(--background);font-size:inherit;color:var(--color);padding:var(--padding);cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;-webkit-transition:-webkit-box-shadow var(--nano-transition-fast, 0.1s) ease-in-out;transition:-webkit-box-shadow var(--nano-transition-fast, 0.1s) ease-in-out;transition:box-shadow var(--nano-transition-fast, 0.1s) ease-in-out;transition:box-shadow var(--nano-transition-fast, 0.1s) ease-in-out, -webkit-box-shadow var(--nano-transition-fast, 0.1s) ease-in-out}.icon-button.sc-nano-icon-button:hover:not(.icon-button--disabled),.icon-button.sc-nano-icon-button:focus:not(.icon-button--disabled){color:var(--hover-color);--nano-color-base:var(--hover-color)}.icon-button.sc-nano-icon-button:active:not(.icon-button--disabled){color:var(--active-color);--nano-color-base:var(--active-color)}.icon-button.sc-nano-icon-button:focus{outline:none}.icon-button--disabled.sc-nano-icon-button{opacity:0.5;cursor:not-allowed;pointer-events:none}.focus-visible.icon-button.sc-nano-icon-button:focus{-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)))}";var i=o("nano_icon_button",function(){function o(o){n(this,o);this.type="button";this.disabled=false}o.prototype.componentDidLoad=function(){a.observe(this.button)};o.prototype.connectedCallback=function(){if(this.button)a.observe(this.button)};o.prototype.disconnectedCallback=function(){a.unobserve(this.button)};o.prototype.render=function(){var o=this;var n=this.href===undefined?"button":"a";return t(n,{part:"base",ref:function(n){return o.button=n},class:{"icon-button":true,"icon-button--disabled":this.disabled},"aria-label":this.label,name:this.name,value:this.value,href:this.href||undefined,target:this.href&&this.target?this.target:undefined,type:!this.href&&this.type?this.type:undefined},t("nano-icon",{name:this.iconName,src:this.iconSrc,"aria-hidden":"true"}))};return o}());i.style=e}}}));
5
- //# sourceMappingURL=p-f2e7d2f9.system.entry.js.map
4
+ System.register(["./p-f48be9f5.system.js","./p-0784f2ad.system.js"],(function(o){"use strict";var n,t,a;return{setters:[function(o){n=o.r;t=o.h},function(o){a=o.f}],execute:function(){var e=".sc-nano-icon-button-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-icon-button,*.sc-nano-icon-button::before,*.sc-nano-icon-button::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-icon-button{display:none !important}.sc-nano-icon-button-h{display:inline-block;--border-radius:var(--nano-border-radius-medium, 4px);--active-color:#005c75;--hover-color:#007495;--nano-color-base:var(--color, #687576);--background:transparent;--padding:var(--nano-spacing-small, 8px)}.icon-button.sc-nano-icon-button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-radius:var(--border-radius);background:var(--background);font-size:inherit;color:var(--color);padding:var(--padding);cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;-webkit-transition:-webkit-box-shadow var(--nano-transition-fast, 0.1s) ease-in-out;transition:-webkit-box-shadow var(--nano-transition-fast, 0.1s) ease-in-out;transition:box-shadow var(--nano-transition-fast, 0.1s) ease-in-out;transition:box-shadow var(--nano-transition-fast, 0.1s) ease-in-out, -webkit-box-shadow var(--nano-transition-fast, 0.1s) ease-in-out}.icon-button.sc-nano-icon-button:hover:not(.icon-button--disabled),.icon-button.sc-nano-icon-button:focus:not(.icon-button--disabled){color:var(--hover-color);--nano-color-base:var(--hover-color)}.icon-button.sc-nano-icon-button:active:not(.icon-button--disabled){color:var(--active-color);--nano-color-base:var(--active-color)}.icon-button.sc-nano-icon-button:focus{outline:none}.icon-button--disabled.sc-nano-icon-button{opacity:0.5;cursor:not-allowed;pointer-events:none}.focus-visible.icon-button.sc-nano-icon-button:focus{-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)))}";var i=o("nano_icon_button",function(){function o(o){n(this,o);this.type="button";this.disabled=false}o.prototype.componentDidLoad=function(){a.observe(this.button)};o.prototype.connectedCallback=function(){if(this.button)a.observe(this.button)};o.prototype.disconnectedCallback=function(){a.unobserve(this.button)};o.prototype.render=function(){var o=this;var n=this.href===undefined?"button":"a";return t(n,{part:"base",ref:function(n){return o.button=n},class:{"icon-button":true,"icon-button--disabled":this.disabled},"aria-label":this.label,name:this.name,value:this.value,href:this.href||undefined,target:this.href&&this.target?this.target:undefined,type:!this.href&&this.type?this.type:undefined},t("nano-icon",{name:this.iconName,src:this.iconSrc,"aria-hidden":"true"}))};return o}());i.style=e}}}));
5
+ //# sourceMappingURL=p-88779174.system.entry.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as t,h as o}from"./p-ab5813a7.js";const e=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:block}.aspect-ratio{position:relative}.aspect-ratio ::slotted(*){position:absolute !important;top:0 !important;left:0 !important;width:100% !important;height:100% !important}.aspect-ratio--cover ::slotted(embed),.aspect-ratio--cover ::slotted(iframe),.aspect-ratio--cover ::slotted(img),.aspect-ratio--cover ::slotted(video){-o-object-fit:cover !important;object-fit:cover !important}.aspect-ratio--contain ::slotted(embed),.aspect-ratio--contain ::slotted(iframe),.aspect-ratio--contain ::slotted(img),.aspect-ratio--contain ::slotted(video){-o-object-fit:contain !important;object-fit:contain !important}";let i=class{constructor(o){t(this,o);this.aspectRatio="16:9";this.fit="cover";this.handleSlotChange=()=>{this.setAspectRatio()}}handleAspectRatioChange(){this.setAspectRatio()}setAspectRatio(){if(typeof this.aspectRatio!=="string"){console.warn("aspectRatio should be a string.");return}else if(!this.aspectRatio.match(/^([0-9]+:[0-9]+)$/)){console.warn('aspectRatio is an incorrect format. Should be e.g. "16:9"');return}const t=this.aspectRatio.split(":");const o=parseInt(t[0]);const e=parseInt(t[1]);this.base.style.paddingBottom=o&&e?`${e/o*100}%`:null}render(){return o("div",{ref:t=>this.base=t,part:"base",class:{"aspect-ratio":true,"aspect-ratio--cover":this.fit==="cover","aspect-ratio--contain":this.fit==="contain"}},o("slot",{onSlotchange:this.handleSlotChange}))}static get watchers(){return{aspectRatio:["handleAspectRatioChange"]}}};i.style=e;export{i as nano_aspect_ratio};
5
- //# sourceMappingURL=p-4535e3bb.entry.js.map
4
+ import{r as t,h as o}from"./p-b5c33aff.js";const e=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:block}.aspect-ratio{position:relative}.aspect-ratio ::slotted(*){position:absolute !important;top:0 !important;left:0 !important;width:100% !important;height:100% !important}.aspect-ratio--cover ::slotted(embed),.aspect-ratio--cover ::slotted(iframe),.aspect-ratio--cover ::slotted(img),.aspect-ratio--cover ::slotted(video){-o-object-fit:cover !important;object-fit:cover !important}.aspect-ratio--contain ::slotted(embed),.aspect-ratio--contain ::slotted(iframe),.aspect-ratio--contain ::slotted(img),.aspect-ratio--contain ::slotted(video){-o-object-fit:contain !important;object-fit:contain !important}";let i=class{constructor(o){t(this,o);this.aspectRatio="16:9";this.fit="cover";this.handleSlotChange=()=>{this.setAspectRatio()}}handleAspectRatioChange(){this.setAspectRatio()}setAspectRatio(){if(typeof this.aspectRatio!=="string"){console.warn("aspectRatio should be a string.");return}else if(!this.aspectRatio.match(/^([0-9]+:[0-9]+)$/)){console.warn('aspectRatio is an incorrect format. Should be e.g. "16:9"');return}const t=this.aspectRatio.split(":");const o=parseInt(t[0]);const e=parseInt(t[1]);this.base.style.paddingBottom=o&&e?`${e/o*100}%`:null}render(){return o("div",{ref:t=>this.base=t,part:"base",class:{"aspect-ratio":true,"aspect-ratio--cover":this.fit==="cover","aspect-ratio--contain":this.fit==="contain"}},o("slot",{onSlotchange:this.handleSlotChange}))}static get watchers(){return{aspectRatio:["handleAspectRatioChange"]}}};i.style=e;export{i as nano_aspect_ratio};
5
+ //# sourceMappingURL=p-8b6fcd6d.entry.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as t,h as a,e,g as r}from"./p-ab5813a7.js";const n=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:block;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-animation:opacity 0.3s ease-in-out forwards;animation:opacity 0.3s ease-in-out forwards;opacity:1}@media only screen and (max-width: 768px){:host([animation-dir=left]){-webkit-animation:slide-right 0.3s ease-in-out;animation:slide-right 0.3s ease-in-out;opacity:1}:host([animation-dir=right]){-webkit-animation:slide-left 0.3s ease-in-out;animation:slide-left 0.3s ease-in-out;opacity:1}}.nano-tab-content{position:relative}@-webkit-keyframes opacity{0%{opacity:0}100%{opacity:100%}}@keyframes opacity{0%{opacity:0}100%{opacity:100%}}@-webkit-keyframes slide-left{0%{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}50%{-webkit-transform:translate3d(0%) translate3d(-0.9em);transform:translate3d(0%) translate3d(-0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slide-left{0%{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}50%{-webkit-transform:translate3d(0%) translate3d(-0.9em);transform:translate3d(0%) translate3d(-0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@-webkit-keyframes slide-right{0%{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}50%{-webkit-transform:translateX(0%) translate3d(0.9em);transform:translateX(0%) translate3d(0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slide-right{0%{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}50%{-webkit-transform:translateX(0%) translate3d(0.9em);transform:translateX(0%) translate3d(0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@media (prefers-reduced-motion: reduce){*{-webkit-animation:none !important;animation:none !important}}";let s=0;let i=class{constructor(a){t(this,a);this.tabContentId=`nano-tab-content-${++s}`;this.name="";this.active=false}render(){return a(e,{id:this.host.id||this.tabContentId,style:{display:this.active?"block":"none"},role:"tabpanel","aria-hidden":this.active?"false":"true"},a("div",{part:"base",class:"nano-tab-content"},a("slot",null)))}get host(){return r(this)}};i.style=n;export{i as nano_tab_content};
5
- //# sourceMappingURL=p-6ade3290.entry.js.map
4
+ import{r as t,h as a,e,g as r}from"./p-b5c33aff.js";const n=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:block;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-animation:opacity 0.3s ease-in-out forwards;animation:opacity 0.3s ease-in-out forwards;opacity:1}@media only screen and (max-width: 768px){:host([animation-dir=left]){-webkit-animation:slide-right 0.3s ease-in-out;animation:slide-right 0.3s ease-in-out;opacity:1}:host([animation-dir=right]){-webkit-animation:slide-left 0.3s ease-in-out;animation:slide-left 0.3s ease-in-out;opacity:1}}.nano-tab-content{position:relative}@-webkit-keyframes opacity{0%{opacity:0}100%{opacity:100%}}@keyframes opacity{0%{opacity:0}100%{opacity:100%}}@-webkit-keyframes slide-left{0%{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}50%{-webkit-transform:translate3d(0%) translate3d(-0.9em);transform:translate3d(0%) translate3d(-0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slide-left{0%{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}50%{-webkit-transform:translate3d(0%) translate3d(-0.9em);transform:translate3d(0%) translate3d(-0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@-webkit-keyframes slide-right{0%{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}50%{-webkit-transform:translateX(0%) translate3d(0.9em);transform:translateX(0%) translate3d(0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slide-right{0%{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}50%{-webkit-transform:translateX(0%) translate3d(0.9em);transform:translateX(0%) translate3d(0.9em)}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@media (prefers-reduced-motion: reduce){*{-webkit-animation:none !important;animation:none !important}}";let s=0;let i=class{constructor(a){t(this,a);this.tabContentId=`nano-tab-content-${++s}`;this.name="";this.active=false}render(){return a(e,{id:this.host.id||this.tabContentId,style:{display:this.active?"block":"none"},role:"tabpanel","aria-hidden":this.active?"false":"true"},a("div",{part:"base",class:"nano-tab-content"},a("slot",null)))}get host(){return r(this)}};i.style=n;export{i as nano_tab_content};
5
+ //# sourceMappingURL=p-8eb4f24a.entry.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Web Components for Nanopore digital Web Apps
3
3
  */
4
- import{r as t,c as i,f as e,h as s,e as h,g as l}from"./p-ab5813a7.js";import{W as r}from"./p-5ae80fd7.js";import{C as n}from"./p-5a0095f9.js";import"./p-69a3e911.js";import"./p-1da5f8df.js";const a=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:none}:host ::slotted([slot=filter-template]),:host::slotted([slot=filter-template]){display:none !important}:host(.show-filter){display:block}";let o=class{constructor(e){t(this,e);this.nanoFilterChanged=i(this,"nanoFilterChanged",7);this.nanoTplUpdated=i(this,"nanoTplUpdated",7);this.filterId=null;this.tplWillRnder=new Promise((t=>{this.tplDidRnder=t}));this.internalValue=[undefined];this.showFilter=false;this.indexResults=null;this.filterChanged=null;this.filterName=null;this.value="";this.operator="or";this.storeMethod="session"}valueSet(){let t=this.value;let i;if(typeof t==="string")i=t.length?t.split("|"):[];else i=this.value;if(this.didValueChange(i)){let t=this.setFieldValues(i);if(t&&t.length)this.internalValue=i;else{this.tplWillRnder.then((t=>{this.setFieldValues(i);this.internalValue=i}))}}}valueChanged(){this.value=this.internalValue;this.nanoFilterChanged.emit({filterId:this.filterId,facetName:this.filterName,value:this.internalValue,operator:this.operator})}appliedFilterChanged(){if(this.filterName&&this.filterChanged&&(this.filterChanged!==this.filterId||this.operator==="and")){this.updateContent()}}tplUpdate(){this.updateContent()}handleFilterChange(){if(this.indexResults&&this.indexResults.appliedFilters){const t=this.indexResults.appliedFilters.find((t=>t.name===this.filterName));if(!t)return;this.tplWillRnder.then((i=>{let e=this.setFieldValues(t.values);if(e&&e.length)this.value=e}))}this.updateContent()}handleChangeEvent(){let t=this.getFieldValues();if(this.didValueChange(t)){this.internalValue=t;return true}return false}updateContent(){let t=this.outputSlot||this.outputEle;if(!this.el)return;if(!this.templateStr)this.showFilter=true;else if(!this.filterName||!t||this.templateStr&&(!this.indexResults||!this.indexResults.origFilters[this.filterName])){this.showFilter=false}if(!t)return;if(!this.indexResults){if(this.templateStr){e((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:{},dyn:{},selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});if(!this.value||!this.value.length)this.handleChangeEvent()}))}else if(!this.value||!this.value.length)this.handleChangeEvent();return}e((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:Object.assign({},this.indexResults.origFilters[this.filterName]),dyn:Object.assign({},this.indexResults.dynFilters[this.filterName]),selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});this.tplDidRnder();this.setFieldValues();if(!this.showFilter)this.showFilter=true;this.nanoTplUpdated.emit(this.el)}))}getFieldValues(){let t=[];let i=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select');for(let e=0;e<i.length;e++){let s=i[e];if(s.type==="select-multiple"){let i=s;for(let e=0;e<i.options.length;e++){if(!i.options[e].selected||!i.options[e].value.length)continue;t.push(i.options[e].value)}}else if(s.type!=="checkbox"&&s.type!=="radio"||s.checked&&s.value.length){t.push(s.value)}}return t}setFieldValues(t){t=t||this.internalValue;if(!t)return;let i=[];let e=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select, nano-select, nano-checkbox');for(let s=0;s<e.length;s++){let h=e[s];if(h.disabled||h.type==="file"||h.type==="reset"||h.type==="submit"||h.type==="button")continue;if(h.type==="select-multiple"||h.type==="select-one"){let e=h;for(let s=0;s<e.options.length;s++){if(!t.includes(e.options[s].value))e.options[s].selected=false;else{i.push(e.value);e.options[s].selected=true;if(h.type==="select-one")e.value=e.options[s].value}}}else if(["checkbox","radio","tag","segment","segment-pill"].includes(h.type)){if(t.includes(h.value)){i.push(h.value);h.checked=true}else if(!t.length&&!h.value.length){h.checked=true}else h.checked=false}}return i}didValueChange(t){if(!!this.internalValue&&!t)return true;if(!this.internalValue&&!t)return false;if(this.internalValue&&t.length!==this.internalValue.length)return true;let i=false;for(var e=0;e<t.length;e++){if(!i&&(!this.internalValue||!this.internalValue.includes(t[e])))i=true}return i}connectedCallback(){this.templateSlot=this.el.querySelector('[slot="filter-template"]');this.outputSlot=this.el.querySelector('[slot="output"]');this.filterId=this.filterName+"_"+f++;if(!!this.templateSlot){this.templateStr=this.templateSlot.innerHTML;this.templateStr=this.templateStr.replace(/=&gt;/gm,"=>")}}componentWillLoad(){if(this.storeId)n.init(this,["value"],this.storeMethod||this.globalStoreMethod,this.storeId)}componentDidLoad(){this.updateContent();if(this.templateStr&&this.filterName&&this.indexResults&&this.indexResults.origFilters[this.filterName])this.showFilter=true}render(){return s(h,{class:{"show-filter":this.showFilter}},s("div",{ref:t=>this.outputEle=t},s("slot",{name:"output"})))}get el(){return l(this)}static get watchers(){return{value:["valueSet"],internalValue:["valueChanged"],facets:["appliedFilterChanged"],tplRenderFn:["tplUpdate"],indexResults:["handleFilterChange"]}}};r(o,["globalStoreMethod","indexResults","filterChanged","facets","tplRenderFn","changeEvent"]);let f=0;o.style=a;export{o as nano_algolia_filter};
5
- //# sourceMappingURL=p-07bdf44d.entry.js.map
4
+ import{r as t,c as e,f as i,h as s,e as h,g as l}from"./p-b5c33aff.js";import{W as r}from"./p-ef7f1e9c.js";import{C as n}from"./p-32f4516e.js";import"./p-69a3e911.js";import"./p-1da5f8df.js";const o=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{display:none}:host ::slotted([slot=filter-template]),:host::slotted([slot=filter-template]){display:none !important}:host(.show-filter){display:block}";let a=class{constructor(i){t(this,i);this.nanoFilterChanged=e(this,"nanoFilterChanged",7);this.nanoTplUpdated=e(this,"nanoTplUpdated",7);this.filterId=null;this.tplWillRnder=new Promise((t=>{this.tplDidRnder=t}));this.internalValue=[undefined];this.showFilter=false;this.indexResults=null;this.filterChanged=null;this.filterName=null;this.value="";this.operator="or";this.storeMethod="session"}valueSet(){let t=this.value;let e;if(typeof t==="string")e=t.length?t.split("|"):[];else e=this.value;if(this.didValueChange(e)){let t=this.setFieldValues(e);if(t&&t.length)this.internalValue=e;else{this.tplWillRnder.then((t=>{this.setFieldValues(e);this.internalValue=e}))}}}valueChanged(){this.value=this.internalValue;this.nanoFilterChanged.emit({filterId:this.filterId,facetName:this.filterName,value:this.internalValue,operator:this.operator})}appliedFilterChanged(){if(this.filterName&&this.filterChanged&&(this.filterChanged!==this.filterId||this.operator==="and")){this.updateContent()}}tplUpdate(){this.updateContent()}handleFilterChange(){if(this.indexResults&&this.indexResults.appliedFilters){const t=this.indexResults.appliedFilters.find((t=>t.name===this.filterName));if(!t)return;this.tplWillRnder.then((e=>{let i=this.setFieldValues(t.values);if(i&&i.length)this.value=i}))}this.updateContent()}handleChangeEvent(){let t=this.getFieldValues();if(this.didValueChange(t)){this.internalValue=t;return true}return false}updateContent(){let t=this.outputSlot||this.outputEle;if(!this.el)return;if(!this.templateStr)this.showFilter=true;else if(!this.filterName||!t||this.templateStr&&(!this.indexResults||!this.indexResults.origFilters[this.filterName])){this.showFilter=false}if(!t)return;if(!this.indexResults){if(this.templateStr){i((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:{},dyn:{},selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});if(!this.value||!this.value.length)this.handleChangeEvent()}))}else if(!this.value||!this.value.length)this.handleChangeEvent();return}i((()=>{t.innerHTML=this.tplRenderFn(this.templateStr,{orig:Object.assign({},this.indexResults.origFilters[this.filterName]),dyn:Object.assign({},this.indexResults.dynFilters[this.filterName]),selected:this.internalValue&&this.internalValue.length?this.internalValue:this.value});this.tplDidRnder();this.setFieldValues();if(!this.showFilter)this.showFilter=true;this.nanoTplUpdated.emit(this.el)}))}getFieldValues(){let t=[];let e=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select');for(let i=0;i<e.length;i++){let s=e[i];if(s.type==="select-multiple"){let e=s;for(let i=0;i<e.options.length;i++){if(!e.options[i].selected||!e.options[i].value.length)continue;t.push(e.options[i].value)}}else if(s.type!=="checkbox"&&s.type!=="radio"||s.checked&&s.value.length){t.push(s.value)}}return t}setFieldValues(t){t=t||this.internalValue;if(!t)return;let e=[];let i=this.outputSlot.querySelectorAll('input[type="checkbox"], input[type="radio"], select, nano-select, nano-checkbox');for(let s=0;s<i.length;s++){let h=i[s];if(h.disabled||h.type==="file"||h.type==="reset"||h.type==="submit"||h.type==="button")continue;if(h.type==="select-multiple"||h.type==="select-one"){let i=h;for(let s=0;s<i.options.length;s++){if(!t.includes(i.options[s].value))i.options[s].selected=false;else{e.push(i.value);i.options[s].selected=true;if(h.type==="select-one")i.value=i.options[s].value}}}else if(["checkbox","radio","tag","segment","segment-pill"].includes(h.type)){if(t.includes(h.value)){e.push(h.value);h.checked=true}else if(!t.length&&!h.value.length){h.checked=true}else h.checked=false}}return e}didValueChange(t){if(!!this.internalValue&&!t)return true;if(!this.internalValue&&!t)return false;if(this.internalValue&&t.length!==this.internalValue.length)return true;let e=false;for(var i=0;i<t.length;i++){if(!e&&(!this.internalValue||!this.internalValue.includes(t[i])))e=true}return e}connectedCallback(){this.templateSlot=this.el.querySelector('[slot="filter-template"]');this.outputSlot=this.el.querySelector('[slot="output"]');this.filterId=this.filterName+"_"+f++;if(!!this.templateSlot){this.templateStr=this.templateSlot.innerHTML;this.templateStr=this.templateStr.replace(/=&gt;/gm,"=>")}}componentWillLoad(){if(this.storeId)n.init(this,["value"],this.storeMethod||this.globalStoreMethod,this.storeId)}componentDidLoad(){this.updateContent();if(this.templateStr&&this.filterName&&this.indexResults&&this.indexResults.origFilters[this.filterName])this.showFilter=true}render(){return s(h,{class:{"show-filter":this.showFilter}},s("div",{ref:t=>this.outputEle=t},s("slot",{name:"output"})))}get el(){return l(this)}static get watchers(){return{value:["valueSet"],internalValue:["valueChanged"],facets:["appliedFilterChanged"],tplRenderFn:["tplUpdate"],indexResults:["handleFilterChange"]}}};r(a,["globalStoreMethod","indexResults","filterChanged","facets","tplRenderFn","changeEvent"]);let f=0;a.style=o;export{a as nano_algolia_filter};
5
+ //# sourceMappingURL=p-8fe2f846.entry.js.map
@@ -0,0 +1,5 @@
1
+ var __awaiter=this&&this.__awaiter||function(t,n,e,i){function a(t){return t instanceof e?t:new e((function(n){n(t)}))}return new(e||(e=Promise))((function(e,o){function r(t){try{s(i.next(t))}catch(n){o(n)}}function l(t){try{s(i["throw"](t))}catch(n){o(n)}}function s(t){t.done?e(t.value):a(t.value).then(r,l)}s((i=i.apply(t,n||[])).next())}))};var __generator=this&&this.__generator||function(t,n){var e={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,a,o,r;return r={next:l(0),throw:l(1),return:l(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function l(t){return function(n){return s([t,n])}}function s(r){if(i)throw new TypeError("Generator is already executing.");while(e)try{if(i=1,a&&(o=r[0]&2?a["return"]:r[0]?a["throw"]||((o=a["return"])&&o.call(a),0):a.next)&&!(o=o.call(a,r[1])).done)return o;if(a=0,o)r=[r[0]&2,o.value];switch(r[0]){case 0:case 1:o=r;break;case 4:e.label++;return{value:r[1],done:false};case 5:e.label++;a=r[1];r=[0];continue;case 7:r=e.ops.pop();e.trys.pop();continue;default:if(!(o=e.trys,o=o.length>0&&o[o.length-1])&&(r[0]===6||r[0]===2)){e=0;continue}if(r[0]===3&&(!o||r[1]>o[0]&&r[1]<o[3])){e.label=r[1];break}if(r[0]===6&&e.label<o[1]){e.label=o[1];o=r;break}if(o&&e.label<o[2]){e.label=o[2];e.ops.push(r);break}if(o[2])e.ops.pop();e.trys.pop();continue}r=n.call(t,e)}catch(l){r=[6,l];a=0}finally{i=o=0}if(r[0]&5)throw r[1];return{value:r[0]?r[1]:void 0,done:true}}};
2
+ /*!
3
+ * Web Components for Nanopore digital Web Apps
4
+ */System.register(["./p-f48be9f5.system.js","./p-1c216ca4.system.js","./p-d01bd3c3.system.js","./p-ef053a2f.system.js","./p-1d13dbdf.system.js","./p-89edc042.system.js"],(function(t){"use strict";var n,e,i,a,o,r,l,s,p,c,u,d;return{setters:[function(t){n=t.r;e=t.c;i=t.h;a=t.e;o=t.g},function(t){r=t.r},function(t){l=t.F;s=t.a},function(t){p=t.d;c=t.a},function(t){u=t.c},function(t){d=t.c}],execute:function(){var h='.sc-nano-input-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-input,*.sc-nano-input::before,*.sc-nano-input::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-input{display:none !important}[disabled].sc-nano-input-h:not([disabled=false]){opacity:0.5}.form-ctrl.sc-nano-input{min-width:100%;display:block}.form-ctrl.has-helper-end.sc-nano-input{display:-webkit-box;display:-ms-flexbox;display:flex;gap:1rem;opacity:0}.form-ctrl.has-helper-end.is-ready.sc-nano-input{opacity:1}.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__wrapper.sc-nano-input{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__helper-end.sc-nano-input{display:none}.form-ctrl.has-helper-end.has-enough-width.sc-nano-input .form-ctrl__helper-end.sc-nano-input{display:block}.form-ctrl.has-helper-end.has-enough-width.sc-nano-input .form-ctrl__helper.sc-nano-input{display:none}.form-ctrl__wrapper.sc-nano-input{display:block}label.sc-nano-input,.form-ctrl__more.sc-nano-input,.form-ctrl__error.sc-nano-input,.form-ctrl__helper.sc-nano-input{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}label.visually-hide.sc-nano-input,.form-ctrl__more.visually-hide.sc-nano-input,.form-ctrl__error.visually-hide.sc-nano-input,.form-ctrl__helper.visually-hide.sc-nano-input{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}.form-ctrl__float-label.sc-nano-input{padding-top:0;padding-bottom:0;-webkit-padding-end:0;padding-inline-end:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);color:var(--label-color);position:absolute;font-size:1.15em;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-transform-origin:top left;transform-origin:top left;top:50%;-webkit-transition:0.125s ease-in;transition:0.125s ease-in;opacity:1}.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input,.has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input{-webkit-transform:translateY(-110%);transform:translateY(-110%);font-size:0.8em;opacity:0.7}.form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{opacity:0;-webkit-transition:opacity 0.125s ease-in;transition:opacity 0.125s ease-in}.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input,.has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{opacity:1}.form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{top:50%}.has-focus.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{top:0;-webkit-transform:translateY(38%);transform:translateY(38%)}.has-value.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input{top:0;-webkit-transform:translateY(38%);transform:translateY(38%)}.form-ctrl__label.sc-nano-input{color:var(--label-color);font-size:var(--label-font-size);padding-bottom:var(--padding-bottom);line-height:1;display:-webkit-box;display:-ms-flexbox;display:flex}.form-ctrl__label.sc-nano-input .form-ctrl__label-wrap.sc-nano-input{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input{margin-left:unset;margin-right:unset;margin-top:0;-webkit-margin-end:5px;margin-inline-end:5px;margin-bottom:0;-webkit-margin-start:0;margin-inline-start:0;opacity:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-transition:0.3s ease opacity;transition:0.3s ease opacity;font-size:0.9em}.form-ctrl__label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input{margin-left:unset;margin-right:unset;margin-top:0;-webkit-margin-end:0;margin-inline-end:0;margin-bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;font-size:0.9em;opacity:0.5}.has-value.sc-nano-input-h .form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input{opacity:0.5}.has-focus.sc-nano-input-h .form-ctrl__label.sc-nano-input{color:var(--label-color--focus)}.is-invalid.sc-nano-input-h .form-ctrl__label.sc-nano-input{color:var(--label-color--invalid)}.has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{opacity:0;-webkit-transition:opacity 0.125s ease-in;transition:opacity 0.125s ease-in}.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input,.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input,.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input,.has-value.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{opacity:1}.form-ctrl__more.sc-nano-input{height:1em;position:relative;margin-left:unset;margin-right:unset;margin-top:4px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:3px;margin-inline-start:3px;margin-bottom:var(--padding-bottom)}.form-ctrl__helper.sc-nano-input,.form-ctrl__error.sc-nano-input{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}.form-ctrl__helper.sc-nano-input{font-style:italic;color:var(--help-msg-color)}[show-inline-error].sc-nano-input-h:not([show-inline-error=false]).is-invalid .form-ctrl__helper.sc-nano-input{opacity:0}.form-ctrl__helper-end.sc-nano-input{-webkit-box-flex:1;-ms-flex:1 1 30%;flex:1 1 30%;min-width:150px;font-size:var(--invalid-msg-font-size);color:var(--help-msg-color);font-style:italic}.form-ctrl__error.sc-nano-input{opacity:0;color:var(--invalid-msg-color);font-stretch:condensed}.is-invalid.sc-nano-input-h .form-ctrl__error.sc-nano-input{opacity:1}.form-ctrl__input.sc-nano-input{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;border-radius:var(--input-border-radius);width:100%;padding-top:0 !important;padding-bottom:0 !important;padding-left:0 !important;padding-right:0 !important;position:relative;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;background:var(--input-bg-color);border:var(--input-border-style);border-width:var(--input-border-width);font-size:var(--input-font-size);-webkit-padding-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important;padding-inline-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important}.has-focus.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--focus);border:var(--input-border-style--focus);border-width:var(--input-border-width);-webkit-padding-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important;padding-inline-start:calc(var(--input-border-hint-width) - var(--input-border-width)) !important}.is-invalid.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--invalid);border:var(--input-border-style--invalid);border-width:var(--input-border-width);-webkit-border-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);border-inline-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);-webkit-padding-start:0 !important;padding-inline-start:0 !important}.is-invalid.has-focus.sc-nano-input-h .form-ctrl__input.sc-nano-input{background:var(--input-bg-color--invalid);border:var(--input-border-style--invalid-focus);border-width:var(--input-border-width);-webkit-border-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);border-inline-start:var(--input-border-style--invalid-focus) var(--input-border-hint-width);-webkit-padding-start:0 !important;padding-inline-start:0 !important}.form-ctrl__input-wrap.sc-nano-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%}.form-ctrl__clear-btn.sc-nano-input,.form-ctrl__slot-end.sc-nano-input,.form-ctrl__slot-start.sc-nano-input,.form-ctrl__slot-value-end.sc-nano-input{--nano-icon-size:1.4em;margin-top:0;margin-bottom:0;margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;margin-inline-end:0;font-size:1em;border:0;outline:none;background-color:transparent;background-repeat:no-repeat;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:auto}.has-float-label.sc-nano-input .form-ctrl__slot-start.sc-nano-input{display:none}.form-ctrl__slot-start.sc-nano-input-s>*,.form-ctrl__slot-start .sc-nano-input-s>*,.form-ctrl__slot-end.sc-nano-input-s>*,.form-ctrl__slot-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input-s>*,.form-ctrl__slot-value-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{--nano-icon-size:1.4em;padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);font-size:1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;z-index:1}.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start .sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end .sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input-s>*,.sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end .sc-nano-input-s>*,[disabled].sc-nano-input-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{pointer-events:none}.form-ctrl__slot-value-end.sc-nano-input-s>*,.form-ctrl__slot-value-end .sc-nano-input-s>*,.form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input{pointer-events:none}.form-ctrl__clear-btn.sc-nano-input{color:var(--clear-btn-color);padding:0;opacity:0;width:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.is-invalid.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input{color:var(--clear-btn-color--invalid)}.has-value.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input{padding-top:0;padding-bottom:0;padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);opacity:1;width:auto}.form-ctrl__clear-btn.sc-nano-input:hover{color:var(--clear-btn-color--hover)}.sc-nano-input-h{--placeholder-color:var(--nano-input-placeholder-color, initial);--placeholder-font-style:var(--nano-input-placeholder-style, initial);--placeholder-font-weight:var(--nano-input-placeholder-weight, initial);--placeholder-opacity:var(--nano-input-placeholder-opacity, 0.5);--padding-top:var(--nano-input-padding-top, var(--nano-input-padding, 8px));--padding-end:var(--nano-input-padding-end, var(--nano-input-padding, 8px));--padding-bottom:var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));--padding-start:var(--nano-input-padding-start, var(--nano-input-padding, 8px));--color-invalid:var(--nano-color-danger-rgb, 239, 65, 53);--color--focus-rgb:var(\n --nano-color-base-rgb,\n var(--nano-color-primary-rgb, 0, 116, 149)\n );--input-font-size:var(--nano-input-font-size, 0.87em);--input-text-color:var(--nano-input-text-color, #4a4a4a);--input-border-width:var(--nano-input-border-width, 1px);--input-border-hint-width:3px;--input-border-color:var(--nano-input-border-color, #e4e6e8);--input-border-radius:var(--nano-input-border-radius, 0);--input-border-style:var(--nano-input-border-style, solid) var(--nano-input-border-color, #e4e6e8);--input-border-style--focus:var(--nano-input-border-style, solid) var(--nano-input-border-color--focus, #90c6e7);--input-border-style--invalid:var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #e4e6e8);--input-border-style--invalid-focus:var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #ef4135);--input-bg-color:var(--nano-input-background-color, #fff);--input-bg-color--focus:var(--input-bg-color);--input-bg-color--invalid:var(--nano-input-background-color, white);--invalid-msg-color:rgba(var(--color-invalid), 1);--invalid-msg-font-size:var(--nano-input-help-font-size, 0.75em);--help-msg-color:var(--nano-input-help-color, #616d6e);--clear-btn-color:var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));--clear-btn-color--hover:rgba(var(--color--focus-rgb), 1);--clear-btn-color--invalid:rgba(var(--color-invalid), 1);--label-color:var(--nano-input-label-color, "currentColor");--label-color--focus:var(--label-color);--label-color--invalid:var(--nano-input-label-color-invalid, "currentColor");--label-font-size:var(--nano-input-label-color, 1em);--multi-input-value-bg:var(--nano-input-tag-bg, 186, 220, 240);--multi-input-value-text-color:var(--nano-input-tag-color, #455556);--multi-input-value-border:var(--nano-input-tag-color, #badcf0);position:relative;width:100%;padding:0 !important;color:currentColor;display:block}.nano-color.sc-nano-input-h{color:var(--nano-color-base);--input-border-style--focus:var(--nano-input-border-style, solid) var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5))}.input__native-ctrl.sc-nano-input{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-left:unset;padding-right:unset;padding-top:0;padding-bottom:0;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);border-radius:var(--input-border-radius);text-overflow:ellipsis;color:var(--input-text-color);display:inline-block;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;max-height:100%;border:0;outline:none;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;resize:none;overflow:hidden;line-height:2.5em;min-height:2.5em}.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input{line-height:2.1em;min-height:2.1em;padding-top:1.4em}.input__native-ctrl.sc-nano-input::-webkit-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-height:inherit}.input__native-ctrl.sc-nano-input::-moz-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-height:inherit}.input__native-ctrl.sc-nano-input:-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-height:inherit}.input__native-ctrl.sc-nano-input::-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-height:inherit}.input__native-ctrl.sc-nano-input::placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity);line-height:inherit;min-height:inherit}.input__native-ctrl.sc-nano-input::-moz-placeholder{line-height:2.8em;text-overflow:ellipsis}.input__native-ctrl.sc-nano-input:-webkit-autofill{background-color:transparent}.input__native-ctrl.sc-nano-input::-webkit-search-decoration,.input__native-ctrl.sc-nano-input::-webkit-search-cancel-button,.input__native-ctrl.sc-nano-input::-webkit-search-results-button,.input__native-ctrl.sc-nano-input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.input__native-ctrl.sc-nano-input:invalid{-webkit-box-shadow:none;box-shadow:none}.input__native-ctrl.sc-nano-input::-ms-clear,.input__native-ctrl.sc-nano-input::-ms-reveal{display:none}.input__native-ctrl.input__resizable.sc-nano-input{resize:vertical;overflow:auto}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input{line-height:1.5em;padding-top:var(--padding-top);padding-bottom:0.25em;white-space:pre-wrap}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-webkit-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-moz-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input:-ms-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::-ms-input-placeholder{line-height:1.5em}.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::placeholder{line-height:1.5em}.has-float-label.sc-nano-input .form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input{padding-top:1.75em}[readonly].sc-nano-input-h:not([readonly=false]) .input__native-ctrl.sc-nano-input{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}';var f=0;var b=t("nano_input",function(){function t(t){var i=this;n(this,t);this.nanoInput=e(this,"nanoInput",7);this.nanoChange=e(this,"nanoChange",7);this.nanoBlur=e(this,"nanoBlur",7);this.nanoFocus=e(this,"nanoFocus",7);this.nanoDidLoad=e(this,"nanoDidLoad",7);this.nanoDidUnload=e(this,"nanoDidUnload",7);this.nanoValidate=e(this,"nanoValidate",7);this.inputId="nano-input-"+f++;this.didBlurAfterEdit=false;this.rtl=false;this.charCount=0;this.hasRendered=false;this.hasFocus=false;this.hasLabelSlot=false;this.hasHelperSlot=false;this.hasHelperEndSlot=false;this.errorMessage="";this.datalist=null;this._invalid=false;this.autocapitalise="none";this.autocomplete="off";this.autocorrect="off";this.autofocus=false;this.clearInput=false;this.debounce=0;this.disabled=false;this.validateOn="submitThenDirty";this.showInlineError=true;this.hideLabel=false;this.floatLabel=false;this.name=this.inputId;this.readonly=false;this.required=false;this.spellcheck=false;this.type="text";this.value="";this.resize="auto";this.rows=2;this.showCharCount=false;this.validate=function(t){if(i.validateOn==="submitThenDirty")i.validateOn="dirty";if(!i.nativeInput.validity.valid){if(i.showInlineError){if(t)t.preventDefault();i.errorMessage=i.nativeInput.validationMessage}i._invalid=true}else i._invalid=false;i.nanoValidate.emit({isValid:!i._invalid,errorMessage:i.nativeInput.validationMessage,originalEvent:t})};this.onInput=function(t){var n=t.target;i.value=(n===null||n===void 0?void 0:n.value)||"";i.nanoInput.emit(t)};this.onBlur=function(){i.hasFocus=false;i.focusChanged();if(i.validateOn==="dirty")i.validate();i.nanoBlur.emit()};this.onFocus=function(){i.hasFocus=true;i.focusChanged();i.nanoFocus.emit()};this.onKeydown=function(){if(i.shouldClearOnEdit()){if(i.didBlurAfterEdit&&i.hasValue()){i.clearTextInput()}i.didBlurAfterEdit=false}};this.clearTextInput=function(t){if(i.clearInput&&!i.readonly&&!i.disabled&&t){t.preventDefault();t.stopPropagation()}i.value="";i.nativeInput.value="";var n=new window.Event("change");i.nativeInput.dispatchEvent(n)};this.validate=p(this.validate,50)}Object.defineProperty(t.prototype,"nativeInputWrap",{get:function(){return this._nativeInputWrap},set:function(t){if(this._nativeInputWrap===t)return;this._nativeInputWrap=t;this.setDataListOpts()},enumerable:false,configurable:true});t.prototype.setDataListOpts=function(){if(!this.datalist)return;var t=this.datalist.dropDownConfig||{};this.datalist.dropDownConfig=Object.assign(Object.assign({},t),{skidding:-1,tetherTo:this.nativeInputWrap})};Object.defineProperty(t.prototype,"invalid",{get:function(){return this._invalid},enumerable:false,configurable:true});Object.defineProperty(t.prototype,"validityMessage",{get:function(){if(!this.nativeInput)return"";return this.nativeInput.validationMessage},enumerable:false,configurable:true});t.prototype.shouldValidate=function(){var t=this;if(!this.hasRendered)return;requestAnimationFrame((function(){if(t.validateOn==="dirty")t.validate()}))};t.prototype.valueChanged=function(){var t=this;this.nanoChange.emit({value:this.value});this.charCount=this.value.length;if(this.type==="textarea"&&this.resize==="auto"){this.nativeInput.style.height="auto";if(this.value.length)this.nativeInput.style.height=this.nativeInput.scrollHeight+"px"}requestAnimationFrame((function(){if(t.validateOn==="dirty")t.validate()}))};t.prototype.debounceChanged=function(){this.nanoChange=c(this.nanoChange,this.debounce)};t.prototype.reportValidity=function(t){return __awaiter(this,void 0,void 0,(function(){var n=this;return __generator(this,(function(e){return[2,new Promise((function(e){if(t)n.validate();setTimeout((function(){e({isValid:!n._invalid,errorMessage:n.nativeInput.validationMessage})}),50)}))]}))}))};t.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){if(this.nativeInput){this.nativeInput.focus();this.nativeInput.click()}return[2]}))}))};t.prototype.getInputElement=function(){return Promise.resolve(this.nativeInput)};t.prototype.showError=function(t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){if(this.nativeInput){this.nativeInput.setCustomValidity(t);this.validate()}return[2]}))}))};t.prototype.onReset=function(t){var n=this.form?document.querySelector("#"+this.form):this.el.closest("form");if(!n||t.target!==this.el.closest("form"))return;this.value=""};t.prototype.handleBlur=function(t){var n=this;if(!this.hasFocus)return;var e=t;var i;r((function(){if(e.key){if(e.key!=="Tab")return;i=document.activeElement}else i=t.target;if(u(n.el.tagName.toLowerCase(),i)!==n.el){n.onBlur()}}))};t.prototype.shouldClearOnEdit=function(){var t=this,n=t.type,e=t.clearOnEdit;return e===undefined?n==="password":e};t.prototype.getValue=function(){return this.value||""};t.prototype.focusChanged=function(){if(!this.hasFocus&&this.shouldClearOnEdit()&&this.hasValue()){this.didBlurAfterEdit=true}};t.prototype.hasValue=function(){return this.getValue().length>0};t.prototype.slotChangeObserver=function(){var t=this;if(this.mo)this.mo.disconnect();var n=this.mo=new MutationObserver((function(){return t.processSlottedContent()}));n.observe(this.el,{childList:true,subtree:true})};t.prototype.processSlottedContent=function(){this.hasLabelSlot=!!this.el.querySelectorAll('[slot="label"]');this.hasHelperSlot=!!this.el.querySelector('[slot="helper"]');this.hasHelperEndSlot=!!this.el.querySelector('[slot="helper-end"]');this.datalist=this.el.querySelector("nano-datalist:not([slot])");if(!!this.el.querySelector('[slot="inline-button"]')){console.warn("The `inline-button` slot was renamed to `end` in v2 - please update your code",this.el)}if(!!this.el.querySelector('[slot="legacy"]')){console.warn("The `legacy` slot has been removed. Please update your code",this.el)}};t.prototype.connectedCallback=function(){this.debounceChanged();{this.el.dispatchEvent(new CustomEvent("nanoDidLoad",{detail:this.el}))}};t.prototype.disconnectedCallback=function(){{document.dispatchEvent(new CustomEvent("nanoDidUnload",{detail:this.el}))}if(this.mo)this.mo.disconnect()};t.prototype.componentDidLoad=function(){var t=this;this.slotChangeObserver();this.hasRendered=true;if(this.autofocus)setTimeout((function(n){return t.setFocus()}),300)};t.prototype.componentWillLoad=function(){this.processSlottedContent()};t.prototype.render=function(){var t=this;var n=this.getValue();var e=this.inputId+"-lbl";var o=this.showInlineError||this.hasHelperSlot?this.inputId+"-more":"";var r=this.hasHelperEndSlot?this.inputId+"-helper":"";this.rtl=this.el.ownerDocument.dir==="rtl";var p=function(t){var n=t.el,e=t.floatLabel,i=t.label,a=t.errorMessage,o=t.type,r=t.showInlineError,l=t.hasHelperSlot,s=t.hasLabelSlot,p=t.hideLabel,c=t.placeholder,u=t.maxlength,d=t.charCount,h=t.showCharCount,f=t.rtl,b=t.hasHelperEndSlot;return{el:n,floatLabel:e,label:i,errorMessage:a,type:o,showInlineError:r,hasHelperSlot:l,hasLabelSlot:s,hideLabel:p,placeholder:c,maxlength:u,charCount:d,showCharCount:h,rtl:f,hasHelperEndSlot:b}}(this);var c=Object.assign(Object.assign({},p),{labelId:e,moreId:o,helperEndId:r,hasValue:this.hasValue(),controlId:this.inputId});var u=function(n){var e=n.clearInput,i=n.readonly,a=n.disabled;return{clearInput:e,readonly:i,disabled:a,clearControl:t.clearInput}}(this);return i(a,{"aria-disabled":this.disabled?"true":null,dir:this.rtl?"rtl":null,class:Object.assign(Object.assign({},d(this.color)),{"has-value":this.hasValue(),"has-focus":this.hasFocus,"is-invalid":this._invalid})},i(l,Object.assign({},c),i(s,Object.assign({},u,{onClearText:this.clearTextInput,control:this.el,ref:function(n){return t.nativeInputWrap=n}}),this.type!=="textarea"&&i("input",{id:this.inputId,class:"input__native-ctrl",ref:function(n){return t.nativeInput=n},"aria-labelledby":e+" "+o+" "+r,disabled:this.disabled,accept:this.accept,autoCapitalize:this.autocapitalise,autoComplete:this.autocomplete,autoCorrect:this.autocorrect,autoFocus:this.autofocus,inputMode:this.inputmode,form:this.form,min:this.min,max:this.max,minLength:this.minlength,maxLength:this.maxlength,multiple:this.multiple,name:this.name,pattern:this.pattern,placeholder:this.placeholder,readOnly:this.readonly,required:this.required,spellcheck:this.spellcheck,step:this.step,size:this.size,type:this.type,value:n,onInput:this.onInput,onChange:this.onInput,onFocus:this.onFocus,onKeyDown:this.onKeydown,onInvalid:this.validate}),this.type==="textarea"&&i("textarea",{rows:this.floatLabel?1:this.rows,id:this.inputId,class:{"input__native-ctrl":true,input__resizable:this.resize==="true"},ref:function(n){return t.nativeInput=n},"aria-labelledby":e+" "+o+" "+r,disabled:this.disabled,autoCapitalize:this.autocapitalise,autoCorrect:this.autocorrect,autoFocus:this.autofocus,inputMode:this.inputmode,form:this.form,minLength:this.minlength,maxLength:this.maxlength,name:this.name,placeholder:this.placeholder,readOnly:this.readonly,required:this.required,spellcheck:this.spellcheck,value:n,onInput:this.onInput,onChange:this.onInput,onFocus:this.onFocus,onKeyDown:this.onKeydown,onInvalid:this.validate})),i("slot",null)))};Object.defineProperty(t.prototype,"el",{get:function(){return o(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{datalist:["setDataListOpts"],minlength:["shouldValidate"],maxlength:["shouldValidate"],min:["shouldValidate"],max:["shouldValidate"],required:["shouldValidate"],disabled:["shouldValidate"],readonly:["shouldValidate"],pattern:["shouldValidate"],inputmode:["shouldValidate"],value:["valueChanged"],debounce:["debounceChanged"]}},enumerable:false,configurable:true});return t}());b.style=h}}}));
5
+ //# sourceMappingURL=p-96d9b8b9.system.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/input/input.scss?tag=nano-input&encapsulation=scoped","src/components/input/input.tsx"],"names":["inputCss","inputIds","Input","exports","class_1","hostRef","_this","this","inputId","didBlurAfterEdit","rtl","charCount","hasRendered","hasFocus","hasLabelSlot","hasHelperSlot","hasHelperEndSlot","errorMessage","datalist","_invalid","autocapitalise","autocomplete","autocorrect","autofocus","clearInput","debounce","disabled","validateOn","showInlineError","hideLabel","floatLabel","name","readonly","required","spellcheck","type","value","resize","rows","showCharCount","validate","ev","nativeInput","validity","valid","preventDefault","validationMessage","nanoValidate","emit","isValid","originalEvent","onInput","input","target","nanoInput","onBlur","focusChanged","nanoBlur","onFocus","nanoFocus","onKeydown","shouldClearOnEdit","hasValue","clearTextInput","stopPropagation","event","window","Event","dispatchEvent","Object","defineProperty","prototype","_nativeInputWrap","ele","setDataListOpts","currDWConfig","dropDownConfig","assign","skidding","tetherTo","nativeInputWrap","shouldValidate","requestAnimationFrame","valueChanged","nanoChange","length","style","height","scrollHeight","debounceChanged","debounceEvent","reportValidity","validateFirst","Promise","resolve","setTimeout","setFocus","focus","click","getInputElement","showError","message","setCustomValidity","onReset","e","form","document","querySelector","el","closest","handleBlur","kev","raf","key","activeElement","closestElement","tagName","toLowerCase","_a","clearOnEdit","undefined","getValue","slotChangeObserver","mo","disconnect","MutationObserver","processSlottedContent","observe","childList","subtree","querySelectorAll","console","warn","connectedCallback","CustomEvent","detail","disconnectedCallback","componentDidLoad","_","componentWillLoad","render","labelId","moreId","helperEndId","ownerDocument","dir","compWrapOptions","label","placeholder","maxlength","wrapOptions","controlId","controlOptions","clearControl","h","Host","aria-disabled","class","createColorClasses","color","has-value","has-focus","is-invalid","FormControlWrap","FormControl","onClearText","control","ref","id","aria-labelledby","accept","autoCapitalize","autoComplete","autoCorrect","autoFocus","inputMode","inputmode","min","max","minLength","minlength","maxLength","multiple","pattern","readOnly","step","size","onChange","onKeyDown","onInvalid","input__native-ctrl","input__resizable"],"mappings":";;;2ZAAA,IAAMA,EAAW,g0jBCgCjB,IAAIC,EAAW,MAqBFC,EAAKC,EAAA,aAAA,WAqBhB,SAAAC,EAAAC,GAAA,IAAAC,EAAAC,oSAnBQA,KAAAC,QAAU,cAAcP,IACxBM,KAAAE,iBAAmB,MACnBF,KAAAG,IAAe,MAEfH,KAAAI,UAAY,EACZJ,KAAAK,YAAc,MAkBbL,KAAAM,SAAW,MACXN,KAAAO,aAAe,MACfP,KAAAQ,cAAgB,MAChBR,KAAAS,iBAAmB,MACnBT,KAAAU,aAAuB,GACvBV,KAAAW,SAAoC,KAuBpCX,KAAAY,SAAW,MAwBZZ,KAAAa,eACN,OAKMb,KAAAc,aAA6B,MAK7Bd,KAAAe,YAA4B,MAK5Bf,KAAAgB,UAAY,MAKZhB,KAAAiB,WAAa,MAUbjB,KAAAkB,SAAW,EAKMlB,KAAAmB,SAAW,MAoBXnB,KAAAoB,WACvB,kBAKuBpB,KAAAqB,gBAAkB,KAUnCrB,KAAAsB,UAAsB,MAKtBtB,KAAAuB,WAAsB,MA8BtBvB,KAAAwB,KAAexB,KAAKC,QAeHD,KAAAyB,SAAW,MAK5BzB,KAAA0B,SAAW,MAKX1B,KAAA2B,WAAa,MAgBI3B,KAAA4B,KAAuB,OAUvB5B,KAAA6B,MAAwB,GAKzC7B,KAAA8B,OAAoC,OAKpC9B,KAAA+B,KAAO,EAKP/B,KAAAgC,cAAgB,MAwKhBhC,KAAAiC,SAAW,SAACC,GAClB,GAAInC,EAAKqB,aAAe,kBAAmBrB,EAAKqB,WAAa,QAE7D,IAAKrB,EAAKoC,YAAYC,SAASC,MAAO,CACpC,GAAItC,EAAKsB,gBAAiB,CACxB,GAAIa,EAAIA,EAAGI,iBACXvC,EAAKW,aAAeX,EAAKoC,YAAYI,kBAEvCxC,EAAKa,SAAW,UACXb,EAAKa,SAAW,MAEvBb,EAAKyC,aAAaC,KAAK,CACrBC,SAAU3C,EAAKa,SACfF,aAAcX,EAAKoC,YAAYI,kBAC/BI,cAAeT,KAIXlC,KAAA4C,QAAU,SAACV,GACjB,IAAMW,EAAQX,EAAGY,OACjB/C,EAAK8B,OAAQgB,IAAK,MAALA,SAAK,OAAA,EAALA,EAAOhB,QAAS,GAC7B9B,EAAKgD,UAAUN,KAAKP,IAGdlC,KAAAgD,OAAS,WACfjD,EAAKO,SAAW,MAChBP,EAAKkD,eACL,GAAIlD,EAAKqB,aAAe,QAASrB,EAAKkC,WACtClC,EAAKmD,SAAST,QAGRzC,KAAAmD,QAAU,WAChBpD,EAAKO,SAAW,KAChBP,EAAKkD,eACLlD,EAAKqD,UAAUX,QAGTzC,KAAAqD,UAAY,WAClB,GAAItD,EAAKuD,oBAAqB,CAE5B,GAAIvD,EAAKG,kBAAoBH,EAAKwD,WAAY,CAE5CxD,EAAKyD,iBAIPzD,EAAKG,iBAAmB,QAIpBF,KAAAwD,eAAiB,SAACtB,GACxB,GAAInC,EAAKkB,aAAelB,EAAK0B,WAAa1B,EAAKoB,UAAYe,EAAI,CAC7DA,EAAGI,iBACHJ,EAAGuB,kBAGL1D,EAAK8B,MAAQ,GACb9B,EAAKoC,YAAYN,MAAQ,GACzB,IAAM6B,EAAQ,IAAIC,OAAOC,MAAM,UAC/B7D,EAAKoC,YAAY0B,cAAcH,IAvc/B1D,KAAKiC,SAAWf,EAASlB,KAAKiC,SAAU,IAV1C6B,OAAAC,eAAYlE,EAAAmE,UAAA,kBAAe,KAA3B,WACE,OAAOhE,KAAKiE,sBAEd,SAA4BC,GAC1B,GAAIlE,KAAKiE,mBAAqBC,EAAK,OACnClE,KAAKiE,iBAAmBC,EACxBlE,KAAKmE,wDAePtE,EAAAmE,UAAAG,gBAAA,WACE,IAAKnE,KAAKW,SAAU,OACpB,IAAMyD,EAAepE,KAAKW,SAAS0D,gBAAkB,GACrDrE,KAAKW,SAAS0D,eAAcP,OAAAQ,OAAAR,OAAAQ,OAAA,GACvBF,GAAY,CACfG,UAAW,EACXC,SAAUxE,KAAKyE,mBAUnBX,OAAAC,eACIlE,EAAAmE,UAAA,UAAO,KADX,WAEE,OAAOhE,KAAKY,+CAOdkD,OAAAC,eACIlE,EAAAmE,UAAA,kBAAe,KADnB,WAEE,IAAKhE,KAAKmC,YAAa,MAAO,GAC9B,OAAOnC,KAAKmC,YAAYI,wDAwMhB1C,EAAAmE,UAAAU,eAAA,WAAA,IAAA3E,EAAAC,KACR,IAAKA,KAAKK,YAAa,OACvBsE,uBAAsB,WACpB,GAAI5E,EAAKqB,aAAe,QAASrB,EAAKkC,eAQhCpC,EAAAmE,UAAAY,aAAA,WAAA,IAAA7E,EAAAC,KACRA,KAAK6E,WAAWpC,KAAK,CAAEZ,MAAO7B,KAAK6B,QACnC7B,KAAKI,UAAYJ,KAAK6B,MAAMiD,OAE5B,GAAI9E,KAAK4B,OAAS,YAAc5B,KAAK8B,SAAW,OAAQ,CACtD9B,KAAKmC,YAAY4C,MAAMC,OAAS,OAChC,GAAIhF,KAAK6B,MAAMiD,OACb9E,KAAKmC,YAAY4C,MAAMC,OAAShF,KAAKmC,YAAY8C,aAAe,KAGpEN,uBAAsB,WACpB,GAAI5E,EAAKqB,aAAe,QAASrB,EAAKkC,eAKhCpC,EAAAmE,UAAAkB,gBAAA,WACRlF,KAAK6E,WAAaM,EAAcnF,KAAK6E,WAAY7E,KAAKkB,WA+ClDrB,EAAAmE,UAAAoB,eAAN,SAAqBC,mGACnB,MAAA,CAAA,EAAO,IAAIC,SAAQ,SAACC,GAClB,GAAIF,EAAetF,EAAKkC,WACxBuD,YAAW,WACTD,EAAQ,CACN7C,SAAU3C,EAAKa,SACfF,aAAcX,EAAKoC,YAAYI,sBAEhC,eASD1C,EAAAmE,UAAAyB,SAAN,gGACE,GAAIzF,KAAKmC,YAAa,CACpBnC,KAAKmC,YAAYuD,QACjB1F,KAAKmC,YAAYwD,yBAQrB9F,EAAAmE,UAAA4B,gBAAA,WACE,OAAON,QAAQC,QAAQvF,KAAKmC,cAOxBtC,EAAAmE,UAAA6B,UAAN,SAAgBC,wFACd,GAAI9F,KAAKmC,YAAa,CACpBnC,KAAKmC,YAAY4D,kBAAkBD,GACnC9F,KAAKiC,4BAKTpC,EAAAmE,UAAAgC,QAAA,SAAQC,GACN,IAAMC,EAAOlG,KAAKkG,KACdC,SAASC,cAAc,IAAMpG,KAAKkG,MAClClG,KAAKqG,GAAGC,QAAQ,QACpB,IAAKJ,GAAQD,EAAEnD,SAAW9C,KAAKqG,GAAGC,QAAQ,QAAS,OAEnDtG,KAAK6B,MAAQ,IAKfhC,EAAAmE,UAAAuC,WAAA,SAAWN,GAAX,IAAAlG,EAAAC,KACE,IAAKA,KAAKM,SAAU,OAEpB,IAAMkG,EAAMP,EACZ,IAAInD,EAEJ2D,GAAI,WACF,GAAID,EAAIE,IAAK,CACX,GAAIF,EAAIE,MAAQ,MAAO,OACvB5D,EAASqD,SAASQ,mBACb7D,EAASmD,EAAEnD,OAElB,GAAI8D,EAAe7G,EAAKsG,GAAGQ,QAAQC,cAAehE,KAAY/C,EAAKsG,GAAI,CACrEtG,EAAKiD,cAKHnD,EAAAmE,UAAAV,kBAAA,WACA,IAAAyD,EAAwB/G,KAAtB4B,EAAImF,EAAAnF,KAAEoF,EAAWD,EAAAC,YACzB,OAAOA,IAAgBC,UAAYrF,IAAS,WAAaoF,GAGnDnH,EAAAmE,UAAAkD,SAAA,WACN,OAAOlH,KAAK6B,OAAS,IAiEfhC,EAAAmE,UAAAf,aAAA,WAEN,IAAKjD,KAAKM,UAAYN,KAAKsD,qBAAuBtD,KAAKuD,WAAY,CACjEvD,KAAKE,iBAAmB,OAIpBL,EAAAmE,UAAAT,SAAA,WACN,OAAOvD,KAAKkH,WAAWpC,OAAS,GAG1BjF,EAAAmE,UAAAmD,mBAAA,WAAA,IAAApH,EAAAC,KAGN,GAAIA,KAAKoH,GAAIpH,KAAKoH,GAAGC,aACrB,IAAMD,EAAMpH,KAAKoH,GAAK,IAAIE,kBAAiB,WACzC,OAAAvH,EAAKwH,2BAEPH,EAAGI,QAAQxH,KAAKqG,GAAI,CAAEoB,UAAW,KAAMC,QAAS,QAG1C7H,EAAAmE,UAAAuD,sBAAA,WAENvH,KAAKO,eAAiBP,KAAKqG,GAAGsB,iBAAiB,kBAC/C3H,KAAKQ,gBAAkBR,KAAKqG,GAAGD,cAAc,mBAC7CpG,KAAKS,mBAAqBT,KAAKqG,GAAGD,cAAc,uBAChDpG,KAAKW,SAAWX,KAAKqG,GAAGD,cAAc,6BAGtC,KAAMpG,KAAKqG,GAAGD,cAAc,0BAA2B,CACrDwB,QAAQC,KACN,gFACA7H,KAAKqG,IAKT,KAAMrG,KAAKqG,GAAGD,cAAc,mBAAoB,CAC9CwB,QAAQC,KACN,8DACA7H,KAAKqG,MAKXxG,EAAAmE,UAAA8D,kBAAA,WACE9H,KAAKkF,kBACgB,CACnBlF,KAAKqG,GAAGxC,cACN,IAAIkE,YAAY,cAAe,CAC7BC,OAAQhI,KAAKqG,QAMrBxG,EAAAmE,UAAAiE,qBAAA,WACuB,CACnB9B,SAAStC,cACP,IAAIkE,YAAY,gBAAiB,CAC/BC,OAAQhI,KAAKqG,MAInB,GAAIrG,KAAKoH,GAAIpH,KAAKoH,GAAGC,cAGvBxH,EAAAmE,UAAAkE,iBAAA,WAAA,IAAAnI,EAAAC,KACEA,KAAKmH,qBACLnH,KAAKK,YAAc,KACnB,GAAIL,KAAKgB,UAAWwE,YAAW,SAAC2C,GAAM,OAAApI,EAAK0F,aAAY,MAGzD5F,EAAAmE,UAAAoE,kBAAA,WACEpI,KAAKuH,yBAGP1H,EAAAmE,UAAAqE,OAAA,WAAA,IAAAtI,EAAAC,KACE,IAAM6B,EAAQ7B,KAAKkH,WACnB,IAAMoB,EAAUtI,KAAKC,QAAU,OAC/B,IAAMsI,EACJvI,KAAKqB,iBAAmBrB,KAAKQ,cAAgBR,KAAKC,QAAU,QAAU,GACxE,IAAMuI,EAAcxI,KAAKS,iBAAmBT,KAAKC,QAAU,UAAY,GACvED,KAAKG,IAAOH,KAAKqG,GAAGoC,cAA2BC,MAAQ,MAEvD,IAAMC,EAAkB,SAAE5B,OACxBV,EAAEU,EAAAV,GACF9E,EAAUwF,EAAAxF,WACVqH,EAAK7B,EAAA6B,MACLlI,EAAYqG,EAAArG,aACZkB,EAAImF,EAAAnF,KACJP,EAAe0F,EAAA1F,gBACfb,EAAauG,EAAAvG,cACbD,EAAYwG,EAAAxG,aACZe,EAASyF,EAAAzF,UACTuH,EAAW9B,EAAA8B,YACXC,EAAS/B,EAAA+B,UACT1I,EAAS2G,EAAA3G,UACT4B,EAAa+E,EAAA/E,cACb7B,EAAG4G,EAAA5G,IACHM,EAAgBsG,EAAAtG,iBACjB,MAAA,CACC4F,GAAEA,EACF9E,WAAUA,EACVqH,MAAKA,EACLlI,aAAYA,EACZkB,KAAIA,EACJP,gBAAeA,EACfb,cAAaA,EACbD,aAAYA,EACZe,UAASA,EACTuH,YAAWA,EACXC,UAASA,EACT1I,UAASA,EACT4B,cAAaA,EACb7B,IAAGA,EACHM,iBAAgBA,GA/BM,CAgCpBT,MACJ,IAAM+I,EAAWjF,OAAAQ,OAAAR,OAAAQ,OAAA,GACZqE,GAAe,CAClBL,QAAOA,EACPC,OAAMA,EACNC,YAAWA,EACXjF,SAAUvD,KAAKuD,WACfyF,UAAWhJ,KAAKC,UAGlB,IAAMgJ,EAAiB,SAAElC,OAAE9F,EAAU8F,EAAA9F,WAAEQ,EAAQsF,EAAAtF,SAAEN,EAAQ4F,EAAA5F,SAAE,MAAA,CACzDF,WAAUA,EACVQ,SAAQA,EACRN,SAAQA,EACR+H,aAAcnJ,EAAKkB,YAJE,CAKnBjB,MAEJ,OACEmJ,EAACC,EAAI,CAAAC,gBACYrJ,KAAKmB,SAAW,OAAS,KACxCuH,IAAK1I,KAAKG,IAAM,MAAQ,KACxBmJ,MAAKxF,OAAAQ,OAAAR,OAAAQ,OAAA,GACAiF,EAAmBvJ,KAAKwJ,QAAM,CACjCC,YAAazJ,KAAKuD,WAClBmG,YAAa1J,KAAKM,SAClBqJ,aAAc3J,KAAKY,YAGrBuI,EAACS,EAAe9F,OAAAQ,OAAA,GAAKyE,GACnBI,EAACU,EAAW/F,OAAAQ,OAAA,GACN2E,EAAc,CAClBa,YAAa9J,KAAKwD,eAClBuG,QAAS/J,KAAKqG,GACd2D,IAAK,SAAC3D,GAAE,OAAMtG,EAAK0E,gBAAkB4B,KAEpCrG,KAAK4B,OAAS,YACbuH,EAAA,QAAA,CACEc,GAAIjK,KAAKC,QACTqJ,MAAM,qBACNU,IAAK,SAACnH,GAAK,OAAM9C,EAAKoC,YAAcU,GAAMqH,kBACzB5B,EAAU,IAAMC,EAAS,IAAMC,EAChDrH,SAAUnB,KAAKmB,SACfgJ,OAAQnK,KAAKmK,OACbC,eAAgBpK,KAAKa,eACrBwJ,aAAcrK,KAAKc,aACnBwJ,YAAatK,KAAKe,YAClBwJ,UAAWvK,KAAKgB,UAChBwJ,UAAWxK,KAAKyK,UAChBvE,KAAMlG,KAAKkG,KACXwE,IAAK1K,KAAK0K,IACVC,IAAK3K,KAAK2K,IACVC,UAAW5K,KAAK6K,UAChBC,UAAW9K,KAAK8I,UAChBiC,SAAU/K,KAAK+K,SACfvJ,KAAMxB,KAAKwB,KACXwJ,QAAShL,KAAKgL,QACdnC,YAAa7I,KAAK6I,YAClBoC,SAAUjL,KAAKyB,SACfC,SAAU1B,KAAK0B,SACfC,WAAY3B,KAAK2B,WACjBuJ,KAAMlL,KAAKkL,KACXC,KAAMnL,KAAKmL,KACXvJ,KAAM5B,KAAK4B,KACXC,MAAOA,EACPe,QAAS5C,KAAK4C,QACdwI,SAAUpL,KAAK4C,QACfO,QAASnD,KAAKmD,QACdkI,UAAWrL,KAAKqD,UAChBiI,UAAWtL,KAAKiC,WAGnBjC,KAAK4B,OAAS,YACbuH,EAAA,WAAA,CACEpH,KAAM/B,KAAKuB,WAAa,EAAIvB,KAAK+B,KACjCkI,GAAIjK,KAAKC,QACTqJ,MAAO,CACLiC,qBAAsB,KACtBC,iBAAkBxL,KAAK8B,SAAW,QAEpCkI,IAAK,SAACnH,GAAK,OAAM9C,EAAKoC,YAAcU,GAAMqH,kBACzB5B,EAAU,IAAMC,EAAS,IAAMC,EAChDrH,SAAUnB,KAAKmB,SACfiJ,eAAgBpK,KAAKa,eACrByJ,YAAatK,KAAKe,YAClBwJ,UAAWvK,KAAKgB,UAChBwJ,UAAWxK,KAAKyK,UAChBvE,KAAMlG,KAAKkG,KACX0E,UAAW5K,KAAK6K,UAChBC,UAAW9K,KAAK8I,UAChBtH,KAAMxB,KAAKwB,KACXqH,YAAa7I,KAAK6I,YAClBoC,SAAUjL,KAAKyB,SACfC,SAAU1B,KAAK0B,SACfC,WAAY3B,KAAK2B,WACjBE,MAAOA,EACPe,QAAS5C,KAAK4C,QACdwI,SAAUpL,KAAK4C,QACfO,QAASnD,KAAKmD,QACdkI,UAAWrL,KAAKqD,UAChBiI,UAAWtL,KAAKiC,YAItBkH,EAAA,OAAA,oiBA5rBQ","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../form-control/form-control';\n@import '../form-control/form-control-vars';\n\n:host {\n @include formControlVars;\n\n position: relative;\n width: 100%;\n padding: 0 !important;\n color: currentColor;\n display: block;\n}\n\n:host(.nano-color) {\n color: current-color(base);\n\n --input-border-style--focus: #{$input-border-style} var(--nano-color-tint, #{nano-color(primary, tint)});\n}\n\n.input__native-ctrl {\n @include text-inherit();\n\n padding-left: unset;\n padding-right: unset;\n padding-top: 0;\n padding-bottom: 0;\n padding-inline-start: var(--padding-start);\n padding-inline-end: var(--padding-end);\n border-radius: var(--input-border-radius);\n text-overflow: ellipsis;\n color: var(--input-text-color);\n display: inline-block;\n flex: 1;\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n border: 0;\n outline: none;\n background: transparent;\n appearance: none;\n margin: 0;\n box-sizing: border-box;\n resize: none;\n overflow: hidden;\n line-height: 2.5em;\n min-height: 2.5em;\n\n .has-float-label & {\n line-height: 2.1em;\n min-height: 2.1em;\n padding-top: 1.4em;\n }\n\n &::placeholder {\n color: var(--placeholder-color);\n font-family: inherit;\n font-style: var(--placeholder-font-style);\n font-weight: var(--placeholder-font-weight);\n opacity: var(--placeholder-opacity);\n line-height: inherit;\n min-height: inherit;\n }\n\n &::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n }\n\n &:-webkit-autofill {\n background-color: transparent;\n }\n\n &::-webkit-search-decoration,\n &::-webkit-search-cancel-button,\n &::-webkit-search-results-button,\n &::-webkit-search-results-decoration {\n appearance: none;\n }\n\n &:invalid {\n box-shadow: none;\n }\n\n &::-ms-clear,\n &::-ms-reveal {\n display: none;\n }\n\n &.input__resizable {\n resize: vertical;\n overflow: auto;\n }\n\n .form-ctrl__textarea & {\n line-height: 1.5em;\n padding-top: var(--padding-top);\n padding-bottom: 0.25em;\n white-space: pre-wrap;\n\n &::placeholder {\n line-height: 1.5em;\n }\n\n .has-float-label & {\n padding-top: 1.75em;\n }\n }\n\n :host([readonly]:not([readonly='false'])) & {\n user-select: none;\n }\n}\n","import {\n Build,\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n Watch,\n h,\n Listen,\n} from '@stencil/core';\n\nimport {\n Color,\n ControlValidity,\n ControlValidityEventDetail,\n InputChangeEventDetail,\n TextFieldTypes,\n} from '../../interface';\nimport {\n debounceEvent,\n closestElement,\n createColorClasses,\n raf,\n debounce,\n} from '../../utils';\nimport { FormControl, FormControlWrap } from '../form-control/form-control';\n\nlet inputIds = 0;\n\n/**\n * The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML [input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input), but works great on desktop devices and integrates with the keyboard on mobile devices.\n\nIt is meant for text type inputs only, such as \"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", and \"url\". It supports all standard text input events including keyup, keydown, keypress, and more.\nThe default styling reference comes from the [ONT styleguide](https://nanoporetech.zeroheight.com/styleguide/s/31282/p/230c74-text-input--textarea/b/942ee4)\n * @slot start - suitable for inline action buttons or icons that may add extra contextual information\n * @slot end - suitable for inline action buttons or icons that may add extra contextual information\n * @slot value-start - similar to 'start', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot value-end - similar to 'end', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot helper-end - helper text to accompany the form field on the side.\n * @slot - can be used with a `nano-datalist`. See the `nano-datalist` docs for more information\n */\n@Component({\n tag: 'nano-input',\n styleUrl: 'input.scss',\n scoped: true,\n})\nexport class Input implements ComponentInterface {\n private nativeInput?: HTMLInputElement | HTMLTextAreaElement;\n private inputId = `nano-input-${inputIds++}`;\n private didBlurAfterEdit = false;\n private rtl: boolean = false;\n private mo?: MutationObserver;\n private charCount = 0;\n private hasRendered = false;\n\n // we don't want these rendered eles decorated with @State\n // because that will cause re-renders. User get/set to set datalist options\n private _nativeInputWrap: HTMLElement;\n private get nativeInputWrap() {\n return this._nativeInputWrap;\n }\n private set nativeInputWrap(ele: HTMLElement) {\n if (this._nativeInputWrap === ele) return;\n this._nativeInputWrap = ele;\n this.setDataListOpts();\n }\n\n constructor() {\n this.validate = debounce(this.validate, 50);\n }\n\n @State() hasFocus = false;\n @State() hasLabelSlot = false;\n @State() hasHelperSlot = false;\n @State() hasHelperEndSlot = false;\n @State() errorMessage: string = '';\n @State() datalist: HTMLNanoDatalistElement = null;\n\n @Watch('datalist')\n setDataListOpts() {\n if (!this.datalist) return;\n const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n skidding: -1,\n tetherTo: this.nativeInputWrap,\n };\n }\n\n @Element() el!: HTMLNanoInputElement;\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set. @readonly\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n @State() _invalid = false;\n\n /**\n * Current validation message - if any. @readonly\n */\n @Prop()\n get validityMessage() {\n if (!this.nativeInput) return '';\n return this.nativeInput.validationMessage;\n }\n\n /**\n * The color to use from the application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * If the value of the type attribute is `\"file\"`, then this attribute will indicate the types of files that the server accepts, otherwise it will be ignored. The value must be a comma-separated list of unique content type specifiers.\n */\n @Prop() accept?: string;\n\n /**\n * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.\n */\n @Prop() autocapitalise: 'none' | 'sentences' | 'words' | 'characters' =\n 'none';\n\n /**\n * Indicates whether the value of the control can be automatically completed by the browser.\n */\n @Prop() autocomplete: 'on' | 'off' = 'off';\n\n /**\n * Whether auto correction should be enabled when the user is entering/editing the text value.\n */\n @Prop() autocorrect: 'on' | 'off' = 'off';\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.\n */\n @Prop() clearInput = false;\n\n /**\n * If `true`, the value will be cleared after focus upon edit. Defaults to `true` when `type` is `\"password\"`, `false` for all other types.\n */\n @Prop() clearOnEdit?: boolean;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `nanoChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n\n /**\n * If `true`, the user cannot interact with the input.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * A hint to the browser for which keyboard to display.\n * Possible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n * `\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.\n */\n @Prop() inputmode?:\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search';\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submitThenDirty';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * String to place within a label element. Alternatively you may use a label slot.\n */\n @Prop() label!: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * The maximum value, which must not be less than its minimum (min attribute) value.\n */\n @Prop() max?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the maximum number of characters that the user can enter.\n */\n @Prop() maxlength?: number;\n\n /**\n * The minimum value, which must not be greater than its maximum (max attribute) value.\n */\n @Prop() min?: string;\n\n /**\n * If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the minimum number of characters that the user can enter.\n */\n @Prop() minlength?: number;\n\n /**\n * If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.\n */\n @Prop() multiple?: boolean;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * A regular expression that the value is checked against. The pattern must match the entire value, not just some subset. Use the title attribute to describe the pattern to help the user. This attribute applies when the value of the type attribute is `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() pattern?: string;\n\n /**\n * Instructional text that shows before the input has a value.\n */\n @Prop() placeholder?: string | null;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * If `true`, the element will have its spelling and grammar checked.\n */\n @Prop() spellcheck = false;\n\n /**\n * Works with the min and max attributes to limit the increments at which a value can be set.\n * Possible values are: `\"any\"` or a positive floating point number.\n */\n @Prop() step?: string;\n\n /**\n * The initial size of the control. This value is in pixels unless the value of the type attribute is `\"text\"` or `\"password\"`, in which case it is an integer number of characters. This attribute applies only when the `type` attribute is set to `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.\n */\n @Prop() size?: number;\n\n /**\n * The type of control to display. The default type is text.\n */\n @Prop({ reflect: true }) type: TextFieldTypes = 'text';\n\n /**\n * The form element to associate the input with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * The value of the input.\n */\n @Prop({ mutable: true }) value?: string | null = '';\n\n /**\n * relevant to type=\"textarea\". Vertical resizing - enable / disable or make automatic.\n */\n @Prop() resize: 'true' | 'false' | 'auto' = 'auto';\n\n /**\n * relevant to type=\"textarea\". Default number of rows to show\n */\n @Prop() rows = 2;\n\n /**\n * relevant to type=\"textarea\".\n */\n @Prop() showCharCount = false;\n\n @Watch('minlength')\n @Watch('maxlength')\n @Watch('min')\n @Watch('max')\n @Watch('required')\n @Watch('disabled')\n @Watch('readonly')\n @Watch('pattern')\n @Watch('inputmode')\n protected shouldValidate() {\n if (!this.hasRendered) return;\n requestAnimationFrame(() => {\n if (this.validateOn === 'dirty') this.validate();\n });\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n this.nanoChange.emit({ value: this.value });\n this.charCount = this.value.length;\n\n if (this.type === 'textarea' && this.resize === 'auto') {\n this.nativeInput.style.height = 'auto';\n if (this.value.length)\n this.nativeInput.style.height = this.nativeInput.scrollHeight + 'px';\n }\n\n requestAnimationFrame(() => {\n if (this.validateOn === 'dirty') this.validate();\n });\n }\n\n @Watch('debounce')\n protected debounceChanged() {\n this.nanoChange = debounceEvent(this.nanoChange, this.debounce);\n }\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() nanoInput!: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() nanoChange!: EventEmitter<InputChangeEventDetail>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been created.\n * @internal\n */\n @Event() nanoDidLoad!: EventEmitter<void>;\n\n /**\n * Emitted when the input has been removed.\n * @internal\n */\n @Event() nanoDidUnload!: EventEmitter<void>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n return new Promise((resolve) => {\n if (validateFirst) this.validate();\n setTimeout(() => {\n resolve({\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n });\n }, 50);\n });\n }\n\n /**\n * Sets focus on the specified `nano-input`. Use this method instead of the global\n * `input.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeInput) {\n this.nativeInput.focus();\n this.nativeInput.click();\n }\n }\n\n /**\n * Returns the native `<input>` element used under the hood.\n */\n @Method()\n getInputElement(): Promise<HTMLInputElement | HTMLTextAreaElement> {\n return Promise.resolve(this.nativeInput);\n }\n\n /**\n * Invalidate the field and show a custom error message. To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (this.nativeInput) {\n this.nativeInput.setCustomValidity(message);\n this.validate();\n }\n }\n\n @Listen('reset', { target: 'body' })\n onReset(e) {\n const form = this.form\n ? document.querySelector('#' + this.form)\n : this.el.closest('form');\n if (!form || e.target !== this.el.closest('form')) return;\n\n this.value = '';\n }\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let target: Element;\n\n raf(() => {\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n target = document.activeElement;\n } else target = e.target as Element;\n\n if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {\n this.onBlur();\n }\n });\n }\n\n private shouldClearOnEdit() {\n const { type, clearOnEdit } = this;\n return clearOnEdit === undefined ? type === 'password' : clearOnEdit;\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private validate = (ev?: Event) => {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n if (!this.nativeInput.validity.valid) {\n if (this.showInlineError) {\n if (ev) ev.preventDefault();\n this.errorMessage = this.nativeInput.validationMessage;\n }\n this._invalid = true;\n } else this._invalid = false;\n\n this.nanoValidate.emit({\n isValid: !this._invalid,\n errorMessage: this.nativeInput.validationMessage,\n originalEvent: ev,\n });\n };\n\n private onInput = (ev: InputEvent) => {\n const input = ev.target as HTMLInputElement | null;\n this.value = input?.value || '';\n this.nanoInput.emit(ev);\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n this.focusChanged();\n if (this.validateOn === 'dirty') this.validate();\n this.nanoBlur.emit();\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.focusChanged();\n this.nanoFocus.emit();\n };\n\n private onKeydown = () => {\n if (this.shouldClearOnEdit()) {\n // Did the input value change after it was blurred and edited?\n if (this.didBlurAfterEdit && this.hasValue()) {\n // Clear the input\n this.clearTextInput();\n }\n\n // Reset the flag\n this.didBlurAfterEdit = false;\n }\n };\n\n private clearTextInput = (ev?: Event) => {\n if (this.clearInput && !this.readonly && !this.disabled && ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n this.value = '';\n this.nativeInput.value = '';\n const event = new window.Event('change');\n this.nativeInput.dispatchEvent(event);\n };\n\n private focusChanged() {\n // If clearOnEdit is enabled and the input blurred but has a value, set a flag\n if (!this.hasFocus && this.shouldClearOnEdit() && this.hasValue()) {\n this.didBlurAfterEdit = true;\n }\n }\n\n private hasValue(): boolean {\n return this.getValue().length > 0;\n }\n\n private slotChangeObserver() {\n if (!Build.isBrowser) return;\n\n if (this.mo) this.mo.disconnect();\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.el, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have label / button content\n this.hasLabelSlot = !!this.el.querySelectorAll('[slot=\"label\"]');\n this.hasHelperSlot = !!this.el.querySelector('[slot=\"helper\"]');\n this.hasHelperEndSlot = !!this.el.querySelector('[slot=\"helper-end\"]');\n this.datalist = this.el.querySelector('nano-datalist:not([slot])');\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"inline-button\"]')) {\n console.warn(\n 'The `inline-button` slot was renamed to `end` in v2 - please update your code',\n this.el\n );\n }\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"legacy\"]')) {\n console.warn(\n 'The `legacy` slot has been removed. Please update your code',\n this.el\n );\n }\n }\n\n connectedCallback() {\n this.debounceChanged();\n if (Build.isBrowser) {\n this.el.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.el,\n })\n );\n }\n }\n\n disconnectedCallback() {\n if (Build.isBrowser) {\n document.dispatchEvent(\n new CustomEvent('nanoDidUnload', {\n detail: this.el,\n })\n );\n }\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n this.hasRendered = true;\n if (this.autofocus) setTimeout((_) => this.setFocus(), 300);\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n render() {\n const value = this.getValue();\n const labelId = this.inputId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot ? this.inputId + '-more' : '';\n const helperEndId = this.hasHelperEndSlot ? this.inputId + '-helper' : '';\n this.rtl = (this.el.ownerDocument as Document).dir === 'rtl';\n\n const compWrapOptions = (({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n hasHelperEndSlot,\n }) => ({\n el,\n floatLabel,\n label,\n errorMessage,\n type,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n maxlength,\n charCount,\n showCharCount,\n rtl,\n hasHelperEndSlot,\n }))(this);\n const wrapOptions = {\n ...compWrapOptions,\n labelId,\n moreId,\n helperEndId,\n hasValue: this.hasValue(),\n controlId: this.inputId,\n };\n\n const controlOptions = (({ clearInput, readonly, disabled }) => ({\n clearInput,\n readonly,\n disabled,\n clearControl: this.clearInput,\n }))(this);\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n dir={this.rtl ? 'rtl' : null}\n class={{\n ...createColorClasses(this.color),\n 'has-value': this.hasValue(),\n 'has-focus': this.hasFocus,\n 'is-invalid': this._invalid,\n }}\n >\n <FormControlWrap {...wrapOptions}>\n <FormControl\n {...controlOptions}\n onClearText={this.clearTextInput}\n control={this.el}\n ref={(el) => (this.nativeInputWrap = el)}\n >\n {this.type !== 'textarea' && (\n <input\n id={this.inputId}\n class=\"input__native-ctrl\"\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n accept={this.accept}\n autoCapitalize={this.autocapitalise}\n autoComplete={this.autocomplete}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n min={this.min}\n max={this.max}\n minLength={this.minlength}\n maxLength={this.maxlength}\n multiple={this.multiple}\n name={this.name}\n pattern={this.pattern}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n step={this.step}\n size={this.size}\n type={this.type}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n />\n )}\n {this.type === 'textarea' && (\n <textarea\n rows={this.floatLabel ? 1 : this.rows}\n id={this.inputId}\n class={{\n 'input__native-ctrl': true,\n input__resizable: this.resize === 'true',\n }}\n ref={(input) => (this.nativeInput = input)}\n aria-labelledby={labelId + ' ' + moreId + ' ' + helperEndId}\n disabled={this.disabled}\n autoCapitalize={this.autocapitalise}\n autoCorrect={this.autocorrect}\n autoFocus={this.autofocus}\n inputMode={this.inputmode}\n form={this.form}\n minLength={this.minlength}\n maxLength={this.maxlength}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n spellcheck={this.spellcheck}\n value={value}\n onInput={this.onInput}\n onChange={this.onInput}\n onFocus={this.onFocus}\n onKeyDown={this.onKeydown}\n onInvalid={this.validate}\n ></textarea>\n )}\n </FormControl>\n <slot />\n </FormControlWrap>\n </Host>\n );\n }\n}\n"]}