@nanoporetech-digital/components 3.2.0 → 3.3.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 (456) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/dom-d7c33f11.js.map +1 -1
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{modal-f09e431f.js → modal-e4defcc3.js} +3 -3
  6. package/dist/cjs/{modal-f09e431f.js.map → modal-e4defcc3.js.map} +1 -1
  7. package/dist/cjs/nano-alert.cjs.entry.js +3 -3
  8. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nano-algolia.cjs.entry.js +1 -1
  10. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nano-aspect-ratio.cjs.entry.js +1 -1
  12. package/dist/cjs/nano-aspect-ratio.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
  14. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-checkbox.cjs.entry.js +1 -1
  16. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nano-components.cjs.js +1 -1
  18. package/dist/cjs/nano-datalist_3.cjs.entry.js +2 -2
  19. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
  21. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nano-date-picker.cjs.entry.js +1 -1
  23. package/dist/cjs/nano-date-picker.cjs.entry.js.map +1 -1
  24. package/dist/cjs/nano-details.cjs.entry.js +1 -1
  25. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nano-dialog.cjs.entry.js +3 -3
  27. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  28. package/dist/cjs/nano-drawer.cjs.entry.js +3 -3
  29. package/dist/cjs/nano-drawer.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nano-dropdown.cjs.entry.js +2 -2
  31. package/dist/cjs/nano-dropdown.cjs.entry.js.map +1 -1
  32. package/dist/cjs/nano-file-upload.cjs.entry.js +1 -1
  33. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  34. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +10 -5
  35. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  36. package/dist/cjs/nano-global-nav.cjs.entry.js +27 -14
  37. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  38. package/dist/cjs/nano-global-search-results.cjs.entry.js +1 -1
  39. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  40. package/dist/cjs/nano-grid_3.cjs.entry.js +2 -2
  41. package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nano-hero.cjs.entry.js +1 -1
  43. package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
  44. package/dist/cjs/nano-icon-button.cjs.entry.js +1 -1
  45. package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
  46. package/dist/cjs/nano-icon.cjs.entry.js +1 -1
  47. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  48. package/dist/cjs/nano-input.cjs.entry.js +1 -1
  49. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  50. package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
  51. package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nano-progress-bar.cjs.entry.js +1 -1
  53. package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nano-range.cjs.entry.js +1 -1
  55. package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nano-rating.cjs.entry.js +1 -1
  57. package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
  58. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +23 -12
  59. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  60. package/dist/cjs/nano-slide.cjs.entry.js +1 -1
  61. package/dist/cjs/nano-slide.cjs.entry.js.map +1 -1
  62. package/dist/cjs/nano-slides.cjs.entry.js +1 -1
  63. package/dist/cjs/nano-slides.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nano-spinner.cjs.entry.js +1 -1
  65. package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
  67. package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -1
  68. package/dist/cjs/nano-sticker.cjs.entry.js +1 -1
  69. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  70. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  71. package/dist/cjs/nano-tab-content.cjs.entry.js.map +1 -1
  72. package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
  73. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  74. package/dist/cjs/nano-tab.cjs.entry.js +1 -1
  75. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  76. package/dist/cjs/{nano-table-7dbe799c.js → nano-table-2ddb22be.js} +23 -23
  77. package/dist/cjs/nano-table-2ddb22be.js.map +1 -0
  78. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  79. package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
  80. package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -1
  81. package/dist/cjs/{tabbable-de4c23d8.js → tabbable-bdf10c84.js} +13 -4
  82. package/dist/cjs/tabbable-bdf10c84.js.map +1 -0
  83. package/dist/cjs/{table.worker-fe960deb.js → table.worker-ec62a083.js} +2 -2
  84. package/dist/cjs/table.worker-ec62a083.js.map +1 -0
  85. package/dist/collection/components/alert/alert.css +16 -56
  86. package/dist/collection/components/algolia/algolia.css +5 -22
  87. package/dist/collection/components/aspect-ratio/aspect-ratio.css +2 -4
  88. package/dist/collection/components/checkbox/checkbox-group.css +8 -19
  89. package/dist/collection/components/checkbox/checkbox.css +24 -61
  90. package/dist/collection/components/date-input/date-input.css +8 -29
  91. package/dist/collection/components/date-picker/date-picker.css +22 -61
  92. package/dist/collection/components/details/details.css +7 -27
  93. package/dist/collection/components/dialog/dialog.css +20 -79
  94. package/dist/collection/components/drawer/drawer.css +13 -42
  95. package/dist/collection/components/dropdown/dropdown.css +5 -13
  96. package/dist/collection/components/file-upload/file-upload.css +45 -127
  97. package/dist/collection/components/global-nav/global-nav.js +26 -13
  98. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  99. package/dist/collection/components/global-nav/style/global-nav.css +138 -298
  100. package/dist/collection/components/global-search-results/global-search-results.css +81 -248
  101. package/dist/collection/components/grid/grid.css +21 -76
  102. package/dist/collection/components/hero/hero.css +22 -63
  103. package/dist/collection/components/icon/icon.css +2 -5
  104. package/dist/collection/components/icon-button/icon-button.css +4 -15
  105. package/dist/collection/components/img/img.css +9 -19
  106. package/dist/collection/components/input/input.css +34 -148
  107. package/dist/collection/components/menu/menu.css +1 -2
  108. package/dist/collection/components/menu-drawer/menu-drawer.css +16 -47
  109. package/dist/collection/components/nav-item/nav-item.css +73 -147
  110. package/dist/collection/components/nav-item/nav-item.js +8 -3
  111. package/dist/collection/components/nav-item/nav-item.js.map +1 -1
  112. package/dist/collection/components/option/option.css +10 -40
  113. package/dist/collection/components/progress-bar/progress-bar.css +5 -26
  114. package/dist/collection/components/range/range.css +20 -56
  115. package/dist/collection/components/rating/rating.css +9 -28
  116. package/dist/collection/components/resize-observe/resize-observe.js +38 -12
  117. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  118. package/dist/collection/components/select/select.css +56 -210
  119. package/dist/collection/components/skeleton/skeleton.css +2 -17
  120. package/dist/collection/components/slides/slide.css +4 -13
  121. package/dist/collection/components/slides/slides.css +3 -14
  122. package/dist/collection/components/spinner/spinner.css +34 -122
  123. package/dist/collection/components/split-pane/split-pane.css +4 -18
  124. package/dist/collection/components/sticker/sticker.css +8 -18
  125. package/dist/collection/components/table/table.children.js +10 -10
  126. package/dist/collection/components/table/table.children.js.map +1 -1
  127. package/dist/collection/components/table/table.css +87 -41
  128. package/dist/collection/components/table/table.js +18 -17
  129. package/dist/collection/components/table/table.js.map +1 -1
  130. package/dist/collection/components/table/table.service.js +1 -1
  131. package/dist/collection/components/table/table.service.js.map +1 -1
  132. package/dist/collection/components/tabs/tab-content.css +11 -59
  133. package/dist/collection/components/tabs/tab-group.css +20 -77
  134. package/dist/collection/components/tabs/tab.css +11 -30
  135. package/dist/collection/components/tooltip/tooltip.css +26 -56
  136. package/dist/collection/utils/dom.js.map +1 -1
  137. package/dist/collection/utils/modal.js +1 -1
  138. package/dist/collection/utils/modal.js.map +1 -1
  139. package/dist/collection/utils/tabbable.js +12 -3
  140. package/dist/collection/utils/tabbable.js.map +1 -1
  141. package/dist/components/algolia.js +1 -1
  142. package/dist/components/algolia.js.map +1 -1
  143. package/dist/components/date-picker.js +1 -1
  144. package/dist/components/date-picker.js.map +1 -1
  145. package/dist/components/dom.js.map +1 -1
  146. package/dist/components/dropdown.js +1 -1
  147. package/dist/components/dropdown.js.map +1 -1
  148. package/dist/components/grid.js +1 -1
  149. package/dist/components/grid.js.map +1 -1
  150. package/dist/components/icon-button.js +1 -1
  151. package/dist/components/icon-button.js.map +1 -1
  152. package/dist/components/icon.js +1 -1
  153. package/dist/components/icon.js.map +1 -1
  154. package/dist/components/img.js +1 -1
  155. package/dist/components/img.js.map +1 -1
  156. package/dist/components/input.js +1 -1
  157. package/dist/components/input.js.map +1 -1
  158. package/dist/components/menu.js +1 -1
  159. package/dist/components/menu.js.map +1 -1
  160. package/dist/components/modal.js +1 -1
  161. package/dist/components/modal.js.map +1 -1
  162. package/dist/components/nano-alert.js +1 -1
  163. package/dist/components/nano-alert.js.map +1 -1
  164. package/dist/components/nano-aspect-ratio.js +1 -1
  165. package/dist/components/nano-aspect-ratio.js.map +1 -1
  166. package/dist/components/nano-checkbox-group.js +1 -1
  167. package/dist/components/nano-checkbox-group.js.map +1 -1
  168. package/dist/components/nano-checkbox.js +1 -1
  169. package/dist/components/nano-checkbox.js.map +1 -1
  170. package/dist/components/nano-date-input.js +1 -1
  171. package/dist/components/nano-date-input.js.map +1 -1
  172. package/dist/components/nano-details.js +1 -1
  173. package/dist/components/nano-details.js.map +1 -1
  174. package/dist/components/nano-dialog.js +1 -1
  175. package/dist/components/nano-dialog.js.map +1 -1
  176. package/dist/components/nano-drawer.js +1 -1
  177. package/dist/components/nano-drawer.js.map +1 -1
  178. package/dist/components/nano-file-upload.js +1 -1
  179. package/dist/components/nano-file-upload.js.map +1 -1
  180. package/dist/components/nano-global-nav.js +27 -14
  181. package/dist/components/nano-global-nav.js.map +1 -1
  182. package/dist/components/nano-global-search-results.js +1 -1
  183. package/dist/components/nano-global-search-results.js.map +1 -1
  184. package/dist/components/nano-hero.js +1 -1
  185. package/dist/components/nano-hero.js.map +1 -1
  186. package/dist/components/nano-menu-drawer.js +1 -1
  187. package/dist/components/nano-menu-drawer.js.map +1 -1
  188. package/dist/components/nano-range.js +1 -1
  189. package/dist/components/nano-range.js.map +1 -1
  190. package/dist/components/nano-rating.js +1 -1
  191. package/dist/components/nano-rating.js.map +1 -1
  192. package/dist/components/nano-slide.js +1 -1
  193. package/dist/components/nano-slide.js.map +1 -1
  194. package/dist/components/nano-slides.js +1 -1
  195. package/dist/components/nano-slides.js.map +1 -1
  196. package/dist/components/nano-split-pane.js +1 -1
  197. package/dist/components/nano-split-pane.js.map +1 -1
  198. package/dist/components/nano-tab-content.js +1 -1
  199. package/dist/components/nano-tab-content.js.map +1 -1
  200. package/dist/components/nano-tab-group.js +1 -1
  201. package/dist/components/nano-tab-group.js.map +1 -1
  202. package/dist/components/nano-tab.js +1 -1
  203. package/dist/components/nano-tab.js.map +1 -1
  204. package/dist/components/nano-table.js +21 -21
  205. package/dist/components/nano-table.js.map +1 -1
  206. package/dist/components/nav-item.js +9 -4
  207. package/dist/components/nav-item.js.map +1 -1
  208. package/dist/components/option.js +1 -1
  209. package/dist/components/option.js.map +1 -1
  210. package/dist/components/progress-bar.js +1 -1
  211. package/dist/components/progress-bar.js.map +1 -1
  212. package/dist/components/resize-observe.js +23 -13
  213. package/dist/components/resize-observe.js.map +1 -1
  214. package/dist/components/select.js +1 -1
  215. package/dist/components/select.js.map +1 -1
  216. package/dist/components/skeleton.js +1 -1
  217. package/dist/components/skeleton.js.map +1 -1
  218. package/dist/components/spinner.js +1 -1
  219. package/dist/components/spinner.js.map +1 -1
  220. package/dist/components/sticker.js +1 -1
  221. package/dist/components/sticker.js.map +1 -1
  222. package/dist/components/tabbable.js +12 -3
  223. package/dist/components/tabbable.js.map +1 -1
  224. package/dist/components/tooltip.js +1 -1
  225. package/dist/components/tooltip.js.map +1 -1
  226. package/dist/custom-elements/index.js +128 -91
  227. package/dist/custom-elements/index.js.map +1 -1
  228. package/dist/esm/dom-d3ad49e2.js.map +1 -1
  229. package/dist/esm/index.js +1 -1
  230. package/dist/esm/loader.js +1 -1
  231. package/dist/esm/{modal-215df46b.js → modal-5c9ce466.js} +3 -3
  232. package/dist/esm/{modal-215df46b.js.map → modal-5c9ce466.js.map} +1 -1
  233. package/dist/esm/nano-alert.entry.js +3 -3
  234. package/dist/esm/nano-alert.entry.js.map +1 -1
  235. package/dist/esm/nano-algolia.entry.js +1 -1
  236. package/dist/esm/nano-algolia.entry.js.map +1 -1
  237. package/dist/esm/nano-aspect-ratio.entry.js +1 -1
  238. package/dist/esm/nano-aspect-ratio.entry.js.map +1 -1
  239. package/dist/esm/nano-checkbox-group.entry.js +1 -1
  240. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  241. package/dist/esm/nano-checkbox.entry.js +1 -1
  242. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  243. package/dist/esm/nano-components.js +1 -1
  244. package/dist/esm/nano-datalist_3.entry.js +2 -2
  245. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  246. package/dist/esm/nano-date-input.entry.js +1 -1
  247. package/dist/esm/nano-date-input.entry.js.map +1 -1
  248. package/dist/esm/nano-date-picker.entry.js +1 -1
  249. package/dist/esm/nano-date-picker.entry.js.map +1 -1
  250. package/dist/esm/nano-details.entry.js +1 -1
  251. package/dist/esm/nano-details.entry.js.map +1 -1
  252. package/dist/esm/nano-dialog.entry.js +3 -3
  253. package/dist/esm/nano-dialog.entry.js.map +1 -1
  254. package/dist/esm/nano-drawer.entry.js +3 -3
  255. package/dist/esm/nano-drawer.entry.js.map +1 -1
  256. package/dist/esm/nano-dropdown.entry.js +2 -2
  257. package/dist/esm/nano-dropdown.entry.js.map +1 -1
  258. package/dist/esm/nano-file-upload.entry.js +1 -1
  259. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  260. package/dist/esm/nano-global-nav-user-profile_3.entry.js +10 -5
  261. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  262. package/dist/esm/nano-global-nav.entry.js +27 -14
  263. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  264. package/dist/esm/nano-global-search-results.entry.js +1 -1
  265. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  266. package/dist/esm/nano-grid_3.entry.js +2 -2
  267. package/dist/esm/nano-grid_3.entry.js.map +1 -1
  268. package/dist/esm/nano-hero.entry.js +1 -1
  269. package/dist/esm/nano-hero.entry.js.map +1 -1
  270. package/dist/esm/nano-icon-button.entry.js +1 -1
  271. package/dist/esm/nano-icon-button.entry.js.map +1 -1
  272. package/dist/esm/nano-icon.entry.js +1 -1
  273. package/dist/esm/nano-icon.entry.js.map +1 -1
  274. package/dist/esm/nano-input.entry.js +1 -1
  275. package/dist/esm/nano-input.entry.js.map +1 -1
  276. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  277. package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
  278. package/dist/esm/nano-progress-bar.entry.js +1 -1
  279. package/dist/esm/nano-progress-bar.entry.js.map +1 -1
  280. package/dist/esm/nano-range.entry.js +1 -1
  281. package/dist/esm/nano-range.entry.js.map +1 -1
  282. package/dist/esm/nano-rating.entry.js +1 -1
  283. package/dist/esm/nano-rating.entry.js.map +1 -1
  284. package/dist/esm/nano-resize-observe_2.entry.js +23 -12
  285. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  286. package/dist/esm/nano-slide.entry.js +1 -1
  287. package/dist/esm/nano-slide.entry.js.map +1 -1
  288. package/dist/esm/nano-slides.entry.js +1 -1
  289. package/dist/esm/nano-slides.entry.js.map +1 -1
  290. package/dist/esm/nano-spinner.entry.js +1 -1
  291. package/dist/esm/nano-spinner.entry.js.map +1 -1
  292. package/dist/esm/nano-split-pane.entry.js +1 -1
  293. package/dist/esm/nano-split-pane.entry.js.map +1 -1
  294. package/dist/esm/nano-sticker.entry.js +1 -1
  295. package/dist/esm/nano-sticker.entry.js.map +1 -1
  296. package/dist/esm/nano-tab-content.entry.js +1 -1
  297. package/dist/esm/nano-tab-content.entry.js.map +1 -1
  298. package/dist/esm/nano-tab-group.entry.js +1 -1
  299. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  300. package/dist/esm/nano-tab.entry.js +1 -1
  301. package/dist/esm/nano-tab.entry.js.map +1 -1
  302. package/dist/esm/{nano-table-93d25a68.js → nano-table-9d4fbd41.js} +23 -23
  303. package/dist/esm/nano-table-9d4fbd41.js.map +1 -0
  304. package/dist/esm/nano-table.entry.js +1 -1
  305. package/dist/esm/nano-tooltip.entry.js +1 -1
  306. package/dist/esm/nano-tooltip.entry.js.map +1 -1
  307. package/dist/esm/{tabbable-614f515e.js → tabbable-31485ff7.js} +13 -4
  308. package/dist/esm/tabbable-31485ff7.js.map +1 -0
  309. package/dist/esm/{table.worker-5d681b97.js → table.worker-1ba8ac3f.js} +2 -2
  310. package/dist/esm/table.worker-1ba8ac3f.js.map +1 -0
  311. package/dist/nano-components/index.esm.js +1 -1
  312. package/dist/nano-components/nano-components.css +1 -1
  313. package/dist/nano-components/nano-components.esm.js +1 -1
  314. package/dist/nano-components/{p-35295332.entry.js → p-151aad1e.entry.js} +5 -5
  315. package/dist/nano-components/{p-35295332.entry.js.map → p-151aad1e.entry.js.map} +1 -1
  316. package/dist/nano-components/p-15543295.entry.js +5 -0
  317. package/dist/nano-components/{p-6e3412d2.entry.js.map → p-15543295.entry.js.map} +1 -1
  318. package/dist/nano-components/p-1e709f87.entry.js +5 -0
  319. package/dist/nano-components/p-1e709f87.entry.js.map +1 -0
  320. package/dist/nano-components/p-1f347342.entry.js +5 -0
  321. package/dist/nano-components/{p-02df1f62.entry.js.map → p-1f347342.entry.js.map} +1 -1
  322. package/dist/nano-components/p-216ece9a.js +5 -0
  323. package/dist/nano-components/{p-39124baa.entry.js.map → p-216ece9a.js.map} +0 -0
  324. package/dist/nano-components/p-23575705.entry.js +5 -0
  325. package/dist/nano-components/{p-6958df8c.entry.js.map → p-23575705.entry.js.map} +1 -1
  326. package/dist/nano-components/p-244223f0.entry.js +5 -0
  327. package/dist/nano-components/{p-6cd59e58.entry.js.map → p-244223f0.entry.js.map} +1 -1
  328. package/dist/nano-components/p-284dd9a2.entry.js +5 -0
  329. package/dist/nano-components/{p-5107646c.entry.js.map → p-284dd9a2.entry.js.map} +1 -1
  330. package/dist/nano-components/p-2cb4615b.entry.js +5 -0
  331. package/dist/nano-components/{p-e3730878.entry.js.map → p-2cb4615b.entry.js.map} +1 -1
  332. package/dist/nano-components/p-36842a50.entry.js +5 -0
  333. package/dist/nano-components/{p-f69f93e9.entry.js.map → p-36842a50.entry.js.map} +1 -1
  334. package/dist/nano-components/p-41addb3a.entry.js +5 -0
  335. package/dist/nano-components/{p-0a5ad0ef.entry.js.map → p-41addb3a.entry.js.map} +1 -1
  336. package/dist/nano-components/{p-9a385481.js → p-45abbbdd.js} +2 -2
  337. package/dist/nano-components/p-45abbbdd.js.map +1 -0
  338. package/dist/nano-components/p-46b348b7.entry.js +5 -0
  339. package/dist/nano-components/{p-28f713fb.entry.js.map → p-46b348b7.entry.js.map} +1 -1
  340. package/dist/nano-components/p-4b69178e.entry.js +5 -0
  341. package/dist/nano-components/{p-5e33798f.entry.js.map → p-4b69178e.entry.js.map} +1 -1
  342. package/dist/nano-components/p-4f0e14b5.entry.js +5 -0
  343. package/dist/nano-components/{p-8f5e0022.entry.js.map → p-4f0e14b5.entry.js.map} +1 -1
  344. package/dist/nano-components/p-559a6492.entry.js +5 -0
  345. package/dist/nano-components/p-559a6492.entry.js.map +1 -0
  346. package/dist/nano-components/p-601e18d5.entry.js +5 -0
  347. package/dist/nano-components/p-601e18d5.entry.js.map +1 -0
  348. package/dist/nano-components/p-69e5a37d.entry.js +5 -0
  349. package/dist/nano-components/{p-282987e6.entry.js.map → p-69e5a37d.entry.js.map} +1 -1
  350. package/dist/nano-components/p-751927d1.entry.js +5 -0
  351. package/dist/nano-components/{p-5d81773d.entry.js.map → p-751927d1.entry.js.map} +1 -1
  352. package/dist/nano-components/p-845ae77e.js.map +1 -1
  353. package/dist/nano-components/p-866e7e88.js +5 -0
  354. package/dist/nano-components/p-866e7e88.js.map +1 -0
  355. package/dist/nano-components/{p-39124baa.entry.js → p-89b8ce4f.entry.js} +2 -2
  356. package/dist/nano-components/{p-619a1c8e.js.map → p-89b8ce4f.entry.js.map} +0 -0
  357. package/dist/nano-components/p-9059c8c1.entry.js +5 -0
  358. package/dist/nano-components/{p-d8e8d7e3.entry.js.map → p-9059c8c1.entry.js.map} +1 -1
  359. package/dist/nano-components/p-92504f7f.entry.js +5 -0
  360. package/dist/nano-components/{p-50fcb11c.entry.js.map → p-92504f7f.entry.js.map} +1 -1
  361. package/dist/nano-components/p-99fbae74.entry.js +5 -0
  362. package/dist/nano-components/{p-8a52a411.entry.js.map → p-99fbae74.entry.js.map} +1 -1
  363. package/dist/nano-components/p-9eeed8f5.entry.js +5 -0
  364. package/dist/nano-components/{p-4c97f05f.entry.js.map → p-9eeed8f5.entry.js.map} +1 -1
  365. package/dist/nano-components/p-a183e3c7.entry.js +5 -0
  366. package/dist/nano-components/{p-b290a970.entry.js.map → p-a183e3c7.entry.js.map} +1 -1
  367. package/dist/nano-components/p-a2e38472.entry.js +5 -0
  368. package/dist/nano-components/p-a2e38472.entry.js.map +1 -0
  369. package/dist/nano-components/p-b87539f0.entry.js +5 -0
  370. package/dist/nano-components/{p-efa8c520.entry.js.map → p-b87539f0.entry.js.map} +1 -1
  371. package/dist/nano-components/p-b9c8b99f.entry.js +5 -0
  372. package/dist/nano-components/p-b9c8b99f.entry.js.map +1 -0
  373. package/dist/nano-components/{p-cb79d1ec.js → p-c9a7c7ea.js} +2 -2
  374. package/dist/nano-components/{p-cb79d1ec.js.map → p-c9a7c7ea.js.map} +1 -1
  375. package/dist/nano-components/{p-c45851c3.entry.js → p-d1c8eca4.entry.js} +2 -2
  376. package/dist/nano-components/{p-c45851c3.entry.js.map → p-d1c8eca4.entry.js.map} +1 -1
  377. package/dist/nano-components/p-d8678bdc.entry.js +5 -0
  378. package/dist/nano-components/p-d8678bdc.entry.js.map +1 -0
  379. package/dist/nano-components/p-db4b6602.entry.js +5 -0
  380. package/dist/nano-components/{p-716064b6.entry.js.map → p-db4b6602.entry.js.map} +1 -1
  381. package/dist/nano-components/{p-916e4b6b.entry.js → p-dba8a88d.entry.js} +2 -2
  382. package/dist/nano-components/{p-916e4b6b.entry.js.map → p-dba8a88d.entry.js.map} +1 -1
  383. package/dist/nano-components/p-e4e41e06.entry.js +5 -0
  384. package/dist/nano-components/p-e4e41e06.entry.js.map +1 -0
  385. package/dist/nano-components/p-e5408bc8.entry.js +5 -0
  386. package/dist/nano-components/{p-c5bb5540.entry.js.map → p-e5408bc8.entry.js.map} +1 -1
  387. package/dist/nano-components/p-f43d1d8e.entry.js +5 -0
  388. package/dist/nano-components/{p-66099557.entry.js.map → p-f43d1d8e.entry.js.map} +1 -1
  389. package/dist/nano-components/p-f7471cca.entry.js +5 -0
  390. package/dist/nano-components/{p-66ad1418.entry.js.map → p-f7471cca.entry.js.map} +1 -1
  391. package/dist/nano-components/p-fe94eeff.entry.js +5 -0
  392. package/dist/nano-components/{p-701e8ebf.entry.js.map → p-fe94eeff.entry.js.map} +1 -1
  393. package/dist/nano-components/p-feb9f164.entry.js +5 -0
  394. package/dist/nano-components/{p-81136f24.entry.js.map → p-feb9f164.entry.js.map} +1 -1
  395. package/dist/themes/nanopore.css +1 -1
  396. package/dist/themes/nanopore.css.map +1 -1
  397. package/dist/types/components/global-nav/global-nav.d.ts +8 -3
  398. package/dist/types/components/resize-observe/resize-observe.d.ts +5 -2
  399. package/dist/types/components/table/table.d.ts +8 -7
  400. package/dist/types/components.d.ts +4 -0
  401. package/dist/types/utils/dom.d.ts +1 -1
  402. package/docs-json.json +167 -7
  403. package/docs-vscode.json +1 -1
  404. package/package.json +2 -2
  405. package/dist/cjs/nano-table-7dbe799c.js.map +0 -1
  406. package/dist/cjs/tabbable-de4c23d8.js.map +0 -1
  407. package/dist/cjs/table.worker-fe960deb.js.map +0 -1
  408. package/dist/collection/components/global-nav/search-widget.js +0 -4
  409. package/dist/collection/components/global-nav/search-widget.js.map +0 -1
  410. package/dist/esm/nano-table-93d25a68.js.map +0 -1
  411. package/dist/esm/tabbable-614f515e.js.map +0 -1
  412. package/dist/esm/table.worker-5d681b97.js.map +0 -1
  413. package/dist/nano-components/p-02df1f62.entry.js +0 -5
  414. package/dist/nano-components/p-0a5ad0ef.entry.js +0 -5
  415. package/dist/nano-components/p-282987e6.entry.js +0 -5
  416. package/dist/nano-components/p-28b43ee9.entry.js +0 -5
  417. package/dist/nano-components/p-28b43ee9.entry.js.map +0 -1
  418. package/dist/nano-components/p-28f713fb.entry.js +0 -5
  419. package/dist/nano-components/p-37553477.entry.js +0 -5
  420. package/dist/nano-components/p-37553477.entry.js.map +0 -1
  421. package/dist/nano-components/p-42fa11c3.entry.js +0 -5
  422. package/dist/nano-components/p-42fa11c3.entry.js.map +0 -1
  423. package/dist/nano-components/p-4c386a43.js +0 -5
  424. package/dist/nano-components/p-4c386a43.js.map +0 -1
  425. package/dist/nano-components/p-4c97f05f.entry.js +0 -5
  426. package/dist/nano-components/p-50fcb11c.entry.js +0 -5
  427. package/dist/nano-components/p-5107646c.entry.js +0 -5
  428. package/dist/nano-components/p-5d81773d.entry.js +0 -5
  429. package/dist/nano-components/p-5e33798f.entry.js +0 -5
  430. package/dist/nano-components/p-619a1c8e.js +0 -5
  431. package/dist/nano-components/p-653a25f8.entry.js +0 -5
  432. package/dist/nano-components/p-653a25f8.entry.js.map +0 -1
  433. package/dist/nano-components/p-66099557.entry.js +0 -5
  434. package/dist/nano-components/p-66ad1418.entry.js +0 -5
  435. package/dist/nano-components/p-6958df8c.entry.js +0 -5
  436. package/dist/nano-components/p-6cd59e58.entry.js +0 -5
  437. package/dist/nano-components/p-6e3412d2.entry.js +0 -5
  438. package/dist/nano-components/p-701e8ebf.entry.js +0 -5
  439. package/dist/nano-components/p-716064b6.entry.js +0 -5
  440. package/dist/nano-components/p-81136f24.entry.js +0 -5
  441. package/dist/nano-components/p-8a52a411.entry.js +0 -5
  442. package/dist/nano-components/p-8f5e0022.entry.js +0 -5
  443. package/dist/nano-components/p-9a385481.js.map +0 -1
  444. package/dist/nano-components/p-a151dea5.entry.js +0 -5
  445. package/dist/nano-components/p-a151dea5.entry.js.map +0 -1
  446. package/dist/nano-components/p-b290a970.entry.js +0 -5
  447. package/dist/nano-components/p-c5bb5540.entry.js +0 -5
  448. package/dist/nano-components/p-d8e8d7e3.entry.js +0 -5
  449. package/dist/nano-components/p-e3730878.entry.js +0 -5
  450. package/dist/nano-components/p-efa8c520.entry.js +0 -5
  451. package/dist/nano-components/p-f69f93e9.entry.js +0 -5
  452. package/dist/nano-components/p-f71f69c9.entry.js +0 -5
  453. package/dist/nano-components/p-f71f69c9.entry.js.map +0 -1
  454. package/dist/nano-components/p-fa2a6733.entry.js +0 -5
  455. package/dist/nano-components/p-fa2a6733.entry.js.map +0 -1
  456. package/dist/types/components/global-nav/search-widget.d.ts +0 -0
@@ -15,11 +15,15 @@
15
15
  display: block;
16
16
  color: var(--color) !important;
17
17
  margin: var(--margin);
18
+ outline: none !important;
19
+ }
20
+ :host .nav-item,
21
+ :host .link {
22
+ outline: none !important;
18
23
  }
19
24
  :host ::slotted(*),
20
25
  :host * {
21
- -webkit-box-sizing: border-box;
22
- box-sizing: border-box;
26
+ box-sizing: border-box;
23
27
  }
24
28
  :host ::slotted(button),
25
29
  :host button {
@@ -52,38 +56,28 @@
52
56
  color: var(--color) !important;
53
57
  background-color: var(--bg-color);
54
58
  line-height: inherit;
59
+ outline: none !important;
55
60
  }
56
61
  :host ::slotted(nano-icon[slot=icon-start]) {
57
- -webkit-padding-end: var(--padding-end);
58
- padding-inline-end: var(--padding-end);
62
+ padding-inline-end: var(--padding-end);
59
63
  }
60
64
  :host ::slotted(nano-icon[slot=icon-end]) {
61
- -webkit-padding-start: var(--padding-start);
62
- padding-inline-start: var(--padding-start);
65
+ padding-inline-start: var(--padding-start);
63
66
  }
64
67
  :host .link ::slotted(nano-icon[slot=icon-start]) {
65
- -webkit-padding-start: var(--padding-start);
66
- padding-inline-start: var(--padding-start);
67
- -webkit-padding-end: 0;
68
- padding-inline-end: 0;
68
+ padding-inline-start: var(--padding-start);
69
+ padding-inline-end: 0;
69
70
  }
70
71
  :host .link ::slotted(nano-icon[slot=icon-end]) {
71
- -webkit-padding-end: var(--padding-end);
72
- padding-inline-end: var(--padding-end);
73
- -webkit-padding-start: 0;
74
- padding-inline-start: 0;
72
+ padding-inline-end: var(--padding-end);
73
+ padding-inline-start: 0;
75
74
  }
76
75
  :host .link,
77
76
  :host button,
78
77
  :host a {
79
- -webkit-border-after: var(--border-bottom);
80
- border-block-end: var(--border-bottom);
81
- display: -webkit-box;
82
- display: -ms-flexbox;
78
+ border-block-end: var(--border-bottom);
83
79
  display: flex;
84
- -webkit-box-align: center;
85
- -ms-flex-align: center;
86
- align-items: center;
80
+ align-items: center;
87
81
  }
88
82
  :host .secondary-menu {
89
83
  display: none;
@@ -95,17 +89,17 @@
95
89
  :host a:hover {
96
90
  text-decoration: inherit !important;
97
91
  }
98
- :host button:focus,
99
- :host a:focus {
92
+ :host button:focus-visible,
93
+ :host a:focus-visible {
100
94
  color: var(--color-focus, var(--color-hover, var(--color))) !important;
101
95
  background-color: var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));
102
- outline: var(--focus-outline, none);
96
+ box-shadow: var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));
103
97
  }
104
- :host ::slotted(a:focus),
105
- :host ::slotted(button:focus) {
98
+ :host ::slotted(a:focus-visible),
99
+ :host ::slotted(button:focus-visible) {
106
100
  color: var(--color-focus, var(--color-hover, var(--color))) !important;
107
101
  background-color: var(--bg-color-focus, var(--bg-color-hover, var(--bg-color)));
108
- outline: none;
102
+ box-shadow: var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));
109
103
  }
110
104
 
111
105
  .nav-item.selected .link,
@@ -149,19 +143,10 @@
149
143
  :host(.nano-menu) a:visited,
150
144
  :host(.nano-menu) button,
151
145
  :host(.nano-menu) .link {
152
- display: -webkit-box;
153
- display: -ms-flexbox;
154
146
  display: flex;
155
- -webkit-box-pack: start;
156
- -ms-flex-pack: start;
157
- justify-content: flex-start;
158
- -webkit-box-orient: horizontal;
159
- -webkit-box-direction: normal;
160
- -ms-flex-direction: row;
161
- flex-direction: row;
162
- -webkit-box-align: center;
163
- -ms-flex-align: center;
164
- align-items: center;
147
+ justify-content: flex-start;
148
+ flex-direction: row;
149
+ align-items: center;
165
150
  color: "currentColor";
166
151
  text-decoration: inherit;
167
152
  white-space: normal;
@@ -171,28 +156,15 @@
171
156
  }
172
157
  :host(.nano-global-nav-menu) .text,
173
158
  :host(.nano-menu) .text {
174
- -webkit-padding-start: 0;
175
- padding-inline-start: 0;
176
- -webkit-padding-end: var(--padding-end);
177
- padding-inline-end: var(--padding-end);
178
- -webkit-box-flex: 1;
179
- -ms-flex: 1;
180
- flex: 1;
159
+ padding-inline-start: 0;
160
+ padding-inline-end: var(--padding-end);
161
+ flex: 1;
181
162
  }
182
163
  :host(.nano-global-nav-menu) ::slotted(a),
183
164
  :host(.nano-global-nav-menu) ::slotted(button),
184
165
  :host(.nano-menu) ::slotted(a),
185
166
  :host(.nano-menu) ::slotted(button) {
186
- -webkit-box-flex: 1;
187
- -ms-flex: 1;
188
- flex: 1;
189
- }
190
- :host(.nano-global-nav-menu) ::slotted(a:focus),
191
- :host(.nano-global-nav-menu) ::slotted(button:focus),
192
- :host(.nano-menu) ::slotted(a:focus),
193
- :host(.nano-menu) ::slotted(button:focus) {
194
- -webkit-box-shadow: none;
195
- box-shadow: none;
167
+ flex: 1;
196
168
  }
197
169
  :host(.nano-global-nav-menu) .secondary-menu,
198
170
  :host(.nano-menu) .secondary-menu {
@@ -205,13 +177,9 @@
205
177
  width: 100%;
206
178
  z-index: 1;
207
179
  opacity: 0;
208
- -webkit-transition: opacity 0.2s ease, -webkit-transform 0.3s ease;
209
- transition: opacity 0.2s ease, -webkit-transform 0.3s ease;
210
180
  transition: opacity 0.2s ease, transform 0.3s ease;
211
- transition: opacity 0.2s ease, transform 0.3s ease, -webkit-transform 0.3s ease;
212
181
  background-color: var(--secondary-bg-color, white);
213
- -webkit-transform: translateX(100%);
214
- transform: translateX(100%);
182
+ transform: translateX(100%);
215
183
  }
216
184
  :host(.nano-global-nav-menu) .secondary-menu:focus,
217
185
  :host(.nano-menu) .secondary-menu:focus {
@@ -220,12 +188,8 @@
220
188
  :host(.nano-global-nav-menu) .secondary-menu.open,
221
189
  :host(.nano-menu) .secondary-menu.open {
222
190
  opacity: 1;
223
- -webkit-transform: translateX(0);
224
- transform: translateX(0);
225
- -webkit-transition: opacity 0.3s ease, -webkit-transform 0.2s ease;
226
- transition: opacity 0.3s ease, -webkit-transform 0.2s ease;
191
+ transform: translateX(0);
227
192
  transition: opacity 0.3s ease, transform 0.2s ease;
228
- transition: opacity 0.3s ease, transform 0.2s ease, -webkit-transform 0.2s ease;
229
193
  }
230
194
 
231
195
  :host(.nano-global-nav-menu) ::slotted(nano-icon[slot=icon-start]) {
@@ -236,9 +200,7 @@
236
200
  padding-inline: 0 var(--padding-end);
237
201
  padding-block: 0;
238
202
  font-size: 10px;
239
- -webkit-box-flex: 0;
240
- -ms-flex: 0 0 10px;
241
- flex: 0 0 10px;
203
+ flex: 0 0 10px;
242
204
  pointer-events: none;
243
205
  }
244
206
  :host(.nano-global-nav-menu) button ::slotted(nano-icon[slot=icon-end]),
@@ -248,15 +210,17 @@
248
210
 
249
211
  :host(.nano-global-nav-menu[dir=rtl]) .secondary-menu,
250
212
  :host(.nano-menu[dir=rtl]) .secondary-menu {
251
- -webkit-transform: translateX(-100%);
252
- transform: translateX(-100%);
213
+ transform: translateX(-100%);
253
214
  }
254
215
  :host(.nano-global-nav-menu[dir=rtl]) .secondary-menu.open,
255
216
  :host(.nano-menu[dir=rtl]) .secondary-menu.open {
256
- -webkit-transform: translateX(0);
257
- transform: translateX(0);
217
+ transform: translateX(0);
258
218
  }
259
219
 
220
+ :host(.nano-menu) ::slotted(a:focus),
221
+ :host(.nano-menu) ::slotted(button:focus) {
222
+ box-shadow: none;
223
+ }
260
224
  :host(.nano-menu) .secondary-menu-content {
261
225
  padding-inline: var(--secondary-padding-start) var(--secondary-padding-end);
262
226
  padding-block: var(--secondary-padding-top) var(--secondary-padding-bottom);
@@ -265,18 +229,12 @@
265
229
  :host(.nano-global-nav-bar) .link,
266
230
  :host(.nano-global-nav-bar) a,
267
231
  :host(.nano-global-nav-bar) button {
268
- display: -webkit-box;
269
- display: -ms-flexbox;
270
232
  display: flex;
271
- -webkit-box-align: center;
272
- -ms-flex-align: center;
273
- align-items: center;
233
+ align-items: center;
274
234
  cursor: pointer;
275
235
  }
276
236
  :host(.nano-global-nav-bar) .text {
277
- -webkit-box-flex: 1;
278
- -ms-flex: 1 0 auto;
279
- flex: 1 0 auto;
237
+ flex: 1 0 auto;
280
238
  }
281
239
  :host(.nano-global-nav-bar) ::slotted(nano-icon[slot=icon-end]) {
282
240
  margin-inline: var(--padding-end) 0;
@@ -286,78 +244,61 @@
286
244
  margin-inline: 0 var(--padding-start);
287
245
  margin-block: 0;
288
246
  }
289
-
290
- :host(.nano-global-nav-bar.has-secondary) button {
247
+ :host(.nano-global-nav-bar) ::slotted(a),
248
+ :host(.nano-global-nav-bar) button {
291
249
  position: relative;
292
250
  }
293
- :host(.nano-global-nav-bar.has-secondary) button::before {
251
+ :host(.nano-global-nav-bar) ::slotted(a)::before,
252
+ :host(.nano-global-nav-bar) button::before {
294
253
  content: "";
295
254
  background-color: #0c5a71;
296
255
  height: 9px;
297
256
  inset-inline: 0 5px;
298
- inset-block-end: -24px;
257
+ inset-block-end: -22px;
299
258
  position: absolute;
300
- -webkit-transform: translateZ(0) scaleX(0);
301
- transform: translateZ(0) scaleX(0);
302
- -webkit-transform-origin: 0;
303
- transform-origin: 0;
304
- -webkit-transition: 0.2s ease transform;
259
+ transform: translateZ(0) scaleX(0);
260
+ transform-origin: 0;
305
261
  transition: 0.2s ease transform;
306
262
  }
307
- :host(.nano-global-nav-bar.has-secondary) .selected button::before,
308
- :host(.nano-global-nav-bar.has-secondary) .secondary-open button::before {
309
- -webkit-transform: translateZ(0) scaleX(1);
310
- transform: translateZ(0) scaleX(1);
263
+ :host(.nano-global-nav-bar) .selected button::before,
264
+ :host(.nano-global-nav-bar) .secondary-open button::before {
265
+ transform: translateZ(0) scaleX(1);
311
266
  }
267
+
268
+ :host(.nano-global-nav-bar.selected) ::slotted(a)::before {
269
+ transform: translateZ(0) scaleX(1);
270
+ }
271
+
312
272
  :host(.nano-global-nav-bar.has-secondary) .secondary-open button::before {
313
273
  opacity: 0.7;
314
274
  }
315
275
  :host(.nano-global-nav-bar.has-secondary) .secondary-menu {
316
276
  display: none;
317
- -webkit-transition: -webkit-transform 0.3s ease;
318
- transition: -webkit-transform 0.3s ease;
319
277
  transition: transform 0.3s ease;
320
- transition: transform 0.3s ease, -webkit-transform 0.3s ease;
321
- -webkit-transform: translateY(-100%) translateZ(0);
322
- transform: translateY(-100%) translateZ(0);
278
+ transform: translateY(-100%) translateZ(0);
323
279
  background-color: var(--secondary-bg-color, #196c82);
324
280
  color: var(--secondary-color);
325
281
  position: absolute;
326
- -webkit-box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.15);
327
- box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.15);
282
+ box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.15);
328
283
  inset-inline: 0;
329
284
  z-index: -2;
330
285
  outline: none;
331
286
  }
332
287
  :host(.nano-global-nav-bar.has-secondary) .secondary-menu.open {
333
- -webkit-transform: translateY(12px) translateZ(0);
334
- transform: translateY(12px) translateZ(0);
288
+ transform: translateY(12px) translateZ(0);
335
289
  }
336
290
 
337
291
  :host(.nano-menu-drawer) .link,
338
292
  :host(.nano-menu-drawer) a,
339
293
  :host(.nano-menu-drawer) button {
340
- -webkit-padding-before: calc(var(--padding-top) / 2);
341
- padding-block-start: calc(var(--padding-top) / 2);
342
- -webkit-padding-end: 0;
343
- padding-inline-end: 0;
344
- -webkit-padding-after: calc(var(--padding-bottom) / 2);
345
- padding-block-end: calc(var(--padding-bottom) / 2);
346
- -webkit-padding-start: var(--padding-start);
347
- padding-inline-start: var(--padding-start);
348
- display: -webkit-box;
349
- display: -ms-flexbox;
294
+ padding-block-start: calc(var(--padding-top) / 2);
295
+ padding-inline-end: 0;
296
+ padding-block-end: calc(var(--padding-bottom) / 2);
297
+ padding-inline-start: var(--padding-start);
350
298
  display: flex;
351
- -webkit-box-pack: start;
352
- -ms-flex-pack: start;
353
- justify-content: flex-start;
354
- -webkit-box-orient: horizontal;
355
- -webkit-box-direction: normal;
356
- -ms-flex-direction: row;
357
- flex-direction: row;
358
- -webkit-box-align: center;
359
- -ms-flex-align: center;
360
- align-items: center;
299
+ justify-content: flex-start;
300
+ flex-direction: row;
301
+ align-items: center;
361
302
  color: currentColor;
362
303
  text-decoration: inherit;
363
304
  white-space: normal;
@@ -367,14 +308,10 @@
367
308
  width: 100%;
368
309
  }
369
310
  :host(.nano-menu-drawer) .text {
370
- -webkit-padding-end: var(--padding-end);
371
- padding-inline-end: var(--padding-end);
372
- -webkit-padding-start: 0;
373
- padding-inline-start: 0;
311
+ padding-inline-end: var(--padding-end);
312
+ padding-inline-start: 0;
374
313
  text-align: start;
375
- -webkit-box-flex: 0;
376
- -ms-flex: 0 1 auto;
377
- flex: 0 1 auto;
314
+ flex: 0 1 auto;
378
315
  min-width: 130px;
379
316
  width: 130px;
380
317
  }
@@ -383,16 +320,12 @@
383
320
  padding-block: 0;
384
321
  font-size: var(--icon-size);
385
322
  width: var(--icon-size);
386
- -webkit-box-flex: 0;
387
- -ms-flex: 0 0 var(--icon-size);
388
- flex: 0 0 var(--icon-size);
323
+ flex: 0 0 var(--icon-size);
389
324
  }
390
325
  :host(.nano-menu-drawer) ::slotted(nano-icon[slot=icon-end]) {
391
326
  padding: 0 var(--padding-end) 0 0;
392
327
  font-size: 10px;
393
- -webkit-box-flex: 0;
394
- -ms-flex: 0 0 20px;
395
- flex: 0 0 20px;
328
+ flex: 0 0 20px;
396
329
  min-width: 20px;
397
330
  }
398
331
  :host(.nano-menu-drawer) .secondary-menu {
@@ -403,13 +336,9 @@
403
336
  height: 100vh;
404
337
  inset-inline: auto 0;
405
338
  inset-block: 0;
406
- -webkit-transform: translateX(0);
407
- transform: translateX(0);
339
+ transform: translateX(0);
408
340
  z-index: -1;
409
- -webkit-transition: opacity 0.2s ease, -webkit-transform 0.3s ease;
410
- transition: opacity 0.2s ease, -webkit-transform 0.3s ease;
411
341
  transition: transform 0.3s ease, opacity 0.2s ease;
412
- transition: transform 0.3s ease, opacity 0.2s ease, -webkit-transform 0.3s ease;
413
342
  overflow-y: auto;
414
343
  width: var(--secondary-width, 400px);
415
344
  max-width: 62vw;
@@ -421,8 +350,7 @@
421
350
  outline: none;
422
351
  }
423
352
  :host(.nano-menu-drawer) .secondary-menu.open {
424
- -webkit-transform: translateX(100%);
425
- transform: translateX(100%);
353
+ transform: translateX(100%);
426
354
  }
427
355
  :host(.nano-menu-drawer) .notification {
428
356
  position: relative;
@@ -448,11 +376,9 @@
448
376
  }
449
377
 
450
378
  :host(.nano-menu-drawer[dir=rtl]) .secondary-menu {
451
- -webkit-transform: translateX(0%);
452
- transform: translateX(0%);
379
+ transform: translateX(0%);
453
380
  }
454
381
  :host(.nano-menu-drawer[dir=rtl]) .secondary-menu.open {
455
- -webkit-transform: translateX(-100%);
456
- transform: translateX(-100%);
382
+ transform: translateX(-100%);
457
383
  opacity: 1;
458
384
  }
@@ -4,6 +4,7 @@
4
4
  import { h, Host, } from '@stencil/core';
5
5
  import { getDirectChildren, getSiblings } from '../../utils/dom';
6
6
  import { displayTransition } from '../../utils/transitions';
7
+ import { getTabbableElements } from '../../utils/tabbable';
7
8
  /**
8
9
  * Nav items to be used with the various nav items.
9
10
  * [Globla-Nav](/story/compounds-global-nav)
@@ -111,13 +112,13 @@ export class NavItem {
111
112
  return;
112
113
  // if event is associated with this element don't close
113
114
  if (ev && ev.relatedTarget) {
114
- if (ev.relatedTarget === this.el ||
115
- ev.relatedTarget === this.btn ||
116
- this.foundThisNavEle(ev.relatedTarget)) {
115
+ if (ev.relatedTarget === this.el || ev.relatedTarget === this.btn) {
117
116
  this.secondaryDiv.focus({ preventScroll: true });
118
117
  return;
119
118
  }
120
119
  }
120
+ if (this.foundThisNavEle(ev.relatedTarget))
121
+ return;
121
122
  this.btn.removeEventListener('focusout', this.blur);
122
123
  this.secondaryDiv.removeEventListener('focusout', this.blur);
123
124
  window.removeEventListener('blur', this.blur);
@@ -174,6 +175,7 @@ export class NavItem {
174
175
  setTimeout(() => {
175
176
  if (!this.fromHover && !this.didBlur)
176
177
  this.btn.focus({ preventScroll: true });
178
+ this.el.tabIndex = null;
177
179
  this.nanoClose.emit({ secondaryMenu: this.secondaryDiv });
178
180
  }, 50);
179
181
  }
@@ -192,6 +194,9 @@ export class NavItem {
192
194
  }, { threshold: 1 });
193
195
  panelio.observe(this.secondaryDiv);
194
196
  this.secondaryDiv.focus({ preventScroll: true });
197
+ const focusableChild = getTabbableElements(this.secondaryDiv, true);
198
+ if (focusableChild[0])
199
+ focusableChild[0].focus();
195
200
  this.btn.addEventListener('focusout', this.blur);
196
201
  this.secondaryDiv.addEventListener('focusout', this.blur);
197
202
  window.addEventListener('blur', this.blur);
@@ -1 +1 @@
1
- {"version":3,"file":"nav-item.js","sourceRoot":"","sources":["../../../src/components/nav-item/nav-item.tsx"],"names":[],"mappings":"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","sourcesContent":["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 { getDirectChildren, getSiblings } from '../../utils/dom';\nimport { displayTransition } from '../../utils/transitions';\nimport type { 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() 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 const 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 const 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 const 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 const secondaryEle = this.el.querySelector('[slot=\"secondary\"]');\n this.hasSecondarySlot = !!secondaryEle;\n\n const 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 }}\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"]}
1
+ {"version":3,"file":"nav-item.js","sourceRoot":"","sources":["../../../src/components/nav-item/nav-item.tsx"],"names":[],"mappings":"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","sourcesContent":["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 { getDirectChildren, getSiblings } from '../../utils/dom';\nimport { displayTransition } from '../../utils/transitions';\nimport { getTabbableElements } from '../../utils/tabbable';\nimport type { 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() 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.el.tabIndex = null;\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 const focusableChild = getTabbableElements(this.secondaryDiv, true);\n if (focusableChild[0]) focusableChild[0].focus();\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 const 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 const 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 const 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 (ev.relatedTarget === this.el || ev.relatedTarget === this.btn) {\n this.secondaryDiv.focus({ preventScroll: true });\n return;\n }\n }\n if (this.foundThisNavEle(ev.relatedTarget as HTMLElement)) return;\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 const secondaryEle = this.el.querySelector('[slot=\"secondary\"]');\n this.hasSecondarySlot = !!secondaryEle;\n\n const 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 }}\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"]}
@@ -52,16 +52,10 @@
52
52
  .option {
53
53
  position: relative;
54
54
  -webkit-user-select: none;
55
- -moz-user-select: none;
56
- -ms-user-select: none;
57
55
  user-select: none;
58
56
  cursor: pointer;
59
- display: -webkit-box;
60
- display: -ms-flexbox;
61
57
  display: flex;
62
- -webkit-box-align: stretch;
63
- -ms-flex-align: stretch;
64
- align-items: stretch;
58
+ align-items: stretch;
65
59
  width: 100%;
66
60
  background: var(--bg);
67
61
  padding-inline: var(--padding-start) var(--padding-end);
@@ -87,63 +81,39 @@
87
81
  opacity: 0.7;
88
82
  }
89
83
  .option__label {
90
- -webkit-box-flex: 1;
91
- -ms-flex: 1 1 auto;
92
- flex: 1 1 auto;
93
- display: -webkit-box;
94
- display: -ms-flexbox;
84
+ flex: 1 1 auto;
95
85
  display: flex;
96
- -webkit-box-align: center;
97
- -ms-flex-align: center;
98
- align-items: center;
86
+ align-items: center;
99
87
  }
100
88
  .option__start {
101
- -webkit-box-flex: 0;
102
- -ms-flex: 0 0 auto;
103
- flex: 0 0 auto;
104
- display: -webkit-box;
105
- display: -ms-flexbox;
89
+ flex: 0 0 auto;
106
90
  display: flex;
107
- -webkit-box-align: center;
108
- -ms-flex-align: center;
109
- align-items: center;
91
+ align-items: center;
110
92
  }
111
93
  .option__start ::slotted(nano-icon) {
112
94
  font-size: var(--opt-icon-size);
113
95
  }
114
96
  .option__start ::slotted(:last-child) {
115
- -webkit-margin-end: 0.5em;
116
- margin-inline-end: 0.5em;
97
+ margin-inline-end: 0.5em;
117
98
  }
118
99
  .option__end {
119
- -webkit-box-flex: 0;
120
- -ms-flex: 0 0 auto;
121
- flex: 0 0 auto;
122
- display: -webkit-box;
123
- display: -ms-flexbox;
100
+ flex: 0 0 auto;
124
101
  display: flex;
125
- -webkit-box-align: center;
126
- -ms-flex-align: center;
127
- align-items: center;
102
+ align-items: center;
128
103
  }
129
104
  .option__end ::slotted(nano-icon) {
130
105
  font-size: var(--opt-icon-size);
131
106
  }
132
107
  .option__end ::slotted(:first-child) {
133
- -webkit-margin-start: 0.5em;
134
- margin-inline-start: 0.5em;
108
+ margin-inline-start: 0.5em;
135
109
  }
136
110
  .option__check {
137
111
  visibility: hidden;
138
- display: -webkit-box;
139
- display: -ms-flexbox;
140
112
  display: flex;
141
113
  position: absolute;
142
114
  inset-inline-start: 0.6em;
143
115
  inset-block-start: calc(50% - 0.6em);
144
- -webkit-box-align: center;
145
- -ms-flex-align: center;
146
- align-items: center;
116
+ align-items: center;
147
117
  font-size: 0.9em;
148
118
  }
149
119
  .option--selected:not(.option--novalue) .option__check {