@nanoporetech-digital/components 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/CHANGELOG.md +23 -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/index-cb62df44.js +5 -0
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/nano-algolia-filter.cjs.entry.js +1 -1
  9. package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
  10. package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
  11. package/dist/cjs/nano-checkbox-group.cjs.entry.js +58 -20
  12. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nano-checkbox.cjs.entry.js +27 -15
  14. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-components.cjs.js +1 -1
  16. package/dist/cjs/nano-date-input.cjs.entry.js +17 -4
  17. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nano-dialog.cjs.entry.js +13 -2
  19. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-field-validator.cjs.entry.js +529 -0
  21. package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -0
  22. package/dist/cjs/nano-file-upload.cjs.entry.js +59 -36
  23. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
  25. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nano-input.cjs.entry.js +25 -13
  27. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-nav-item_2.cjs.entry.js +40 -15
  29. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-sticker.cjs.entry.js +2 -2
  31. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
  33. package/dist/collection/collection-manifest.json +2 -1
  34. package/dist/collection/components/accordion/accordion.js +1 -1
  35. package/dist/collection/components/alert/alert.js +1 -1
  36. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  37. package/dist/collection/components/algolia/algolia-input.js +5 -5
  38. package/dist/collection/components/algolia/algolia-results.js +1 -1
  39. package/dist/collection/components/algolia/algolia.js +6 -6
  40. package/dist/collection/components/checkbox/checkbox-group.css +5 -5
  41. package/dist/collection/components/checkbox/checkbox-group.js +119 -25
  42. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  43. package/dist/collection/components/checkbox/checkbox.css +1 -1
  44. package/dist/collection/components/checkbox/checkbox.js +83 -22
  45. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  46. package/dist/collection/components/datalist/datalist.js +1 -1
  47. package/dist/collection/components/date-input/date-input.js +44 -12
  48. package/dist/collection/components/date-input/date-input.js.map +1 -1
  49. package/dist/collection/components/date-picker/date-picker.js +5 -5
  50. package/dist/collection/components/details/details.js +1 -1
  51. package/dist/collection/components/dialog/dialog.js +34 -1
  52. package/dist/collection/components/dialog/dialog.js.map +1 -1
  53. package/dist/collection/components/dropdown/dropdown.js +1 -1
  54. package/dist/collection/components/field-validator/field-validator.js +577 -0
  55. package/dist/collection/components/field-validator/field-validator.js.map +1 -0
  56. package/dist/collection/components/file-upload/file-upload.css +17 -5
  57. package/dist/collection/components/file-upload/file-upload.js +111 -44
  58. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  59. package/dist/collection/components/global-nav/global-nav.js +4 -4
  60. package/dist/collection/components/grid/grid-item.js +1 -1
  61. package/dist/collection/components/icon/icon.js +2 -2
  62. package/dist/collection/components/icon/icon.js.map +1 -1
  63. package/dist/collection/components/input/input.css +2 -2
  64. package/dist/collection/components/input/input.js +51 -22
  65. package/dist/collection/components/input/input.js.map +1 -1
  66. package/dist/collection/components/nav-item/nav-item.js +4 -4
  67. package/dist/collection/components/range/range.js +4 -4
  68. package/dist/collection/components/resize-observe/resize-observe.js +1 -1
  69. package/dist/collection/components/select/select.css +2 -2
  70. package/dist/collection/components/select/select.js +74 -25
  71. package/dist/collection/components/select/select.js.map +1 -1
  72. package/dist/collection/components/slides/slides.js +7 -7
  73. package/dist/collection/components/{sticky → sticker}/sticker.css +0 -0
  74. package/dist/collection/components/{sticky → sticker}/sticker.js +2 -2
  75. package/dist/collection/components/sticker/sticker.js.map +1 -0
  76. package/dist/collection/components/tabs/tab-group.js +2 -2
  77. package/dist/collection/utils/store/component-store.js +4 -13
  78. package/dist/collection/utils/store/component-store.js.map +1 -1
  79. package/dist/collection/utils/store/get-set.js +15 -1
  80. package/dist/collection/utils/store/get-set.js.map +1 -1
  81. package/dist/components/algoliasearch.umd.js +2 -2
  82. package/dist/components/algoliasearch.umd.js.map +1 -1
  83. package/dist/components/component-store.js +36 -24
  84. package/dist/components/component-store.js.map +1 -1
  85. package/dist/components/icon.js.map +1 -1
  86. package/dist/components/input.js +27 -14
  87. package/dist/components/input.js.map +1 -1
  88. package/dist/components/nano-checkbox-group.js +62 -21
  89. package/dist/components/nano-checkbox-group.js.map +1 -1
  90. package/dist/components/nano-checkbox.js +31 -17
  91. package/dist/components/nano-checkbox.js.map +1 -1
  92. package/dist/components/nano-date-input.js +18 -4
  93. package/dist/components/nano-date-input.js.map +1 -1
  94. package/dist/components/nano-dialog.js +13 -1
  95. package/dist/components/nano-dialog.js.map +1 -1
  96. package/dist/components/nano-field-validator.d.ts +11 -0
  97. package/dist/components/nano-field-validator.js +557 -0
  98. package/dist/components/nano-field-validator.js.map +1 -0
  99. package/dist/components/nano-file-upload.js +62 -37
  100. package/dist/components/nano-file-upload.js.map +1 -1
  101. package/dist/components/select.js +44 -17
  102. package/dist/components/select.js.map +1 -1
  103. package/dist/components/sticker.js +2 -2
  104. package/dist/components/sticker.js.map +1 -1
  105. package/dist/custom-elements/index.d.ts +6 -0
  106. package/dist/custom-elements/index.js +2436 -554
  107. package/dist/custom-elements/index.js.map +1 -1
  108. package/dist/esm/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
  109. package/dist/esm/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +1 -1
  110. package/dist/esm/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
  111. package/dist/esm/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
  112. package/dist/esm/{component-store-b6fbfa35.js → component-store-d238fee4.js} +38 -26
  113. package/dist/esm/component-store-d238fee4.js.map +1 -0
  114. package/dist/esm/{form-control-cf23c6a2.js → form-control-ad05507c.js} +2 -2
  115. package/dist/esm/{form-control-cf23c6a2.js.map → form-control-ad05507c.js.map} +1 -1
  116. package/dist/esm/{index-5f8d16e7.js → index-c42becad.js} +7 -2
  117. package/dist/esm/{index-5f8d16e7.js.map → index-c42becad.js.map} +1 -1
  118. package/dist/esm/loader.js +2 -2
  119. package/dist/esm/nano-accordion.entry.js +1 -1
  120. package/dist/esm/nano-alert.entry.js +1 -1
  121. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  122. package/dist/esm/nano-algolia-input.entry.js +4 -4
  123. package/dist/esm/nano-algolia-pagination.entry.js +2 -2
  124. package/dist/esm/nano-algolia-results.entry.js +2 -2
  125. package/dist/esm/nano-algolia.entry.js +4 -4
  126. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  127. package/dist/esm/nano-checkbox-group.entry.js +59 -21
  128. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  129. package/dist/esm/nano-checkbox.entry.js +28 -16
  130. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  131. package/dist/esm/nano-components.js +2 -2
  132. package/dist/esm/nano-datalist_3.entry.js +1 -1
  133. package/dist/esm/nano-date-input.entry.js +18 -5
  134. package/dist/esm/nano-date-input.entry.js.map +1 -1
  135. package/dist/esm/nano-date-picker.entry.js +1 -1
  136. package/dist/esm/nano-details.entry.js +1 -1
  137. package/dist/esm/nano-dialog.entry.js +14 -3
  138. package/dist/esm/nano-dialog.entry.js.map +1 -1
  139. package/dist/esm/nano-drawer.entry.js +1 -1
  140. package/dist/esm/nano-dropdown.entry.js +1 -1
  141. package/dist/esm/nano-field-validator.entry.js +525 -0
  142. package/dist/esm/nano-field-validator.entry.js.map +1 -0
  143. package/dist/esm/nano-file-upload.entry.js +60 -37
  144. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  145. package/dist/esm/nano-global-nav.entry.js +3 -3
  146. package/dist/esm/nano-global-search-results.entry.js +1 -1
  147. package/dist/esm/nano-grid_3.entry.js +1 -1
  148. package/dist/esm/nano-hero.entry.js +1 -1
  149. package/dist/esm/nano-icon-button.entry.js +1 -1
  150. package/dist/esm/nano-icon.entry.js +1 -1
  151. package/dist/esm/nano-icon.entry.js.map +1 -1
  152. package/dist/esm/nano-input.entry.js +28 -16
  153. package/dist/esm/nano-input.entry.js.map +1 -1
  154. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  155. package/dist/esm/nano-nav-item_2.entry.js +43 -18
  156. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  157. package/dist/esm/nano-range.entry.js +1 -1
  158. package/dist/esm/nano-rating.entry.js +1 -1
  159. package/dist/esm/nano-resize-observe_2.entry.js +1 -1
  160. package/dist/esm/nano-slide.entry.js +1 -1
  161. package/dist/esm/nano-slides.entry.js +1 -1
  162. package/dist/esm/nano-spinner.entry.js +1 -1
  163. package/dist/esm/nano-split-pane.entry.js +1 -1
  164. package/dist/esm/nano-sticker.entry.js +3 -3
  165. package/dist/esm/nano-sticker.entry.js.map +1 -1
  166. package/dist/esm/nano-tab-content.entry.js +1 -1
  167. package/dist/esm/nano-tab-group.entry.js +2 -2
  168. package/dist/esm/nano-tab.entry.js +1 -1
  169. package/dist/esm/nano-tooltip.entry.js +1 -1
  170. package/dist/esm-es5/{algolia-data-dd72d1b7.js → algolia-data-80c1169a.js} +2 -2
  171. package/dist/esm-es5/{algolia-data-dd72d1b7.js.map → algolia-data-80c1169a.js.map} +0 -0
  172. package/dist/esm-es5/{algoliasearch.umd-6143495f.js → algoliasearch.umd-86359963.js} +3 -3
  173. package/dist/esm-es5/{algoliasearch.umd-6143495f.js.map → algoliasearch.umd-86359963.js.map} +1 -1
  174. package/dist/esm-es5/component-store-d238fee4.js +5 -0
  175. package/dist/esm-es5/component-store-d238fee4.js.map +1 -0
  176. package/dist/esm-es5/{form-control-cf23c6a2.js → form-control-ad05507c.js} +2 -2
  177. package/dist/esm-es5/{form-control-cf23c6a2.js.map → form-control-ad05507c.js.map} +0 -0
  178. package/dist/esm-es5/{index-5f8d16e7.js → index-c42becad.js} +2 -2
  179. package/dist/esm-es5/{index-5f8d16e7.js.map → index-c42becad.js.map} +0 -0
  180. package/dist/esm-es5/loader.js +1 -1
  181. package/dist/esm-es5/loader.js.map +1 -1
  182. package/dist/esm-es5/nano-accordion.entry.js +1 -1
  183. package/dist/esm-es5/nano-alert.entry.js +1 -1
  184. package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
  185. package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
  186. package/dist/esm-es5/nano-algolia-pagination.entry.js +1 -1
  187. package/dist/esm-es5/nano-algolia-results.entry.js +1 -1
  188. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  189. package/dist/esm-es5/nano-aspect-ratio.entry.js +1 -1
  190. package/dist/esm-es5/nano-checkbox-group.entry.js +2 -2
  191. package/dist/esm-es5/nano-checkbox-group.entry.js.map +1 -1
  192. package/dist/esm-es5/nano-checkbox.entry.js +1 -1
  193. package/dist/esm-es5/nano-checkbox.entry.js.map +1 -1
  194. package/dist/esm-es5/nano-components.js +1 -1
  195. package/dist/esm-es5/nano-components.js.map +1 -1
  196. package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
  197. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  198. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  199. package/dist/esm-es5/nano-date-picker.entry.js +1 -1
  200. package/dist/esm-es5/nano-details.entry.js +1 -1
  201. package/dist/esm-es5/nano-dialog.entry.js +1 -1
  202. package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
  203. package/dist/esm-es5/nano-drawer.entry.js +1 -1
  204. package/dist/esm-es5/nano-dropdown.entry.js +1 -1
  205. package/dist/esm-es5/nano-field-validator.entry.js +5 -0
  206. package/dist/esm-es5/nano-field-validator.entry.js.map +1 -0
  207. package/dist/esm-es5/nano-file-upload.entry.js +2 -2
  208. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  209. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  210. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  211. package/dist/esm-es5/nano-grid_3.entry.js +1 -1
  212. package/dist/esm-es5/nano-hero.entry.js +1 -1
  213. package/dist/esm-es5/nano-icon-button.entry.js +1 -1
  214. package/dist/esm-es5/nano-icon.entry.js +1 -1
  215. package/dist/esm-es5/nano-icon.entry.js.map +1 -1
  216. package/dist/esm-es5/nano-input.entry.js +1 -1
  217. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  218. package/dist/esm-es5/nano-menu-drawer.entry.js +1 -1
  219. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  220. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  221. package/dist/esm-es5/nano-range.entry.js +1 -1
  222. package/dist/esm-es5/nano-rating.entry.js +1 -1
  223. package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
  224. package/dist/esm-es5/nano-slide.entry.js +1 -1
  225. package/dist/esm-es5/nano-slides.entry.js +1 -1
  226. package/dist/esm-es5/nano-spinner.entry.js +1 -1
  227. package/dist/esm-es5/nano-split-pane.entry.js +1 -1
  228. package/dist/esm-es5/nano-sticker.entry.js +1 -1
  229. package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
  230. package/dist/esm-es5/nano-tab-content.entry.js +1 -1
  231. package/dist/esm-es5/nano-tab-group.entry.js +1 -1
  232. package/dist/esm-es5/nano-tab.entry.js +2 -2
  233. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  234. package/dist/nano-components/nano-components.css +1 -1
  235. package/dist/nano-components/nano-components.esm.js +1 -1
  236. package/dist/nano-components/nano-components.esm.js.map +1 -1
  237. package/dist/nano-components/nano-components.js +1 -1
  238. package/dist/nano-components/{p-6f94d755.entry.js → p-00eaa36a.entry.js} +2 -2
  239. package/dist/nano-components/{p-6f94d755.entry.js.map → p-00eaa36a.entry.js.map} +0 -0
  240. package/dist/nano-components/{p-4429caac.system.entry.js → p-0c6c2141.system.entry.js} +2 -2
  241. package/dist/nano-components/{p-4429caac.system.entry.js.map → p-0c6c2141.system.entry.js.map} +0 -0
  242. package/dist/nano-components/{p-7232c046.system.entry.js → p-0d0dfc06.system.entry.js} +2 -2
  243. package/dist/nano-components/{p-7232c046.system.entry.js.map → p-0d0dfc06.system.entry.js.map} +0 -0
  244. package/dist/nano-components/{p-e562bffd.entry.js → p-0e2e3f4a.entry.js} +2 -2
  245. package/dist/nano-components/{p-e562bffd.entry.js.map → p-0e2e3f4a.entry.js.map} +0 -0
  246. package/dist/nano-components/{p-56ba0d63.entry.js → p-1030797a.entry.js} +2 -2
  247. package/dist/nano-components/{p-56ba0d63.entry.js.map → p-1030797a.entry.js.map} +0 -0
  248. package/dist/nano-components/p-11451a4b.system.entry.js +5 -0
  249. package/dist/nano-components/p-11451a4b.system.entry.js.map +1 -0
  250. package/dist/nano-components/p-129e2b4b.system.js +5 -0
  251. package/dist/nano-components/p-129e2b4b.system.js.map +1 -0
  252. package/dist/nano-components/{p-c0ddb4c3.entry.js → p-166ade3e.entry.js} +2 -2
  253. package/dist/nano-components/{p-c0ddb4c3.entry.js.map → p-166ade3e.entry.js.map} +0 -0
  254. package/dist/nano-components/{p-5653961d.system.entry.js → p-1a30dfdd.system.entry.js} +2 -2
  255. package/dist/nano-components/p-1a30dfdd.system.entry.js.map +1 -0
  256. package/dist/nano-components/p-1b120f53.entry.js +5 -0
  257. package/dist/nano-components/p-1b120f53.entry.js.map +1 -0
  258. package/dist/nano-components/{p-7d351076.system.entry.js → p-21af2a5e.system.entry.js} +2 -2
  259. package/dist/nano-components/{p-7d351076.system.entry.js.map → p-21af2a5e.system.entry.js.map} +0 -0
  260. package/dist/nano-components/{p-346588cc.entry.js → p-222d8095.entry.js} +2 -2
  261. package/dist/nano-components/{p-346588cc.entry.js.map → p-222d8095.entry.js.map} +0 -0
  262. package/dist/nano-components/{p-933c35a6.system.entry.js → p-241d90eb.system.entry.js} +2 -2
  263. package/dist/nano-components/{p-933c35a6.system.entry.js.map → p-241d90eb.system.entry.js.map} +0 -0
  264. package/dist/nano-components/{p-040b6cda.entry.js → p-2649fc8e.entry.js} +2 -2
  265. package/dist/nano-components/{p-040b6cda.entry.js.map → p-2649fc8e.entry.js.map} +0 -0
  266. package/dist/nano-components/{p-3456db01.entry.js → p-27efac97.entry.js} +2 -2
  267. package/dist/nano-components/{p-3456db01.entry.js.map → p-27efac97.entry.js.map} +0 -0
  268. package/dist/nano-components/{p-462ad4f1.entry.js → p-2c8d7273.entry.js} +2 -2
  269. package/dist/nano-components/{p-462ad4f1.entry.js.map → p-2c8d7273.entry.js.map} +0 -0
  270. package/dist/nano-components/{p-2e6c55e2.entry.js → p-2d53d1a0.entry.js} +2 -2
  271. package/dist/nano-components/{p-2e6c55e2.entry.js.map → p-2d53d1a0.entry.js.map} +0 -0
  272. package/dist/nano-components/{p-1f99d776.entry.js → p-3093915f.entry.js} +2 -2
  273. package/dist/nano-components/{p-1f99d776.entry.js.map → p-3093915f.entry.js.map} +0 -0
  274. package/dist/nano-components/{p-8a8f893b.system.entry.js → p-316f83a9.system.entry.js} +2 -2
  275. package/dist/nano-components/{p-8a8f893b.system.entry.js.map → p-316f83a9.system.entry.js.map} +0 -0
  276. package/dist/nano-components/{p-7246bef5.entry.js → p-325c1cad.entry.js} +2 -2
  277. package/dist/nano-components/{p-7246bef5.entry.js.map → p-325c1cad.entry.js.map} +0 -0
  278. package/dist/nano-components/{p-ec39b143.system.entry.js → p-32f396c0.system.entry.js} +2 -2
  279. package/dist/nano-components/{p-ec39b143.system.entry.js.map → p-32f396c0.system.entry.js.map} +0 -0
  280. package/dist/nano-components/p-32f4516e.js +5 -0
  281. package/dist/nano-components/p-32f4516e.js.map +1 -0
  282. package/dist/nano-components/{p-43543d18.entry.js → p-333237e8.entry.js} +2 -2
  283. package/dist/nano-components/{p-43543d18.entry.js.map → p-333237e8.entry.js.map} +0 -0
  284. package/dist/nano-components/{p-1e8321ea.entry.js → p-35108e08.entry.js} +2 -2
  285. package/dist/nano-components/{p-1e8321ea.entry.js.map → p-35108e08.entry.js.map} +0 -0
  286. package/dist/nano-components/{p-a898bf92.system.entry.js → p-379e21d9.system.entry.js} +2 -2
  287. package/dist/nano-components/{p-a898bf92.system.entry.js.map → p-379e21d9.system.entry.js.map} +0 -0
  288. package/dist/nano-components/{p-3ad1d5aa.system.entry.js → p-39d36fd1.system.entry.js} +2 -2
  289. package/dist/nano-components/{p-3ad1d5aa.system.entry.js.map → p-39d36fd1.system.entry.js.map} +0 -0
  290. package/dist/nano-components/{p-41a2e2e4.system.js → p-3a00de47.system.js} +2 -2
  291. package/dist/nano-components/{p-41a2e2e4.system.js.map → p-3a00de47.system.js.map} +0 -0
  292. package/dist/nano-components/{p-6afdb510.system.entry.js → p-3ccb176c.system.entry.js} +2 -2
  293. package/dist/nano-components/{p-6afdb510.system.entry.js.map → p-3ccb176c.system.entry.js.map} +0 -0
  294. package/dist/nano-components/{p-08b43111.entry.js → p-3e930ac7.entry.js} +2 -2
  295. package/dist/nano-components/{p-08b43111.entry.js.map → p-3e930ac7.entry.js.map} +0 -0
  296. package/dist/nano-components/{p-d8d8bac6.system.entry.js → p-42cebbfe.system.entry.js} +2 -2
  297. package/dist/nano-components/{p-d8d8bac6.system.entry.js.map → p-42cebbfe.system.entry.js.map} +0 -0
  298. package/dist/nano-components/{p-1ca46443.entry.js → p-45070c8f.entry.js} +2 -2
  299. package/dist/nano-components/{p-1ca46443.entry.js.map → p-45070c8f.entry.js.map} +0 -0
  300. package/dist/nano-components/{p-3ef30ded.system.entry.js → p-48874481.system.entry.js} +2 -2
  301. package/dist/nano-components/{p-3ef30ded.system.entry.js.map → p-48874481.system.entry.js.map} +0 -0
  302. package/dist/nano-components/{p-08ffc9a1.entry.js → p-4e2c0abb.entry.js} +2 -2
  303. package/dist/nano-components/{p-08ffc9a1.entry.js.map → p-4e2c0abb.entry.js.map} +0 -0
  304. package/dist/nano-components/{p-090f22a9.system.entry.js → p-5100ae70.system.entry.js} +2 -2
  305. package/dist/nano-components/{p-090f22a9.system.entry.js.map → p-5100ae70.system.entry.js.map} +0 -0
  306. package/dist/nano-components/{p-593de29b.system.entry.js → p-52769304.system.entry.js} +2 -2
  307. package/dist/nano-components/{p-593de29b.system.entry.js.map → p-52769304.system.entry.js.map} +0 -0
  308. package/dist/nano-components/{p-8278c5d2.system.entry.js → p-56f86047.system.entry.js} +2 -2
  309. package/dist/nano-components/{p-8278c5d2.system.entry.js.map → p-56f86047.system.entry.js.map} +0 -0
  310. package/dist/nano-components/{p-2057d480.system.entry.js → p-5b66bb8f.system.entry.js} +2 -2
  311. package/dist/nano-components/{p-2057d480.system.entry.js.map → p-5b66bb8f.system.entry.js.map} +0 -0
  312. package/dist/nano-components/{p-033296c7.system.entry.js → p-5d17cfbb.system.entry.js} +2 -2
  313. package/dist/nano-components/{p-033296c7.system.entry.js.map → p-5d17cfbb.system.entry.js.map} +0 -0
  314. package/dist/nano-components/{p-88f17c86.system.entry.js → p-5d5ea4ab.system.entry.js} +2 -2
  315. package/dist/nano-components/{p-88f17c86.system.entry.js.map → p-5d5ea4ab.system.entry.js.map} +0 -0
  316. package/dist/nano-components/{p-20387cde.system.entry.js → p-6b4dd158.system.entry.js} +2 -2
  317. package/dist/nano-components/{p-20387cde.system.entry.js.map → p-6b4dd158.system.entry.js.map} +0 -0
  318. package/dist/nano-components/{p-d24811c8.system.js → p-6b5760b1.system.js} +3 -3
  319. package/dist/nano-components/{p-d24811c8.system.js.map → p-6b5760b1.system.js.map} +1 -1
  320. package/dist/nano-components/p-6d138abf.entry.js +5 -0
  321. package/dist/nano-components/p-6d138abf.entry.js.map +1 -0
  322. package/dist/nano-components/{p-5066e563.system.entry.js → p-6dad332b.system.entry.js} +2 -2
  323. package/dist/nano-components/{p-5066e563.system.entry.js.map → p-6dad332b.system.entry.js.map} +0 -0
  324. package/dist/nano-components/{p-730f60ea.entry.js → p-6ddb51e4.entry.js} +2 -2
  325. package/dist/nano-components/p-6ddb51e4.entry.js.map +1 -0
  326. package/dist/nano-components/p-71bbb7ba.entry.js +5 -0
  327. package/dist/nano-components/p-71bbb7ba.entry.js.map +1 -0
  328. package/dist/nano-components/{p-a6c84740.js → p-71e9fa33.js} +2 -2
  329. package/dist/nano-components/{p-a6c84740.js.map → p-71e9fa33.js.map} +0 -0
  330. package/dist/nano-components/{p-39a5280e.system.entry.js → p-72ed603c.system.entry.js} +2 -2
  331. package/dist/nano-components/{p-39a5280e.system.entry.js.map → p-72ed603c.system.entry.js.map} +0 -0
  332. package/dist/nano-components/{p-313970ff.entry.js → p-73985eda.entry.js} +2 -2
  333. package/dist/nano-components/{p-313970ff.entry.js.map → p-73985eda.entry.js.map} +0 -0
  334. package/dist/nano-components/{p-58d7f10f.entry.js → p-76c903db.entry.js} +2 -2
  335. package/dist/nano-components/{p-58d7f10f.entry.js.map → p-76c903db.entry.js.map} +0 -0
  336. package/dist/nano-components/{p-3aa1d07d.entry.js → p-76d9d1d4.entry.js} +2 -2
  337. package/dist/nano-components/p-76d9d1d4.entry.js.map +1 -0
  338. package/dist/nano-components/{p-f53989c3.system.entry.js → p-7aa7425d.system.entry.js} +2 -2
  339. package/dist/nano-components/{p-f53989c3.system.entry.js.map → p-7aa7425d.system.entry.js.map} +1 -1
  340. package/dist/nano-components/{p-531d5275.system.entry.js → p-7ad4a27a.system.entry.js} +2 -2
  341. package/dist/nano-components/p-7ad4a27a.system.entry.js.map +1 -0
  342. package/dist/nano-components/{p-2ae4918d.system.entry.js → p-7e55b214.system.entry.js} +2 -2
  343. package/dist/nano-components/{p-2ae4918d.system.entry.js.map → p-7e55b214.system.entry.js.map} +0 -0
  344. package/dist/nano-components/{p-62ecd3a1.system.entry.js → p-7f1374b6.system.entry.js} +2 -2
  345. package/dist/nano-components/{p-62ecd3a1.system.entry.js.map → p-7f1374b6.system.entry.js.map} +0 -0
  346. package/dist/nano-components/{p-1e974cad.entry.js → p-7fe9d769.entry.js} +2 -2
  347. package/dist/nano-components/{p-1e974cad.entry.js.map → p-7fe9d769.entry.js.map} +0 -0
  348. package/dist/nano-components/p-85c8b070.system.entry.js +5 -0
  349. package/dist/nano-components/p-85c8b070.system.entry.js.map +1 -0
  350. package/dist/nano-components/{p-f2e7d2f9.system.entry.js → p-88779174.system.entry.js} +2 -2
  351. package/dist/nano-components/{p-f2e7d2f9.system.entry.js.map → p-88779174.system.entry.js.map} +0 -0
  352. package/dist/nano-components/{p-4535e3bb.entry.js → p-8b6fcd6d.entry.js} +2 -2
  353. package/dist/nano-components/{p-4535e3bb.entry.js.map → p-8b6fcd6d.entry.js.map} +0 -0
  354. package/dist/nano-components/{p-6ade3290.entry.js → p-8eb4f24a.entry.js} +2 -2
  355. package/dist/nano-components/{p-6ade3290.entry.js.map → p-8eb4f24a.entry.js.map} +0 -0
  356. package/dist/nano-components/{p-07bdf44d.entry.js → p-8fe2f846.entry.js} +2 -2
  357. package/dist/nano-components/{p-07bdf44d.entry.js.map → p-8fe2f846.entry.js.map} +0 -0
  358. package/dist/nano-components/p-96150b2c.system.entry.js +5 -0
  359. package/dist/nano-components/p-96150b2c.system.entry.js.map +1 -0
  360. package/dist/nano-components/{p-bcd69559.entry.js → p-97b13ad2.entry.js} +2 -2
  361. package/dist/nano-components/{p-bcd69559.entry.js.map → p-97b13ad2.entry.js.map} +0 -0
  362. package/dist/nano-components/{p-c9c1a345.system.entry.js → p-a02cc654.system.entry.js} +2 -2
  363. package/dist/nano-components/{p-c9c1a345.system.entry.js.map → p-a02cc654.system.entry.js.map} +0 -0
  364. package/dist/nano-components/{p-a77e3fbb.js → p-a0b93616.js} +3 -3
  365. package/dist/nano-components/{p-a77e3fbb.js.map → p-a0b93616.js.map} +1 -1
  366. package/dist/nano-components/p-a4969844.entry.js +5 -0
  367. package/dist/nano-components/p-a4969844.entry.js.map +1 -0
  368. package/dist/nano-components/{p-70dec19f.entry.js → p-a6327a9a.entry.js} +2 -2
  369. package/dist/nano-components/{p-70dec19f.entry.js.map → p-a6327a9a.entry.js.map} +0 -0
  370. package/dist/nano-components/p-a81db037.entry.js +5 -0
  371. package/dist/nano-components/p-a81db037.entry.js.map +1 -0
  372. package/dist/nano-components/{p-a315ed2c.entry.js → p-a9a4fc3e.entry.js} +2 -2
  373. package/dist/nano-components/{p-a315ed2c.entry.js.map → p-a9a4fc3e.entry.js.map} +1 -1
  374. package/dist/nano-components/{p-98222c39.system.entry.js → p-ab07c1fa.system.entry.js} +2 -2
  375. package/dist/nano-components/{p-98222c39.system.entry.js.map → p-ab07c1fa.system.entry.js.map} +0 -0
  376. package/dist/nano-components/{p-ab5813a7.js → p-b5c33aff.js} +2 -2
  377. package/dist/nano-components/{p-ab5813a7.js.map → p-b5c33aff.js.map} +0 -0
  378. package/dist/nano-components/p-bc394857.system.entry.js +5 -0
  379. package/dist/nano-components/p-bc394857.system.entry.js.map +1 -0
  380. package/dist/nano-components/{p-b4f8e541.entry.js → p-bce998f2.entry.js} +2 -2
  381. package/dist/nano-components/{p-b4f8e541.entry.js.map → p-bce998f2.entry.js.map} +0 -0
  382. package/dist/nano-components/{p-92f85aaf.system.entry.js → p-bf9aa89d.system.entry.js} +2 -2
  383. package/dist/nano-components/{p-92f85aaf.system.entry.js.map → p-bf9aa89d.system.entry.js.map} +0 -0
  384. package/dist/nano-components/p-c070ffd3.system.entry.js +5 -0
  385. package/dist/nano-components/p-c070ffd3.system.entry.js.map +1 -0
  386. package/dist/nano-components/{p-50514e5e.entry.js → p-c4156fea.entry.js} +2 -2
  387. package/dist/nano-components/{p-50514e5e.entry.js.map → p-c4156fea.entry.js.map} +0 -0
  388. package/dist/nano-components/p-c9a2d24c.entry.js +5 -0
  389. package/dist/nano-components/p-c9a2d24c.entry.js.map +1 -0
  390. package/dist/nano-components/{p-6eb25600.system.js → p-d01bd3c3.system.js} +2 -2
  391. package/dist/nano-components/{p-6eb25600.system.js.map → p-d01bd3c3.system.js.map} +0 -0
  392. package/dist/nano-components/{p-1238f0fc.system.entry.js → p-d0385948.system.entry.js} +2 -2
  393. package/dist/nano-components/{p-1238f0fc.system.entry.js.map → p-d0385948.system.entry.js.map} +0 -0
  394. package/dist/nano-components/{p-b59d2bd5.entry.js → p-d122b1ff.entry.js} +2 -2
  395. package/dist/nano-components/{p-b59d2bd5.entry.js.map → p-d122b1ff.entry.js.map} +0 -0
  396. package/dist/nano-components/{p-394c3c19.entry.js → p-defd4552.entry.js} +2 -2
  397. package/dist/nano-components/{p-394c3c19.entry.js.map → p-defd4552.entry.js.map} +0 -0
  398. package/dist/nano-components/p-e7140887.system.js +5 -0
  399. package/dist/nano-components/p-e7140887.system.js.map +1 -0
  400. package/dist/nano-components/{p-69439aa1.system.entry.js → p-e817ab4a.system.entry.js} +2 -2
  401. package/dist/nano-components/{p-69439aa1.system.entry.js.map → p-e817ab4a.system.entry.js.map} +0 -0
  402. package/dist/nano-components/{p-22884654.system.entry.js → p-eacf5b5b.system.entry.js} +2 -2
  403. package/dist/nano-components/{p-22884654.system.entry.js.map → p-eacf5b5b.system.entry.js.map} +0 -0
  404. package/dist/nano-components/p-ed336501.entry.js +5 -0
  405. package/dist/nano-components/p-ed336501.entry.js.map +1 -0
  406. package/dist/nano-components/{p-5ae80fd7.js → p-ef7f1e9c.js} +2 -2
  407. package/dist/nano-components/{p-5ae80fd7.js.map → p-ef7f1e9c.js.map} +0 -0
  408. package/dist/nano-components/{p-59b3d24b.system.js → p-f48be9f5.system.js} +2 -2
  409. package/dist/nano-components/{p-59b3d24b.system.js.map → p-f48be9f5.system.js.map} +0 -0
  410. package/dist/nano-components/p-f710c763.system.entry.js +5 -0
  411. package/dist/nano-components/p-f710c763.system.entry.js.map +1 -0
  412. package/dist/nano-components/{p-65c10b3f.entry.js → p-fbe3c89e.entry.js} +2 -2
  413. package/dist/nano-components/{p-65c10b3f.entry.js.map → p-fbe3c89e.entry.js.map} +0 -0
  414. package/dist/nano-components/p-fc3702a0.system.entry.js +5 -0
  415. package/dist/nano-components/p-fc3702a0.system.entry.js.map +1 -0
  416. package/dist/nano-components/{p-ba13bb56.entry.js → p-ffc2063a.entry.js} +2 -2
  417. package/dist/nano-components/{p-ba13bb56.entry.js.map → p-ffc2063a.entry.js.map} +0 -0
  418. package/dist/nano-components/{p-4870e76d.system.entry.js → p-fff27907.system.entry.js} +2 -2
  419. package/dist/nano-components/{p-4870e76d.system.entry.js.map → p-fff27907.system.entry.js.map} +0 -0
  420. package/dist/types/components/checkbox/checkbox-group.d.ts +12 -1
  421. package/dist/types/components/checkbox/checkbox.d.ts +11 -3
  422. package/dist/types/components/date-input/date-input.d.ts +4 -0
  423. package/dist/types/components/dialog/dialog.d.ts +4 -1
  424. package/dist/types/components/field-validator/field-validator.d.ts +125 -0
  425. package/dist/types/components/file-upload/file-upload.d.ts +8 -0
  426. package/dist/types/components/icon/icon.d.ts +1 -1
  427. package/dist/types/components/input/input.d.ts +6 -1
  428. package/dist/types/components/select/select.d.ts +7 -1
  429. package/dist/types/components/{sticky → sticker}/sticker.d.ts +0 -0
  430. package/dist/types/components.d.ts +187 -4
  431. package/dist/types/utils/store/get-set.d.ts +1 -1
  432. package/docs-json.json +436 -14
  433. package/docs-vscode.json +77 -1
  434. package/package.json +3 -2
  435. package/dist/cjs/component-store-722032a5.js.map +0 -1
  436. package/dist/collection/components/sticky/sticker.js.map +0 -1
  437. package/dist/esm/component-store-b6fbfa35.js.map +0 -1
  438. package/dist/esm-es5/component-store-b6fbfa35.js +0 -5
  439. package/dist/esm-es5/component-store-b6fbfa35.js.map +0 -1
  440. package/dist/nano-components/p-096682d9.system.js +0 -5
  441. package/dist/nano-components/p-096682d9.system.js.map +0 -1
  442. package/dist/nano-components/p-09e38c5f.system.entry.js +0 -5
  443. package/dist/nano-components/p-09e38c5f.system.entry.js.map +0 -1
  444. package/dist/nano-components/p-10a6216d.system.entry.js +0 -5
  445. package/dist/nano-components/p-10a6216d.system.entry.js.map +0 -1
  446. package/dist/nano-components/p-3aa1d07d.entry.js.map +0 -1
  447. package/dist/nano-components/p-4265cf95.system.entry.js +0 -5
  448. package/dist/nano-components/p-4265cf95.system.entry.js.map +0 -1
  449. package/dist/nano-components/p-44c08842.system.entry.js +0 -5
  450. package/dist/nano-components/p-44c08842.system.entry.js.map +0 -1
  451. package/dist/nano-components/p-457d4893.entry.js +0 -5
  452. package/dist/nano-components/p-457d4893.entry.js.map +0 -1
  453. package/dist/nano-components/p-531d5275.system.entry.js.map +0 -1
  454. package/dist/nano-components/p-5653961d.system.entry.js.map +0 -1
  455. package/dist/nano-components/p-5a0095f9.js +0 -5
  456. package/dist/nano-components/p-5a0095f9.js.map +0 -1
  457. package/dist/nano-components/p-5a315696.entry.js +0 -5
  458. package/dist/nano-components/p-5a315696.entry.js.map +0 -1
  459. package/dist/nano-components/p-730f60ea.entry.js.map +0 -1
  460. package/dist/nano-components/p-802e1416.system.entry.js +0 -5
  461. package/dist/nano-components/p-802e1416.system.entry.js.map +0 -1
  462. package/dist/nano-components/p-84767e87.entry.js +0 -5
  463. package/dist/nano-components/p-84767e87.entry.js.map +0 -1
  464. package/dist/nano-components/p-971b40a4.system.entry.js +0 -5
  465. package/dist/nano-components/p-971b40a4.system.entry.js.map +0 -1
  466. package/dist/nano-components/p-9d35768b.entry.js +0 -5
  467. package/dist/nano-components/p-9d35768b.entry.js.map +0 -1
  468. package/dist/nano-components/p-9ea13fbe.entry.js +0 -5
  469. package/dist/nano-components/p-9ea13fbe.entry.js.map +0 -1
  470. package/dist/nano-components/p-e1f46998.system.js +0 -5
  471. package/dist/nano-components/p-e1f46998.system.js.map +0 -1
  472. package/dist/nano-components/p-e7c69d4f.entry.js +0 -5
  473. package/dist/nano-components/p-e7c69d4f.entry.js.map +0 -1
@@ -1 +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","class_1","hostRef","_this","this","hasSecondarySlot","hasAnchorEle","didBlur","animating","didOpen","isInGlobalNav","isInMenuDrawer","isInMenu","isLegacy","document","head","attachShadow","hasFocus","href","target","disabled","open","selected","secondaryActiveWidth","secondaryFallback","closeOnBlur","notification","closeSecondary","__awaiter","nanoClosing","emit","secondaryMenu","secondaryDiv","displayTransition","status","_b","sent","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","__generator","handleMouseLeave","handleClick","_a","querySelector","blur","relatedTarget","foundThisNavEle","focus","preventScroll","removeEventListener","prototype","setFocus","openChange","didOpenChange","nanoClose","panelio_1","IntersectionObserver","data","boundingClientRect","top","scrollIntoView","behavior","disconnect","threshold","observe","addEventListener","tabIndex","nanoOpen","found","parentElement","componentWillLoad","secondaryEle","link","getDirectChildren","connectedCallback","render","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","class_2","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","_","setValue","e","value","detail","inputCtrl","includes","__spreadArray","slice","removeValue","toFind","filter","val","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","Object","defineProperty","_selectWrap","setDataListOpts","_datalist","split","Array","isArray","opts","opt","debounceChanged","debounceEvent","shouldValidate","valueChanged","nanoChange","selectWrap","currDWConfig","assign","tetherTo","input","reportValidity","validateFirst","getSelectElement","Promise","resolve","showError","message","find","options","slotChangeObserver","mo","MutationObserver","processSlottedContent","childList","subtree","querySelectorAll","console","warn","getLabel","handleBlur","kev","raf","getActiveElement","closestElement","tagName","toLowerCase","CustomEvent","disconnectedCallback","componentDidLoad","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","id","aria-labelledby","form","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 max-width: 100%;\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} 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 inputCtrl?: HTMLInputElement;\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 // 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 @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 private _invalid = false;\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 'submit';\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('validateOn')\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 setTimeout((_) => this.shouldValidate(), 20);\n this.nanoChange.emit({ value: this.value });\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 const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n ...this.dropDownConfig,\n tetherTo: this.selectWrap,\n };\n this.datalist.input = this.inputCtrl;\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 if (validateFirst) this.showInlineValidation();\n return {\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\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 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 if (this.showInlineError) ev.preventDefault();\n\n setTimeout((_) => this.showInlineValidation(ev), 20);\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('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 setTimeout(() => {\n if (this.validateOn === 'dirty' && !this.hasFocus)\n this.showInlineValidation();\n }, 20);\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
+ {"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","class_1","hostRef","_this","this","hasSecondarySlot","hasAnchorEle","didBlur","animating","didOpen","isInGlobalNav","isInMenuDrawer","isInMenu","isLegacy","document","head","attachShadow","hasFocus","href","target","disabled","open","selected","secondaryActiveWidth","secondaryFallback","closeOnBlur","notification","closeSecondary","__awaiter","nanoClosing","emit","secondaryMenu","secondaryDiv","displayTransition","status","_b","sent","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","__generator","handleMouseLeave","handleClick","_a","querySelector","blur","relatedTarget","foundThisNavEle","focus","preventScroll","removeEventListener","prototype","setFocus","openChange","didOpenChange","nanoClose","panelio_1","IntersectionObserver","data","boundingClientRect","top","scrollIntoView","behavior","disconnect","threshold","observe","addEventListener","tabIndex","nanoOpen","found","parentElement","componentWillLoad","secondaryEle","link","getDirectChildren","connectedCallback","render","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","class_2","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","__spreadArray","slice","removeValue","toFind","filter","val","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","Object","defineProperty","_selectWrap","setDataListOpts","_datalist","split","Array","isArray","opts","opt","debounceChanged","debounceEvent","shouldValidate","valueChanged","nanoChange","selectWrap","currDWConfig","assign","tetherTo","input","reportValidity","validateFirst","Promise","resolve","getSelectElement","showError","message","find","options","slotChangeObserver","mo","MutationObserver","processSlottedContent","childList","subtree","querySelectorAll","console","warn","getLabel","onReset","form","handleBlur","kev","raf","getActiveElement","closestElement","tagName","toLowerCase","CustomEvent","disconnectedCallback","componentDidLoad","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","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 max-width: 100%;\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 inputCtrl?: HTMLInputElement;\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 // 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 const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n ...this.dropDownConfig,\n tetherTo: this.selectWrap,\n };\n this.datalist.input = this.inputCtrl;\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 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
  var __awaiter=this&&this.__awaiter||function(r,e,n,a){function t(r){return r instanceof n?r:new n((function(e){e(r)}))}return new(n||(n=Promise))((function(n,o){function i(r){try{c(a.next(r))}catch(e){o(e)}}function s(r){try{c(a["throw"](r))}catch(e){o(e)}}function c(r){r.done?n(r.value):t(r.value).then(i,s)}c((a=a.apply(r,e||[])).next())}))};var __generator=this&&this.__generator||function(r,e){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},a,t,o,i;return i={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function s(r){return function(e){return c([r,e])}}function c(i){if(a)throw new TypeError("Generator is already executing.");while(n)try{if(a=1,t&&(o=i[0]&2?t["return"]:i[0]?t["throw"]||((o=t["return"])&&o.call(t),0):t.next)&&!(o=o.call(t,i[1])).done)return o;if(t=0,o)i=[i[0]&2,o.value];switch(i[0]){case 0:case 1:o=i;break;case 4:n.label++;return{value:i[1],done:false};case 5:n.label++;t=i[1];i=[0];continue;case 7:i=n.ops.pop();n.trys.pop();continue;default:if(!(o=n.trys,o=o.length>0&&o[o.length-1])&&(i[0]===6||i[0]===2)){n=0;continue}if(i[0]===3&&(!o||i[1]>o[0]&&i[1]<o[3])){n.label=i[1];break}if(i[0]===6&&n.label<o[1]){n.label=o[1];o=i;break}if(o&&n.label<o[2]){n.label=o[2];n.ops.push(i);break}if(o[2])n.ops.pop();n.trys.pop();continue}i=e.call(r,n)}catch(s){i=[6,s];t=0}finally{a=o=0}if(i[0]&5)throw i[1];return{value:i[0]?i[1]:void 0,done:true}}};
2
2
  /*!
3
3
  * Web Components for Nanopore digital Web Apps
4
- */import{r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-5f8d16e7.js";import{c as clamp,a as renderHiddenInput}from"./index-bf53664b.js";import{c as createColorClasses}from"./theme-1d4c8719.js";import{a as debounceEvent}from"./throttle-d3d933cd.js";var rangeCss='.sc-nano-range-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-range,*.sc-nano-range::before,*.sc-nano-range::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-range{display:none !important}.sc-nano-range-h{--knob-handle-size:(var(--knob-size) * 2);--rgb-inactive:165, 165, 165;--knob-border-radius:50%;--knob-background:var(--nano-color-primary, #007495);--knob-box-shadow:0 2px 4px 0 rgba(0, 0, 0, 0.3);--knob-size:30px;--bar-height:8px;--bar-background:#e2e1e0;--bar-background-active:#a5a5a5;--bar-border-radius:4px;--height:42px;--pin-background:var(--nano-color-primary, #007495);--pin-color:var(--nano-color-primary-contrast, #fff);--focus-style:0 0 0 5px var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))}.range-wrap.sc-nano-range{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-flex:3;-ms-flex:3;flex:3;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.range-wrap.sc-nano-range-s>ion-icon[slot],.range-wrap .sc-nano-range-s>ion-icon[slot]{font-size:1.5em}.range-wrap.sc-nano-range-s>[slot=start],.range-wrap .sc-nano-range-s>[slot=start]{margin-left:0;margin-right:14px;margin-top:0;margin-bottom:0;font-size:0.9em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.range-wrap.sc-nano-range-s>[slot=start],.range-wrap .sc-nano-range-s>[slot=start]{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:14px;margin-inline-end:14px}}.range-wrap.sc-nano-range-s>[slot=end],.range-wrap .sc-nano-range-s>[slot=end]{margin-left:14px;margin-right:0;margin-top:0;margin-bottom:0;font-size:0.9em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.range-wrap.sc-nano-range-s>[slot=end],.range-wrap .sc-nano-range-s>[slot=end]{margin-left:unset;margin-right:unset;-webkit-margin-start:14px;margin-inline-start:14px;-webkit-margin-end:0;margin-inline-end:0}}.range-slider.sc-nano-range{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;height:var(--height);contain:size layout style;cursor:-webkit-grab;cursor:grab;-ms-touch-action:pan-y;touch-action:pan-y}.range-pressed.sc-nano-range-h .range-slider.sc-nano-range{cursor:-webkit-grabbing;cursor:grabbing}.range-bar.sc-nano-range{border-radius:var(--bar-border-radius);left:0;top:calc((var(--height) - var(--bar-height)) / 2);position:absolute;width:100%;height:var(--bar-height);background:var(--bar-background);pointer-events:none}.range-bar[dir=rtl].sc-nano-range{left:unset;right:unset;right:0}.range-snaps.sc-nano-range-h .range-bar.sc-nano-range{border-top-left-radius:var(--bar-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bar-border-radius)}.range-snaps.sc-nano-range-h .range-bar[dir=rtl].sc-nano-range{border-top-left-radius:0;border-top-right-radius:var(--bar-border-radius);border-bottom-right-radius:var(--bar-border-radius);border-bottom-left-radius:0}.range-bar[dir=rtl].sc-nano-range{left:unset}.range-bar-active.sc-nano-range{bottom:0;width:auto;background:var(--bar-background-active)}.range-bar-active .range-pressed.sc-nano-range-h{will-change:left, right}.range-knob.sc-nano-range{border-radius:var(--knob-border-radius);left:calc(50% - var(--knob-size) / 2);top:calc(50% - var(--knob-size) / 2);position:absolute;width:var(--knob-size);height:var(--knob-size);background:var(--knob-background);-webkit-box-shadow:var(--knob-box-shadow);box-shadow:var(--knob-box-shadow);z-index:2;pointer-events:none;-webkit-transform:scale(0.67);transform:scale(0.67);-webkit-transition-duration:120ms;transition-duration:120ms;-webkit-transition-property:background-color, border, -webkit-transform;transition-property:background-color, border, -webkit-transform;transition-property:transform, background-color, border;transition-property:transform, background-color, border, -webkit-transform;-webkit-transition-timing-function:ease;transition-timing-function:ease}.range-knob[dir=rtl].sc-nano-range{left:unset;right:unset;right:calc(50% - var(--knob-size) / 2)}.range-knob[dir=rtl].sc-nano-range{left:unset}.sc-nano-range-h:not(.range-has-pin) .range-knob-pressed.sc-nano-range .range-knob.sc-nano-range{-webkit-transform:scale(1);transform:scale(1)}.range-knob-handle.sc-nano-range{left:0;top:calc((var(--height) - var(--knob-handle-size)) / 2);margin-left:calc(0px - var(--knob-handle-size) / 2);position:absolute;width:calc(var(--knob-handle-size));height:calc(var(--knob-handle-size));text-align:center}.range-knob-handle[dir=rtl].sc-nano-range{left:unset;right:unset;right:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.range-knob-handle.sc-nano-range{margin-left:unset;-webkit-margin-start:calc(0px - var(--knob-handle-size) / 2);margin-inline-start:calc(0px - var(--knob-handle-size) / 2)}}.range-knob-handle[dir=rtl].sc-nano-range{left:unset}.range-knob-handle.sc-nano-range:active,.range-knob-handle.sc-nano-range:focus{outline:none}.range-knob-handle.sc-nano-range:active .range-knob.sc-nano-range,.range-knob-handle.sc-nano-range:focus .range-knob.sc-nano-range{-webkit-box-shadow:var(--knob-box-shadow), var(--focus-style);box-shadow:var(--knob-box-shadow), var(--focus-style)}.range-tick.sc-nano-range{position:absolute;top:calc((var(--height) - var(--bar-height)) / 2);width:var(--bar-height);height:var(--bar-height);background:var(--bar-background-active);z-index:1;pointer-events:none}.range-tick.sc-nano-range:first-of-type{border-top-left-radius:var(--bar-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bar-border-radius)}.range-tick.sc-nano-range:first-of-type[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--bar-border-radius);border-bottom-right-radius:var(--bar-border-radius);border-bottom-left-radius:0}.range-tick.sc-nano-range:last-of-type{border-top-left-radius:0;border-top-right-radius:var(--bar-border-radius);border-bottom-right-radius:var(--bar-border-radius);border-bottom-left-radius:0}.range-tick.sc-nano-range:last-of-type[dir=rtl]{border-top-left-radius:var(--bar-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bar-border-radius)}.range-tick-active.sc-nano-range{background:transparent}.range-pin.sc-nano-range{-webkit-transform:translate3d(0, 0, 0) scale(0.01);transform:translate3d(0, 0, 0) scale(0.01);-webkit-transform-origin:center top;transform-origin:center top;padding:0.66em 0;border-radius:50%;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;position:relative;min-width:2.33em;height:2.33em;-webkit-transition:background 120ms ease, -webkit-transform 120ms ease;transition:background 120ms ease, -webkit-transform 120ms ease;transition:transform 120ms ease, background 120ms ease;transition:transform 120ms ease, background 120ms ease, -webkit-transform 120ms ease;background:var(--pin-background);color:var(--pin-color);font-size:0.75em}.range-pin.sc-nano-range::before{left:50%;top:0.25em;margin-left:-1.08em;border-radius:50% 50% 50% 0;position:absolute;width:2.16em;height:2.16em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transition:background 120ms ease;transition:background 120ms ease;background:var(--pin-background);content:"";z-index:-1}.range-pin.sc-nano-range::before[dir=rtl]{left:unset;right:unset;right:50%}.range-pin.sc-nano-range::before[dir=rtl]{left:unset}.range-knob-pressed.sc-nano-range .range-pin.sc-nano-range{-webkit-transform:translate3d(0, -50%, 0) scale(1);transform:translate3d(0, -50%, 0) scale(1);-webkit-transform:translate3d(0, calc((100% - var(--bar-height)) * -1), 0) scale(1);transform:translate3d(0, calc((100% - var(--bar-height)) * -1), 0) scale(1)}.range-disabled.sc-nano-range-h{pointer-events:none}.range-disabled.sc-nano-range-h .range-bar-active.sc-nano-range,.range-disabled.sc-nano-range-h .range-bar.sc-nano-range,.range-disabled.sc-nano-range-h .range-tick.sc-nano-range{background-color:rgba(var(--rgb-inactive), 0.5)}.range-disabled.sc-nano-range-h .range-knob.sc-nano-range{-webkit-transform:scale(0.55);transform:scale(0.55);outline:5px solid #fff;background-color:rgba(var(--rgb-inactive), 0.5)}.nano-color.sc-nano-range-h .range-bar-active.sc-nano-range,.nano-color.sc-nano-range-h .range-knob.sc-nano-range,.nano-color.sc-nano-range-h .range-pin.sc-nano-range,.nano-color.sc-nano-range-h .range-pin.sc-nano-range::before,.nano-color.sc-nano-range-h .range-tick.sc-nano-range{background:var(--nano-color-base);color:var(--nano-color-contrast)}.nano-color.sc-nano-range-h .range-bar.sc-nano-range{background:rgba(var(--nano-color-base-rgb), 0.26)}.nano-color.sc-nano-range-h .range-knob-handle.sc-nano-range:active .range-knob.sc-nano-range,.nano-color.sc-nano-range-h .range-knob-handle.sc-nano-range:focus .range-knob.sc-nano-range{-webkit-box-shadow:var(--knob-box-shadow), 0 0 0 5px rgba(var(--nano-color-tint-rgb), 0.56);box-shadow:var(--knob-box-shadow), 0 0 0 5px rgba(var(--nano-color-tint-rgb), 0.56)}';var Range=function(){function r(r){var e=this;registerInstance(this,r);this.nanoChange=createEvent(this,"nanoChange",7);this.nanoStyle=createEvent(this,"nanoStyle",7);this.nanoFocus=createEvent(this,"nanoFocus",7);this.nanoBlur=createEvent(this,"nanoBlur",7);this.noUpdate=false;this.hasFocus=false;this.ratioA=0;this.ratioB=0;this.debounce=0;this.name="";this.dualKnobs=false;this.min=0;this.max=100;this.pin=false;this.snaps=false;this.step=1;this.ticks=false;this.disabled=false;this.value=0;this.clampBounds=function(r){return clamp(e.min,r,e.max)};this.ensureValueInBounds=function(r){if(e.dualKnobs){return{lower:e.clampBounds(r.lower),upper:e.clampBounds(r.upper)}}else{return e.clampBounds(r)}};this.handleKeyboard=function(r,n){var a=e.step;a=a>0?a:1;a=a/(e.max-e.min);if(!n){a*=-1}if(r==="A"){e.ratioA=clamp(0,e.ratioA+a,1)}else{e.ratioB=clamp(0,e.ratioB+a,1)}e.updateValue()};this.onBlur=function(){if(e.hasFocus){e.hasFocus=false;e.nanoBlur.emit();e.emitStyle()}};this.onFocus=function(){if(!e.hasFocus){e.hasFocus=true;e.nanoFocus.emit();e.emitStyle()}}}r.prototype.debounceChanged=function(){this.nanoChange=debounceEvent(this.nanoChange,this.debounce)};r.prototype.minChanged=function(){if(!this.noUpdate){this.updateRatio()}};r.prototype.maxChanged=function(){if(!this.noUpdate){this.updateRatio()}};r.prototype.disabledChanged=function(){if(this.gesture){this.gesture.enable(!this.disabled)}this.emitStyle()};r.prototype.valueChanged=function(r){if(!this.noUpdate){this.updateRatio()}r=this.ensureValueInBounds(r);this.nanoChange.emit({value:r})};r.prototype.connectedCallback=function(){this.updateRatio();this.debounceChanged();this.disabledChanged()};r.prototype.disconnectedCallback=function(){if(this.gesture){this.gesture.destroy();this.gesture=undefined}};r.prototype.componentDidLoad=function(){return __awaiter(this,void 0,void 0,(function(){var r,e;var n=this;return __generator(this,(function(a){switch(a.label){case 0:r=this.rangeSlider;if(!r)return[3,2];e=this;return[4,import("./index-612f2729.js")];case 1:e.gesture=a.sent().createGesture({el:r,gestureName:"range",gesturePriority:100,threshold:0,onStart:function(r){return n.onStart(r)},onMove:function(r){return n.onMove(r)},onEnd:function(r){return n.onEnd(r)}});this.gesture.enable(!this.disabled);a.label=2;case 2:return[2]}}))}))};r.prototype.getValue=function(){var r=this.value||0;if(this.dualKnobs){if(typeof r==="object"){return r}return{lower:0,upper:r}}else{if(typeof r==="object"){return r.upper}return r}};r.prototype.emitStyle=function(){this.nanoStyle.emit({interactive:true,"interactive-disabled":this.disabled})};r.prototype.onStart=function(r){var e=this.rect=this.rangeSlider.getBoundingClientRect();var n=r.currentX;var a=clamp(0,(n-e.left)/e.width,1);if(document.dir==="rtl"){a=1-a}this.pressedKnob=!this.dualKnobs||Math.abs(this.ratioA-a)<Math.abs(this.ratioB-a)?"A":"B";this.setFocus(this.pressedKnob);this.update(n)};r.prototype.onMove=function(r){this.update(r.currentX)};r.prototype.onEnd=function(r){this.update(r.currentX);this.pressedKnob=undefined};r.prototype.update=function(r){var e=this.rect;var n=clamp(0,(r-e.left)/e.width,1);if(document.dir==="rtl"){n=1-n}if(this.snaps){n=valueToRatio(ratioToValue(n,this.min,this.max,this.step),this.min,this.max)}if(this.pressedKnob==="A"){this.ratioA=n}else{this.ratioB=n}this.updateValue()};Object.defineProperty(r.prototype,"valA",{get:function(){return ratioToValue(this.ratioA,this.min,this.max,this.step)},enumerable:false,configurable:true});Object.defineProperty(r.prototype,"valB",{get:function(){return ratioToValue(this.ratioB,this.min,this.max,this.step)},enumerable:false,configurable:true});Object.defineProperty(r.prototype,"ratioLower",{get:function(){if(this.dualKnobs){return Math.min(this.ratioA,this.ratioB)}return 0},enumerable:false,configurable:true});Object.defineProperty(r.prototype,"ratioUpper",{get:function(){if(this.dualKnobs){return Math.max(this.ratioA,this.ratioB)}return this.ratioA},enumerable:false,configurable:true});r.prototype.updateRatio=function(){var r=this.getValue();var e=this,n=e.min,a=e.max;if(this.dualKnobs){this.ratioA=valueToRatio(r.lower,n,a);this.ratioB=valueToRatio(r.upper,n,a)}else{this.ratioA=valueToRatio(r,n,a)}};r.prototype.updateValue=function(){this.noUpdate=true;var r=this,e=r.valA,n=r.valB;this.value=!this.dualKnobs?e:{lower:Math.min(e,n),upper:Math.max(e,n)};this.noUpdate=false};r.prototype.setFocus=function(r){if(this.el.shadowRoot){var e=this.el.shadowRoot.querySelector(r==="A"?".range-knob-a":".range-knob-b");if(e){e.focus()}}};r.prototype.render=function(){var r;var e=this;var n=this,a=n.min,t=n.max,o=n.step,i=n.el,s=n.handleKeyboard,c=n.pressedKnob,l=n.disabled,b=n.pin,d=n.ratioLower,g=n.ratioUpper;var u=d*100+"%";var p=100-g*100+"%";var f=document;var m=f.dir==="rtl";var v=m?"right":"left";var k=m?"left":"right";var w=function(r){var e;return e={},e[v]=r[v],e};var x=(r={},r[v]=u,r[k]=p,r);var y=[];if(this.snaps&&this.ticks){for(var z=a;z<=t;z+=o){var B=valueToRatio(z,a,t);var A={ratio:B,active:B>=d&&B<=g};A[v]=B*100+"%";y.push(A)}}renderHiddenInput(true,i,this.name,JSON.stringify(this.getValue()),l);return h(Host,{onFocusin:this.onFocus,onFocusout:this.onBlur,class:createColorClasses(this.color,{"range-disabled":l,"range-pressed":c!==undefined,"range-has-pin":b,"range-snaps":this.snaps})},h("div",{class:"range-wrap"},h("slot",{name:"start"}),h("div",{class:"range-slider",ref:function(r){return e.rangeSlider=r}},y.map((function(r){return h("span",{style:w(r),role:"presentation",class:{"range-tick":true,"range-tick-active":r.active},part:r.active?"tick-active":"tick"})})),h("div",{class:"range-bar",role:"presentation",part:"bar"}),h("div",{class:"range-bar range-bar-active",role:"presentation",style:x,part:"bar-active"}),renderKnob(m,{knob:"A",pressed:c==="A",value:this.valA,ratio:this.ratioA,pin:b,disabled:l,handleKeyboard:s,min:a,max:t}),this.dualKnobs&&renderKnob(m,{knob:"B",pressed:c==="B",value:this.valB,ratio:this.ratioB,pin:b,disabled:l,handleKeyboard:s,min:a,max:t})),h("slot",{name:"end"})))};Object.defineProperty(r.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(r,"watchers",{get:function(){return{debounce:["debounceChanged"],min:["minChanged"],max:["maxChanged"],disabled:["disabledChanged"],value:["valueChanged"]}},enumerable:false,configurable:true});return r}();var renderKnob=function(r,e){var n=e.knob,a=e.value,t=e.ratio,o=e.min,i=e.max,s=e.disabled,c=e.pressed,l=e.pin,b=e.handleKeyboard;var d=r?"right":"left";var g=function(){var r={};r[d]=t*100+"%";return r};return h("div",{onKeyDown:function(r){var e=r.key;if(e==="ArrowLeft"||e==="ArrowDown"){b(n,false);r.preventDefault();r.stopPropagation()}else if(e==="ArrowRight"||e==="ArrowUp"){b(n,true);r.preventDefault();r.stopPropagation()}},class:{"range-knob-handle":true,"range-knob-a":n==="A","range-knob-b":n==="B","range-knob-pressed":c,"range-knob-min":a===o,"range-knob-max":a===i},style:g(),role:"slider",tabindex:s?-1:0,"aria-valuemin":o,"aria-valuemax":i,"aria-disabled":s?"true":null,"aria-valuenow":a},l&&h("div",{class:"range-pin",role:"presentation",part:"pin"},Math.round(a)),h("div",{class:"range-knob",role:"presentation",part:"knob"}))};var ratioToValue=function(r,e,n,a){var t=(n-e)*r;if(a>0){t=Math.round(t/a)*a+e}return clamp(e,t,n)};var valueToRatio=function(r,e,n){return clamp(0,(r-e)/(n-e),1)};Range.style=rangeCss;export{Range as nano_range};
4
+ */import{r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-c42becad.js";import{c as clamp,a as renderHiddenInput}from"./index-bf53664b.js";import{c as createColorClasses}from"./theme-1d4c8719.js";import{a as debounceEvent}from"./throttle-d3d933cd.js";var rangeCss='.sc-nano-range-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-range,*.sc-nano-range::before,*.sc-nano-range::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-range{display:none !important}.sc-nano-range-h{--knob-handle-size:(var(--knob-size) * 2);--rgb-inactive:165, 165, 165;--knob-border-radius:50%;--knob-background:var(--nano-color-primary, #007495);--knob-box-shadow:0 2px 4px 0 rgba(0, 0, 0, 0.3);--knob-size:30px;--bar-height:8px;--bar-background:#e2e1e0;--bar-background-active:#a5a5a5;--bar-border-radius:4px;--height:42px;--pin-background:var(--nano-color-primary, #007495);--pin-color:var(--nano-color-primary-contrast, #fff);--focus-style:0 0 0 5px var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))}.range-wrap.sc-nano-range{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-flex:3;-ms-flex:3;flex:3;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.range-wrap.sc-nano-range-s>ion-icon[slot],.range-wrap .sc-nano-range-s>ion-icon[slot]{font-size:1.5em}.range-wrap.sc-nano-range-s>[slot=start],.range-wrap .sc-nano-range-s>[slot=start]{margin-left:0;margin-right:14px;margin-top:0;margin-bottom:0;font-size:0.9em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.range-wrap.sc-nano-range-s>[slot=start],.range-wrap .sc-nano-range-s>[slot=start]{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:14px;margin-inline-end:14px}}.range-wrap.sc-nano-range-s>[slot=end],.range-wrap .sc-nano-range-s>[slot=end]{margin-left:14px;margin-right:0;margin-top:0;margin-bottom:0;font-size:0.9em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.range-wrap.sc-nano-range-s>[slot=end],.range-wrap .sc-nano-range-s>[slot=end]{margin-left:unset;margin-right:unset;-webkit-margin-start:14px;margin-inline-start:14px;-webkit-margin-end:0;margin-inline-end:0}}.range-slider.sc-nano-range{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;height:var(--height);contain:size layout style;cursor:-webkit-grab;cursor:grab;-ms-touch-action:pan-y;touch-action:pan-y}.range-pressed.sc-nano-range-h .range-slider.sc-nano-range{cursor:-webkit-grabbing;cursor:grabbing}.range-bar.sc-nano-range{border-radius:var(--bar-border-radius);left:0;top:calc((var(--height) - var(--bar-height)) / 2);position:absolute;width:100%;height:var(--bar-height);background:var(--bar-background);pointer-events:none}.range-bar[dir=rtl].sc-nano-range{left:unset;right:unset;right:0}.range-snaps.sc-nano-range-h .range-bar.sc-nano-range{border-top-left-radius:var(--bar-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bar-border-radius)}.range-snaps.sc-nano-range-h .range-bar[dir=rtl].sc-nano-range{border-top-left-radius:0;border-top-right-radius:var(--bar-border-radius);border-bottom-right-radius:var(--bar-border-radius);border-bottom-left-radius:0}.range-bar[dir=rtl].sc-nano-range{left:unset}.range-bar-active.sc-nano-range{bottom:0;width:auto;background:var(--bar-background-active)}.range-bar-active .range-pressed.sc-nano-range-h{will-change:left, right}.range-knob.sc-nano-range{border-radius:var(--knob-border-radius);left:calc(50% - var(--knob-size) / 2);top:calc(50% - var(--knob-size) / 2);position:absolute;width:var(--knob-size);height:var(--knob-size);background:var(--knob-background);-webkit-box-shadow:var(--knob-box-shadow);box-shadow:var(--knob-box-shadow);z-index:2;pointer-events:none;-webkit-transform:scale(0.67);transform:scale(0.67);-webkit-transition-duration:120ms;transition-duration:120ms;-webkit-transition-property:background-color, border, -webkit-transform;transition-property:background-color, border, -webkit-transform;transition-property:transform, background-color, border;transition-property:transform, background-color, border, -webkit-transform;-webkit-transition-timing-function:ease;transition-timing-function:ease}.range-knob[dir=rtl].sc-nano-range{left:unset;right:unset;right:calc(50% - var(--knob-size) / 2)}.range-knob[dir=rtl].sc-nano-range{left:unset}.sc-nano-range-h:not(.range-has-pin) .range-knob-pressed.sc-nano-range .range-knob.sc-nano-range{-webkit-transform:scale(1);transform:scale(1)}.range-knob-handle.sc-nano-range{left:0;top:calc((var(--height) - var(--knob-handle-size)) / 2);margin-left:calc(0px - var(--knob-handle-size) / 2);position:absolute;width:calc(var(--knob-handle-size));height:calc(var(--knob-handle-size));text-align:center}.range-knob-handle[dir=rtl].sc-nano-range{left:unset;right:unset;right:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.range-knob-handle.sc-nano-range{margin-left:unset;-webkit-margin-start:calc(0px - var(--knob-handle-size) / 2);margin-inline-start:calc(0px - var(--knob-handle-size) / 2)}}.range-knob-handle[dir=rtl].sc-nano-range{left:unset}.range-knob-handle.sc-nano-range:active,.range-knob-handle.sc-nano-range:focus{outline:none}.range-knob-handle.sc-nano-range:active .range-knob.sc-nano-range,.range-knob-handle.sc-nano-range:focus .range-knob.sc-nano-range{-webkit-box-shadow:var(--knob-box-shadow), var(--focus-style);box-shadow:var(--knob-box-shadow), var(--focus-style)}.range-tick.sc-nano-range{position:absolute;top:calc((var(--height) - var(--bar-height)) / 2);width:var(--bar-height);height:var(--bar-height);background:var(--bar-background-active);z-index:1;pointer-events:none}.range-tick.sc-nano-range:first-of-type{border-top-left-radius:var(--bar-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bar-border-radius)}.range-tick.sc-nano-range:first-of-type[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--bar-border-radius);border-bottom-right-radius:var(--bar-border-radius);border-bottom-left-radius:0}.range-tick.sc-nano-range:last-of-type{border-top-left-radius:0;border-top-right-radius:var(--bar-border-radius);border-bottom-right-radius:var(--bar-border-radius);border-bottom-left-radius:0}.range-tick.sc-nano-range:last-of-type[dir=rtl]{border-top-left-radius:var(--bar-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bar-border-radius)}.range-tick-active.sc-nano-range{background:transparent}.range-pin.sc-nano-range{-webkit-transform:translate3d(0, 0, 0) scale(0.01);transform:translate3d(0, 0, 0) scale(0.01);-webkit-transform-origin:center top;transform-origin:center top;padding:0.66em 0;border-radius:50%;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;position:relative;min-width:2.33em;height:2.33em;-webkit-transition:background 120ms ease, -webkit-transform 120ms ease;transition:background 120ms ease, -webkit-transform 120ms ease;transition:transform 120ms ease, background 120ms ease;transition:transform 120ms ease, background 120ms ease, -webkit-transform 120ms ease;background:var(--pin-background);color:var(--pin-color);font-size:0.75em}.range-pin.sc-nano-range::before{left:50%;top:0.25em;margin-left:-1.08em;border-radius:50% 50% 50% 0;position:absolute;width:2.16em;height:2.16em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transition:background 120ms ease;transition:background 120ms ease;background:var(--pin-background);content:"";z-index:-1}.range-pin.sc-nano-range::before[dir=rtl]{left:unset;right:unset;right:50%}.range-pin.sc-nano-range::before[dir=rtl]{left:unset}.range-knob-pressed.sc-nano-range .range-pin.sc-nano-range{-webkit-transform:translate3d(0, -50%, 0) scale(1);transform:translate3d(0, -50%, 0) scale(1);-webkit-transform:translate3d(0, calc((100% - var(--bar-height)) * -1), 0) scale(1);transform:translate3d(0, calc((100% - var(--bar-height)) * -1), 0) scale(1)}.range-disabled.sc-nano-range-h{pointer-events:none}.range-disabled.sc-nano-range-h .range-bar-active.sc-nano-range,.range-disabled.sc-nano-range-h .range-bar.sc-nano-range,.range-disabled.sc-nano-range-h .range-tick.sc-nano-range{background-color:rgba(var(--rgb-inactive), 0.5)}.range-disabled.sc-nano-range-h .range-knob.sc-nano-range{-webkit-transform:scale(0.55);transform:scale(0.55);outline:5px solid #fff;background-color:rgba(var(--rgb-inactive), 0.5)}.nano-color.sc-nano-range-h .range-bar-active.sc-nano-range,.nano-color.sc-nano-range-h .range-knob.sc-nano-range,.nano-color.sc-nano-range-h .range-pin.sc-nano-range,.nano-color.sc-nano-range-h .range-pin.sc-nano-range::before,.nano-color.sc-nano-range-h .range-tick.sc-nano-range{background:var(--nano-color-base);color:var(--nano-color-contrast)}.nano-color.sc-nano-range-h .range-bar.sc-nano-range{background:rgba(var(--nano-color-base-rgb), 0.26)}.nano-color.sc-nano-range-h .range-knob-handle.sc-nano-range:active .range-knob.sc-nano-range,.nano-color.sc-nano-range-h .range-knob-handle.sc-nano-range:focus .range-knob.sc-nano-range{-webkit-box-shadow:var(--knob-box-shadow), 0 0 0 5px rgba(var(--nano-color-tint-rgb), 0.56);box-shadow:var(--knob-box-shadow), 0 0 0 5px rgba(var(--nano-color-tint-rgb), 0.56)}';var Range=function(){function r(r){var e=this;registerInstance(this,r);this.nanoChange=createEvent(this,"nanoChange",7);this.nanoStyle=createEvent(this,"nanoStyle",7);this.nanoFocus=createEvent(this,"nanoFocus",7);this.nanoBlur=createEvent(this,"nanoBlur",7);this.noUpdate=false;this.hasFocus=false;this.ratioA=0;this.ratioB=0;this.debounce=0;this.name="";this.dualKnobs=false;this.min=0;this.max=100;this.pin=false;this.snaps=false;this.step=1;this.ticks=false;this.disabled=false;this.value=0;this.clampBounds=function(r){return clamp(e.min,r,e.max)};this.ensureValueInBounds=function(r){if(e.dualKnobs){return{lower:e.clampBounds(r.lower),upper:e.clampBounds(r.upper)}}else{return e.clampBounds(r)}};this.handleKeyboard=function(r,n){var a=e.step;a=a>0?a:1;a=a/(e.max-e.min);if(!n){a*=-1}if(r==="A"){e.ratioA=clamp(0,e.ratioA+a,1)}else{e.ratioB=clamp(0,e.ratioB+a,1)}e.updateValue()};this.onBlur=function(){if(e.hasFocus){e.hasFocus=false;e.nanoBlur.emit();e.emitStyle()}};this.onFocus=function(){if(!e.hasFocus){e.hasFocus=true;e.nanoFocus.emit();e.emitStyle()}}}r.prototype.debounceChanged=function(){this.nanoChange=debounceEvent(this.nanoChange,this.debounce)};r.prototype.minChanged=function(){if(!this.noUpdate){this.updateRatio()}};r.prototype.maxChanged=function(){if(!this.noUpdate){this.updateRatio()}};r.prototype.disabledChanged=function(){if(this.gesture){this.gesture.enable(!this.disabled)}this.emitStyle()};r.prototype.valueChanged=function(r){if(!this.noUpdate){this.updateRatio()}r=this.ensureValueInBounds(r);this.nanoChange.emit({value:r})};r.prototype.connectedCallback=function(){this.updateRatio();this.debounceChanged();this.disabledChanged()};r.prototype.disconnectedCallback=function(){if(this.gesture){this.gesture.destroy();this.gesture=undefined}};r.prototype.componentDidLoad=function(){return __awaiter(this,void 0,void 0,(function(){var r,e;var n=this;return __generator(this,(function(a){switch(a.label){case 0:r=this.rangeSlider;if(!r)return[3,2];e=this;return[4,import("./index-612f2729.js")];case 1:e.gesture=a.sent().createGesture({el:r,gestureName:"range",gesturePriority:100,threshold:0,onStart:function(r){return n.onStart(r)},onMove:function(r){return n.onMove(r)},onEnd:function(r){return n.onEnd(r)}});this.gesture.enable(!this.disabled);a.label=2;case 2:return[2]}}))}))};r.prototype.getValue=function(){var r=this.value||0;if(this.dualKnobs){if(typeof r==="object"){return r}return{lower:0,upper:r}}else{if(typeof r==="object"){return r.upper}return r}};r.prototype.emitStyle=function(){this.nanoStyle.emit({interactive:true,"interactive-disabled":this.disabled})};r.prototype.onStart=function(r){var e=this.rect=this.rangeSlider.getBoundingClientRect();var n=r.currentX;var a=clamp(0,(n-e.left)/e.width,1);if(document.dir==="rtl"){a=1-a}this.pressedKnob=!this.dualKnobs||Math.abs(this.ratioA-a)<Math.abs(this.ratioB-a)?"A":"B";this.setFocus(this.pressedKnob);this.update(n)};r.prototype.onMove=function(r){this.update(r.currentX)};r.prototype.onEnd=function(r){this.update(r.currentX);this.pressedKnob=undefined};r.prototype.update=function(r){var e=this.rect;var n=clamp(0,(r-e.left)/e.width,1);if(document.dir==="rtl"){n=1-n}if(this.snaps){n=valueToRatio(ratioToValue(n,this.min,this.max,this.step),this.min,this.max)}if(this.pressedKnob==="A"){this.ratioA=n}else{this.ratioB=n}this.updateValue()};Object.defineProperty(r.prototype,"valA",{get:function(){return ratioToValue(this.ratioA,this.min,this.max,this.step)},enumerable:false,configurable:true});Object.defineProperty(r.prototype,"valB",{get:function(){return ratioToValue(this.ratioB,this.min,this.max,this.step)},enumerable:false,configurable:true});Object.defineProperty(r.prototype,"ratioLower",{get:function(){if(this.dualKnobs){return Math.min(this.ratioA,this.ratioB)}return 0},enumerable:false,configurable:true});Object.defineProperty(r.prototype,"ratioUpper",{get:function(){if(this.dualKnobs){return Math.max(this.ratioA,this.ratioB)}return this.ratioA},enumerable:false,configurable:true});r.prototype.updateRatio=function(){var r=this.getValue();var e=this,n=e.min,a=e.max;if(this.dualKnobs){this.ratioA=valueToRatio(r.lower,n,a);this.ratioB=valueToRatio(r.upper,n,a)}else{this.ratioA=valueToRatio(r,n,a)}};r.prototype.updateValue=function(){this.noUpdate=true;var r=this,e=r.valA,n=r.valB;this.value=!this.dualKnobs?e:{lower:Math.min(e,n),upper:Math.max(e,n)};this.noUpdate=false};r.prototype.setFocus=function(r){if(this.el.shadowRoot){var e=this.el.shadowRoot.querySelector(r==="A"?".range-knob-a":".range-knob-b");if(e){e.focus()}}};r.prototype.render=function(){var r;var e=this;var n=this,a=n.min,t=n.max,o=n.step,i=n.el,s=n.handleKeyboard,c=n.pressedKnob,l=n.disabled,b=n.pin,d=n.ratioLower,g=n.ratioUpper;var u=d*100+"%";var p=100-g*100+"%";var f=document;var m=f.dir==="rtl";var v=m?"right":"left";var k=m?"left":"right";var w=function(r){var e;return e={},e[v]=r[v],e};var x=(r={},r[v]=u,r[k]=p,r);var y=[];if(this.snaps&&this.ticks){for(var z=a;z<=t;z+=o){var B=valueToRatio(z,a,t);var A={ratio:B,active:B>=d&&B<=g};A[v]=B*100+"%";y.push(A)}}renderHiddenInput(true,i,this.name,JSON.stringify(this.getValue()),l);return h(Host,{onFocusin:this.onFocus,onFocusout:this.onBlur,class:createColorClasses(this.color,{"range-disabled":l,"range-pressed":c!==undefined,"range-has-pin":b,"range-snaps":this.snaps})},h("div",{class:"range-wrap"},h("slot",{name:"start"}),h("div",{class:"range-slider",ref:function(r){return e.rangeSlider=r}},y.map((function(r){return h("span",{style:w(r),role:"presentation",class:{"range-tick":true,"range-tick-active":r.active},part:r.active?"tick-active":"tick"})})),h("div",{class:"range-bar",role:"presentation",part:"bar"}),h("div",{class:"range-bar range-bar-active",role:"presentation",style:x,part:"bar-active"}),renderKnob(m,{knob:"A",pressed:c==="A",value:this.valA,ratio:this.ratioA,pin:b,disabled:l,handleKeyboard:s,min:a,max:t}),this.dualKnobs&&renderKnob(m,{knob:"B",pressed:c==="B",value:this.valB,ratio:this.ratioB,pin:b,disabled:l,handleKeyboard:s,min:a,max:t})),h("slot",{name:"end"})))};Object.defineProperty(r.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(r,"watchers",{get:function(){return{debounce:["debounceChanged"],min:["minChanged"],max:["maxChanged"],disabled:["disabledChanged"],value:["valueChanged"]}},enumerable:false,configurable:true});return r}();var renderKnob=function(r,e){var n=e.knob,a=e.value,t=e.ratio,o=e.min,i=e.max,s=e.disabled,c=e.pressed,l=e.pin,b=e.handleKeyboard;var d=r?"right":"left";var g=function(){var r={};r[d]=t*100+"%";return r};return h("div",{onKeyDown:function(r){var e=r.key;if(e==="ArrowLeft"||e==="ArrowDown"){b(n,false);r.preventDefault();r.stopPropagation()}else if(e==="ArrowRight"||e==="ArrowUp"){b(n,true);r.preventDefault();r.stopPropagation()}},class:{"range-knob-handle":true,"range-knob-a":n==="A","range-knob-b":n==="B","range-knob-pressed":c,"range-knob-min":a===o,"range-knob-max":a===i},style:g(),role:"slider",tabindex:s?-1:0,"aria-valuemin":o,"aria-valuemax":i,"aria-disabled":s?"true":null,"aria-valuenow":a},l&&h("div",{class:"range-pin",role:"presentation",part:"pin"},Math.round(a)),h("div",{class:"range-knob",role:"presentation",part:"knob"}))};var ratioToValue=function(r,e,n,a){var t=(n-e)*r;if(a>0){t=Math.round(t/a)*a+e}return clamp(e,t,n)};var valueToRatio=function(r,e,n){return clamp(0,(r-e)/(n-e),1)};Range.style=rangeCss;export{Range as nano_range};
5
5
  //# sourceMappingURL=nano-range.entry.js.map
@@ -1,5 +1,5 @@
1
1
  var __awaiter=this&&this.__awaiter||function(n,t,e,i){function o(n){return n instanceof e?n:new e((function(t){t(n)}))}return new(e||(e=Promise))((function(e,a){function r(n){try{l(i.next(n))}catch(t){a(t)}}function s(n){try{l(i["throw"](n))}catch(t){a(t)}}function l(n){n.done?e(n.value):o(n.value).then(r,s)}l((i=i.apply(n,t||[])).next())}))};var __generator=this&&this.__generator||function(n,t){var e={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},i,o,a,r;return r={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function s(n){return function(t){return l([n,t])}}function l(r){if(i)throw new TypeError("Generator is already executing.");while(e)try{if(i=1,o&&(a=r[0]&2?o["return"]:r[0]?o["throw"]||((a=o["return"])&&a.call(o),0):o.next)&&!(a=a.call(o,r[1])).done)return a;if(o=0,a)r=[r[0]&2,a.value];switch(r[0]){case 0:case 1:a=r;break;case 4:e.label++;return{value:r[1],done:false};case 5:e.label++;o=r[1];r=[0];continue;case 7:r=e.ops.pop();e.trys.pop();continue;default:if(!(a=e.trys,a=a.length>0&&a[a.length-1])&&(r[0]===6||r[0]===2)){e=0;continue}if(r[0]===3&&(!a||r[1]>a[0]&&r[1]<a[3])){e.label=r[1];break}if(r[0]===6&&e.label<a[1]){e.label=a[1];a=r;break}if(a&&e.label<a[2]){e.label=a[2];e.ops.push(r);break}if(a[2])e.ops.pop();e.trys.pop();continue}r=t.call(n,e)}catch(s){r=[6,s];o=0}finally{i=a=0}if(r[0]&5)throw r[1];return{value:r[0]?r[1]:void 0,done:true}}};
2
2
  /*!
3
3
  * Web Components for Nanopore digital Web Apps
4
- */import{r as registerInstance,c as createEvent,h,g as getElement}from"./index-5f8d16e7.js";import{f as focusVisible}from"./focus-visible-8b2c14da.js";import{c as clamp}from"./index-bf53664b.js";var ratingCss=".sc-nano-rating-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-rating,*.sc-nano-rating::before,*.sc-nano-rating::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-rating{display:none !important}.sc-nano-rating-h{--symbol-color:#b5aea7;--symbol-color-active:#f5cc49;--symbol-spacing:0.25rem;--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:inline-block}.rating-wrap.sc-nano-rating{position:relative;margin:0 calc(var(--symbol-spacing) * -1)}.rating.sc-nano-rating{position:relative;border-radius:5px;vertical-align:middle;width:100%;-webkit-transition:-webkit-box-shadow 0.15s ease;transition:-webkit-box-shadow 0.15s ease;transition:box-shadow 0.15s ease;transition:box-shadow 0.15s ease, -webkit-box-shadow 0.15s ease}.rating.sc-nano-rating:focus{outline:none}.rating.focus-visible.sc-nano-rating:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.rating__symbols.sc-nano-rating{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:var(--symbol-size);color:var(--symbol-color);white-space:nowrap;cursor:pointer;line-height:0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.rating__symbols--inactive.sc-nano-rating .rating__symbol.sc-nano-rating>.sc-nano-rating:not(nano-icon){background-color:currentColor !important}.rating__symbols.sc-nano-rating>*.sc-nano-rating{margin:var(--symbol-spacing)}.rating__symbols--indicator.sc-nano-rating{position:absolute;top:0;left:0;color:var(--symbol-color-active);pointer-events:none;width:100%}.rating__symbol.sc-nano-rating{-webkit-transition:0.2s -webkit-transform;transition:0.2s -webkit-transform;transition:0.2s transform;transition:0.2s transform, 0.2s -webkit-transform;text-align:center}.rating__symbol--hover.sc-nano-rating{-webkit-transform:scale(1.2);transform:scale(1.2)}.rating--disabled.sc-nano-rating .rating__symbols.sc-nano-rating,.rating--readonly.sc-nano-rating .rating__symbols.sc-nano-rating{cursor:default}.rating--disabled.sc-nano-rating .rating__symbol.sc-nano-rating,.rating--readonly.sc-nano-rating .rating__symbol.sc-nano-rating{-webkit-transform:none !important;transform:none !important}.rating--disabled.sc-nano-rating{opacity:0.5}.rating--disabled.sc-nano-rating .rating__symbols.sc-nano-rating{cursor:not-allowed}";var CANSHADOW=!!document.head.attachShadow;var Rating=function(){function n(n){var t=this;registerInstance(this,n);this.nanoChange=createEvent(this,"nanoChange",7);this.nanoBlur=createEvent(this,"nanoBlur",7);this.nanoFocus=createEvent(this,"nanoFocus",7);this.hoverValue=0;this.isHovering=false;this.value=0;this.max=5;this.precision=1;this.readonly=false;this.disabled=false;this.name="";this.symbolName="solid/star";this.symbol=function(n){return'<nano-icon name="'+t.symbolName+'"></nano-icon>'};this.handleClick=function(n){if(t.disabled||t.readonly){return}var e=t.getValueFromMousePosition(n);t.value=e===t.value?0:e;t.isHovering=false};this.handleKeyDown=function(n){if(t.disabled||t.readonly){return}if(n.key==="ArrowLeft"){var e=n.shiftKey?1:t.precision;t.value=t.roundToPrecision(Math.max(0,t.value-e));n.preventDefault()}if(n.key==="ArrowRight"){var i=n.shiftKey?1:t.precision;t.value=t.roundToPrecision(Math.min(t.max,t.value+i));n.preventDefault()}if(n.key==="Home"){t.value=0;n.preventDefault()}if(n.key==="End"){t.value=t.max;n.preventDefault()}};this.handleMouseEnter=function(){t.isHovering=true};this.handleMouseLeave=function(){t.isHovering=false};this.handleFocus=function(){t.nanoFocus.emit()};this.handleBlur=function(){t.nanoBlur.emit()};this.handleMouseMove=function(n){t.hoverValue=t.getValueFromMousePosition(n)}}n.prototype.handleValueChange=function(){this.nanoChange.emit()};n.prototype.handleSymbolChange=function(){var n=this;this.symbol=function(t){return'<nano-icon name="'+n.symbolName+'"></nano-icon>'}};n.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){this.rating.focus();return[2]}))}))};n.prototype.removeFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){this.rating.blur();return[2]}))}))};n.prototype.getValueFromMousePosition=function(n){var t=this.rating.getBoundingClientRect().left;var e=this.rating.getBoundingClientRect().width;var i;i=this.roundToPrecision((n.clientX-t)/e*this.max,this.precision);if(this.isRtl)i=this.max+this.precision-i;return clamp(i,0,this.max)};n.prototype.roundToPrecision=function(n,t){if(t===void 0){t=.5}var e=1/t;return Math.ceil(n*e)/e};n.prototype.clip=function(n){if(!this.rating)return;var t=this.rating.getBoundingClientRect().width;if(this.isRtl)return"rect(0, "+t+"px, 2em, "+(t-t/100*(n/this.max*100))+"px)";return"rect(0, "+t/100*(n/this.max*100)+"px, 2em, 0)"};n.prototype._getRoot=function(){return this.host.shadowRoot?this.host.shadowRoot:this.host};n.prototype._fixClassNames=function(){var n=this.rating.className.split(" ").filter((function(n){return n.match(/^sc-nano/)}));var t=this._getRoot().querySelectorAll("*");if(!t)return;Array.from(t).map((function(t){n.map((function(n){return t.classList.add(n)}))}))};n.prototype.componentDidLoad=function(){var n=this;focusVisible.observe(this.rating);setTimeout((function(){return n.indicator.style.clip=n.clip(n.value)}),20)};n.prototype.connectedCallback=function(){this.isRtl=this.host.dir==="rtl"||this.host.ownerDocument.dir==="rtl"};n.prototype.disconnectedCallback=function(){focusVisible.unobserve(this.rating)};n.prototype.componentDidRender=function(){if(!this.host.shadowRoot||!CANSHADOW)this._fixClassNames()};n.prototype.render=function(){var n=this;this.isRtl=this.host.dir==="rtl"||this.host.ownerDocument.dir==="rtl";var t=Array.from(Array(this.max).keys());var e=0;if(this.disabled||this.readonly){e=this.value}else{e=this.isHovering?this.hoverValue:this.value}return h("div",{class:"rating-wrap"},h("div",{dir:this.isRtl?"rtl":null,ref:function(t){return n.rating=t},part:"base",class:{rating:true,"rating--readonly":this.readonly,"rating--disabled":this.disabled},"aria-disabled":this.disabled?"true":"false","aria-readonly":this.readonly?"true":"false","aria-valuenow":this.value,"aria-valuemin":0,"aria-valuemax":this.max,tabIndex:this.disabled?-1:0,onClick:this.handleClick,onKeyDown:this.handleKeyDown,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onMouseMove:this.handleMouseMove,onFocus:this.handleFocus,onBlur:this.handleBlur},h("span",{class:"rating__symbols rating__symbols--inactive"},t.map((function(t){return h("span",{class:{rating__symbol:true,"rating__symbol--hover":n.isHovering&&Math.ceil(e)===t+1},role:"presentation",onMouseEnter:n.handleMouseEnter,innerHTML:n.symbol(t+1)})}))),h("span",{ref:function(t){return n.indicator=t},class:"rating__symbols rating__symbols--indicator",style:{clip:this.clip(e)}},t.map((function(t){return h("span",{class:{rating__symbol:true,"rating__symbol--hover":n.isHovering&&Math.ceil(e)===t+1},role:"presentation",innerHTML:n.symbol(t+1)})}))),h("input",{type:"hidden",name:this.name,value:this.value,disabled:this.disabled||this.readonly})))};Object.defineProperty(n.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(n,"watchers",{get:function(){return{value:["handleValueChange"],symbolName:["handleSymbolChange"]}},enumerable:false,configurable:true});return n}();Rating.style=ratingCss;export{Rating as nano_rating};
4
+ */import{r as registerInstance,c as createEvent,h,g as getElement}from"./index-c42becad.js";import{f as focusVisible}from"./focus-visible-8b2c14da.js";import{c as clamp}from"./index-bf53664b.js";var ratingCss=".sc-nano-rating-h{-webkit-box-sizing:border-box;box-sizing:border-box}*.sc-nano-rating,*.sc-nano-rating::before,*.sc-nano-rating::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden].sc-nano-rating{display:none !important}.sc-nano-rating-h{--symbol-color:#b5aea7;--symbol-color-active:#f5cc49;--symbol-spacing:0.25rem;--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:inline-block}.rating-wrap.sc-nano-rating{position:relative;margin:0 calc(var(--symbol-spacing) * -1)}.rating.sc-nano-rating{position:relative;border-radius:5px;vertical-align:middle;width:100%;-webkit-transition:-webkit-box-shadow 0.15s ease;transition:-webkit-box-shadow 0.15s ease;transition:box-shadow 0.15s ease;transition:box-shadow 0.15s ease, -webkit-box-shadow 0.15s ease}.rating.sc-nano-rating:focus{outline:none}.rating.focus-visible.sc-nano-rating:focus{-webkit-box-shadow:var(--focus-shadow);box-shadow:var(--focus-shadow)}.rating__symbols.sc-nano-rating{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:var(--symbol-size);color:var(--symbol-color);white-space:nowrap;cursor:pointer;line-height:0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.rating__symbols--inactive.sc-nano-rating .rating__symbol.sc-nano-rating>.sc-nano-rating:not(nano-icon){background-color:currentColor !important}.rating__symbols.sc-nano-rating>*.sc-nano-rating{margin:var(--symbol-spacing)}.rating__symbols--indicator.sc-nano-rating{position:absolute;top:0;left:0;color:var(--symbol-color-active);pointer-events:none;width:100%}.rating__symbol.sc-nano-rating{-webkit-transition:0.2s -webkit-transform;transition:0.2s -webkit-transform;transition:0.2s transform;transition:0.2s transform, 0.2s -webkit-transform;text-align:center}.rating__symbol--hover.sc-nano-rating{-webkit-transform:scale(1.2);transform:scale(1.2)}.rating--disabled.sc-nano-rating .rating__symbols.sc-nano-rating,.rating--readonly.sc-nano-rating .rating__symbols.sc-nano-rating{cursor:default}.rating--disabled.sc-nano-rating .rating__symbol.sc-nano-rating,.rating--readonly.sc-nano-rating .rating__symbol.sc-nano-rating{-webkit-transform:none !important;transform:none !important}.rating--disabled.sc-nano-rating{opacity:0.5}.rating--disabled.sc-nano-rating .rating__symbols.sc-nano-rating{cursor:not-allowed}";var CANSHADOW=!!document.head.attachShadow;var Rating=function(){function n(n){var t=this;registerInstance(this,n);this.nanoChange=createEvent(this,"nanoChange",7);this.nanoBlur=createEvent(this,"nanoBlur",7);this.nanoFocus=createEvent(this,"nanoFocus",7);this.hoverValue=0;this.isHovering=false;this.value=0;this.max=5;this.precision=1;this.readonly=false;this.disabled=false;this.name="";this.symbolName="solid/star";this.symbol=function(n){return'<nano-icon name="'+t.symbolName+'"></nano-icon>'};this.handleClick=function(n){if(t.disabled||t.readonly){return}var e=t.getValueFromMousePosition(n);t.value=e===t.value?0:e;t.isHovering=false};this.handleKeyDown=function(n){if(t.disabled||t.readonly){return}if(n.key==="ArrowLeft"){var e=n.shiftKey?1:t.precision;t.value=t.roundToPrecision(Math.max(0,t.value-e));n.preventDefault()}if(n.key==="ArrowRight"){var i=n.shiftKey?1:t.precision;t.value=t.roundToPrecision(Math.min(t.max,t.value+i));n.preventDefault()}if(n.key==="Home"){t.value=0;n.preventDefault()}if(n.key==="End"){t.value=t.max;n.preventDefault()}};this.handleMouseEnter=function(){t.isHovering=true};this.handleMouseLeave=function(){t.isHovering=false};this.handleFocus=function(){t.nanoFocus.emit()};this.handleBlur=function(){t.nanoBlur.emit()};this.handleMouseMove=function(n){t.hoverValue=t.getValueFromMousePosition(n)}}n.prototype.handleValueChange=function(){this.nanoChange.emit()};n.prototype.handleSymbolChange=function(){var n=this;this.symbol=function(t){return'<nano-icon name="'+n.symbolName+'"></nano-icon>'}};n.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){this.rating.focus();return[2]}))}))};n.prototype.removeFocus=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(n){this.rating.blur();return[2]}))}))};n.prototype.getValueFromMousePosition=function(n){var t=this.rating.getBoundingClientRect().left;var e=this.rating.getBoundingClientRect().width;var i;i=this.roundToPrecision((n.clientX-t)/e*this.max,this.precision);if(this.isRtl)i=this.max+this.precision-i;return clamp(i,0,this.max)};n.prototype.roundToPrecision=function(n,t){if(t===void 0){t=.5}var e=1/t;return Math.ceil(n*e)/e};n.prototype.clip=function(n){if(!this.rating)return;var t=this.rating.getBoundingClientRect().width;if(this.isRtl)return"rect(0, "+t+"px, 2em, "+(t-t/100*(n/this.max*100))+"px)";return"rect(0, "+t/100*(n/this.max*100)+"px, 2em, 0)"};n.prototype._getRoot=function(){return this.host.shadowRoot?this.host.shadowRoot:this.host};n.prototype._fixClassNames=function(){var n=this.rating.className.split(" ").filter((function(n){return n.match(/^sc-nano/)}));var t=this._getRoot().querySelectorAll("*");if(!t)return;Array.from(t).map((function(t){n.map((function(n){return t.classList.add(n)}))}))};n.prototype.componentDidLoad=function(){var n=this;focusVisible.observe(this.rating);setTimeout((function(){return n.indicator.style.clip=n.clip(n.value)}),20)};n.prototype.connectedCallback=function(){this.isRtl=this.host.dir==="rtl"||this.host.ownerDocument.dir==="rtl"};n.prototype.disconnectedCallback=function(){focusVisible.unobserve(this.rating)};n.prototype.componentDidRender=function(){if(!this.host.shadowRoot||!CANSHADOW)this._fixClassNames()};n.prototype.render=function(){var n=this;this.isRtl=this.host.dir==="rtl"||this.host.ownerDocument.dir==="rtl";var t=Array.from(Array(this.max).keys());var e=0;if(this.disabled||this.readonly){e=this.value}else{e=this.isHovering?this.hoverValue:this.value}return h("div",{class:"rating-wrap"},h("div",{dir:this.isRtl?"rtl":null,ref:function(t){return n.rating=t},part:"base",class:{rating:true,"rating--readonly":this.readonly,"rating--disabled":this.disabled},"aria-disabled":this.disabled?"true":"false","aria-readonly":this.readonly?"true":"false","aria-valuenow":this.value,"aria-valuemin":0,"aria-valuemax":this.max,tabIndex:this.disabled?-1:0,onClick:this.handleClick,onKeyDown:this.handleKeyDown,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onMouseMove:this.handleMouseMove,onFocus:this.handleFocus,onBlur:this.handleBlur},h("span",{class:"rating__symbols rating__symbols--inactive"},t.map((function(t){return h("span",{class:{rating__symbol:true,"rating__symbol--hover":n.isHovering&&Math.ceil(e)===t+1},role:"presentation",onMouseEnter:n.handleMouseEnter,innerHTML:n.symbol(t+1)})}))),h("span",{ref:function(t){return n.indicator=t},class:"rating__symbols rating__symbols--indicator",style:{clip:this.clip(e)}},t.map((function(t){return h("span",{class:{rating__symbol:true,"rating__symbol--hover":n.isHovering&&Math.ceil(e)===t+1},role:"presentation",innerHTML:n.symbol(t+1)})}))),h("input",{type:"hidden",name:this.name,value:this.value,disabled:this.disabled||this.readonly})))};Object.defineProperty(n.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(n,"watchers",{get:function(){return{value:["handleValueChange"],symbolName:["handleSymbolChange"]}},enumerable:false,configurable:true});return n}();Rating.style=ratingCss;export{Rating as nano_rating};
5
5
  //# sourceMappingURL=nano-rating.entry.js.map