@nanoporetech-digital/components 1.13.21 → 1.15.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 (706) hide show
  1. package/CHANGELOG.md +653 -14
  2. package/README.md +3 -2
  3. package/dist/cjs/{algolia-data-771a61ea.js → algolia-data-a98ccf4f.js} +2 -2
  4. package/dist/cjs/algolia-data-a98ccf4f.js.map +1 -0
  5. package/dist/cjs/algoliasearch.umd-5dc661c5.js +12 -0
  6. package/dist/cjs/algoliasearch.umd-5dc661c5.js.map +1 -0
  7. package/dist/cjs/{component-store-c8440fd7.js → component-store-8d99743e.js} +2 -2
  8. package/dist/cjs/{component-store-c8440fd7.js.map → component-store-8d99743e.js.map} +1 -1
  9. package/dist/cjs/{css-shim-208c6c2d.js → css-shim-8983f2ba.js} +2 -2
  10. package/dist/cjs/{css-shim-208c6c2d.js.map → css-shim-8983f2ba.js.map} +1 -1
  11. package/dist/cjs/{dom-1b5e30a5.js → dom-28d4395c.js} +2 -2
  12. package/dist/cjs/{dom-1b5e30a5.js.map → dom-28d4395c.js.map} +1 -1
  13. package/dist/cjs/{global-befb7a64.js → global-aa92d50f.js} +5 -3
  14. package/dist/cjs/global-aa92d50f.js.map +1 -0
  15. package/dist/cjs/{utils-e9e37c80.js → index-e517a673.js} +1 -1
  16. package/dist/cjs/{utils-e9e37c80.js.map → index-e517a673.js.map} +1 -1
  17. package/dist/cjs/{index-43791691.js → index-f12395b8.js} +10 -3
  18. package/dist/cjs/index-f12395b8.js.map +1 -0
  19. package/dist/cjs/index.cjs.js +4 -4
  20. package/dist/cjs/index.cjs.js.map +1 -1
  21. package/dist/cjs/loader.cjs.js +5 -5
  22. package/dist/cjs/loader.cjs.js.map +1 -1
  23. package/dist/cjs/nano-accordion.cjs.entry.js +1 -1
  24. package/dist/cjs/nano-accordion.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nano-alert.cjs.entry.js +7 -7
  26. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nano-algolia-filter.cjs.entry.js +3 -3
  28. package/dist/cjs/nano-algolia-filter.cjs.entry.js.map +1 -1
  29. package/dist/cjs/nano-algolia-input.cjs.entry.js +5 -5
  30. package/dist/cjs/nano-algolia-input.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nano-algolia-pagination.cjs.entry.js +2 -2
  32. package/dist/cjs/nano-algolia-results.cjs.entry.js +2 -2
  33. package/dist/cjs/nano-algolia.cjs.entry.js +5 -5
  34. package/dist/cjs/nano-algolia.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nano-aspect-ratio.cjs.entry.js +12 -4
  36. package/dist/cjs/nano-aspect-ratio.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nano-checkbox-group.cjs.entry.js +31 -16
  38. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nano-checkbox.cjs.entry.js +33 -15
  40. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nano-components.cjs.js +5 -5
  42. package/dist/cjs/nano-components.cjs.js.map +1 -1
  43. package/dist/cjs/nano-date-input.cjs.entry.js +45 -13
  44. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nano-date-picker_2.cjs.entry.js +117 -72
  46. package/dist/cjs/nano-date-picker_2.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nano-details.cjs.entry.js +16 -10
  48. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  49. package/dist/cjs/nano-dialog.cjs.entry.js +5 -9
  50. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nano-drawer.cjs.entry.js +1 -1
  52. package/dist/cjs/nano-file-upload.cjs.entry.js +7 -14
  53. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  54. package/dist/cjs/nano-global-nav.cjs.entry.js +6 -6
  55. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  56. package/dist/cjs/nano-global-search-results.cjs.entry.js +2 -2
  57. package/dist/cjs/nano-grid_3.cjs.entry.js +1 -1
  58. package/dist/cjs/nano-grid_3.cjs.entry.js.map +1 -1
  59. package/dist/cjs/nano-hero.cjs.entry.js +3 -3
  60. package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
  61. package/dist/cjs/nano-icon-button.cjs.entry.js +2 -2
  62. package/dist/cjs/nano-icon.cjs.entry.js +1 -1
  63. package/dist/cjs/nano-input.cjs.entry.js +12 -2
  64. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  65. package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
  66. package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
  67. package/dist/cjs/nano-menu.cjs.entry.js +2 -2
  68. package/dist/cjs/nano-menu.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nano-nav-item_2.cjs.entry.js +6 -6
  70. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nano-range.cjs.entry.js +11 -11
  72. package/dist/cjs/nano-range.cjs.entry.js.map +1 -1
  73. package/dist/cjs/nano-rating.cjs.entry.js +3 -3
  74. package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
  75. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +1 -1
  76. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  77. package/dist/cjs/nano-select-option.cjs.entry.js +1 -1
  78. package/dist/cjs/nano-slide.cjs.entry.js +1 -1
  79. package/dist/cjs/nano-slides.cjs.entry.js +2 -2
  80. package/dist/cjs/nano-spinner.cjs.entry.js +2 -2
  81. package/dist/cjs/nano-sticker.cjs.entry.js +9 -9
  82. package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
  83. package/dist/cjs/nano-tab-content.cjs.entry.js +1 -1
  84. package/dist/cjs/nano-tab-group.cjs.entry.js +6 -6
  85. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  86. package/dist/cjs/nano-tab.cjs.entry.js +2 -2
  87. package/dist/cjs/nano-tooltip.cjs.entry.js +49 -35
  88. package/dist/cjs/nano-tooltip.cjs.entry.js.map +1 -1
  89. package/dist/cjs/{popover-eccc07bd.js → popover-9289f217.js} +32 -32
  90. package/dist/cjs/popover-9289f217.js.map +1 -0
  91. package/dist/cjs/{shadow-css-c5dce0c8.js → shadow-css-a482ec93.js} +2 -2
  92. package/dist/cjs/shadow-css-a482ec93.js.map +1 -0
  93. package/dist/collection/collection-manifest.json +1 -1
  94. package/dist/collection/components/accordion/accordion.js +2 -2
  95. package/dist/collection/components/accordion/accordion.js.map +1 -1
  96. package/dist/collection/components/alert/alert.css +3 -3
  97. package/dist/collection/components/alert/alert.helpers.js +1 -1
  98. package/dist/collection/components/alert/alert.helpers.js.map +1 -1
  99. package/dist/collection/components/alert/alert.js +2 -2
  100. package/dist/collection/components/alert/alert.js.map +1 -1
  101. package/dist/collection/components/algolia/algolia-data.js.map +1 -1
  102. package/dist/collection/components/algolia/algolia-filter.js +3 -3
  103. package/dist/collection/components/algolia/algolia-filter.js.map +1 -1
  104. package/dist/collection/components/algolia/algolia-input.js +7 -7
  105. package/dist/collection/components/algolia/algolia-input.js.map +1 -1
  106. package/dist/collection/components/algolia/algolia-results.js +1 -1
  107. package/dist/collection/components/algolia/algolia.js +8 -8
  108. package/dist/collection/components/algolia/algolia.js.map +1 -1
  109. package/dist/collection/components/aspect-ratio/aspect-ratio.js +9 -1
  110. package/dist/collection/components/aspect-ratio/aspect-ratio.js.map +1 -1
  111. package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js +117 -0
  112. package/dist/collection/components/checkbox/__tests__/__fixtures__/checkbox-templates.js.map +1 -0
  113. package/dist/collection/components/checkbox/checkbox-group.css +3 -3
  114. package/dist/collection/components/checkbox/checkbox-group.js +39 -26
  115. package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
  116. package/dist/collection/components/checkbox/checkbox.css +13 -2
  117. package/dist/collection/components/checkbox/checkbox.js +63 -28
  118. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  119. package/dist/collection/components/date-input/date-input.css +2 -4
  120. package/dist/collection/components/date-input/date-input.js +81 -29
  121. package/dist/collection/components/date-input/date-input.js.map +1 -1
  122. package/dist/collection/components/date-picker/date-picker.css +15 -4
  123. package/dist/collection/components/date-picker/date-picker.js +45 -17
  124. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  125. package/dist/collection/components/details/details.css +3 -3
  126. package/dist/collection/components/details/details.js +14 -8
  127. package/dist/collection/components/details/details.js.map +1 -1
  128. package/dist/collection/components/dialog/dialog.css +2 -3
  129. package/dist/collection/components/dialog/dialog.js +6 -10
  130. package/dist/collection/components/dialog/dialog.js.map +1 -1
  131. package/dist/collection/components/dropdown/dropdown.js +134 -85
  132. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  133. package/dist/collection/components/file-upload/file-upload-interface.js.map +1 -1
  134. package/dist/collection/components/file-upload/file-upload.css +9 -17
  135. package/dist/collection/components/file-upload/file-upload.js +17 -20
  136. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  137. package/dist/collection/components/global-nav/global-nav.css +2 -2
  138. package/dist/collection/components/global-nav/global-nav.js +5 -5
  139. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  140. package/dist/collection/components/global-search-results/global-search-results.css +3 -3
  141. package/dist/collection/components/grid/grid-item.js +1 -1
  142. package/dist/collection/components/grid/grid.js +1 -1
  143. package/dist/collection/components/grid/grid.js.map +1 -1
  144. package/dist/collection/components/hero/hero.js +1 -1
  145. package/dist/collection/components/hero/hero.js.map +1 -1
  146. package/dist/collection/components/icon/icon.js +1 -1
  147. package/dist/collection/components/icon-button/icon-button.css +2 -2
  148. package/dist/collection/components/input/input.css +9 -11
  149. package/dist/collection/components/input/input.js +26 -7
  150. package/dist/collection/components/input/input.js.map +1 -1
  151. package/dist/collection/components/menu/menu.css +7 -7
  152. package/dist/collection/components/menu/menu.js +1 -1
  153. package/dist/collection/components/menu/menu.js.map +1 -1
  154. package/dist/collection/components/menu-drawer/menu-drawer.js +1 -1
  155. package/dist/collection/components/menu-drawer/menu-drawer.js.map +1 -1
  156. package/dist/collection/components/nav-item/nav-item.js +5 -5
  157. package/dist/collection/components/nav-item/nav-item.js.map +1 -1
  158. package/dist/collection/components/range/range.css +4 -4
  159. package/dist/collection/components/range/range.js +5 -5
  160. package/dist/collection/components/range/range.js.map +1 -1
  161. package/dist/collection/components/rating/rating.js +1 -1
  162. package/dist/collection/components/rating/rating.js.map +1 -1
  163. package/dist/collection/components/resize-observe/resize-observe.js +2 -2
  164. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  165. package/dist/collection/components/select/select.css +4 -4
  166. package/dist/collection/components/select/select.js +6 -6
  167. package/dist/collection/components/select/select.js.map +1 -1
  168. package/dist/collection/components/slides/slides.css +2 -2
  169. package/dist/collection/components/slides/slides.js +7 -7
  170. package/dist/collection/components/spinner/spinner.css +2 -2
  171. package/dist/collection/components/sticky/sticker.js +1 -1
  172. package/dist/collection/components/sticky/sticker.js.map +1 -1
  173. package/dist/collection/components/tabs/tab-group.css +6 -6
  174. package/dist/collection/components/tabs/tab-group.js +3 -3
  175. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  176. package/dist/collection/components/tabs/tab.css +2 -2
  177. package/dist/collection/components/tooltip/tooltip.css +15 -13
  178. package/dist/collection/components/tooltip/tooltip.js +50 -34
  179. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  180. package/dist/collection/global/script/global.js +4 -2
  181. package/dist/collection/global/script/global.js.map +1 -1
  182. package/dist/collection/index.js +1 -1
  183. package/dist/collection/index.js.map +1 -1
  184. package/dist/collection/utils/gesture/swipe-back.js +1 -1
  185. package/dist/collection/utils/gesture/swipe-back.js.map +1 -1
  186. package/dist/collection/utils/{utils.js → index.js} +1 -1
  187. package/dist/collection/utils/{utils.js.map → index.js.map} +1 -1
  188. package/dist/collection/utils/store/component-store.js +1 -1
  189. package/dist/collection/utils/store/component-store.js.map +1 -1
  190. package/dist/collection/utils/testing/index.js +242 -0
  191. package/dist/collection/utils/testing/index.js.map +1 -0
  192. package/dist/custom-elements/index.js +374 -228
  193. package/dist/custom-elements/index.js.map +1 -1
  194. package/dist/esm/{algolia-data-a84aeef1.js → algolia-data-b31a9800.js} +2 -2
  195. package/dist/esm/algolia-data-b31a9800.js.map +1 -0
  196. package/dist/esm/algoliasearch.umd-7ecbe0e9.js +10 -0
  197. package/dist/esm/algoliasearch.umd-7ecbe0e9.js.map +1 -0
  198. package/dist/esm/{component-store-182d1931.js → component-store-93172454.js} +2 -2
  199. package/dist/esm/{component-store-182d1931.js.map → component-store-93172454.js.map} +1 -1
  200. package/dist/esm/{css-shim-f12af614.js → css-shim-4e602522.js} +2 -2
  201. package/dist/esm/{css-shim-f12af614.js.map → css-shim-4e602522.js.map} +1 -1
  202. package/dist/esm/{dom-2f25dd5a.js → dom-acc01cc2.js} +2 -2
  203. package/dist/esm/{dom-2f25dd5a.js.map → dom-acc01cc2.js.map} +1 -1
  204. package/dist/esm/{global-c85d24a2.js → global-118ae701.js} +5 -3
  205. package/dist/esm/global-118ae701.js.map +1 -0
  206. package/dist/esm/{utils-fd1ada22.js → index-269c88a9.js} +1 -1
  207. package/dist/esm/{utils-fd1ada22.js.map → index-269c88a9.js.map} +1 -1
  208. package/dist/esm/{index-20becda2.js → index-912ef959.js} +10 -3
  209. package/dist/esm/index-912ef959.js.map +1 -0
  210. package/dist/esm/index.js +2 -2
  211. package/dist/esm/index.js.map +1 -1
  212. package/dist/esm/loader.js +5 -5
  213. package/dist/esm/loader.js.map +1 -1
  214. package/dist/esm/nano-accordion.entry.js +1 -1
  215. package/dist/esm/nano-accordion.entry.js.map +1 -1
  216. package/dist/esm/nano-alert.entry.js +3 -3
  217. package/dist/esm/nano-alert.entry.js.map +1 -1
  218. package/dist/esm/nano-algolia-filter.entry.js +3 -3
  219. package/dist/esm/nano-algolia-filter.entry.js.map +1 -1
  220. package/dist/esm/nano-algolia-input.entry.js +5 -5
  221. package/dist/esm/nano-algolia-input.entry.js.map +1 -1
  222. package/dist/esm/nano-algolia-pagination.entry.js +2 -2
  223. package/dist/esm/nano-algolia-results.entry.js +2 -2
  224. package/dist/esm/nano-algolia.entry.js +5 -5
  225. package/dist/esm/nano-algolia.entry.js.map +1 -1
  226. package/dist/esm/nano-aspect-ratio.entry.js +12 -4
  227. package/dist/esm/nano-aspect-ratio.entry.js.map +1 -1
  228. package/dist/esm/nano-checkbox-group.entry.js +31 -16
  229. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  230. package/dist/esm/nano-checkbox.entry.js +33 -15
  231. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  232. package/dist/esm/nano-components.js +5 -5
  233. package/dist/esm/nano-components.js.map +1 -1
  234. package/dist/esm/nano-date-input.entry.js +45 -13
  235. package/dist/esm/nano-date-input.entry.js.map +1 -1
  236. package/dist/esm/nano-date-picker_2.entry.js +116 -71
  237. package/dist/esm/nano-date-picker_2.entry.js.map +1 -1
  238. package/dist/esm/nano-details.entry.js +15 -9
  239. package/dist/esm/nano-details.entry.js.map +1 -1
  240. package/dist/esm/nano-dialog.entry.js +5 -9
  241. package/dist/esm/nano-dialog.entry.js.map +1 -1
  242. package/dist/esm/nano-drawer.entry.js +1 -1
  243. package/dist/esm/nano-file-upload.entry.js +7 -14
  244. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  245. package/dist/esm/nano-global-nav.entry.js +5 -5
  246. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  247. package/dist/esm/nano-global-search-results.entry.js +2 -2
  248. package/dist/esm/nano-grid_3.entry.js +1 -1
  249. package/dist/esm/nano-grid_3.entry.js.map +1 -1
  250. package/dist/esm/nano-hero.entry.js +2 -2
  251. package/dist/esm/nano-hero.entry.js.map +1 -1
  252. package/dist/esm/nano-icon-button.entry.js +2 -2
  253. package/dist/esm/nano-icon.entry.js +1 -1
  254. package/dist/esm/nano-input.entry.js +12 -2
  255. package/dist/esm/nano-input.entry.js.map +1 -1
  256. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  257. package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
  258. package/dist/esm/nano-menu.entry.js +2 -2
  259. package/dist/esm/nano-menu.entry.js.map +1 -1
  260. package/dist/esm/nano-nav-item_2.entry.js +4 -4
  261. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  262. package/dist/esm/nano-range.entry.js +3 -3
  263. package/dist/esm/nano-range.entry.js.map +1 -1
  264. package/dist/esm/nano-rating.entry.js +2 -2
  265. package/dist/esm/nano-rating.entry.js.map +1 -1
  266. package/dist/esm/nano-resize-observe_2.entry.js +1 -1
  267. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  268. package/dist/esm/nano-select-option.entry.js +1 -1
  269. package/dist/esm/nano-slide.entry.js +1 -1
  270. package/dist/esm/nano-slides.entry.js +2 -2
  271. package/dist/esm/nano-spinner.entry.js +2 -2
  272. package/dist/esm/nano-sticker.entry.js +2 -2
  273. package/dist/esm/nano-sticker.entry.js.map +1 -1
  274. package/dist/esm/nano-tab-content.entry.js +1 -1
  275. package/dist/esm/nano-tab-group.entry.js +4 -4
  276. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  277. package/dist/esm/nano-tab.entry.js +2 -2
  278. package/dist/esm/nano-tooltip.entry.js +49 -35
  279. package/dist/esm/nano-tooltip.entry.js.map +1 -1
  280. package/dist/esm/{popover-05f61b5f.js → popover-a57d8413.js} +32 -32
  281. package/dist/esm/popover-a57d8413.js.map +1 -0
  282. package/dist/esm/{shadow-css-70953e54.js → shadow-css-460f0f5c.js} +2 -2
  283. package/dist/esm/shadow-css-460f0f5c.js.map +1 -0
  284. package/dist/esm-es5/{algolia-data-a84aeef1.js → algolia-data-b31a9800.js} +2 -2
  285. package/dist/esm-es5/algolia-data-b31a9800.js.map +1 -0
  286. package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js +4 -0
  287. package/dist/esm-es5/algoliasearch.umd-7ecbe0e9.js.map +1 -0
  288. package/dist/esm-es5/{component-store-182d1931.js → component-store-93172454.js} +2 -2
  289. package/dist/esm-es5/{component-store-182d1931.js.map → component-store-93172454.js.map} +1 -1
  290. package/dist/esm-es5/{css-shim-f12af614.js → css-shim-4e602522.js} +1 -1
  291. package/dist/esm-es5/{css-shim-f12af614.js.map → css-shim-4e602522.js.map} +1 -1
  292. package/dist/esm-es5/{dom-2f25dd5a.js → dom-acc01cc2.js} +1 -1
  293. package/dist/esm-es5/{dom-2f25dd5a.js.map → dom-acc01cc2.js.map} +1 -1
  294. package/dist/esm-es5/{global-c85d24a2.js → global-118ae701.js} +2 -2
  295. package/dist/esm-es5/global-118ae701.js.map +1 -0
  296. package/dist/esm-es5/{utils-fd1ada22.js → index-269c88a9.js} +1 -1
  297. package/dist/esm-es5/{utils-fd1ada22.js.map → index-269c88a9.js.map} +1 -1
  298. package/dist/esm-es5/index-912ef959.js +2 -0
  299. package/dist/esm-es5/index-912ef959.js.map +1 -0
  300. package/dist/esm-es5/index.js +1 -1
  301. package/dist/esm-es5/index.js.map +1 -1
  302. package/dist/esm-es5/loader.js +1 -1
  303. package/dist/esm-es5/loader.js.map +1 -1
  304. package/dist/esm-es5/nano-accordion.entry.js +1 -1
  305. package/dist/esm-es5/nano-accordion.entry.js.map +1 -1
  306. package/dist/esm-es5/nano-alert.entry.js +1 -1
  307. package/dist/esm-es5/nano-alert.entry.js.map +1 -1
  308. package/dist/esm-es5/nano-algolia-filter.entry.js +1 -1
  309. package/dist/esm-es5/nano-algolia-filter.entry.js.map +1 -1
  310. package/dist/esm-es5/nano-algolia-input.entry.js +1 -1
  311. package/dist/esm-es5/nano-algolia-input.entry.js.map +1 -1
  312. package/dist/esm-es5/nano-algolia-pagination.entry.js +1 -1
  313. package/dist/esm-es5/nano-algolia-results.entry.js +1 -1
  314. package/dist/esm-es5/nano-algolia.entry.js +1 -1
  315. package/dist/esm-es5/nano-algolia.entry.js.map +1 -1
  316. package/dist/esm-es5/nano-aspect-ratio.entry.js +1 -1
  317. package/dist/esm-es5/nano-aspect-ratio.entry.js.map +1 -1
  318. package/dist/esm-es5/nano-checkbox-group.entry.js +1 -1
  319. package/dist/esm-es5/nano-checkbox-group.entry.js.map +1 -1
  320. package/dist/esm-es5/nano-checkbox.entry.js +1 -1
  321. package/dist/esm-es5/nano-checkbox.entry.js.map +1 -1
  322. package/dist/esm-es5/nano-components.js +1 -1
  323. package/dist/esm-es5/nano-components.js.map +1 -1
  324. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  325. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  326. package/dist/esm-es5/nano-date-picker_2.entry.js +1 -1
  327. package/dist/esm-es5/nano-date-picker_2.entry.js.map +1 -1
  328. package/dist/esm-es5/nano-details.entry.js +1 -1
  329. package/dist/esm-es5/nano-details.entry.js.map +1 -1
  330. package/dist/esm-es5/nano-dialog.entry.js +1 -1
  331. package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
  332. package/dist/esm-es5/nano-drawer.entry.js +1 -1
  333. package/dist/esm-es5/nano-file-upload.entry.js +1 -1
  334. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  335. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  336. package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
  337. package/dist/esm-es5/nano-global-search-results.entry.js +1 -1
  338. package/dist/esm-es5/nano-grid_3.entry.js +1 -1
  339. package/dist/esm-es5/nano-grid_3.entry.js.map +1 -1
  340. package/dist/esm-es5/nano-hero.entry.js +1 -1
  341. package/dist/esm-es5/nano-hero.entry.js.map +1 -1
  342. package/dist/esm-es5/nano-icon-button.entry.js +1 -1
  343. package/dist/esm-es5/nano-icon.entry.js +1 -1
  344. package/dist/esm-es5/nano-input.entry.js +1 -1
  345. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  346. package/dist/esm-es5/nano-menu-drawer.entry.js +1 -1
  347. package/dist/esm-es5/nano-menu-drawer.entry.js.map +1 -1
  348. package/dist/esm-es5/nano-menu.entry.js +1 -1
  349. package/dist/esm-es5/nano-menu.entry.js.map +1 -1
  350. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  351. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  352. package/dist/esm-es5/nano-range.entry.js +1 -1
  353. package/dist/esm-es5/nano-range.entry.js.map +1 -1
  354. package/dist/esm-es5/nano-rating.entry.js +1 -1
  355. package/dist/esm-es5/nano-rating.entry.js.map +1 -1
  356. package/dist/esm-es5/nano-resize-observe_2.entry.js +1 -1
  357. package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
  358. package/dist/esm-es5/nano-select-option.entry.js +1 -1
  359. package/dist/esm-es5/nano-slide.entry.js +1 -1
  360. package/dist/esm-es5/nano-slides.entry.js +2 -2
  361. package/dist/esm-es5/nano-spinner.entry.js +1 -1
  362. package/dist/esm-es5/nano-sticker.entry.js +1 -1
  363. package/dist/esm-es5/nano-sticker.entry.js.map +1 -1
  364. package/dist/esm-es5/nano-tab-content.entry.js +1 -1
  365. package/dist/esm-es5/nano-tab-group.entry.js +1 -1
  366. package/dist/esm-es5/nano-tab-group.entry.js.map +1 -1
  367. package/dist/esm-es5/nano-tab.entry.js +1 -1
  368. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  369. package/dist/esm-es5/nano-tooltip.entry.js.map +1 -1
  370. package/dist/esm-es5/popover-a57d8413.js +2 -0
  371. package/dist/{esm/popover-05f61b5f.js.map → esm-es5/popover-a57d8413.js.map} +1 -1
  372. package/dist/esm-es5/{shadow-css-70953e54.js → shadow-css-460f0f5c.js} +1 -1
  373. package/dist/esm-es5/shadow-css-460f0f5c.js.map +1 -0
  374. package/dist/nano-components/index.esm.js +1 -1
  375. package/dist/nano-components/index.esm.js.map +1 -1
  376. package/dist/nano-components/nano-components.esm.js +1 -1
  377. package/dist/nano-components/nano-components.esm.js.map +1 -1
  378. package/dist/nano-components/nano-components.js +1 -1
  379. package/dist/nano-components/{p-c8ff45ab.system.entry.js → p-007c6041.system.entry.js} +2 -2
  380. package/dist/nano-components/{p-c8ff45ab.system.entry.js.map → p-007c6041.system.entry.js.map} +0 -0
  381. package/dist/nano-components/{p-1ce90ea4.entry.js → p-02177814.entry.js} +2 -2
  382. package/dist/nano-components/p-02177814.entry.js.map +1 -0
  383. package/dist/nano-components/{p-9b9ca075.system.entry.js → p-046af455.system.entry.js} +2 -2
  384. package/dist/nano-components/p-046af455.system.entry.js.map +1 -0
  385. package/dist/nano-components/p-05c062ae.js +4 -0
  386. package/dist/nano-components/p-05c062ae.js.map +1 -0
  387. package/dist/nano-components/{p-4365edc6.js → p-0c9eb057.js} +1 -1
  388. package/dist/nano-components/{p-4365edc6.js.map → p-0c9eb057.js.map} +1 -1
  389. package/dist/nano-components/{p-dce1f547.entry.js → p-104a9d64.entry.js} +2 -2
  390. package/dist/nano-components/p-104a9d64.entry.js.map +1 -0
  391. package/dist/nano-components/{p-8611e764.system.entry.js → p-10f24f67.system.entry.js} +2 -2
  392. package/dist/nano-components/{p-8611e764.system.entry.js.map → p-10f24f67.system.entry.js.map} +0 -0
  393. package/dist/nano-components/p-1477b91d.system.js +2 -0
  394. package/dist/nano-components/p-1477b91d.system.js.map +1 -0
  395. package/dist/nano-components/{p-461c539f.system.entry.js → p-1c7614c4.system.entry.js} +2 -2
  396. package/dist/nano-components/p-1c7614c4.system.entry.js.map +1 -0
  397. package/dist/nano-components/{p-8a41ccd9.system.entry.js → p-1d16e897.system.entry.js} +2 -2
  398. package/dist/nano-components/{p-8a41ccd9.system.entry.js.map → p-1d16e897.system.entry.js.map} +0 -0
  399. package/dist/nano-components/{p-4042379b.system.entry.js → p-21a6f295.system.entry.js} +2 -2
  400. package/dist/nano-components/p-21a6f295.system.entry.js.map +1 -0
  401. package/dist/nano-components/{p-9a456956.system.js → p-2671d998.system.js} +2 -2
  402. package/dist/nano-components/p-2671d998.system.js.map +1 -0
  403. package/dist/nano-components/{p-7367dfd5.system.entry.js → p-273b19b0.system.entry.js} +2 -2
  404. package/dist/nano-components/{p-7367dfd5.system.entry.js.map → p-273b19b0.system.entry.js.map} +0 -0
  405. package/dist/nano-components/p-28123e6e.entry.js +2 -0
  406. package/dist/nano-components/p-28123e6e.entry.js.map +1 -0
  407. package/dist/nano-components/{p-7b3de191.entry.js → p-2ae39fa1.entry.js} +2 -2
  408. package/dist/nano-components/p-2ae39fa1.entry.js.map +1 -0
  409. package/dist/nano-components/{p-47d2a49e.system.js → p-2d0b8da6.system.js} +1 -1
  410. package/dist/nano-components/{p-47d2a49e.system.js.map → p-2d0b8da6.system.js.map} +1 -1
  411. package/dist/nano-components/{p-6a9fe61f.system.entry.js → p-2edaf0eb.system.entry.js} +3 -3
  412. package/dist/nano-components/{p-6a9fe61f.system.entry.js.map → p-2edaf0eb.system.entry.js.map} +0 -0
  413. package/dist/nano-components/{p-be430309.system.entry.js → p-2f876f68.system.entry.js} +2 -2
  414. package/dist/nano-components/{p-be430309.system.entry.js.map → p-2f876f68.system.entry.js.map} +1 -1
  415. package/dist/nano-components/{p-e1429ff0.system.entry.js → p-305ba54b.system.entry.js} +2 -2
  416. package/dist/nano-components/p-305ba54b.system.entry.js.map +1 -0
  417. package/dist/nano-components/{p-e142f6b6.system.entry.js → p-30a22cd0.system.entry.js} +2 -2
  418. package/dist/nano-components/p-30a22cd0.system.entry.js.map +1 -0
  419. package/dist/nano-components/{p-a897cfae.system.entry.js → p-31c52d0a.system.entry.js} +2 -2
  420. package/dist/nano-components/p-31c52d0a.system.entry.js.map +1 -0
  421. package/dist/nano-components/{p-f578998d.system.entry.js → p-325f32b3.system.entry.js} +2 -2
  422. package/dist/nano-components/p-325f32b3.system.entry.js.map +1 -0
  423. package/dist/nano-components/{p-bc09eba8.entry.js → p-3b2ea5fd.entry.js} +2 -2
  424. package/dist/nano-components/p-3b2ea5fd.entry.js.map +1 -0
  425. package/dist/nano-components/{p-0283a2ec.js → p-4370f8ae.js} +2 -2
  426. package/dist/nano-components/p-4370f8ae.js.map +1 -0
  427. package/dist/nano-components/{p-d7eb8c22.system.js → p-4647a31f.system.js} +2 -2
  428. package/dist/nano-components/{p-d7eb8c22.system.js.map → p-4647a31f.system.js.map} +1 -1
  429. package/dist/nano-components/{p-79e11525.system.entry.js → p-491096f0.system.entry.js} +2 -2
  430. package/dist/nano-components/p-491096f0.system.entry.js.map +1 -0
  431. package/dist/nano-components/{p-fb8aa0a7.system.entry.js → p-4e21bfe1.system.entry.js} +2 -2
  432. package/dist/nano-components/{p-fb8aa0a7.system.entry.js.map → p-4e21bfe1.system.entry.js.map} +0 -0
  433. package/dist/nano-components/{p-847ce50c.entry.js → p-4fa0b560.entry.js} +2 -2
  434. package/dist/nano-components/{p-847ce50c.entry.js.map → p-4fa0b560.entry.js.map} +0 -0
  435. package/dist/nano-components/{p-1bd92497.system.entry.js → p-4fbc3c8b.system.entry.js} +2 -2
  436. package/dist/nano-components/{p-1bd92497.system.entry.js.map → p-4fbc3c8b.system.entry.js.map} +0 -0
  437. package/dist/nano-components/{p-5198e4c6.system.js → p-508484f8.system.js} +2 -2
  438. package/dist/nano-components/p-508484f8.system.js.map +1 -0
  439. package/dist/nano-components/p-5672ebbb.system.entry.js +2 -0
  440. package/dist/nano-components/p-5672ebbb.system.entry.js.map +1 -0
  441. package/dist/nano-components/{p-405d92a0.entry.js → p-574143b5.entry.js} +2 -2
  442. package/dist/nano-components/{p-405d92a0.entry.js.map → p-574143b5.entry.js.map} +0 -0
  443. package/dist/nano-components/{p-346f0d8c.system.entry.js → p-57434dc5.system.entry.js} +2 -2
  444. package/dist/nano-components/{p-346f0d8c.system.entry.js.map → p-57434dc5.system.entry.js.map} +0 -0
  445. package/dist/nano-components/{p-7b94cd1c.entry.js → p-574f1393.entry.js} +2 -2
  446. package/dist/nano-components/p-574f1393.entry.js.map +1 -0
  447. package/dist/nano-components/{p-6b22f5db.entry.js → p-580eac05.entry.js} +2 -2
  448. package/dist/nano-components/p-580eac05.entry.js.map +1 -0
  449. package/dist/nano-components/{p-fa884269.entry.js → p-59aba360.entry.js} +2 -2
  450. package/dist/nano-components/{p-fa884269.entry.js.map → p-59aba360.entry.js.map} +0 -0
  451. package/dist/nano-components/{p-e886b71e.system.js → p-698a8ab3.system.js} +2 -2
  452. package/dist/nano-components/p-698a8ab3.system.js.map +1 -0
  453. package/dist/nano-components/{p-6ba91d36.entry.js → p-6a3eee01.entry.js} +2 -2
  454. package/dist/nano-components/p-6a3eee01.entry.js.map +1 -0
  455. package/dist/nano-components/{p-1ed74370.entry.js → p-6aab52a0.entry.js} +2 -2
  456. package/dist/nano-components/p-6aab52a0.entry.js.map +1 -0
  457. package/dist/nano-components/{p-e5a19e7f.entry.js → p-6dc59ae8.entry.js} +2 -2
  458. package/dist/nano-components/{p-e5a19e7f.entry.js.map → p-6dc59ae8.entry.js.map} +0 -0
  459. package/dist/nano-components/{p-c171b273.entry.js → p-6eba639a.entry.js} +3 -3
  460. package/dist/nano-components/{p-c171b273.entry.js.map → p-6eba639a.entry.js.map} +0 -0
  461. package/dist/nano-components/{p-4739c706.system.entry.js → p-73d969d0.system.entry.js} +2 -2
  462. package/dist/nano-components/{p-4739c706.system.entry.js.map → p-73d969d0.system.entry.js.map} +1 -1
  463. package/dist/nano-components/{p-a50ca06f.system.entry.js → p-7dc79f13.system.entry.js} +2 -2
  464. package/dist/nano-components/{p-a50ca06f.system.entry.js.map → p-7dc79f13.system.entry.js.map} +0 -0
  465. package/dist/nano-components/{p-ba59977d.entry.js → p-7df31b1c.entry.js} +2 -2
  466. package/dist/nano-components/{p-ba59977d.entry.js.map → p-7df31b1c.entry.js.map} +0 -0
  467. package/dist/nano-components/{p-60b2ba81.system.entry.js → p-7e208086.system.entry.js} +2 -2
  468. package/dist/nano-components/p-7e208086.system.entry.js.map +1 -0
  469. package/dist/nano-components/{p-63cc5e0d.system.entry.js → p-7e4129b4.system.entry.js} +2 -2
  470. package/dist/nano-components/{p-63cc5e0d.system.entry.js.map → p-7e4129b4.system.entry.js.map} +0 -0
  471. package/dist/nano-components/{p-7fdff708.entry.js → p-7e68796f.entry.js} +2 -2
  472. package/dist/nano-components/p-7e68796f.entry.js.map +1 -0
  473. package/dist/nano-components/{p-027c5ed7.entry.js → p-81d7fd45.entry.js} +2 -2
  474. package/dist/nano-components/{p-027c5ed7.entry.js.map → p-81d7fd45.entry.js.map} +0 -0
  475. package/dist/nano-components/{p-d795cbd4.entry.js → p-82571543.entry.js} +2 -2
  476. package/dist/nano-components/p-82571543.entry.js.map +1 -0
  477. package/dist/nano-components/{p-7a0e9c6f.system.entry.js → p-844a1134.system.entry.js} +2 -2
  478. package/dist/nano-components/{p-7a0e9c6f.system.entry.js.map → p-844a1134.system.entry.js.map} +0 -0
  479. package/dist/nano-components/p-8535a942.entry.js +2 -0
  480. package/dist/nano-components/p-8535a942.entry.js.map +1 -0
  481. package/dist/nano-components/{p-c6796f75.entry.js → p-8c1d85ae.entry.js} +2 -2
  482. package/dist/nano-components/p-8c1d85ae.entry.js.map +1 -0
  483. package/dist/nano-components/{p-b6f5e5ef.system.js → p-8d24287e.system.js} +1 -1
  484. package/dist/nano-components/{p-b6f5e5ef.system.js.map → p-8d24287e.system.js.map} +1 -1
  485. package/dist/nano-components/{p-20ad4e90.system.entry.js → p-8ed6acea.system.entry.js} +2 -2
  486. package/dist/nano-components/{p-20ad4e90.system.entry.js.map → p-8ed6acea.system.entry.js.map} +0 -0
  487. package/dist/nano-components/p-9164e5e2.system.entry.js +2 -0
  488. package/dist/nano-components/p-9164e5e2.system.entry.js.map +1 -0
  489. package/dist/nano-components/{p-9920e725.system.js → p-9348c301.system.js} +1 -1
  490. package/dist/nano-components/p-9348c301.system.js.map +1 -0
  491. package/dist/nano-components/p-9371d81b.system.entry.js +2 -0
  492. package/dist/nano-components/p-9371d81b.system.entry.js.map +1 -0
  493. package/dist/nano-components/{p-89a5c54a.system.js → p-94f03788.system.js} +1 -1
  494. package/dist/nano-components/{p-89a5c54a.system.js.map → p-94f03788.system.js.map} +1 -1
  495. package/dist/nano-components/{p-fa926d02.system.entry.js → p-95a4c3f2.system.entry.js} +2 -2
  496. package/dist/nano-components/p-95a4c3f2.system.entry.js.map +1 -0
  497. package/dist/nano-components/p-96ba0d00.entry.js +2 -0
  498. package/dist/nano-components/p-96ba0d00.entry.js.map +1 -0
  499. package/dist/nano-components/p-99637978.entry.js +2 -0
  500. package/dist/nano-components/p-99637978.entry.js.map +1 -0
  501. package/dist/nano-components/{p-f5f76780.entry.js → p-9ccd832b.entry.js} +2 -2
  502. package/dist/nano-components/p-9ccd832b.entry.js.map +1 -0
  503. package/dist/nano-components/{p-e1fd68eb.js → p-a1680208.js} +2 -2
  504. package/dist/nano-components/{p-e1fd68eb.js.map → p-a1680208.js.map} +1 -1
  505. package/dist/nano-components/{p-fb7ae92c.entry.js → p-a53a193c.entry.js} +2 -2
  506. package/dist/nano-components/p-a53a193c.entry.js.map +1 -0
  507. package/dist/nano-components/p-a7ac7964.system.entry.js +2 -0
  508. package/dist/nano-components/p-a7ac7964.system.entry.js.map +1 -0
  509. package/dist/nano-components/{p-ec01a0ad.system.entry.js → p-aadd8c31.system.entry.js} +2 -2
  510. package/dist/nano-components/p-aadd8c31.system.entry.js.map +1 -0
  511. package/dist/nano-components/p-ab666582.entry.js +2 -0
  512. package/dist/nano-components/p-ab666582.entry.js.map +1 -0
  513. package/dist/nano-components/p-acd5d0f0.system.entry.js +2 -0
  514. package/dist/nano-components/p-acd5d0f0.system.entry.js.map +1 -0
  515. package/dist/nano-components/p-af9f6453.system.js +2 -0
  516. package/dist/nano-components/p-af9f6453.system.js.map +1 -0
  517. package/dist/nano-components/p-b1d3ab54.system.entry.js +2 -0
  518. package/dist/nano-components/p-b1d3ab54.system.entry.js.map +1 -0
  519. package/dist/nano-components/{p-27520572.entry.js → p-b3131821.entry.js} +2 -2
  520. package/dist/nano-components/{p-27520572.entry.js.map → p-b3131821.entry.js.map} +0 -0
  521. package/dist/nano-components/{p-e24d3e8a.entry.js → p-b7a58722.entry.js} +2 -2
  522. package/dist/nano-components/p-b7a58722.entry.js.map +1 -0
  523. package/dist/nano-components/p-bb0619e6.js +2 -0
  524. package/dist/nano-components/p-bb0619e6.js.map +1 -0
  525. package/dist/nano-components/{p-d0c501a0.entry.js → p-c3f861c5.entry.js} +2 -2
  526. package/dist/nano-components/{p-d0c501a0.entry.js.map → p-c3f861c5.entry.js.map} +1 -1
  527. package/dist/nano-components/{p-21f484a3.system.entry.js → p-c655e010.system.entry.js} +2 -2
  528. package/dist/nano-components/{p-21f484a3.system.entry.js.map → p-c655e010.system.entry.js.map} +1 -1
  529. package/dist/nano-components/p-c72b22be.entry.js +2 -0
  530. package/dist/nano-components/p-c72b22be.entry.js.map +1 -0
  531. package/dist/nano-components/p-d112948c.js +2 -0
  532. package/dist/nano-components/p-d112948c.js.map +1 -0
  533. package/dist/nano-components/{p-09b702fb.entry.js → p-d250987a.entry.js} +2 -2
  534. package/dist/nano-components/{p-09b702fb.entry.js.map → p-d250987a.entry.js.map} +0 -0
  535. package/dist/nano-components/p-d393d10a.system.entry.js +2 -0
  536. package/dist/nano-components/p-d393d10a.system.entry.js.map +1 -0
  537. package/dist/nano-components/p-db271541.entry.js +2 -0
  538. package/dist/nano-components/p-db271541.entry.js.map +1 -0
  539. package/dist/nano-components/p-dccd86ec.system.js +4 -0
  540. package/dist/nano-components/p-dccd86ec.system.js.map +1 -0
  541. package/dist/nano-components/p-e0cc37fb.entry.js +2 -0
  542. package/dist/nano-components/{p-2e1f6c4a.entry.js.map → p-e0cc37fb.entry.js.map} +1 -1
  543. package/dist/nano-components/{p-76bf0452.system.entry.js → p-e28536b4.system.entry.js} +2 -2
  544. package/dist/nano-components/p-e28536b4.system.entry.js.map +1 -0
  545. package/dist/nano-components/{p-acfe1b68.entry.js → p-ebf34764.entry.js} +2 -2
  546. package/dist/nano-components/{p-acfe1b68.entry.js.map → p-ebf34764.entry.js.map} +0 -0
  547. package/dist/nano-components/{p-e33dd8b9.js → p-ed174626.js} +1 -1
  548. package/dist/nano-components/p-ed174626.js.map +1 -0
  549. package/dist/nano-components/{p-c930d4f5.js → p-ed2efbeb.js} +1 -1
  550. package/dist/nano-components/{p-c930d4f5.js.map → p-ed2efbeb.js.map} +1 -1
  551. package/dist/nano-components/p-edddeaae.system.js +2 -0
  552. package/dist/nano-components/p-edddeaae.system.js.map +1 -0
  553. package/dist/nano-components/p-ef5d9308.entry.js +2 -0
  554. package/dist/nano-components/p-ef5d9308.entry.js.map +1 -0
  555. package/dist/nano-components/p-f234e064.system.entry.js +2 -0
  556. package/dist/nano-components/p-f234e064.system.entry.js.map +1 -0
  557. package/dist/nano-components/{p-507490fc.system.entry.js → p-f27c9429.system.entry.js} +2 -2
  558. package/dist/nano-components/{p-507490fc.system.entry.js.map → p-f27c9429.system.entry.js.map} +1 -1
  559. package/dist/nano-components/{p-372ce425.entry.js → p-f3688bce.entry.js} +2 -2
  560. package/dist/nano-components/{p-372ce425.entry.js.map → p-f3688bce.entry.js.map} +0 -0
  561. package/dist/nano-components/{p-35eb8352.system.entry.js → p-f86db7c0.system.entry.js} +2 -2
  562. package/dist/nano-components/{p-35eb8352.system.entry.js.map → p-f86db7c0.system.entry.js.map} +1 -1
  563. package/dist/nano-components/{p-6747f517.system.entry.js → p-fa86645d.system.entry.js} +2 -2
  564. package/dist/nano-components/p-fa86645d.system.entry.js.map +1 -0
  565. package/dist/nano-components/{p-9c26b459.js → p-fd0fca23.js} +1 -1
  566. package/dist/nano-components/{p-9c26b459.js.map → p-fd0fca23.js.map} +1 -1
  567. package/dist/nano-components/p-fdfa03d7.entry.js +2 -0
  568. package/dist/nano-components/p-fdfa03d7.entry.js.map +1 -0
  569. package/dist/nano-components/p-ff2ff5b0.js +2 -0
  570. package/dist/nano-components/p-ff2ff5b0.js.map +1 -0
  571. package/dist/nano-components/p-ff5890b4.entry.js +2 -0
  572. package/dist/nano-components/p-ff5890b4.entry.js.map +1 -0
  573. package/dist/nano-components/{p-23e9f09e.entry.js → p-ffab923c.entry.js} +2 -2
  574. package/dist/nano-components/p-ffab923c.entry.js.map +1 -0
  575. package/dist/themes/nanopore.css +1 -1
  576. package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +1 -1
  577. package/dist/types/components/checkbox/__tests__/__fixtures__/checkbox-templates.d.ts +8 -0
  578. package/dist/types/components/checkbox/checkbox-group.d.ts +4 -2
  579. package/dist/types/components/checkbox/checkbox.d.ts +9 -5
  580. package/dist/types/components/date-input/date-input.d.ts +9 -0
  581. package/dist/types/components/date-picker/date-picker.d.ts +9 -4
  582. package/dist/types/components/details/details.d.ts +1 -0
  583. package/dist/types/components/dropdown/dropdown.d.ts +21 -14
  584. package/dist/types/components/file-upload/file-upload-interface.d.ts +4 -3
  585. package/dist/types/components/file-upload/file-upload.d.ts +2 -12
  586. package/dist/types/components/input/input.d.ts +2 -1
  587. package/dist/types/components/tooltip/tooltip.d.ts +10 -7
  588. package/dist/types/components.d.ts +40 -14
  589. package/dist/types/index.d.ts +1 -1
  590. package/dist/types/utils/{utils.d.ts → index.d.ts} +0 -0
  591. package/dist/types/utils/testing/index.d.ts +49 -0
  592. package/docs-json.json +125 -47
  593. package/docs-vscode.json +9 -1
  594. package/package.json +10 -8
  595. package/dist/cjs/algolia-data-771a61ea.js.map +0 -1
  596. package/dist/cjs/algoliasearch.umd-51f0001d.js +0 -12
  597. package/dist/cjs/algoliasearch.umd-51f0001d.js.map +0 -1
  598. package/dist/cjs/global-befb7a64.js.map +0 -1
  599. package/dist/cjs/index-43791691.js.map +0 -1
  600. package/dist/cjs/popover-eccc07bd.js.map +0 -1
  601. package/dist/cjs/shadow-css-c5dce0c8.js.map +0 -1
  602. package/dist/collection/utils/testing-utils.js +0 -156
  603. package/dist/collection/utils/testing-utils.js.map +0 -1
  604. package/dist/esm/algolia-data-a84aeef1.js.map +0 -1
  605. package/dist/esm/algoliasearch.umd-2c129faa.js +0 -10
  606. package/dist/esm/algoliasearch.umd-2c129faa.js.map +0 -1
  607. package/dist/esm/global-c85d24a2.js.map +0 -1
  608. package/dist/esm/index-20becda2.js.map +0 -1
  609. package/dist/esm/shadow-css-70953e54.js.map +0 -1
  610. package/dist/esm-es5/algolia-data-a84aeef1.js.map +0 -1
  611. package/dist/esm-es5/algoliasearch.umd-2c129faa.js +0 -4
  612. package/dist/esm-es5/algoliasearch.umd-2c129faa.js.map +0 -1
  613. package/dist/esm-es5/global-c85d24a2.js.map +0 -1
  614. package/dist/esm-es5/index-20becda2.js +0 -2
  615. package/dist/esm-es5/index-20becda2.js.map +0 -1
  616. package/dist/esm-es5/popover-05f61b5f.js +0 -2
  617. package/dist/esm-es5/popover-05f61b5f.js.map +0 -1
  618. package/dist/esm-es5/shadow-css-70953e54.js.map +0 -1
  619. package/dist/nano-components/p-0283a2ec.js.map +0 -1
  620. package/dist/nano-components/p-1ce90ea4.entry.js.map +0 -1
  621. package/dist/nano-components/p-1ed74370.entry.js.map +0 -1
  622. package/dist/nano-components/p-1f7502fa.js +0 -2
  623. package/dist/nano-components/p-1f7502fa.js.map +0 -1
  624. package/dist/nano-components/p-1fd60eec.system.js +0 -2
  625. package/dist/nano-components/p-1fd60eec.system.js.map +0 -1
  626. package/dist/nano-components/p-201b5f5b.entry.js +0 -2
  627. package/dist/nano-components/p-201b5f5b.entry.js.map +0 -1
  628. package/dist/nano-components/p-214ad382.entry.js +0 -2
  629. package/dist/nano-components/p-214ad382.entry.js.map +0 -1
  630. package/dist/nano-components/p-23da4de5.js +0 -4
  631. package/dist/nano-components/p-23da4de5.js.map +0 -1
  632. package/dist/nano-components/p-23e9f09e.entry.js.map +0 -1
  633. package/dist/nano-components/p-2d59dda3.system.js +0 -2
  634. package/dist/nano-components/p-2d59dda3.system.js.map +0 -1
  635. package/dist/nano-components/p-2e1f6c4a.entry.js +0 -2
  636. package/dist/nano-components/p-4042379b.system.entry.js.map +0 -1
  637. package/dist/nano-components/p-45e06083.system.entry.js +0 -2
  638. package/dist/nano-components/p-45e06083.system.entry.js.map +0 -1
  639. package/dist/nano-components/p-461c539f.system.entry.js.map +0 -1
  640. package/dist/nano-components/p-4bca8761.entry.js +0 -2
  641. package/dist/nano-components/p-4bca8761.entry.js.map +0 -1
  642. package/dist/nano-components/p-4ee095f3.js +0 -2
  643. package/dist/nano-components/p-4ee095f3.js.map +0 -1
  644. package/dist/nano-components/p-5198e4c6.system.js.map +0 -1
  645. package/dist/nano-components/p-568be88a.entry.js +0 -2
  646. package/dist/nano-components/p-568be88a.entry.js.map +0 -1
  647. package/dist/nano-components/p-5918ac51.entry.js +0 -2
  648. package/dist/nano-components/p-5918ac51.entry.js.map +0 -1
  649. package/dist/nano-components/p-5f716719.system.entry.js +0 -2
  650. package/dist/nano-components/p-5f716719.system.entry.js.map +0 -1
  651. package/dist/nano-components/p-60b2ba81.system.entry.js.map +0 -1
  652. package/dist/nano-components/p-6747f517.system.entry.js.map +0 -1
  653. package/dist/nano-components/p-6b22f5db.entry.js.map +0 -1
  654. package/dist/nano-components/p-6ba91d36.entry.js.map +0 -1
  655. package/dist/nano-components/p-76bf0452.system.entry.js.map +0 -1
  656. package/dist/nano-components/p-79e11525.system.entry.js.map +0 -1
  657. package/dist/nano-components/p-7b3de191.entry.js.map +0 -1
  658. package/dist/nano-components/p-7b94cd1c.entry.js.map +0 -1
  659. package/dist/nano-components/p-7f3b4f80.entry.js +0 -2
  660. package/dist/nano-components/p-7f3b4f80.entry.js.map +0 -1
  661. package/dist/nano-components/p-7fdff708.entry.js.map +0 -1
  662. package/dist/nano-components/p-8fe04c5c.system.entry.js +0 -2
  663. package/dist/nano-components/p-8fe04c5c.system.entry.js.map +0 -1
  664. package/dist/nano-components/p-93b1eeea.system.js +0 -2
  665. package/dist/nano-components/p-93b1eeea.system.js.map +0 -1
  666. package/dist/nano-components/p-9920e725.system.js.map +0 -1
  667. package/dist/nano-components/p-9a456956.system.js.map +0 -1
  668. package/dist/nano-components/p-9b9ca075.system.entry.js.map +0 -1
  669. package/dist/nano-components/p-a897cfae.system.entry.js.map +0 -1
  670. package/dist/nano-components/p-bc09eba8.entry.js.map +0 -1
  671. package/dist/nano-components/p-c3401b82.entry.js +0 -2
  672. package/dist/nano-components/p-c3401b82.entry.js.map +0 -1
  673. package/dist/nano-components/p-c4edcfc5.system.entry.js +0 -2
  674. package/dist/nano-components/p-c4edcfc5.system.entry.js.map +0 -1
  675. package/dist/nano-components/p-c6796f75.entry.js.map +0 -1
  676. package/dist/nano-components/p-c8792b54.system.entry.js +0 -2
  677. package/dist/nano-components/p-c8792b54.system.entry.js.map +0 -1
  678. package/dist/nano-components/p-cb750e49.system.js +0 -4
  679. package/dist/nano-components/p-cb750e49.system.js.map +0 -1
  680. package/dist/nano-components/p-cc5080df.entry.js +0 -2
  681. package/dist/nano-components/p-cc5080df.entry.js.map +0 -1
  682. package/dist/nano-components/p-d2ae5ac1.entry.js +0 -2
  683. package/dist/nano-components/p-d2ae5ac1.entry.js.map +0 -1
  684. package/dist/nano-components/p-d795cbd4.entry.js.map +0 -1
  685. package/dist/nano-components/p-da9f75d2.system.entry.js +0 -2
  686. package/dist/nano-components/p-da9f75d2.system.entry.js.map +0 -1
  687. package/dist/nano-components/p-dce1f547.entry.js.map +0 -1
  688. package/dist/nano-components/p-dd66cc74.entry.js +0 -2
  689. package/dist/nano-components/p-dd66cc74.entry.js.map +0 -1
  690. package/dist/nano-components/p-e1429ff0.system.entry.js.map +0 -1
  691. package/dist/nano-components/p-e142f6b6.system.entry.js.map +0 -1
  692. package/dist/nano-components/p-e24d3e8a.entry.js.map +0 -1
  693. package/dist/nano-components/p-e2848c8a.system.entry.js +0 -2
  694. package/dist/nano-components/p-e2848c8a.system.entry.js.map +0 -1
  695. package/dist/nano-components/p-e33dd8b9.js.map +0 -1
  696. package/dist/nano-components/p-e886b71e.system.js.map +0 -1
  697. package/dist/nano-components/p-e8a97250.system.entry.js +0 -2
  698. package/dist/nano-components/p-e8a97250.system.entry.js.map +0 -1
  699. package/dist/nano-components/p-ec01a0ad.system.entry.js.map +0 -1
  700. package/dist/nano-components/p-f55560d3.js +0 -2
  701. package/dist/nano-components/p-f55560d3.js.map +0 -1
  702. package/dist/nano-components/p-f578998d.system.entry.js.map +0 -1
  703. package/dist/nano-components/p-f5f76780.entry.js.map +0 -1
  704. package/dist/nano-components/p-fa926d02.system.entry.js.map +0 -1
  705. package/dist/nano-components/p-fb7ae92c.entry.js.map +0 -1
  706. package/dist/types/utils/testing-utils.d.ts +0 -41
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/date-picker/duet-date-picker/date-utils.ts","src/components/date-picker/duet-date-picker/date-picker-day.tsx","src/components/date-picker/duet-date-picker/date-picker-month.tsx","src/components/date-picker/duet-date-picker/date-localization.ts","src/components/date-picker/date-picker.scss?tag=nano-date-picker&encapsulation=shadow","src/components/date-picker/date-picker.tsx","src/components/dropdown/dropdown.scss?tag=nano-dropdown&encapsulation=shadow","src/components/dropdown/dropdown.tsx"],"names":["DaysOfWeek","isEqual","a","b","getFullYear","getMonth","getDate","addDays","date","days","d","Date","setDate","startOfWeek","firstDayOfWeek","Monday","day","getDay","diff","endOfWeek","startOfMonth","endOfMonth","inRange","min","max","clamp","time","getTime","getDaysInRange","start","end","current","push","getViewOfMonth","DatePickerDay","_a","focusedDay","today","onDaySelect","onKeyboardNavigation","focusedDayRef","disabled","isSelected","isToday","isFocused","isDisabled","isOutsideRange","handleClick","e","h","class","duet-date__day","is-outside","is-disabled","is-today","tabIndex","onClick","onKeyDown","type","aria-pressed","ref","el","aria-hidden","toLocaleDateString","undefined","month","chunk","array","chunkSize","result","i","length","slice","mapWithOffset","startingOffset","mapFn","map","_","adjustedIndex","DatePickerMonth","selectedDate","focusedDate","labelledById","localization","onDateSelect","onMouseDown","onFocusIn","isDateDisabled","role","aria-labelledby","onFocusin","dayNames","dayName","scope","substr","week","aria-selected","buttonLabel","placeholder","selectedDateMessage","prevMonthLabel","nextMonthLabel","monthSelectLabel","yearSelectLabel","closeLabel","keyboardInstruction","calendarHeading","monthNames","monthNamesShort","datePickerCss","range","from","to","NanoDatePicker","class_1","hostRef","_this","this","monthSelectId","createIdentifier","yearSelectId","dialogLabelId","initialTouchX","initialTouchY","activeFocus","defaultLocalization","isModal","enableActiveFocus","disableActiveFocus","handleTouchStart","event","touch","changedTouches","pageX","pageY","handleTouchMove","preventDefault","handleTouchEnd","distX","distY","threshold","isHorizontalSwipe","Math","abs","addMonths","handleNextMonthClick","handlePreviousMonthClick","handleKeyboardNavigation","key","shiftKey","ele","firstFocusEle","firstFocusableElement","focus","handled","addYears","handleDaySelect","_event","isAllowed","isInRange","parseISODate","setValue","setFocusedDay","handleMonthSelect","setMonth","parseInt","target","value","handleYearSelect","setYear","processFocusedDayNode","element","focusedDayNode","setTimeout","prototype","setFocus","clearTimeout","focusTimeoutId","monthSelectNode","handleSelectedDateChange","months","years","year","printISODate","nanoDatePicked","emit","valueAsDate","componentWillLoad","render","selectedYear","focusedMonth","focusedYear","minDate","maxDate","prevMonthDisabled","nextMonthDisabled","minYear","maxYear","Host","Object","assign","createColorClasses","color","duet-date__dialog","is-active","onTouchMove","onTouchStart","onTouchEnd","aria-live","id","htmlFor","onChange","selected","name","dropdownCss","Dropdown","class_2","dropdownId","dropDownIds","labelId","ignoreOpenWatcher","menuFocused","autoOpen","open","placement","closeOnSelect","distance","skidding","hoist","dialogTitle","handleTriggerKeyDown","includes","show","stopPropagation","handleTriggerSlotChange","updateAccessibleTrigger","togglePanel","hide","handleOpenChange","handlePopoverOptionsChange","popover","setOptions","strategy","menuFocus","ev","tagName","toLowerCase","secondaryOpen","detail","secondaryMenu","panel","classList","add","transitionDone","then","remove","style","minHeight","scrollHeight","secondaryClose","parentElement","connectedCallback","handleDocumentKeyDown","bind","handleDocumentMouseDown","handlePanelSelect","containingElement","host","componentDidLoad","Popover","trigger","positioner","transitionElement","onAfterHide","nanoAfterHide","onAfterShow","nanoAfterShow","onTransitionEnd","scrollTop","disconnectedCallback","destroy","nanoShow","defaultPrevented","document","addEventListener","nanoHide","removeEventListener","getMenu","querySelector","activeElement","closest","menu","dispatchEvent","KeyboardEvent","assignedElements","Array","querySelectorAll","accessibleTrigger","getNearestTabbableElement","setAttribute","part","dropdown","dropdown--open","aria-expanded","aria-haspopup","onSlotchange","split","join","aria-modal"],"mappings":"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","sourcesContent":["const ISO_DATE_FORMAT = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\nexport enum DaysOfWeek {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n\nexport function createDate(year: string, month: string, day: string): Date {\n var dayInt = parseInt(day, 10);\n var monthInt = parseInt(month, 10);\n var yearInt = parseInt(year, 10);\n\n const isValid =\n Number.isInteger(yearInt) && // all parts should be integers\n Number.isInteger(monthInt) &&\n Number.isInteger(dayInt) &&\n monthInt > 0 && // month must be 1-12\n monthInt <= 12 &&\n dayInt > 0 && // day must be 1-31\n dayInt <= 31 &&\n yearInt > 0;\n\n if (isValid) {\n return new Date(yearInt, monthInt - 1, dayInt);\n }\n}\n\n/**\n * @param value date string in ISO format YYYY-MM-DD\n */\nexport function parseISODate(value: string): Date {\n if (!value) {\n return;\n }\n\n const matches = value.match(ISO_DATE_FORMAT);\n\n if (matches) {\n return createDate(matches[1], matches[2], matches[3]);\n }\n}\n\n/**\n * print date in format YYYY-MM-DD\n * @param date\n */\nexport function printISODate(date: Date): string {\n if (!date) {\n return '';\n }\n\n var d = date.getDate().toString(10);\n var m = (date.getMonth() + 1).toString(10);\n var y = date.getFullYear().toString(10);\n\n // days are not zero-indexed, so pad if less than 10\n if (date.getDate() < 10) {\n d = `0${d}`;\n }\n\n // months *are* zero-indexed, pad if less than 9!\n if (date.getMonth() < 9) {\n m = `0${m}`;\n }\n\n return `${y}-${m}-${d}`;\n}\n\n/**\n * Compare if two dates are equal in terms of day, month, and year\n */\nexport function isEqual(a: Date, b: Date): boolean {\n if (a == null || b == null) {\n return false;\n }\n\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function addDays(date: Date, days: number): Date {\n var d = new Date(date);\n d.setDate(d.getDate() + days);\n return d;\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const d = new Date(date);\n d.setMonth(date.getMonth() + months);\n return d;\n}\n\nexport function addYears(date: Date, years: number): Date {\n const d = new Date(date);\n d.setFullYear(date.getFullYear() + years);\n return d;\n}\n\nexport function startOfWeek(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date {\n var d = new Date(date);\n var day = d.getDay();\n var diff = (day < firstDayOfWeek ? 7 : 0) + day - firstDayOfWeek;\n\n d.setDate(d.getDate() - diff);\n return d;\n}\n\nexport function endOfWeek(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date {\n var d = new Date(date);\n var day = d.getDay();\n var diff = (day < firstDayOfWeek ? -7 : 0) + 6 - (day - firstDayOfWeek);\n\n d.setDate(d.getDate() + diff);\n return d;\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nexport function setMonth(date: Date, month: number): Date {\n const d = new Date(date);\n d.setMonth(month);\n return d;\n}\n\nexport function setYear(date: Date, year: number): Date {\n const d = new Date(date);\n d.setFullYear(year);\n return d;\n}\n\n/**\n * Check if date is within a min and max\n */\nexport function inRange(date: Date, min?: Date, max?: Date): boolean {\n return clamp(date, min, max) === date;\n}\n\n/**\n * Ensures date is within range, returns min or max if out of bounds\n */\nexport function clamp(date: Date, min?: Date, max?: Date): Date {\n const time = date.getTime();\n\n if (min && min instanceof Date && time < min.getTime()) {\n return min;\n }\n\n if (max && max instanceof Date && time > max.getTime()) {\n return max;\n }\n\n return date;\n}\n\n/**\n * given start and end date, return an (inclusive) array of all dates in between\n * @param start\n * @param end\n */\nfunction getDaysInRange(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = start;\n\n while (!isEqual(current, end)) {\n days.push(current);\n current = addDays(current, 1);\n }\n\n days.push(current);\n\n return days;\n}\n\n/**\n * given a date, return an array of dates from a calendar perspective\n * @param date\n * @param firstDayOfWeek\n */\nexport function getViewOfMonth(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date[] {\n const start = startOfWeek(startOfMonth(date), firstDayOfWeek);\n const end = endOfWeek(endOfMonth(date), firstDayOfWeek);\n\n return getDaysInRange(start, end);\n}\n\n/**\n * Form random hash\n */\nexport function chr4() {\n return Math.random().toString(16).slice(-4);\n}\n\n/**\n * Create random identifier with a prefix\n * @param prefix\n */\nexport function createIdentifier(prefix) {\n return `${prefix}-${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;\n}\n","import { h, FunctionalComponent } from '@stencil/core';\nimport { isEqual } from './date-utils';\n\nexport type DatePickerDayProps = {\n focusedDay: Date;\n today: Date;\n day: Date;\n inRange: boolean;\n disabled: boolean;\n onDaySelect: (event: MouseEvent, day: Date) => void;\n onKeyboardNavigation: (event: KeyboardEvent) => void;\n focusedDayRef?: (element: HTMLButtonElement) => void;\n isSelected;\n};\n\nexport const DatePickerDay: FunctionalComponent<DatePickerDayProps> = ({\n focusedDay,\n today,\n day,\n onDaySelect,\n onKeyboardNavigation,\n focusedDayRef,\n inRange,\n disabled,\n isSelected,\n}) => {\n const isToday = isEqual(day, today);\n const isFocused = isEqual(day, focusedDay);\n const isDisabled = day.getMonth() !== focusedDay.getMonth() || disabled;\n const isOutsideRange = !inRange;\n\n function handleClick(e) {\n onDaySelect(e, day);\n }\n\n return (\n <button\n class={{\n 'duet-date__day': true,\n 'is-outside': isOutsideRange,\n 'is-disabled': isDisabled,\n 'is-today': isToday,\n }}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={onKeyboardNavigation}\n disabled={isOutsideRange}\n type=\"button\"\n aria-pressed={isSelected ? 'true' : 'false'}\n ref={(el) => {\n if (isFocused && el && focusedDayRef) {\n focusedDayRef(el);\n }\n }}\n >\n <span aria-hidden=\"true\">{day.getDate()}</span>\n <span class=\"duet-date__vhidden\">\n {day.toLocaleDateString(undefined, { day: 'numeric', month: 'long' })}\n </span>\n </button>\n );\n};\n","import { h, FunctionalComponent } from '@stencil/core';\nimport { DuetLocalizedText } from './date-localization';\nimport { DatePickerDay, DatePickerDayProps } from './date-picker-day';\nimport { getViewOfMonth, inRange, DaysOfWeek, isEqual } from './date-utils';\nimport { DateDisabledPredicate } from '../../../interface';\n\nfunction chunk<T>(array: T[], chunkSize: number): T[][] {\n const result = [];\n\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n\n return result;\n}\n\nfunction mapWithOffset<T, U>(\n array: T[],\n startingOffset: number,\n mapFn: (item: T) => U\n): U[] {\n return array.map((_, i) => {\n const adjustedIndex = (i + startingOffset) % array.length;\n return mapFn(array[adjustedIndex]);\n });\n}\n\ntype DatePickerMonthProps = {\n selectedDate: Date;\n focusedDate: Date;\n labelledById: string;\n localization: DuetLocalizedText;\n firstDayOfWeek: DaysOfWeek;\n min?: Date;\n max?: Date;\n onDateSelect: DatePickerDayProps['onDaySelect'];\n onKeyboardNavigation: DatePickerDayProps['onKeyboardNavigation'];\n focusedDayRef: (element: HTMLButtonElement) => void;\n onFocusIn?: (e: FocusEvent) => void;\n onMouseDown?: (e: MouseEvent) => void;\n isDateDisabled: DateDisabledPredicate;\n};\n\nexport const DatePickerMonth: FunctionalComponent<DatePickerMonthProps> = ({\n selectedDate,\n focusedDate,\n labelledById,\n localization,\n firstDayOfWeek,\n min,\n max,\n onDateSelect,\n onKeyboardNavigation,\n focusedDayRef,\n onMouseDown,\n onFocusIn,\n isDateDisabled,\n}) => {\n const today = new Date();\n const days = getViewOfMonth(focusedDate, firstDayOfWeek);\n\n return (\n <table\n class=\"duet-date__table\"\n role=\"grid\"\n aria-labelledby={labelledById}\n // @ts-ignore\n onFocusin={onFocusIn}\n onMouseDown={onMouseDown}\n >\n <thead>\n <tr>\n {mapWithOffset(localization.dayNames, firstDayOfWeek, (dayName) => (\n <th class=\"duet-date__table-header\" scope=\"col\">\n <span aria-hidden=\"true\">{dayName.substr(0, 2)}</span>\n <span class=\"duet-date__vhidden\">{dayName}</span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {chunk(days, 7).map((week) => (\n <tr class=\"duet-date__row\">\n {week.map((day) => (\n <td\n class=\"duet-date__cell\"\n role=\"gridcell\"\n aria-selected={isEqual(day, selectedDate) ? 'true' : undefined}\n >\n <DatePickerDay\n day={day}\n today={today}\n focusedDay={focusedDate}\n inRange={inRange(day, min, max)}\n onDaySelect={onDateSelect}\n onKeyboardNavigation={onKeyboardNavigation}\n focusedDayRef={focusedDayRef}\n disabled={isDateDisabled(day)}\n isSelected={isEqual(day, selectedDate)}\n />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n","type MonthsNames = [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string\n];\ntype DayNames = [string, string, string, string, string, string, string];\n\nexport type DuetLocalizedText = {\n buttonLabel: string;\n placeholder: string;\n selectedDateMessage: string;\n prevMonthLabel: string;\n nextMonthLabel: string;\n monthSelectLabel: string;\n yearSelectLabel: string;\n closeLabel: string;\n keyboardInstruction: string;\n calendarHeading: string;\n dayNames: DayNames;\n monthNames: MonthsNames;\n monthNamesShort: MonthsNames;\n};\n\nconst localization: DuetLocalizedText = {\n buttonLabel: 'Choose date',\n placeholder: 'YYYY-MM-DD',\n selectedDateMessage: 'Selected date is',\n prevMonthLabel: 'Previous month',\n nextMonthLabel: 'Next month',\n monthSelectLabel: 'Month',\n yearSelectLabel: 'Year',\n closeLabel: 'Close window',\n keyboardInstruction: 'You can use arrow keys to navigate dates',\n calendarHeading: 'Choose a date',\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthNamesShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n};\n\nexport default localization;\n","@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --background: defaults to #{$layer-bg-color}\n * @prop --active-color: defaults to var(--nano-color-base, #{nano-color(primary,base)})\n * @prop --active-text-color: defaults to var(--nano-color-contrast, #{nano-color(primary, contrast)})\n * @prop --focus-shadow: defaults to #{$control-focus-style}\n * @prop --inactive-color: defaults to #{$button-bg-color}\n */\n\n --background: #{$layer-bg-color};\n --active-color: var(--nano-color-base, #{nano-color(primary, base)});\n --active-text-color:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n --focus-shadow: #{$control-focus-style};\n --inactive-color: #{$button-bg-color};\n\n display: block;\n font-size: 16px;\n}\n\n:host(.nano-color) {\n --active-color: var(--nano-color-base, #{nano-color(primary, base)});\n --active-text-color: #{current-color(contrast)};\n --focus-shadow: #{$control-focus-size current-color(tint, 0.56)};\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER\n// ---------------------------------------------\n\n.duet-date *,\n.duet-date *::before,\n.duet-date *::after {\n box-sizing: border-box;\n margin: 0;\n}\n\n.duet-date {\n box-sizing: border-box;\n color: currentColor;\n display: block;\n margin: 0;\n position: relative;\n text-align: left;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ DIALOG\n// ---------------------------------------------\n\n.duet-date__dialog {\n display: flex;\n top: 100%;\n max-width: 100%;\n width: 100%;\n\n &.is-left {\n left: auto;\n right: 0;\n width: auto;\n }\n}\n\n.duet-date__dialog-content {\n background: var(--background);\n min-width: 290px;\n padding: 16px 16px 20px;\n position: relative;\n transform: none;\n max-width: 100%;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ TABLE\n// ---------------------------------------------\n\n.duet-date__table {\n border-collapse: collapse;\n border-spacing: 0;\n font-size: 1em;\n line-height: 1.25;\n text-align: center;\n width: 100%;\n}\n\n.duet-date__table-header {\n font-size: 0.75em;\n font-weight: 600;\n letter-spacing: 1px;\n line-height: 1.25;\n padding-bottom: 8px;\n text-decoration: none;\n text-transform: uppercase;\n}\n\n.duet-date__cell {\n text-align: center;\n}\n\n.duet-date__day {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background: transparent;\n border: 0;\n border-radius: 50%;\n cursor: pointer;\n display: inline-block;\n font-size: 0.875em;\n font-variant-numeric: tabular-nums;\n line-height: 1.25;\n position: relative;\n text-align: center;\n vertical-align: middle;\n z-index: 1;\n transition: 0.15s ease all;\n height: 2.5em;\n width: 2.5em;\n\n &.is-today {\n box-shadow: 0 0 0 1px var(--active-color);\n position: relative;\n }\n\n &:hover::before,\n &.is-today::before {\n content: '';\n background: var(--active-color);\n border-radius: 50%;\n bottom: 0;\n left: 0;\n opacity: 0.16;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n [aria-selected='true'] & {\n background: var(--active-color);\n color: var(--active-text-color);\n box-shadow: none;\n outline: 0;\n }\n\n &:active {\n background: var(--active-color);\n box-shadow: var(--focus-shadow);\n color: var(--active-text-color);\n }\n\n &:focus {\n box-shadow: var(--focus-shadow);\n outline: 0;\n }\n\n &.is-disabled {\n background: transparent;\n box-shadow: none;\n cursor: default;\n opacity: 0.5;\n\n &::before {\n display: none;\n }\n }\n\n &.is-outside {\n background: var(--inactive-color);\n box-shadow: none;\n cursor: default;\n opacity: 0.6;\n pointer-events: none;\n\n &::before {\n display: none;\n }\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ HEADER\n// ---------------------------------------------\n\n.duet-date__header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 16px;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ NAVIGATION\n// ---------------------------------------------\n\n.duet-date__nav {\n white-space: nowrap;\n}\n\n.duet-date__prev,\n.duet-date__next {\n background: var(--inactive-color);\n -moz-appearance: none;\n -webkit-appearance: none;\n align-items: center;\n appearance: none;\n border: 0;\n border-radius: 50%;\n cursor: pointer;\n display: inline-flex;\n justify-content: space-around;\n margin-left: 8px;\n padding: 0;\n transition: background-color 300ms ease;\n font-size: 0.9em;\n height: 2.2em;\n width: 2.2em;\n\n &:focus {\n box-shadow: var(--focus-shadow);\n outline: 0;\n }\n\n &:active:focus {\n box-shadow: none;\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.5;\n }\n\n nano-icon {\n margin: 0 auto;\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ SELECT\n// ---------------------------------------------\n\n.duet-date__select {\n display: inline-flex;\n margin-top: 4px;\n position: relative;\n\n span {\n margin-right: 4px;\n }\n\n select {\n cursor: pointer;\n font-size: 1em;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 2;\n\n &:focus + .duet-date__select-label {\n box-shadow: var(--focus-shadow);\n }\n }\n}\n\n.duet-date__select-label {\n align-items: center;\n border-radius: 4px;\n display: flex;\n font-size: 1.25em;\n font-weight: 600;\n line-height: 1.25;\n padding: 0 4px 0 8px;\n pointer-events: none;\n position: relative;\n width: 100%;\n z-index: 1;\n\n nano-icon {\n font-size: 0.55em;\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ VISUALLY HIDDEN\n// ---------------------------------------------\n\n.duet-date__vhidden {\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n top: 0;\n width: 1px;\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n Prop,\n Element,\n h,\n Event,\n EventEmitter,\n State,\n Method,\n Watch,\n} from '@stencil/core';\nimport {\n addDays,\n startOfWeek,\n endOfWeek,\n setMonth,\n setYear,\n clamp,\n inRange,\n endOfMonth,\n startOfMonth,\n printISODate,\n parseISODate,\n createIdentifier,\n DaysOfWeek,\n} from '../../utils/date-utils';\nimport { DatePickerMonth } from './duet-date-picker/date-picker-month';\nimport defaultLocalization from './duet-date-picker/date-localization';\n\nimport {\n PickerChangeEvent,\n DuetLocalizedText,\n DateDisabledPredicate,\n Color,\n} from '../../interface';\nimport { createColorClasses } from '../../utils/utils';\n\nfunction range(from: number, to: number) {\n var result: number[] = [];\n for (var i = from; i <= to; i++) {\n result.push(i);\n }\n return result;\n}\n\n/**\n * A highly performant, small and accessible date-picker.\n * Customised from [Duet date-picker](https://duetds.github.io/date-picker/).\n */\n@Component({\n tag: 'nano-date-picker',\n styleUrl: 'date-picker.scss',\n shadow: true,\n})\nexport class NanoDatePicker implements ComponentInterface {\n private monthSelectId = createIdentifier('NanoDateMonth');\n private yearSelectId = createIdentifier('NanoDateYear');\n private dialogLabelId = createIdentifier('NanoDateLabel');\n\n private firstFocusableElement: HTMLElement;\n private monthSelectNode: HTMLElement;\n private focusedDayNode: HTMLButtonElement;\n\n private focusTimeoutId: ReturnType<typeof setTimeout>;\n\n private initialTouchX: number = null;\n private initialTouchY: number = null;\n\n @Element() host: HTMLNanoDatePickerElement;\n\n @State() activeFocus = false;\n @State() focusedDay = new Date();\n\n // Public Property API\n\n /** Selected Date. Must be in IS0-8601 format: YYYY-MM-DD. */\n @Prop({ mutable: true }) selectedDate: string = '';\n\n /** Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the max property. */\n @Prop() min: string = '';\n\n /** Maximum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the min property. */\n @Prop() max: string = '';\n\n /** Which day is considered first day of the week? `0` for Sunday, `1` for Monday, etc.\n * Default is Monday. */\n @Prop() firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday;\n\n /** Button labels, day names, month names, etc, used for localization.\n * Default is English. */\n @Prop() localization: DuetLocalizedText = defaultLocalization;\n\n /** The color to use from the application's color palette. */\n @Prop() color?: Color;\n\n /** Controls which days are disabled and therefore disallowed.\n * For example, this can be used to disallow selection of weekends. */\n @Prop() isDateDisabled: DateDisabledPredicate = () => false;\n\n /** Controls whether the picker is a modal or dialog,\n * popup control and will therefore keep focus within the control */\n @Prop() isModal: boolean = false;\n\n /** @internal First focusable element. Relevant for keeping focus within the control */\n @Prop() firstFocusEle: HTMLElement;\n\n // Events\n\n /** Event emitted when a date is selected. */\n @Event() nanoDatePicked: EventEmitter<PickerChangeEvent>;\n\n // Public methods API\n\n /** Focus to the calendar. If day set, will focus to the current selected day.\n * @param day\n */\n @Method()\n async setFocus(day: boolean = false) {\n this.setFocusedDay(parseISODate(this.selectedDate) || new Date());\n\n if (day) {\n setTimeout((_) => this.focusedDayNode.focus(), 20);\n return;\n }\n clearTimeout(this.focusTimeoutId);\n this.focusTimeoutId = setTimeout(() => this.monthSelectNode.focus(), 20);\n }\n\n @Watch('selectedDate')\n handleSelectedDateChange() {\n this.setFocus(true);\n }\n\n // Local methods.\n\n private enableActiveFocus = () => {\n this.activeFocus = true;\n };\n\n private disableActiveFocus = () => {\n this.activeFocus = false;\n };\n\n private addDays(days: number) {\n this.setFocusedDay(addDays(this.focusedDay, days));\n }\n\n private addMonths(months: number) {\n this.setMonth(this.focusedDay.getMonth() + months);\n }\n\n private addYears(years: number) {\n this.setYear(this.focusedDay.getFullYear() + years);\n }\n\n private startOfWeek() {\n this.setFocusedDay(startOfWeek(this.focusedDay, this.firstDayOfWeek));\n }\n\n private endOfWeek() {\n this.setFocusedDay(endOfWeek(this.focusedDay, this.firstDayOfWeek));\n }\n\n private setMonth(month: number) {\n const min = setMonth(startOfMonth(this.focusedDay), month);\n const max = endOfMonth(min);\n const date = setMonth(this.focusedDay, month);\n\n this.setFocusedDay(clamp(date, min, max));\n }\n\n private setYear(year: number) {\n const min = setYear(startOfMonth(this.focusedDay), year);\n const max = endOfMonth(min);\n const date = setYear(this.focusedDay, year);\n\n this.setFocusedDay(clamp(date, min, max));\n }\n\n private setFocusedDay(day: Date) {\n this.focusedDay = clamp(\n day,\n parseISODate(this.min),\n parseISODate(this.max)\n );\n }\n\n private handleTouchStart = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n this.initialTouchX = touch.pageX;\n this.initialTouchY = touch.pageY;\n };\n\n private handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n };\n\n private handleTouchEnd = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n const distX = touch.pageX - this.initialTouchX; // get horizontal dist traveled\n const distY = touch.pageY - this.initialTouchY; // get vertical dist traveled\n const threshold = 70;\n\n const isHorizontalSwipe =\n Math.abs(distX) >= threshold && Math.abs(distY) <= threshold;\n\n if (isHorizontalSwipe) {\n this.addMonths(distX < 0 ? 1 : -1);\n }\n\n this.initialTouchY = null;\n this.initialTouchX = null;\n };\n\n private handleNextMonthClick = (event: MouseEvent) => {\n event.preventDefault();\n this.addMonths(1);\n };\n\n private handlePreviousMonthClick = (event: MouseEvent) => {\n event.preventDefault();\n this.addMonths(-1);\n };\n\n private handleKeyboardNavigation = (event: KeyboardEvent) => {\n // handle tab separately, since it needs to be treated\n // differently to other keyboard interactions\n if (event.key === 'Tab' && !event.shiftKey && this.isModal) {\n event.preventDefault();\n let ele = this.firstFocusEle || this.firstFocusableElement;\n ele.focus();\n return;\n }\n\n var handled = true;\n\n switch (event.key) {\n case 'ArrowRight':\n this.addDays(1);\n break;\n case 'ArrowLeft':\n this.addDays(-1);\n break;\n case 'ArrowDown':\n this.addDays(7);\n break;\n case 'ArrowUp':\n this.addDays(-7);\n break;\n case 'PageUp':\n if (event.shiftKey) {\n this.addYears(-1);\n } else {\n this.addMonths(-1);\n }\n break;\n case 'PageDown':\n if (event.shiftKey) {\n this.addYears(1);\n } else {\n this.addMonths(1);\n }\n break;\n case 'Home':\n this.startOfWeek();\n break;\n case 'End':\n this.endOfWeek();\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n this.enableActiveFocus();\n }\n };\n\n private handleDaySelect = (_event: MouseEvent, day: Date) => {\n const isAllowed = !this.isDateDisabled(day);\n const isInRange = inRange(\n day,\n parseISODate(this.min),\n parseISODate(this.max)\n );\n\n if (!isInRange || !isAllowed) {\n return;\n }\n\n if (day.getMonth() === this.focusedDay.getMonth()) {\n this.setValue(day);\n } else {\n this.setFocusedDay(day);\n }\n };\n\n private handleMonthSelect = (e) => {\n this.setMonth(parseInt(e.target.value, 10));\n };\n\n private handleYearSelect = (e) => {\n this.setYear(parseInt(e.target.value, 10));\n };\n\n private setValue(date: Date) {\n this.selectedDate = printISODate(date);\n this.nanoDatePicked.emit({\n value: this.selectedDate,\n valueAsDate: date,\n });\n }\n\n private processFocusedDayNode = (element: HTMLButtonElement) => {\n this.focusedDayNode = element;\n\n if (this.activeFocus) {\n setTimeout(() => element.focus(), 0);\n }\n };\n\n componentWillLoad() {\n this.handleSelectedDateChange();\n }\n\n render() {\n const valueAsDate = parseISODate(this.selectedDate);\n const selectedYear = (valueAsDate || this.focusedDay).getFullYear();\n const focusedMonth = this.focusedDay.getMonth();\n const focusedYear = this.focusedDay.getFullYear();\n\n const minDate = parseISODate(this.min);\n const maxDate = parseISODate(this.max);\n const prevMonthDisabled =\n minDate != null &&\n minDate.getMonth() === focusedMonth &&\n minDate.getFullYear() === focusedYear;\n const nextMonthDisabled =\n maxDate != null &&\n maxDate.getMonth() === focusedMonth &&\n maxDate.getFullYear() === focusedYear;\n\n let minYear = selectedYear - 10;\n let maxYear = selectedYear + 10;\n if (minDate) minYear = minDate.getFullYear();\n if (maxDate) maxYear = maxDate.getFullYear();\n\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div class=\"duet-date\">\n <div\n class={{\n 'duet-date__dialog': true,\n 'is-active': true,\n }}\n onTouchMove={this.handleTouchMove}\n onTouchStart={this.handleTouchStart}\n onTouchEnd={this.handleTouchEnd}\n >\n <div class=\"duet-date__dialog-content\">\n <div\n class=\"duet-date__vhidden duet-date__instructions\"\n aria-live=\"polite\"\n >\n {this.localization.keyboardInstruction}\n </div>\n {/**\n * With onFocusIn, which is what TS types expect, Stencil ends up listening to a\n * focusIn event, which is wrong as it needs to be focusin. So we had to use onFocusin\n * here which is wrong for the TS types, but ends up with the correct event listener\n * in Stencil. See issue: https://github.com/ionic-team/stencil/issues/2628\n */}\n {/* @ts-ignore */}\n <div\n class=\"duet-date__header\"\n onFocusin={this.disableActiveFocus}\n >\n <div>\n <h2\n id={this.dialogLabelId}\n class=\"duet-date__vhidden\"\n aria-live=\"polite\"\n >\n {this.localization.monthNames[focusedMonth]}{' '}\n {this.focusedDay.getFullYear()}\n </h2>\n <label\n htmlFor={this.monthSelectId}\n class=\"duet-date__vhidden\"\n >\n {this.localization.monthSelectLabel}\n </label>\n <div class=\"duet-date__select\">\n <select\n id={this.monthSelectId}\n class=\"duet-date__select--month\"\n ref={(element) =>\n (this.firstFocusableElement = this.monthSelectNode =\n element)\n }\n onChange={this.handleMonthSelect}\n >\n {this.localization.monthNames.map((month, i) => (\n <option\n key={month}\n value={i}\n selected={i === focusedMonth}\n disabled={\n !inRange(\n new Date(focusedYear, i, 1),\n minDate ? startOfMonth(minDate) : null,\n maxDate ? endOfMonth(maxDate) : null\n )\n }\n >\n {month}\n </option>\n ))}\n </select>\n <div class=\"duet-date__select-label\" aria-hidden=\"true\">\n <span>\n {this.localization.monthNamesShort[focusedMonth]}\n </span>\n <nano-icon name=\"light/chevron-down\"></nano-icon>\n </div>\n </div>\n\n <label htmlFor={this.yearSelectId} class=\"duet-date__vhidden\">\n {this.localization.yearSelectLabel}\n </label>\n <div class=\"duet-date__select\">\n <select\n id={this.yearSelectId}\n class=\"duet-date__select--year\"\n onChange={this.handleYearSelect}\n >\n {range(minYear, maxYear).map((year) => (\n <option key={year} selected={year === focusedYear}>\n {year}\n </option>\n ))}\n </select>\n <div class=\"duet-date__select-label\" aria-hidden=\"true\">\n <span>{this.focusedDay.getFullYear()}</span>\n <nano-icon name=\"light/chevron-down\"></nano-icon>\n </div>\n </div>\n </div>\n\n <div class=\"duet-date__nav\">\n <button\n class=\"duet-date__prev\"\n onClick={this.handlePreviousMonthClick}\n disabled={prevMonthDisabled}\n type=\"button\"\n >\n <nano-icon name=\"light/chevron-left\"></nano-icon>\n <span class=\"duet-date__vhidden\">\n {this.localization.prevMonthLabel}\n </span>\n </button>\n <button\n class=\"duet-date__next\"\n onClick={this.handleNextMonthClick}\n disabled={nextMonthDisabled}\n type=\"button\"\n >\n <nano-icon name=\"light/chevron-right\"></nano-icon>\n <span class=\"duet-date__vhidden\">\n {this.localization.nextMonthLabel}\n </span>\n </button>\n </div>\n </div>\n <div>\n <DatePickerMonth\n selectedDate={valueAsDate}\n focusedDate={this.focusedDay}\n onDateSelect={this.handleDaySelect}\n onKeyboardNavigation={this.handleKeyboardNavigation}\n labelledById={this.dialogLabelId}\n localization={this.localization}\n firstDayOfWeek={this.firstDayOfWeek}\n focusedDayRef={this.processFocusedDayNode}\n min={minDate}\n max={maxDate}\n isDateDisabled={this.isDateDisabled}\n />\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --width: width of the dropdown. Defaults to 'auto'\n * @prop --border: Defaults to #{$layer-border-style}\n * @prop --border-radius: Defaults to #{$layer-bg-color};\n * @prop --background: Defaults to #{$layer-bg-color};\n * @prop --padding: padding of the drop down. Default to '10px 0';\n */\n\n --width: auto;\n --border: #{$layer-border-style};\n --border-radius: #{$layer-border-radius};\n --background: #{$layer-bg-color};\n --padding: 10px 0;\n --overflow: hidden;\n --dropdown-z-index: #{$layer-index-dropdown};\n}\n\n.dropdown {\n position: relative;\n\n &__trigger {\n display: block;\n }\n\n &__positioner {\n position: absolute;\n z-index: var(--dropdown-z-index);\n\n @media (max-width: 35.9375em) {\n z-index: 100;\n }\n }\n\n &__panel {\n padding: var(--padding);\n background: var(--background);\n width: var(--width);\n border: var(--border);\n border-radius: var(--border-radius);\n color: currentColor;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: 0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;\n min-height: 20px;\n overflow: var(--overflow);\n box-sizing: content-box !important;\n\n &.top {\n transform: translateY(-20px) translateZ(0);\n }\n\n &.bottom {\n transform: translateY(20px) translateZ(0);\n }\n\n .dropdown__positioner.popover-visible & {\n opacity: 1;\n transform: translateY(0) translateZ(0);\n }\n\n ::slotted(nano-menu) {\n max-height: 50vh;\n }\n }\n\n &__accessible-title {\n @include visually-hide();\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n Watch,\n h,\n Listen,\n ComponentInterface,\n} from '@stencil/core';\nimport Popover from '../../utils/popover';\nimport { transitionDone } from '../../utils/utils';\nimport { NavItemEventDetail } from '../../interface';\nimport { getNearestTabbableElement } from '../../utils/tabbable';\n\n/**\n * Dropdowns show additional content in a panel.\n * Designed to work well with nano-menu components to provide a list of options (works well with nano-nav-items).\n * @slot trigger - The dropdown's trigger.\n * @slot - The dropdown's content.\n */\n@Component({\n tag: 'nano-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown implements ComponentInterface {\n private dropdownId = `dropdown-${dropDownIds++}`;\n private labelId = this.dropdownId + '-title';\n private ignoreOpenWatcher = false;\n private panel: HTMLElement;\n private popover: Popover;\n private trigger: HTMLElement;\n private positioner: HTMLElement;\n private menuFocused: boolean = false;\n\n @Element() host: HTMLNanoDropdownElement;\n\n /** Determines if the dropdown should open automatically when the trigger is clicked */\n @Prop() autoOpen = true;\n\n /** Indicates whether or not the dropdown is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /**\n * The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\n * inside of the viewport.\n */\n @Prop() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'bottom-start';\n\n /**\n * Determines whether the dropdown should hide when a menu item is selected.\n */\n @Prop() closeOnSelect = true;\n\n /**\n * The dropdown will close when the user interacts outside of this element (e.g. clicking).\n */\n @Prop() containingElement: HTMLElement;\n\n /**\n * The distance in pixels from which to offset the panel away from its trigger.\n */\n @Prop() distance = 2;\n\n /**\n * The distance in pixels from which to offset the panel along its trigger.\n */\n @Prop() skidding = 0;\n\n /**\n * Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`.\n */\n @Prop() hoist = false;\n\n /**\n * Title used to describe the dropdown content for accessibility\n */\n @Prop() dialogTitle: string | null = null;\n\n /**\n * Emitted when the dropdown opens. Calling `event.preventDefault()` will prevent it from being opened.\n */\n @Event() nanoShow: EventEmitter;\n\n /**\n * Emitted after the dropdown opens and all transitions are complete.\n */\n @Event() nanoAfterShow: EventEmitter;\n\n /**\n * Emitted when the dropdown closes. Calling `event.preventDefault()` will prevent it from being closed.\n */\n @Event() nanoHide: EventEmitter;\n\n /**\n * Emitted after the dropdown closes and all transitions are complete.\n */\n @Event() nanoAfterHide: EventEmitter;\n\n @Watch('open')\n handleOpenChange() {\n if (!this.ignoreOpenWatcher) {\n this.open ? this.show() : this.hide();\n this.updateAccessibleTrigger();\n }\n }\n\n @Watch('placement')\n @Watch('distance')\n @Watch('skidding')\n @Watch('hoist')\n handlePopoverOptionsChange() {\n this.popover.setOptions({\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n skidding: this.skidding,\n distance: this.distance,\n });\n }\n\n @Listen('nanoFocus')\n menuFocus(ev: CustomEvent) {\n let target = ev.target as HTMLElement;\n if (\n !target ||\n !target.tagName ||\n target.tagName.toLowerCase() !== 'nano-menu'\n )\n return;\n this.menuFocused = true;\n }\n\n @Listen('nanoOpen')\n secondaryOpen(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n\n this.panel.classList.add('loading');\n transitionDone(this.panel).then(() =>\n this.panel.classList.remove('loading')\n );\n this.panel.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n if (!(ev.target as HTMLElement).parentElement) return;\n this.panel.style.minHeight =\n (ev.target as HTMLElement).parentElement.scrollHeight + 'px';\n }\n\n connectedCallback() {\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handlePanelSelect = this.handlePanelSelect.bind(this);\n\n if (!this.containingElement) this.containingElement = this.host;\n }\n\n componentDidLoad() {\n this.popover = new Popover(this.trigger, this.positioner, {\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.panel,\n onAfterHide: () => this.nanoAfterHide.emit(),\n onAfterShow: () => this.nanoAfterShow.emit(),\n onTransitionEnd: () => {\n if (!this.open) {\n this.panel.scrollTop = 0;\n }\n },\n });\n\n // Show on init if open\n if (this.open) {\n this.show();\n }\n }\n\n disconnectedCallback() {\n this.hide();\n if (this.popover) this.popover.destroy();\n }\n\n /** Shows the dropdown panel */\n @Method()\n async show() {\n this.ignoreOpenWatcher = true;\n this.open = true;\n\n const nanoShow = this.nanoShow.emit();\n\n if (nanoShow.defaultPrevented) {\n this.open = false;\n this.ignoreOpenWatcher = false;\n return;\n }\n\n this.popover.show();\n this.ignoreOpenWatcher = false;\n\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n /** Hides the dropdown panel */\n @Method()\n async hide() {\n this.ignoreOpenWatcher = true;\n this.open = false;\n\n const nanoHide = this.nanoHide.emit();\n\n if (nanoHide.defaultPrevented) {\n this.open = true;\n this.ignoreOpenWatcher = false;\n return;\n }\n\n if (this.popover) this.popover.hide();\n this.ignoreOpenWatcher = false;\n\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n\n this.menuFocused = false;\n }\n\n private getMenu() {\n return this.host.querySelector('nano-menu') as HTMLNanoMenuElement;\n }\n\n private handleDocumentKeyDown(event: KeyboardEvent) {\n // Close when escape is pressed\n if (event.key === 'Escape') {\n this.hide();\n return;\n }\n\n // Close when tabbing results in the focus leaving the close element\n if (event.key === 'Tab') {\n setTimeout(() => {\n if (\n document.activeElement &&\n document.activeElement.closest(\n this.containingElement.tagName.toLowerCase()\n ) !== this.containingElement\n ) {\n this.hide();\n return;\n }\n });\n }\n\n const menu = this.getMenu();\n\n // If a menu is present, focus on it when certain keys are pressed\n if (menu && ['ArrowDown', 'ArrowUp'].includes(event.key)) {\n if (!this.open || this.menuFocused) return;\n event.preventDefault();\n menu.setFocus();\n return;\n }\n\n // All other keys focus the menu and pass the event through to menu (necessary for type-to-search to work)\n if (menu && event.target !== menu) {\n menu.dispatchEvent(new KeyboardEvent(event.type, event));\n return;\n }\n }\n\n private handleDocumentMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement;\n\n // Close when clicking outside of the close element\n if (\n target.closest(this.containingElement.tagName.toLowerCase()) !==\n this.containingElement\n ) {\n this.hide();\n return;\n }\n }\n\n @Listen('nanoSelect')\n handlePanelSelect(event: CustomEvent) {\n const target = event.target as HTMLElement;\n\n // Hide the dropdown when a menu item is selected\n if (this.closeOnSelect && target.tagName.toLowerCase() === 'nano-menu')\n this.hide();\n }\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n // Open the panel when pressing down or up while focused on the trigger\n if (!this.open && ['ArrowDown', 'ArrowUp', ' '].includes(event.key)) {\n this.show();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private handleTriggerSlotChange = () => {\n this.updateAccessibleTrigger();\n };\n\n private togglePanel = () => {\n if (!this.autoOpen) return;\n this.open ? this.hide() : this.show();\n };\n\n // Slotted triggers can be arbitrary content, but we need to link them to the dropdown panel with `aria-haspopup` and\n // `aria-expanded`. These must be applied to the \"accessible trigger\" (the tabbable portion of the trigger element\n // that gets slotted in) so screen readers will understand them. The accessible trigger could be the slotted element,\n private updateAccessibleTrigger() {\n const assignedElements = Array.from(\n this.host.querySelectorAll('[slot=\"trigger\"]')\n );\n const accessibleTrigger = assignedElements.map(\n getNearestTabbableElement\n )[0];\n\n if (accessibleTrigger) {\n accessibleTrigger.setAttribute('aria-haspopup', 'true');\n accessibleTrigger.setAttribute(\n 'aria-expanded',\n this.open ? 'true' : 'false'\n );\n }\n }\n\n render() {\n return (\n <div\n part=\"base\"\n id={this.dropdownId}\n class={{\n dropdown: true,\n 'dropdown--open': this.open,\n }}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-haspopup=\"true\"\n >\n <span\n part=\"trigger\"\n class=\"dropdown__trigger\"\n ref={(el) => (this.trigger = el)}\n onKeyDown={this.handleTriggerKeyDown}\n onClick={this.togglePanel}\n >\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange} />\n </span>\n\n <div ref={(el) => (this.positioner = el)} class=\"dropdown__positioner\">\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class={`dropdown__panel ${this.placement.split('-').join(' ')}`}\n aria-hidden={!this.open}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={this.dialogTitle ? this.labelId : undefined}\n >\n {this.dialogTitle && (\n <h2\n id={this.labelId}\n class=\"dropdown__accessible-title\"\n aria-live=\"polite\"\n >\n {this.dialogTitle}\n </h2>\n )}\n <slot />\n </div>\n </div>\n </div>\n );\n }\n}\n\nlet dropDownIds = 0;\n"]}
1
+ {"version":3,"sources":["src/components/date-picker/duet-date-picker/date-utils.ts","src/components/date-picker/duet-date-picker/date-picker-day.tsx","src/components/date-picker/duet-date-picker/date-picker-month.tsx","src/components/date-picker/duet-date-picker/date-localization.ts","src/components/date-picker/date-picker.scss?tag=nano-date-picker&encapsulation=shadow","src/components/date-picker/date-picker.tsx","src/components/dropdown/dropdown.scss?tag=nano-dropdown&encapsulation=shadow","src/components/dropdown/dropdown.tsx"],"names":["DaysOfWeek","isEqual","a","b","getFullYear","getMonth","getDate","addDays","date","days","d","Date","setDate","startOfWeek","firstDayOfWeek","Monday","day","getDay","diff","endOfWeek","startOfMonth","endOfMonth","inRange","min","max","clamp","time","getTime","getDaysInRange","start","end","current","push","getViewOfMonth","DatePickerDay","_a","focusedDay","today","onDaySelect","onKeyboardNavigation","focusedDayRef","disabled","isSelected","isToday","isFocused","isDisabled","isOutsideRange","handleClick","e","h","class","duet-date__day","is-outside","is-disabled","is-today","tabIndex","onClick","onKeyDown","type","aria-pressed","ref","el","aria-hidden","toLocaleDateString","undefined","month","chunk","array","chunkSize","result","i","length","slice","mapWithOffset","startingOffset","mapFn","map","_","adjustedIndex","DatePickerMonth","selectedDate","focusedDate","labelledById","localization","onDateSelect","onMouseDown","onFocusIn","isDateDisabled","role","aria-labelledby","onFocusin","dayNames","dayName","scope","substr","week","aria-selected","buttonLabel","placeholder","selectedDateMessage","prevMonthLabel","nextMonthLabel","monthSelectLabel","yearSelectLabel","closeLabel","keyboardInstruction","calendarHeading","monthNames","monthNamesShort","datePickerCss","range","from","to","DatePicker","class_1","hostRef","_this","this","monthSelectId","createIdentifier","yearSelectId","dialogLabelId","initialTouchX","initialTouchY","activeFocus","defaultLocalization","isModal","enableActiveFocus","disableActiveFocus","handleTouchStart","event","touch","changedTouches","pageX","pageY","handleTouchMove","preventDefault","handleTouchEnd","distX","distY","threshold","isHorizontalSwipe","Math","abs","addMonths","handleNextMonthClick","handlePreviousMonthClick","handleKeyboardNavigation","key","shiftKey","ele","firstFocusEle","firstFocusableElement","focus","handled","addYears","handleDaySelect","_event","isAllowed","isInRange","parseISODate","setValue","setFocusedDay","handleMonthSelect","setMonth","parseInt","target","value","handleYearSelect","setYear","processFocusedDayNode","element","focusedDayNode","setTimeout","prototype","setFocus","forceFocusVisible","clearTimeout","focusTimeoutId","focusVisible","force","monthSelectNode","handleSelectedDateChange","months","years","year","printISODate","nanoDatePicked","emit","valueAsDate","connectedCallback","yearSelectNode","observe","componentWillLoad","componentDidLoad","disconnectedCallback","unobserve","render","selectedYear","focusedMonth","focusedYear","minDate","maxDate","prevMonthDisabled","nextMonthDisabled","minYear","maxYear","Host","Object","assign","createColorClasses","color","duet-date__dialog","is-active","onTouchMove","onTouchStart","onTouchEnd","aria-live","id","htmlFor","onChange","selected","name","dropdownCss","Dropdown","class_2","dropdownId","dropDownIds","labelId","ignoreOpenWatcher","menuFocused","autoOpen","open","closeOnSelect","tetherTo","placement","distance","skidding","hoist","togglePanel","hide","show","handleTriggerKeyDown","includes","stopPropagation","handleTriggerSlotChange","updateAccessibleTrigger","handleOpenChange","handleTetherToChange","createPopover","handlePopoverOptionsChange","popover","setOptions","strategy","menuFocus","ev","tagName","toLowerCase","secondaryOpen","detail","secondaryMenu","panel","classList","add","transitionDone","then","remove","style","minHeight","scrollHeight","secondaryClose","parentElement","handlePanelSelect","nanoShow","defaultPrevented","document","addEventListener","handleDocumentMouseDown","handleDocumentKeyDown","nanoHide","removeEventListener","getMenu","host","querySelector","accessibleTrigger","assignedElements","Array","querySelectorAll","getNearestTabbableElement","setAttribute","activeElement","closest","containingElement","menu","dispatchEvent","KeyboardEvent","destroy","Popover","trigger","positioner","transitionElement","onAfterHide","nanoAfterHide","onAfterShow","nanoAfterShow","onTransitionEnd","scrollTop","bind","part","dropdown","dropdown--open","aria-expanded","aria-haspopup","onSlotchange","split","join","aria-modal","dialogTitle"],"mappings":"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","sourcesContent":["const ISO_DATE_FORMAT = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\nexport enum DaysOfWeek {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n\nexport function createDate(year: string, month: string, day: string): Date {\n var dayInt = parseInt(day, 10);\n var monthInt = parseInt(month, 10);\n var yearInt = parseInt(year, 10);\n\n const isValid =\n Number.isInteger(yearInt) && // all parts should be integers\n Number.isInteger(monthInt) &&\n Number.isInteger(dayInt) &&\n monthInt > 0 && // month must be 1-12\n monthInt <= 12 &&\n dayInt > 0 && // day must be 1-31\n dayInt <= 31 &&\n yearInt > 0;\n\n if (isValid) {\n return new Date(yearInt, monthInt - 1, dayInt);\n }\n}\n\n/**\n * @param value date string in ISO format YYYY-MM-DD\n */\nexport function parseISODate(value: string): Date {\n if (!value) {\n return;\n }\n\n const matches = value.match(ISO_DATE_FORMAT);\n\n if (matches) {\n return createDate(matches[1], matches[2], matches[3]);\n }\n}\n\n/**\n * print date in format YYYY-MM-DD\n * @param date\n */\nexport function printISODate(date: Date): string {\n if (!date) {\n return '';\n }\n\n var d = date.getDate().toString(10);\n var m = (date.getMonth() + 1).toString(10);\n var y = date.getFullYear().toString(10);\n\n // days are not zero-indexed, so pad if less than 10\n if (date.getDate() < 10) {\n d = `0${d}`;\n }\n\n // months *are* zero-indexed, pad if less than 9!\n if (date.getMonth() < 9) {\n m = `0${m}`;\n }\n\n return `${y}-${m}-${d}`;\n}\n\n/**\n * Compare if two dates are equal in terms of day, month, and year\n */\nexport function isEqual(a: Date, b: Date): boolean {\n if (a == null || b == null) {\n return false;\n }\n\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function addDays(date: Date, days: number): Date {\n var d = new Date(date);\n d.setDate(d.getDate() + days);\n return d;\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const d = new Date(date);\n d.setMonth(date.getMonth() + months);\n return d;\n}\n\nexport function addYears(date: Date, years: number): Date {\n const d = new Date(date);\n d.setFullYear(date.getFullYear() + years);\n return d;\n}\n\nexport function startOfWeek(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date {\n var d = new Date(date);\n var day = d.getDay();\n var diff = (day < firstDayOfWeek ? 7 : 0) + day - firstDayOfWeek;\n\n d.setDate(d.getDate() - diff);\n return d;\n}\n\nexport function endOfWeek(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date {\n var d = new Date(date);\n var day = d.getDay();\n var diff = (day < firstDayOfWeek ? -7 : 0) + 6 - (day - firstDayOfWeek);\n\n d.setDate(d.getDate() + diff);\n return d;\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nexport function setMonth(date: Date, month: number): Date {\n const d = new Date(date);\n d.setMonth(month);\n return d;\n}\n\nexport function setYear(date: Date, year: number): Date {\n const d = new Date(date);\n d.setFullYear(year);\n return d;\n}\n\n/**\n * Check if date is within a min and max\n */\nexport function inRange(date: Date, min?: Date, max?: Date): boolean {\n return clamp(date, min, max) === date;\n}\n\n/**\n * Ensures date is within range, returns min or max if out of bounds\n */\nexport function clamp(date: Date, min?: Date, max?: Date): Date {\n const time = date.getTime();\n\n if (min && min instanceof Date && time < min.getTime()) {\n return min;\n }\n\n if (max && max instanceof Date && time > max.getTime()) {\n return max;\n }\n\n return date;\n}\n\n/**\n * given start and end date, return an (inclusive) array of all dates in between\n * @param start\n * @param end\n */\nfunction getDaysInRange(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = start;\n\n while (!isEqual(current, end)) {\n days.push(current);\n current = addDays(current, 1);\n }\n\n days.push(current);\n\n return days;\n}\n\n/**\n * given a date, return an array of dates from a calendar perspective\n * @param date\n * @param firstDayOfWeek\n */\nexport function getViewOfMonth(\n date: Date,\n firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday\n): Date[] {\n const start = startOfWeek(startOfMonth(date), firstDayOfWeek);\n const end = endOfWeek(endOfMonth(date), firstDayOfWeek);\n\n return getDaysInRange(start, end);\n}\n\n/**\n * Form random hash\n */\nexport function chr4() {\n return Math.random().toString(16).slice(-4);\n}\n\n/**\n * Create random identifier with a prefix\n * @param prefix\n */\nexport function createIdentifier(prefix) {\n return `${prefix}-${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;\n}\n","import { h, FunctionalComponent } from '@stencil/core';\nimport { isEqual } from './date-utils';\n\nexport type DatePickerDayProps = {\n focusedDay: Date;\n today: Date;\n day: Date;\n inRange: boolean;\n disabled: boolean;\n onDaySelect: (event: MouseEvent, day: Date) => void;\n onKeyboardNavigation: (event: KeyboardEvent) => void;\n focusedDayRef?: (element: HTMLButtonElement) => void;\n isSelected;\n};\n\nexport const DatePickerDay: FunctionalComponent<DatePickerDayProps> = ({\n focusedDay,\n today,\n day,\n onDaySelect,\n onKeyboardNavigation,\n focusedDayRef,\n inRange,\n disabled,\n isSelected,\n}) => {\n const isToday = isEqual(day, today);\n const isFocused = isEqual(day, focusedDay);\n const isDisabled = day.getMonth() !== focusedDay.getMonth() || disabled;\n const isOutsideRange = !inRange;\n\n function handleClick(e) {\n onDaySelect(e, day);\n }\n\n return (\n <button\n class={{\n 'duet-date__day': true,\n 'is-outside': isOutsideRange,\n 'is-disabled': isDisabled,\n 'is-today': isToday,\n }}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={onKeyboardNavigation}\n disabled={isOutsideRange}\n type=\"button\"\n aria-pressed={isSelected ? 'true' : 'false'}\n ref={(el) => {\n if (isFocused && el && focusedDayRef) {\n focusedDayRef(el);\n }\n }}\n >\n <span aria-hidden=\"true\">{day.getDate()}</span>\n <span class=\"duet-date__vhidden\">\n {day.toLocaleDateString(undefined, { day: 'numeric', month: 'long' })}\n </span>\n </button>\n );\n};\n","import { h, FunctionalComponent } from '@stencil/core';\nimport { DuetLocalizedText } from './date-localization';\nimport { DatePickerDay, DatePickerDayProps } from './date-picker-day';\nimport { getViewOfMonth, inRange, DaysOfWeek, isEqual } from './date-utils';\nimport { DateDisabledPredicate } from '../../../interface';\n\nfunction chunk<T>(array: T[], chunkSize: number): T[][] {\n const result = [];\n\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n\n return result;\n}\n\nfunction mapWithOffset<T, U>(\n array: T[],\n startingOffset: number,\n mapFn: (item: T) => U\n): U[] {\n return array.map((_, i) => {\n const adjustedIndex = (i + startingOffset) % array.length;\n return mapFn(array[adjustedIndex]);\n });\n}\n\ntype DatePickerMonthProps = {\n selectedDate: Date;\n focusedDate: Date;\n labelledById: string;\n localization: DuetLocalizedText;\n firstDayOfWeek: DaysOfWeek;\n min?: Date;\n max?: Date;\n onDateSelect: DatePickerDayProps['onDaySelect'];\n onKeyboardNavigation: DatePickerDayProps['onKeyboardNavigation'];\n focusedDayRef: (element: HTMLButtonElement) => void;\n onFocusIn?: (e: FocusEvent) => void;\n onMouseDown?: (e: MouseEvent) => void;\n isDateDisabled: DateDisabledPredicate;\n};\n\nexport const DatePickerMonth: FunctionalComponent<DatePickerMonthProps> = ({\n selectedDate,\n focusedDate,\n labelledById,\n localization,\n firstDayOfWeek,\n min,\n max,\n onDateSelect,\n onKeyboardNavigation,\n focusedDayRef,\n onMouseDown,\n onFocusIn,\n isDateDisabled,\n}) => {\n const today = new Date();\n const days = getViewOfMonth(focusedDate, firstDayOfWeek);\n\n return (\n <table\n class=\"duet-date__table\"\n role=\"grid\"\n aria-labelledby={labelledById}\n // @ts-ignore\n onFocusin={onFocusIn}\n onMouseDown={onMouseDown}\n >\n <thead>\n <tr>\n {mapWithOffset(localization.dayNames, firstDayOfWeek, (dayName) => (\n <th class=\"duet-date__table-header\" scope=\"col\">\n <span aria-hidden=\"true\">{dayName.substr(0, 2)}</span>\n <span class=\"duet-date__vhidden\">{dayName}</span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {chunk(days, 7).map((week) => (\n <tr class=\"duet-date__row\">\n {week.map((day) => (\n <td\n class=\"duet-date__cell\"\n role=\"gridcell\"\n aria-selected={isEqual(day, selectedDate) ? 'true' : undefined}\n >\n <DatePickerDay\n day={day}\n today={today}\n focusedDay={focusedDate}\n inRange={inRange(day, min, max)}\n onDaySelect={onDateSelect}\n onKeyboardNavigation={onKeyboardNavigation}\n focusedDayRef={focusedDayRef}\n disabled={isDateDisabled(day)}\n isSelected={isEqual(day, selectedDate)}\n />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n","type MonthsNames = [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string\n];\ntype DayNames = [string, string, string, string, string, string, string];\n\nexport type DuetLocalizedText = {\n buttonLabel: string;\n placeholder: string;\n selectedDateMessage: string;\n prevMonthLabel: string;\n nextMonthLabel: string;\n monthSelectLabel: string;\n yearSelectLabel: string;\n closeLabel: string;\n keyboardInstruction: string;\n calendarHeading: string;\n dayNames: DayNames;\n monthNames: MonthsNames;\n monthNamesShort: MonthsNames;\n};\n\nconst localization: DuetLocalizedText = {\n buttonLabel: 'Choose date',\n placeholder: 'YYYY-MM-DD',\n selectedDateMessage: 'Selected date is',\n prevMonthLabel: 'Previous month',\n nextMonthLabel: 'Next month',\n monthSelectLabel: 'Month',\n yearSelectLabel: 'Year',\n closeLabel: 'Close window',\n keyboardInstruction: 'You can use arrow keys to navigate dates',\n calendarHeading: 'Choose a date',\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthNamesShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n};\n\nexport default localization;\n","@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --background: defaults to #{$layer-bg-color}\n * @prop --active-color: defaults to var(--nano-color-base, #{nano-color(primary,base)})\n * @prop --active-text-color: defaults to var(--nano-color-contrast, #{nano-color(primary, contrast)})\n * @prop --focus-shadow: defaults to #{$control-focus-style}\n * @prop --inactive-color: defaults to #{$button-bg-color}\n */\n\n --background: #{$layer-bg-color};\n --active-color: var(--nano-color-base, #{nano-color(primary, base)});\n --active-text-color:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n --focus-shadow: #{$control-focus-style};\n --inactive-color: #{$button-bg-color};\n\n display: block;\n font-size: 16px;\n}\n\n:host(.nano-color) {\n --active-color: var(--nano-color-base, #{nano-color(primary, base)});\n --active-text-color: #{current-color(contrast)};\n --focus-shadow: #{$control-focus-size current-color(tint, 0.56)};\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER\n// ---------------------------------------------\n\n.duet-date *,\n.duet-date *::before,\n.duet-date *::after {\n box-sizing: border-box;\n margin: 0;\n}\n\n.duet-date {\n box-sizing: border-box;\n color: currentColor;\n display: block;\n margin: 0;\n position: relative;\n text-align: left;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ DIALOG\n// ---------------------------------------------\n\n.duet-date__dialog {\n display: flex;\n top: 100%;\n max-width: 100%;\n width: 100%;\n\n &.is-left {\n left: auto;\n right: 0;\n width: auto;\n }\n}\n\n.duet-date__dialog-content {\n background: var(--background);\n min-width: 290px;\n padding: 16px 16px 20px;\n position: relative;\n transform: none;\n max-width: 100%;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ TABLE\n// ---------------------------------------------\n\n.duet-date__table {\n border-collapse: collapse;\n border-spacing: 0;\n font-size: 1em;\n line-height: 1.25;\n text-align: center;\n width: 100%;\n}\n\n.duet-date__table-header {\n font-size: 0.75em;\n font-weight: 600;\n letter-spacing: 1px;\n line-height: 1.25;\n padding-bottom: 8px;\n text-decoration: none;\n text-transform: uppercase;\n}\n\n.duet-date__cell {\n text-align: center;\n}\n\n.duet-date__day {\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n background: transparent;\n border: 0;\n border-radius: 50%;\n cursor: pointer;\n display: inline-block;\n font-size: 0.875em;\n font-variant-numeric: tabular-nums;\n line-height: 1.25;\n position: relative;\n text-align: center;\n vertical-align: middle;\n z-index: 1;\n transition: 0.15s ease all;\n height: 2.5em;\n width: 2.5em;\n\n &.is-today {\n box-shadow: 0 0 0 1px var(--active-color);\n position: relative;\n }\n\n &:hover::before,\n &.is-today::before {\n content: '';\n background: var(--active-color);\n border-radius: 50%;\n bottom: 0;\n left: 0;\n opacity: 0.16;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n [aria-selected='true'] & {\n background: var(--active-color);\n color: var(--active-text-color);\n box-shadow: none;\n outline: 0;\n }\n\n &:active {\n background: var(--active-color);\n box-shadow: var(--focus-shadow);\n color: var(--active-text-color);\n }\n\n &:focus {\n box-shadow: var(--focus-shadow);\n outline: 0;\n }\n\n &.is-disabled {\n background: transparent;\n box-shadow: none;\n cursor: default;\n opacity: 0.5;\n\n &::before {\n display: none;\n }\n }\n\n &.is-outside {\n background: var(--inactive-color);\n box-shadow: none;\n cursor: default;\n opacity: 0.6;\n pointer-events: none;\n\n &::before {\n display: none;\n }\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ HEADER\n// ---------------------------------------------\n\n.duet-date__header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 16px;\n width: 100%;\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ NAVIGATION\n// ---------------------------------------------\n\n.duet-date__nav {\n white-space: nowrap;\n}\n\n.duet-date__prev,\n.duet-date__next {\n background: var(--inactive-color);\n -moz-appearance: none;\n -webkit-appearance: none;\n align-items: center;\n appearance: none;\n border: 0;\n border-radius: 50%;\n cursor: pointer;\n display: inline-flex;\n justify-content: space-around;\n margin-left: 8px;\n padding: 0;\n transition: background-color 300ms ease;\n font-size: 0.9em;\n height: 2.2em;\n width: 2.2em;\n\n &:focus {\n box-shadow: var(--focus-shadow);\n outline: 0;\n }\n\n &:active:focus {\n box-shadow: none;\n }\n\n &:disabled {\n cursor: default;\n opacity: 0.5;\n }\n\n nano-icon {\n margin: 0 auto;\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ SELECT\n// ---------------------------------------------\n\n.duet-date__select {\n display: inline-flex;\n margin-top: 4px;\n position: relative;\n\n span {\n @include margin(null, 4px, null, null);\n }\n\n select {\n cursor: pointer;\n font-size: 1em;\n height: 100%;\n left: 0;\n opacity: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 2;\n\n &.focus-visible:focus + .duet-date__select-label {\n box-shadow: var(--focus-shadow);\n }\n }\n}\n\n.duet-date__select-label {\n align-items: center;\n border-radius: 4px;\n display: flex;\n font-size: 1.25em;\n font-weight: 600;\n line-height: 1.25;\n padding: 0 4px 0 8px;\n pointer-events: none;\n position: relative;\n width: 100%;\n z-index: 1;\n\n nano-icon {\n font-size: 0.55em;\n }\n}\n\n// ---------------------------------------------\n// DUET DATE PICKER __ VISUALLY HIDDEN\n// ---------------------------------------------\n\n.duet-date__vhidden {\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n top: 0;\n width: 1px;\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n Prop,\n Element,\n h,\n Event,\n EventEmitter,\n State,\n Method,\n Watch,\n} from '@stencil/core';\nimport {\n addDays,\n startOfWeek,\n endOfWeek,\n setMonth,\n setYear,\n clamp,\n inRange,\n endOfMonth,\n startOfMonth,\n printISODate,\n parseISODate,\n createIdentifier,\n DaysOfWeek,\n} from '../../utils/date-utils';\nimport { DatePickerMonth } from './duet-date-picker/date-picker-month';\nimport defaultLocalization from './duet-date-picker/date-localization';\n\nimport {\n PickerChangeEvent,\n DuetLocalizedText,\n DateDisabledPredicate,\n Color,\n} from '../../interface';\nimport { createColorClasses } from '../../utils';\nimport { focusVisible } from '../../utils/focus-visible';\n\nfunction range(from: number, to: number) {\n var result: number[] = [];\n for (var i = from; i <= to; i++) {\n result.push(i);\n }\n return result;\n}\n\n/**\n * A highly performant, small and accessible date-picker.\n * Customised from [Duet date-picker](https://duetds.github.io/date-picker/).\n */\n@Component({\n tag: 'nano-date-picker',\n styleUrl: 'date-picker.scss',\n shadow: true,\n})\nexport class DatePicker implements ComponentInterface {\n private monthSelectId = createIdentifier('NanoDateMonth');\n private yearSelectId = createIdentifier('NanoDateYear');\n private dialogLabelId = createIdentifier('NanoDateLabel');\n\n private firstFocusableElement: HTMLElement;\n private monthSelectNode: HTMLElement;\n private yearSelectNode: HTMLElement;\n private focusedDayNode: HTMLButtonElement;\n\n private focusTimeoutId: ReturnType<typeof setTimeout>;\n\n private initialTouchX: number = null;\n private initialTouchY: number = null;\n\n @Element() host: HTMLNanoDatePickerElement;\n\n @State() activeFocus = false;\n @State() focusedDay = new Date();\n\n // Public Property API\n\n /** Selected Date. Must be in IS0-8601 format: YYYY-MM-DD. */\n @Prop({ mutable: true }) selectedDate: string = '';\n\n /** Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the max property. */\n @Prop() min: string = '';\n\n /** Maximum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\n * This setting can be used alone or together with the min property. */\n @Prop() max: string = '';\n\n /** Which day is considered first day of the week? `0` for Sunday, `1` for Monday, etc.\n * Default is Monday. */\n @Prop() firstDayOfWeek: DaysOfWeek = DaysOfWeek.Monday;\n\n /** Button labels, day names, month names, etc, used for localization.\n * Default is English. */\n @Prop() localization: DuetLocalizedText = defaultLocalization;\n\n /** The color to use from the application's color palette. */\n @Prop() color?: Color;\n\n /** Controls which days are disabled and therefore disallowed.\n * For example, this can be used to disallow selection of weekends. */\n @Prop() isDateDisabled: DateDisabledPredicate = () => false;\n\n /** Controls whether the picker is a modal or dialog,\n * popup control and will therefore keep focus within the control */\n @Prop() isModal: boolean = false;\n\n /** @internal First focusable element. Relevant for keeping focus within the control */\n @Prop() firstFocusEle: HTMLElement;\n\n // Events\n\n /** Event emitted when a date is selected. */\n @Event() nanoDatePicked: EventEmitter<PickerChangeEvent>;\n\n // Public methods API\n\n /** Focus to the calendar\n * @param day - focus to the current selected day\n * @param forceFocusVisible - force visible focus - required if opened via keyboad\n */\n @Method()\n async setFocus(day = false, forceFocusVisible = false) {\n this.setFocusedDay(parseISODate(this.selectedDate) || new Date());\n\n if (day) {\n setTimeout((_) => this.focusedDayNode.focus(), 20);\n return;\n }\n clearTimeout(this.focusTimeoutId);\n this.focusTimeoutId = setTimeout(() => {\n if (forceFocusVisible) focusVisible.force(this.monthSelectNode);\n this.monthSelectNode.focus();\n }, 20);\n }\n\n @Watch('selectedDate')\n handleSelectedDateChange() {\n this.setFocus(true);\n }\n\n // Local methods.\n\n private enableActiveFocus = () => {\n this.activeFocus = true;\n };\n\n private disableActiveFocus = () => {\n this.activeFocus = false;\n };\n\n private addDays(days: number) {\n this.setFocusedDay(addDays(this.focusedDay, days));\n }\n\n private addMonths(months: number) {\n this.setMonth(this.focusedDay.getMonth() + months);\n }\n\n private addYears(years: number) {\n this.setYear(this.focusedDay.getFullYear() + years);\n }\n\n private startOfWeek() {\n this.setFocusedDay(startOfWeek(this.focusedDay, this.firstDayOfWeek));\n }\n\n private endOfWeek() {\n this.setFocusedDay(endOfWeek(this.focusedDay, this.firstDayOfWeek));\n }\n\n private setMonth(month: number) {\n const min = setMonth(startOfMonth(this.focusedDay), month);\n const max = endOfMonth(min);\n const date = setMonth(this.focusedDay, month);\n\n this.setFocusedDay(clamp(date, min, max));\n }\n\n private setYear(year: number) {\n const min = setYear(startOfMonth(this.focusedDay), year);\n const max = endOfMonth(min);\n const date = setYear(this.focusedDay, year);\n\n this.setFocusedDay(clamp(date, min, max));\n }\n\n private setFocusedDay(day: Date) {\n this.focusedDay = clamp(\n day,\n parseISODate(this.min),\n parseISODate(this.max)\n );\n }\n\n private handleTouchStart = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n this.initialTouchX = touch.pageX;\n this.initialTouchY = touch.pageY;\n };\n\n private handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n };\n\n private handleTouchEnd = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n const distX = touch.pageX - this.initialTouchX; // get horizontal dist traveled\n const distY = touch.pageY - this.initialTouchY; // get vertical dist traveled\n const threshold = 70;\n\n const isHorizontalSwipe =\n Math.abs(distX) >= threshold && Math.abs(distY) <= threshold;\n\n if (isHorizontalSwipe) {\n this.addMonths(distX < 0 ? 1 : -1);\n }\n\n this.initialTouchY = null;\n this.initialTouchX = null;\n };\n\n private handleNextMonthClick = (event: MouseEvent) => {\n event.preventDefault();\n this.addMonths(1);\n };\n\n private handlePreviousMonthClick = (event: MouseEvent) => {\n event.preventDefault();\n this.addMonths(-1);\n };\n\n private handleKeyboardNavigation = (event: KeyboardEvent) => {\n // handle tab separately, since it needs to be treated\n // differently to other keyboard interactions\n if (event.key === 'Tab' && !event.shiftKey && this.isModal) {\n event.preventDefault();\n let ele = this.firstFocusEle || this.firstFocusableElement;\n ele.focus();\n return;\n }\n\n var handled = true;\n\n switch (event.key) {\n case 'ArrowRight':\n this.addDays(1);\n break;\n case 'ArrowLeft':\n this.addDays(-1);\n break;\n case 'ArrowDown':\n this.addDays(7);\n break;\n case 'ArrowUp':\n this.addDays(-7);\n break;\n case 'PageUp':\n if (event.shiftKey) {\n this.addYears(-1);\n } else {\n this.addMonths(-1);\n }\n break;\n case 'PageDown':\n if (event.shiftKey) {\n this.addYears(1);\n } else {\n this.addMonths(1);\n }\n break;\n case 'Home':\n this.startOfWeek();\n break;\n case 'End':\n this.endOfWeek();\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n event.preventDefault();\n this.enableActiveFocus();\n }\n };\n\n private handleDaySelect = (_event: MouseEvent, day: Date) => {\n const isAllowed = !this.isDateDisabled(day);\n const isInRange = inRange(\n day,\n parseISODate(this.min),\n parseISODate(this.max)\n );\n\n if (!isInRange || !isAllowed) {\n return;\n }\n\n if (day.getMonth() === this.focusedDay.getMonth()) {\n this.setValue(day);\n } else {\n this.setFocusedDay(day);\n }\n };\n\n private handleMonthSelect = (e) => {\n this.setMonth(parseInt(e.target.value, 10));\n };\n\n private handleYearSelect = (e) => {\n this.setYear(parseInt(e.target.value, 10));\n };\n\n private setValue(date: Date) {\n this.selectedDate = printISODate(date);\n this.nanoDatePicked.emit({\n value: this.selectedDate,\n valueAsDate: date,\n });\n }\n\n private processFocusedDayNode = (element: HTMLButtonElement) => {\n this.focusedDayNode = element;\n\n if (this.activeFocus) {\n setTimeout(() => element.focus(), 0);\n }\n };\n\n connectedCallback() {\n if (this.yearSelectNode) focusVisible.observe(this.yearSelectNode);\n if (this.monthSelectNode) focusVisible.observe(this.monthSelectNode);\n }\n\n componentWillLoad() {\n this.handleSelectedDateChange();\n }\n\n componentDidLoad() {\n this.connectedCallback();\n }\n\n disconnectedCallback() {\n focusVisible.unobserve(this.yearSelectNode);\n focusVisible.unobserve(this.monthSelectNode);\n }\n\n render() {\n const valueAsDate = parseISODate(this.selectedDate);\n const selectedYear = (valueAsDate || this.focusedDay).getFullYear();\n const focusedMonth = this.focusedDay.getMonth();\n const focusedYear = this.focusedDay.getFullYear();\n\n const minDate = parseISODate(this.min);\n const maxDate = parseISODate(this.max);\n const prevMonthDisabled =\n minDate != null &&\n minDate.getMonth() === focusedMonth &&\n minDate.getFullYear() === focusedYear;\n const nextMonthDisabled =\n maxDate != null &&\n maxDate.getMonth() === focusedMonth &&\n maxDate.getFullYear() === focusedYear;\n\n let minYear = selectedYear - 10;\n let maxYear = selectedYear + 10;\n if (minDate) minYear = minDate.getFullYear();\n if (maxDate) maxYear = maxDate.getFullYear();\n\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div class=\"duet-date\">\n <div\n class={{\n 'duet-date__dialog': true,\n 'is-active': true,\n }}\n onTouchMove={this.handleTouchMove}\n onTouchStart={this.handleTouchStart}\n onTouchEnd={this.handleTouchEnd}\n >\n <div class=\"duet-date__dialog-content\">\n <div\n class=\"duet-date__vhidden duet-date__instructions\"\n aria-live=\"polite\"\n >\n {this.localization.keyboardInstruction}\n </div>\n {/**\n * With onFocusIn, which is what TS types expect, Stencil ends up listening to a\n * focusIn event, which is wrong as it needs to be focusin. So we had to use onFocusin\n * here which is wrong for the TS types, but ends up with the correct event listener\n * in Stencil. See issue: https://github.com/ionic-team/stencil/issues/2628\n */}\n {/* @ts-ignore */}\n <div\n class=\"duet-date__header\"\n onFocusin={this.disableActiveFocus}\n >\n <div>\n <h2\n id={this.dialogLabelId}\n class=\"duet-date__vhidden\"\n aria-live=\"polite\"\n >\n {this.localization.monthNames[focusedMonth]}{' '}\n {this.focusedDay.getFullYear()}\n </h2>\n <label\n htmlFor={this.monthSelectId}\n class=\"duet-date__vhidden\"\n >\n {this.localization.monthSelectLabel}\n </label>\n <div class=\"duet-date__select\">\n <select\n id={this.monthSelectId}\n class=\"duet-date__select--month\"\n ref={(element) =>\n (this.firstFocusableElement = this.monthSelectNode =\n element)\n }\n onChange={this.handleMonthSelect}\n >\n {this.localization.monthNames.map((month, i) => (\n <option\n key={month}\n value={i}\n selected={i === focusedMonth}\n disabled={\n !inRange(\n new Date(focusedYear, i, 1),\n minDate ? startOfMonth(minDate) : null,\n maxDate ? endOfMonth(maxDate) : null\n )\n }\n >\n {month}\n </option>\n ))}\n </select>\n <div class=\"duet-date__select-label\" aria-hidden=\"true\">\n <span>\n {this.localization.monthNamesShort[focusedMonth]}\n </span>\n <nano-icon name=\"light/chevron-down\"></nano-icon>\n </div>\n </div>\n\n <label htmlFor={this.yearSelectId} class=\"duet-date__vhidden\">\n {this.localization.yearSelectLabel}\n </label>\n <div class=\"duet-date__select\">\n <select\n id={this.yearSelectId}\n class=\"duet-date__select--year\"\n onChange={this.handleYearSelect}\n ref={(element) => (this.yearSelectNode = element)}\n >\n {range(minYear, maxYear).map((year) => (\n <option key={year} selected={year === focusedYear}>\n {year}\n </option>\n ))}\n </select>\n <div class=\"duet-date__select-label\" aria-hidden=\"true\">\n <span>{this.focusedDay.getFullYear()}</span>\n <nano-icon name=\"light/chevron-down\"></nano-icon>\n </div>\n </div>\n </div>\n\n <div class=\"duet-date__nav\">\n <button\n class=\"duet-date__prev\"\n onClick={this.handlePreviousMonthClick}\n disabled={prevMonthDisabled}\n type=\"button\"\n >\n <nano-icon name=\"light/chevron-left\"></nano-icon>\n <span class=\"duet-date__vhidden\">\n {this.localization.prevMonthLabel}\n </span>\n </button>\n <button\n class=\"duet-date__next\"\n onClick={this.handleNextMonthClick}\n disabled={nextMonthDisabled}\n type=\"button\"\n >\n <nano-icon name=\"light/chevron-right\"></nano-icon>\n <span class=\"duet-date__vhidden\">\n {this.localization.nextMonthLabel}\n </span>\n </button>\n </div>\n </div>\n <div>\n <DatePickerMonth\n selectedDate={valueAsDate}\n focusedDate={this.focusedDay}\n onDateSelect={this.handleDaySelect}\n onKeyboardNavigation={this.handleKeyboardNavigation}\n labelledById={this.dialogLabelId}\n localization={this.localization}\n firstDayOfWeek={this.firstDayOfWeek}\n focusedDayRef={this.processFocusedDayNode}\n min={minDate}\n max={maxDate}\n isDateDisabled={this.isDateDisabled}\n />\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --width: width of the dropdown. Defaults to 'auto'\n * @prop --border: Defaults to #{$layer-border-style}\n * @prop --border-radius: Defaults to #{$layer-bg-color};\n * @prop --background: Defaults to #{$layer-bg-color};\n * @prop --padding: padding of the drop down. Default to '10px 0';\n */\n\n --width: auto;\n --border: #{$layer-border-style};\n --border-radius: #{$layer-border-radius};\n --background: #{$layer-bg-color};\n --padding: 10px 0;\n --overflow: hidden;\n --dropdown-z-index: #{$layer-index-dropdown};\n}\n\n.dropdown {\n position: relative;\n\n &__trigger {\n display: block;\n }\n\n &__positioner {\n position: absolute;\n z-index: var(--dropdown-z-index);\n\n @media (max-width: 35.9375em) {\n z-index: 100;\n }\n }\n\n &__panel {\n padding: var(--padding);\n background: var(--background);\n width: var(--width);\n border: var(--border);\n border-radius: var(--border-radius);\n color: currentColor;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: 0.2s ease opacity, 0.2s ease transform, 0.2s ease min-height;\n min-height: 20px;\n overflow: var(--overflow);\n box-sizing: content-box !important;\n\n &.top {\n transform: translateY(-20px) translateZ(0);\n }\n\n &.bottom {\n transform: translateY(20px) translateZ(0);\n }\n\n .dropdown__positioner.popover-visible & {\n opacity: 1;\n transform: translateY(0) translateZ(0);\n }\n\n ::slotted(nano-menu) {\n max-height: 50vh;\n }\n }\n\n &__accessible-title {\n @include visually-hide();\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Method,\n Prop,\n Watch,\n h,\n Listen,\n ComponentInterface,\n} from '@stencil/core';\nimport Popover from '../../utils/popover';\nimport { transitionDone } from '../../utils';\nimport { NavItemEventDetail } from '../../interface';\nimport { getNearestTabbableElement } from '../../utils/tabbable';\n\n/**\n * Dropdowns show additional content in a panel.\n * Designed to work well with nano-menu components to provide a list of options (works well with nano-nav-items).\n * @slot trigger - The dropdown's trigger.\n * @slot - The dropdown's content.\n */\n@Component({\n tag: 'nano-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown implements ComponentInterface {\n private dropdownId = `dropdown-${dropDownIds++}`;\n private labelId = this.dropdownId + '-title';\n private ignoreOpenWatcher = false;\n private panel: HTMLElement;\n private popover: Popover;\n private trigger: HTMLElement;\n private positioner: HTMLElement;\n private menuFocused: boolean = false;\n\n @Element() host: HTMLNanoDropdownElement;\n\n /** Determines if the dropdown should open automatically when the trigger is clicked */\n @Prop() autoOpen = true;\n\n /** Indicates whether or not the dropdown is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n @Watch('open')\n handleOpenChange() {\n if (!this.ignoreOpenWatcher) {\n this.open ? this.show() : this.hide();\n this.updateAccessibleTrigger();\n }\n }\n\n /**\n * Determines whether the dropdown should hide when a menu item is selected.\n */\n @Prop() closeOnSelect = true;\n\n /**\n * The dropdown will close when the user interacts outside of this element (e.g. clicking).\n */\n @Prop({ mutable: true }) containingElement: HTMLElement;\n\n /**\n * If you don't want to use the trigger slot, you can use this to 'tether' the dropdown to another element.\n * And you will still need to control when the component is opened (using show() / hide() or the `open` prop)\n */\n @Prop() tetherTo: HTMLElement = null;\n\n @Watch('tetherTo')\n handleTetherToChange() {\n this.createPopover();\n this.updateAccessibleTrigger();\n }\n\n /**\n * The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\n * inside of the viewport.\n */\n @Prop() placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'bottom-start';\n\n /**\n * The distance in pixels from which to offset the panel away from its trigger.\n */\n @Prop() distance = 2;\n\n /**\n * The distance in pixels from which to offset the panel along its trigger.\n */\n @Prop() skidding = 0;\n\n /**\n * Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`.\n */\n @Prop() hoist = false;\n\n @Watch('placement')\n @Watch('distance')\n @Watch('skidding')\n @Watch('hoist')\n handlePopoverOptionsChange() {\n this.popover.setOptions({\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n skidding: this.skidding,\n distance: this.distance,\n });\n }\n\n /**\n * Title used to describe the dropdown content for accessibility\n */\n @Prop() dialogTitle!: string;\n\n // Events\n\n /**\n * Emitted when the dropdown opens. Calling `event.preventDefault()` will prevent it from being opened.\n */\n @Event() nanoShow: EventEmitter;\n\n /**\n * Emitted after the dropdown opens and all transitions are complete.\n */\n @Event() nanoAfterShow: EventEmitter;\n\n /**\n * Emitted when the dropdown closes. Calling `event.preventDefault()` will prevent it from being closed.\n */\n @Event() nanoHide: EventEmitter;\n\n /**\n * Emitted after the dropdown closes and all transitions are complete.\n */\n @Event() nanoAfterHide: EventEmitter;\n\n // Listeners\n\n @Listen('nanoFocus')\n menuFocus(ev: CustomEvent) {\n let target = ev.target as HTMLElement;\n if (\n !target ||\n !target.tagName ||\n target.tagName.toLowerCase() !== 'nano-menu'\n )\n return;\n this.menuFocused = true;\n }\n\n @Listen('nanoOpen')\n secondaryOpen(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n\n this.panel.classList.add('loading');\n transitionDone(this.panel).then(() =>\n this.panel.classList.remove('loading')\n );\n this.panel.style.minHeight =\n (ev.detail as NavItemEventDetail).secondaryMenu.scrollHeight + 'px';\n }\n\n @Listen('nanoClose')\n secondaryClose(ev: CustomEvent) {\n if (!(ev.detail as NavItemEventDetail).secondaryMenu) return;\n ev.stopPropagation();\n if (!(ev.target as HTMLElement).parentElement) return;\n this.panel.style.minHeight =\n (ev.target as HTMLElement).parentElement.scrollHeight + 'px';\n }\n\n @Listen('nanoSelect')\n handlePanelSelect(event: CustomEvent) {\n const target = event.target as HTMLElement;\n\n // Hide the dropdown when a menu item is selected\n if (this.closeOnSelect && target.tagName.toLowerCase() === 'nano-menu')\n this.hide();\n }\n\n // Methods\n\n /** Shows the dropdown panel */\n @Method()\n async show() {\n this.ignoreOpenWatcher = true;\n this.open = true;\n\n const nanoShow = this.nanoShow.emit();\n\n if (nanoShow.defaultPrevented) {\n this.open = false;\n this.ignoreOpenWatcher = false;\n return;\n }\n\n this.popover.show();\n this.ignoreOpenWatcher = false;\n\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n /** Hides the dropdown panel */\n @Method()\n async hide() {\n this.ignoreOpenWatcher = true;\n this.open = false;\n\n const nanoHide = this.nanoHide.emit();\n\n if (nanoHide.defaultPrevented) {\n this.open = true;\n this.ignoreOpenWatcher = false;\n return;\n }\n\n if (this.popover) this.popover.hide();\n this.ignoreOpenWatcher = false;\n\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n\n this.menuFocused = false;\n }\n\n // Private methods\n\n private getMenu() {\n return this.host.querySelector('nano-menu') as HTMLNanoMenuElement;\n }\n\n private togglePanel = () => {\n if (!this.autoOpen) return;\n this.open ? this.hide() : this.show();\n };\n\n // Slotted triggers can be arbitrary content, but we need to link them to the dropdown panel with `aria-haspopup` and\n // `aria-expanded`. These must be applied to the \"accessible trigger\" (the tabbable portion of the trigger element\n // that gets slotted in) so screen readers will understand them. The accessible trigger could be the slotted element,\n private updateAccessibleTrigger() {\n let accessibleTrigger: HTMLElement;\n if (!this.tetherTo) {\n const assignedElements = Array.from(\n this.host.querySelectorAll('[slot=\"trigger\"]')\n );\n accessibleTrigger = assignedElements.map(getNearestTabbableElement)[0];\n } else {\n accessibleTrigger = this.tetherTo;\n }\n\n if (accessibleTrigger) {\n accessibleTrigger.setAttribute('aria-haspopup', 'true');\n accessibleTrigger.setAttribute(\n 'aria-expanded',\n this.open ? 'true' : 'false'\n );\n }\n }\n\n // Handlers\n\n private handleDocumentKeyDown(event: KeyboardEvent) {\n // Close when escape is pressed\n if (event.key === 'Escape') {\n this.hide();\n return;\n }\n\n // Close when tabbing results in the focus leaving the close element\n if (event.key === 'Tab') {\n setTimeout(() => {\n if (\n document.activeElement &&\n document.activeElement.closest(\n this.containingElement.tagName.toLowerCase()\n ) !== this.containingElement\n ) {\n this.hide();\n return;\n }\n });\n }\n\n const menu = this.getMenu();\n\n // If a menu is present, focus on it when certain keys are pressed\n if (menu && ['ArrowDown', 'ArrowUp'].includes(event.key)) {\n if (!this.open || this.menuFocused) return;\n event.preventDefault();\n menu.setFocus();\n return;\n }\n\n // All other keys focus the menu and pass the event through to menu (necessary for type-to-search to work)\n if (menu && event.target !== menu) {\n menu.dispatchEvent(new KeyboardEvent(event.type, event));\n return;\n }\n }\n\n private handleDocumentMouseDown(event: MouseEvent) {\n const target = event.target as HTMLElement;\n\n // Close when clicking outside of the close element\n if (\n target.closest(this.containingElement.tagName.toLowerCase()) !==\n this.containingElement\n ) {\n this.hide();\n return;\n }\n }\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n // Open the panel when pressing down or up while focused on the trigger\n if (!this.open && ['ArrowDown', 'ArrowUp', ' '].includes(event.key)) {\n this.show();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private handleTriggerSlotChange = () => {\n this.updateAccessibleTrigger();\n };\n\n private createPopover() {\n if (this.popover) {\n if (this.open) this.hide();\n this.popover.destroy();\n this.popover = null;\n }\n\n this.popover = new Popover(this.tetherTo || this.trigger, this.positioner, {\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.panel,\n onAfterHide: () => this.nanoAfterHide.emit(),\n onAfterShow: () => this.nanoAfterShow.emit(),\n onTransitionEnd: () => {\n if (!this.open) {\n this.panel.scrollTop = 0;\n }\n },\n });\n // Show on init if open\n if (this.open) {\n this.show();\n }\n }\n\n // Stencil hooks\n\n connectedCallback() {\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handlePanelSelect = this.handlePanelSelect.bind(this);\n\n if (!this.containingElement) this.containingElement = this.host;\n }\n\n componentDidLoad() {\n this.createPopover();\n }\n\n disconnectedCallback() {\n this.hide();\n if (this.popover) this.popover.destroy();\n }\n\n render() {\n return (\n <div\n part=\"base\"\n id={this.dropdownId}\n class={{\n dropdown: true,\n 'dropdown--open': this.open,\n }}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-haspopup=\"true\"\n >\n <span\n part=\"trigger\"\n class=\"dropdown__trigger\"\n ref={(el) => (this.trigger = el)}\n onKeyDown={this.handleTriggerKeyDown}\n onClick={this.togglePanel}\n >\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange} />\n </span>\n\n <div ref={(el) => (this.positioner = el)} class=\"dropdown__positioner\">\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class={`dropdown__panel ${this.placement.split('-').join(' ')}`}\n aria-hidden={!this.open}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={this.dialogTitle ? this.labelId : undefined}\n >\n {this.dialogTitle && (\n <h2\n id={this.labelId}\n class=\"dropdown__accessible-title\"\n aria-live=\"polite\"\n >\n {this.dialogTitle}\n </h2>\n )}\n <slot />\n </div>\n </div>\n </div>\n );\n }\n}\n\nlet dropDownIds = 0;\n"]}
@@ -1,2 +1,2 @@
1
- import{r as registerInstance,c as createEvent,i as readTask,f as writeTask,h,e as Host,g as getElement}from"./index-20becda2.js";import{i as index}from"./ResizeObserver.es-e35e1ee3.js";import{c as createColorClasses}from"./theme-f5a16c79.js";import{d as displayTransition}from"./utils-fd1ada22.js";var detailsCss=':host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;--padding:1em;--btn-padding:var(--padding);--btn-bg-color:var(--nano-color-contrast, #dad6d3);--btn-bg-color--open:var(--nano-color-base, #dad6d3);--btn-bg-color--hover:var(--nano-color-tint, #f9f9fb);--btn-text-color:var(--nano-color-base, #455556);--btn-text-color--open:var(--nano-color-contrast, var(--btn-text-color));--btn-text-color--hover:var(--nano-color-contrast, var(--btn-text-color));--content-bg-color:transparent;--content-text-color:#455556;--content-transition:height 0.2s ease-out;--border-width:none;--border-color:none;--border-style:none;--border-radius:none;--box-shadow:none;--focus-style:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:block;border-style:var(--border-style);border-width:var(--border-width-dims);border-color:var(--border-color);border-radius:var(--border-radius-dims);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}:host(:last-of-type){--border-width-dims:0 var(--border-width) var(--border-width);--border-radius-dims:0 0 var(--border-radius) var(--border-radius)}:host(:last-of-type) .open .content{border-radius:0 0 var(--border-radius) var(--border-radius)}:host(:first-of-type){--border-radius-dims:var(--border-radius) var(--border-radius) 0 0;--border-width-dims:var(--border-width)}:host(:first-of-type:last-of-type){--border-radius-dims:var(--border-radius);--border-width-dims:var(--border-width)}:host(:not(:last-of-type):not(:first-of-type)){--border-width-dims:0 var(--border-width) var(--border-width)}:host(.nano-color){--btn-bg-color:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--btn-bg-color--open:var(--nano-color-base, var(--nano-color-primary, #0084a9));--btn-bg-color--hover:var(--nano-color-tint, var(--nano-color-primary-tint, #2696b6));--btn-text-color:var(--nano-color-base, var(--nano-color-primary, #0084a9));--btn-text-color--open:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--btn-text-color--hover:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n )}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;padding:var(--btn-padding);text-align:inherit;position:relative;font-size:1em;margin:0;-webkit-transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--btn-bg-color);color:var(--btn-text-color);border-radius:var(--border-radius-dims)}button[dir=rtl]{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}button:focus{-webkit-box-shadow:var(--focus-style);box-shadow:var(--focus-style);outline:none;position:relative;z-index:1}:hover button{background:var(--btn-bg-color--hover);color:var(--btn-text-color--hover)}.open button{background:var(--btn-bg-color--open);color:var(--btn-text-color--open);border-bottom-right-radius:0;border-bottom-left-radius:0}button .label{width:100%;max-width:100%;max-height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block}button .icon{line-height:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:inline-block;color:currentColor;-webkit-transition:0.3s ease transform;transition:0.3s ease transform;-webkit-transform-origin:center;transform-origin:center}button .icon--start{margin-left:0;margin-right:var(--padding);margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--start{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:var(--padding);margin-inline-end:var(--padding)}}button .icon--end{margin-left:var(--padding);margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--end{margin-left:unset;margin-right:unset;-webkit-margin-start:var(--padding);margin-inline-start:var(--padding);-webkit-margin-end:0;margin-inline-end:0}}button .icon ::slotted(nano-icon){--color:"currentColor"}.content{color:var(--content-text-color);background:var(--content-bg-color);height:0;overflow:hidden;-webkit-transition:0.2s ease border-radius;transition:0.2s ease border-radius;outline:none}.loaded .content{-webkit-transition:var(--content-transition), 0.2s ease border-radius;transition:var(--content-transition), 0.2s ease border-radius}.content>*{opacity:0;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.open .content>*{opacity:1}.content__area{padding:var(--padding)}';var Details=function(){function t(t){var o=this;registerInstance(this,t);this.nanoOpened=createEvent(this,"nanoOpened",7);this.nanoClosed=createEvent(this,"nanoClosed",7);this.slideId="nano-details-"+slideIds++;this.stateChanging=false;this.isLoading=true;this.label="";this.open=false;this.noHandle=false;this.iconRotation=90;this.onKeyDown=function(t){switch(t.key){case"Enter":case" ":o.open=!o.open;break}};this.onMouseDown=function(){if(o.stateChanging)return;o.open=!o.open}}t.prototype.toggleClick=function(){this.stateChanging=true;if(this.open)this.show();else this.hide()};t.prototype.hide=function(){var t=this;this.nanoClosed.emit(this.open);displayTransition(this.contentEl,"is-shown",false).then((function(){return t.stateChanging=false}));this.contentEl.style.height="0px"};t.prototype.show=function(){var t=this;this.nanoOpened.emit();displayTransition(this.contentEl,"is-shown",true).then((function(){return t.stateChanging=false}));this.contentEl.style.height=this.contentArea.scrollHeight+"px"};t.prototype.resize=function(){var t=this;if(!this.open||!this.contentArea||!this.contentEl||this.stateChanging)return;readTask((function(){if(t.contentArea.scrollHeight>0){writeTask((function(){t.contentEl.style.height=t.contentArea.scrollHeight+"px"}))}}))};t.prototype.componentWillLoad=function(){var t=this;this.hasStartSlot=!!this.el.querySelector('[slot="icon-start"]');this.hasEndSlot=!!this.el.querySelector('[slot="icon-end"]');setTimeout((function(){t.isLoading=false}),100)};t.prototype.componentDidLoad=function(){var t=this;if(this.open){setTimeout((function(){t.show()}),0)}};t.prototype.connectedCallback=function(){var t=this;var o=this.mo=new MutationObserver((function(){return t.resize()}));o.observe(this.el,{childList:true,subtree:true,attributes:true});var n=this.ro=new index((function(){return t.resize()}));n.observe(this.el)};t.prototype.disconnectedCallback=function(){if(this.mo)this.mo.disconnect();if(this.ro)this.ro.disconnect()};t.prototype.render=function(){var t=this;return h(Host,{class:Object.assign({},createColorClasses(this.color))},h("div",{class:{open:this.open,loaded:!this.isLoading}},h("button",{onKeyDown:this.onKeyDown,onMouseDown:this.onMouseDown,"aria-controls":this.slideId,"aria-expanded":this.open?"true":"false",style:{display:this.noHandle?"none":""}},this.hasStartSlot?h("span",{class:"icon icon--start",style:{transform:this.open?"rotate("+this.iconRotation+"deg)":""}},h("slot",{name:"icon-start"})):"",h("div",{class:"label"},this.label?this.label:h("slot",{name:"label"})),this.hasEndSlot?h("span",{class:"icon icon--end",style:{transform:this.open?"rotate("+this.iconRotation+"deg)":""}},h("slot",{name:"icon-end"})):""),h("div",{class:"content",ref:function(o){return t.contentEl=o},tabindex:"-1",id:this.slideId},h("div",{ref:function(o){return t.contentArea=o},class:"content__area"},h("slot",null)))))};Object.defineProperty(t.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{open:["toggleClick"]}},enumerable:false,configurable:true});return t}();var slideIds=0;Details.style=detailsCss;export{Details as nano_details};
1
+ import{r as registerInstance,c as createEvent,i as readTask,f as writeTask,h,e as Host,g as getElement}from"./index-912ef959.js";import{i as index}from"./ResizeObserver.es-e35e1ee3.js";import{c as createColorClasses}from"./theme-f5a16c79.js";import{d as displayTransition}from"./index-269c88a9.js";var detailsCss=':host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;--padding:1em;--btn-padding:var(--padding);--btn-bg-color:var(--nano-color-contrast, #dad6d3);--btn-bg-color--open:var(--nano-color-base, #dad6d3);--btn-bg-color--hover:var(--nano-color-tint, #f9f9fb);--btn-text-color:var(--nano-color-base, #455556);--btn-text-color--open:var(--nano-color-contrast, var(--btn-text-color));--btn-text-color--hover:var(--nano-color-contrast, var(--btn-text-color));--content-bg-color:transparent;--content-text-color:#455556;--content-transition:height 0.2s ease-out;--border-width:none;--border-color:none;--border-style:none;--border-radius:none;--box-shadow:none;--focus-style:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:block;border-style:var(--border-style);border-width:var(--border-width-dims);border-color:var(--border-color);border-radius:var(--border-radius-dims);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}:host(:last-of-type){--border-width-dims:0 var(--border-width) var(--border-width);--border-radius-dims:0 0 var(--border-radius) var(--border-radius)}:host(:last-of-type) .open .content{border-radius:0 0 var(--border-radius) var(--border-radius)}:host(:first-of-type){--border-radius-dims:var(--border-radius) var(--border-radius) 0 0;--border-width-dims:var(--border-width)}:host(:first-of-type:last-of-type){--border-radius-dims:var(--border-radius);--border-width-dims:var(--border-width)}:host(:not(:last-of-type):not(:first-of-type)){--border-width-dims:0 var(--border-width) var(--border-width)}:host(.nano-color){--btn-bg-color:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--btn-bg-color--open:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-bg-color--hover:var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5));--btn-text-color:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-text-color--open:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--btn-text-color--hover:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n )}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;padding:var(--btn-padding);text-align:inherit;position:relative;font-size:1em;margin:0;-webkit-transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--btn-bg-color);color:var(--btn-text-color);border-radius:var(--border-radius-dims)}button[dir=rtl]{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}button:focus{-webkit-box-shadow:var(--focus-style);box-shadow:var(--focus-style);outline:none;position:relative;z-index:1}:hover button{background:var(--btn-bg-color--hover);color:var(--btn-text-color--hover)}.open button{background:var(--btn-bg-color--open);color:var(--btn-text-color--open);border-bottom-right-radius:0;border-bottom-left-radius:0}button .label{width:100%;max-width:100%;max-height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block}button .icon{line-height:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:inline-block;color:currentColor;-webkit-transition:0.3s ease transform;transition:0.3s ease transform;-webkit-transform-origin:center;transform-origin:center}button .icon--start{margin-left:0;margin-right:var(--padding);margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--start{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:var(--padding);margin-inline-end:var(--padding)}}button .icon--end{margin-left:var(--padding);margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--end{margin-left:unset;margin-right:unset;-webkit-margin-start:var(--padding);margin-inline-start:var(--padding);-webkit-margin-end:0;margin-inline-end:0}}button .icon ::slotted(nano-icon){--color:"currentColor"}.content{color:var(--content-text-color);background:var(--content-bg-color);height:0;overflow:hidden;-webkit-transition:0.2s ease border-radius;transition:0.2s ease border-radius;outline:none}.loaded .content{-webkit-transition:var(--content-transition), 0.2s ease border-radius;transition:var(--content-transition), 0.2s ease border-radius}.content>*{opacity:0;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.open .content>*{opacity:1}.content__area{padding:var(--padding)}';var Details=function(){function t(t){var o=this;registerInstance(this,t);this.nanoOpened=createEvent(this,"nanoOpened",7);this.nanoClosed=createEvent(this,"nanoClosed",7);this.slideId="nano-details-"+slideIds++;this.stateChanging=false;this.isLoading=true;this.label="";this.open=false;this.noHandle=false;this.iconRotation=90;this.onKeyDown=function(t){switch(t.key){case"Enter":case" ":o.open=!o.open;break}};this.onMouseDown=function(){if(o.stateChanging)return;o.open=!o.open}}t.prototype.toggleClick=function(){this.stateChanging=true;if(this.open)this.show();else this.hide()};t.prototype.hide=function(){var t=this;this.nanoClosed.emit(this.open);displayTransition(this.contentEl,"is-shown",false).then((function(){return t.stateChanging=false}));this.contentEl.style.height="0px"};t.prototype.show=function(){var t=this;this.nanoOpened.emit();displayTransition(this.contentEl,"is-shown",true).then((function(){t.stateChanging=false}));this.contentEl.style.height=this.contentArea.scrollHeight+"px"};t.prototype.resize=function(){var t=this;if(!this.open||!this.contentArea||!this.contentEl||this.stateChanging)return;readTask((function(){if(t.contentArea.scrollHeight>0){writeTask((function(){t.contentEl.style.height=t.contentArea.scrollHeight+"px"}))}}))};t.prototype.attachRO=function(){var t=this;if(this.ro||!this.contentArea)return;var o=this.ro=new index((function(){return t.resize()}));o.observe(this.contentArea)};t.prototype.componentWillLoad=function(){var t=this;this.hasStartSlot=!!this.el.querySelector('[slot="icon-start"]');this.hasEndSlot=!!this.el.querySelector('[slot="icon-end"]');setTimeout((function(){t.isLoading=false}),100)};t.prototype.componentDidLoad=function(){var t=this;if(this.open){setTimeout((function(){t.show()}),0)}this.attachRO()};t.prototype.connectedCallback=function(){var t=this;var o=this.mo=new MutationObserver((function(){return t.resize()}));o.observe(this.el,{childList:true,subtree:true,attributes:false});this.attachRO()};t.prototype.disconnectedCallback=function(){if(this.mo)this.mo.disconnect();if(this.ro)this.ro.disconnect()};t.prototype.render=function(){var t=this;return h(Host,{class:Object.assign({},createColorClasses(this.color))},h("div",{class:{open:this.open,loaded:!this.isLoading}},h("button",{onKeyDown:this.onKeyDown,onMouseDown:this.onMouseDown,"aria-controls":this.slideId,"aria-expanded":this.open?"true":"false",style:{display:this.noHandle?"none":""}},this.hasStartSlot?h("span",{class:"icon icon--start",style:{transform:this.open?"rotate("+this.iconRotation+"deg)":""}},h("slot",{name:"icon-start"})):"",h("div",{class:"label"},this.label?this.label:h("slot",{name:"label"})),this.hasEndSlot?h("span",{class:"icon icon--end",style:{transform:this.open?"rotate("+this.iconRotation+"deg)":""}},h("slot",{name:"icon-end"})):""),h("div",{class:"content",ref:function(o){return t.contentEl=o},tabindex:"-1",id:this.slideId},h("div",{ref:function(o){return t.contentArea=o},class:"content__area"},h("slot",null)))))};Object.defineProperty(t.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{open:["toggleClick"]}},enumerable:false,configurable:true});return t}();var slideIds=0;Details.style=detailsCss;export{Details as nano_details};
2
2
  //# sourceMappingURL=nano-details.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/details/details.scss?tag=nano-details&encapsulation=shadow","src/components/details/details.tsx"],"names":["detailsCss","Details","hostRef","_this","this","slideId","slideIds","stateChanging","isLoading","label","open","noHandle","iconRotation","onKeyDown","ev","key","onMouseDown","prototype","toggleClick","show","hide","nanoClosed","emit","displayTransition","contentEl","then","style","height","nanoOpened","contentArea","scrollHeight","resize","readTask","writeTask","componentWillLoad","hasStartSlot","el","querySelector","hasEndSlot","setTimeout","componentDidLoad","connectedCallback","mo","MutationObserver","observe","childList","subtree","attributes","ro","ResizeObserver","disconnectedCallback","disconnect","render","h","Host","class","Object","assign","createColorClasses","color","loaded","aria-controls","aria-expanded","display","transform","name","ref","div","tabindex","id"],"mappings":"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","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/form';\n\n:host {\n /**\n * @prop --padding: Default to 1em;\n\n * @prop --btn-padding: Defaults to var(--padding);\n * @prop --btn-bg-color: Defaults to var(--nano-color-contrast, #dad6d3);\n * @prop --btn-bg-color--open: Defaults to var(--nano-color-base, #dad6d3);\n * @prop --btn-bg-color--hover: Defaults to var(--nano-color-tint, #{$color-offwhite});\n\n * @prop --btn-text-color: Defaults to var(--nano-color-base, #455556);\n * @prop --btn-text-color--open: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n * @prop --btn-text-color--hover: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n\n * @prop --content-bg-color: Defaults to transparent;\n * @prop --content-text-color: Defaults to #455556;\n * @prop --content-transition: Defaults to height .2s ease-out;\n\n * @prop --border-width: Defaults to none;\n * @prop --border-color: Defaults to none;\n * @prop --border-style: Defaults to none;\n * @prop --border-radius: Defaults to none;\n * @prop --box-shadow: Defaults to none;\n * @prop --focus-style: Defaults to #{$control-focus-style}\n */\n\n @include text-inherit();\n\n --padding: 1em;\n --btn-padding: var(--padding);\n --btn-bg-color: var(--nano-color-contrast, #dad6d3);\n --btn-bg-color--open: var(--nano-color-base, #dad6d3);\n --btn-bg-color--hover: var(--nano-color-tint, #{$color-offwhite});\n --btn-text-color: var(--nano-color-base, #455556);\n --btn-text-color--open: var(--nano-color-contrast, var(--btn-text-color));\n --btn-text-color--hover: var(--nano-color-contrast, var(--btn-text-color));\n --content-bg-color: transparent;\n --content-text-color: #455556;\n --content-transition: height 0.2s ease-out;\n --border-width: none;\n --border-color: none;\n --border-style: none;\n --border-radius: none;\n --box-shadow: none;\n --focus-style: #{$control-focus-style};\n\n display: block;\n border-style: var(--border-style);\n border-width: var(--border-width-dims);\n border-color: var(--border-color);\n border-radius: var(--border-radius-dims);\n box-shadow: var(--box-shadow);\n}\n\n:host(:last-of-type) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n --border-radius-dims: 0 0 var(--border-radius) var(--border-radius);\n\n .open .content {\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n }\n}\n\n:host(:first-of-type) {\n --border-radius-dims: var(--border-radius) var(--border-radius) 0 0;\n --border-width-dims: var(--border-width);\n}\n\n:host(:first-of-type:last-of-type) {\n --border-radius-dims: var(--border-radius);\n --border-width-dims: var(--border-width);\n}\n\n:host(:not(:last-of-type):not(:first-of-type)) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n}\n\n:host(.nano-color) {\n --btn-bg-color: var(--nano-color-contrast, #{nano-color(primary, contrast)});\n --btn-bg-color--open: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-bg-color--hover: var(--nano-color-tint, #{nano-color(primary, tint)});\n --btn-text-color: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-text-color--open:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n --btn-text-color--hover:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n}\n\nbutton {\n @include input-cover;\n\n padding: var(--btn-padding);\n text-align: inherit;\n position: relative;\n font-size: 1em;\n margin: 0;\n transition: 0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;\n display: flex;\n align-items: center;\n background: var(--btn-bg-color);\n color: var(--btn-text-color);\n border-radius: var(--border-radius-dims);\n\n &:focus {\n box-shadow: var(--focus-style);\n outline: none;\n position: relative;\n z-index: 1;\n }\n\n :hover & {\n background: var(--btn-bg-color--hover);\n color: var(--btn-text-color--hover);\n }\n\n .open & {\n background: var(--btn-bg-color--open);\n color: var(--btn-text-color--open);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .label {\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n flex: 1;\n display: inline-block;\n }\n\n .icon {\n line-height: 0;\n flex-direction: column;\n justify-content: center;\n display: inline-block;\n color: currentColor;\n transition: 0.3s ease transform;\n transform-origin: center;\n\n &--start {\n @include margin(0, var(--padding), 0, 0);\n }\n\n &--end {\n @include margin(0, 0, 0, var(--padding));\n }\n\n ::slotted(nano-icon) {\n --color: 'currentColor';\n }\n }\n}\n\n.content {\n color: var(--content-text-color);\n background: var(--content-bg-color);\n height: 0;\n overflow: hidden;\n transition: 0.2s ease border-radius;\n outline: none;\n\n .loaded & {\n transition: var(--content-transition), 0.2s ease border-radius;\n }\n\n > * {\n opacity: 0;\n transition: opacity 0.2s ease-out;\n\n .open & {\n opacity: 1;\n }\n }\n\n &__area {\n padding: var(--padding);\n }\n}\n","import {\n Component,\n Event,\n EventEmitter,\n Prop,\n h,\n Element,\n Watch,\n Host,\n State,\n writeTask,\n readTask,\n} from '@stencil/core';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { Color } from '../../interface';\nimport { createColorClasses } from '../../utils/theme';\nimport { testLegacyStyle, displayTransition } from '../../utils/utils';\n\n/**\n * A simple element used to hide or reveal more content with slide effect. Can be used independently or nested within a [accordion](story/components-accordion--accordion) element to add 'one item open at a time' support.\n */\n/**\n * @slot - content that will be hidden / revealed\n * @slot icon-start - used for icons at the start of the handle\n * @slot label - can be used when you wish to insert complex label markup\n * @slot icon-end - used for icons at the end of the handle\n */\n@Component({\n tag: 'nano-details',\n styleUrl: 'details.scss',\n shadow: true,\n})\nexport class Details {\n private hasStartSlot: boolean;\n private hasEndSlot: boolean;\n private slideId = `nano-details-${slideIds++}`;\n private mo?: MutationObserver;\n private ro?: ResizeObserver;\n private contentArea: HTMLDivElement;\n private stateChanging: boolean = false;\n\n @State() isLoading = true;\n\n @Element() private el: HTMLNanoDetailsElement;\n\n private contentEl: HTMLElement;\n\n /**\n * Button / handle text to be used if no complex markup required.\n * Otherwise use label slot.\n */\n @Prop() label: string = '';\n\n /**\n * Should item be open on load\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Have no handle - you will need to control the hiding / showing of content with script\n */\n @Prop() noHandle: boolean = false;\n\n /**\n * Icon slot rotation amount (degrees) on open\n */\n @Prop() iconRotation: number = 90;\n\n /**\n * Color to use from your application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * Emitted when the component opens.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoOpened: EventEmitter;\n\n /**\n * Emitted when the component closes.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoClosed: EventEmitter;\n\n @Watch('open')\n toggleClick() {\n this.stateChanging = true;\n if (this.open) this.show();\n else this.hide();\n }\n\n private onKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.open = !this.open;\n break;\n }\n };\n\n private onMouseDown = () => {\n if (this.stateChanging) return;\n this.open = !this.open;\n };\n\n private hide() {\n this.nanoClosed.emit(this.open);\n displayTransition(this.contentEl, 'is-shown', false).then(\n () => (this.stateChanging = false)\n );\n this.contentEl.style.height = '0px';\n }\n\n private show() {\n this.nanoOpened.emit();\n displayTransition(this.contentEl, 'is-shown', true).then(\n () => (this.stateChanging = false)\n );\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n }\n\n private resize() {\n if (\n !this.open ||\n !this.contentArea ||\n !this.contentEl ||\n this.stateChanging\n )\n return;\n readTask(() => {\n if (this.contentArea.scrollHeight > 0) {\n writeTask(() => {\n // this.contentEl.style.transition = 'none';\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n // this.contentEl.style.transition = '';\n });\n }\n });\n }\n\n componentWillLoad() {\n this.hasStartSlot = !!this.el.querySelector('[slot=\"icon-start\"]');\n this.hasEndSlot = !!this.el.querySelector('[slot=\"icon-end\"]');\n setTimeout(() => {\n this.isLoading = false;\n }, 100);\n }\n\n componentDidLoad() {\n if (this.open) {\n // disable animation on start\n setTimeout(() => {\n this.show();\n }, 0);\n }\n }\n\n connectedCallback() {\n testLegacyStyle(this.el);\n const mo = (this.mo = new MutationObserver(() => this.resize()));\n mo.observe(this.el, { childList: true, subtree: true, attributes: true });\n\n const ro = (this.ro = new ResizeObserver(() => this.resize()));\n ro.observe(this.el);\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div\n class={{\n open: this.open,\n loaded: !this.isLoading,\n }}\n >\n <button\n onKeyDown={this.onKeyDown}\n onMouseDown={this.onMouseDown}\n aria-controls={this.slideId}\n aria-expanded={this.open ? 'true' : 'false'}\n style={{ display: this.noHandle ? 'none' : '' }}\n >\n {this.hasStartSlot ? (\n <span\n class=\"icon icon--start\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-start\" />\n </span>\n ) : (\n ''\n )}\n <div class=\"label\">\n {this.label ? this.label : <slot name=\"label\" />}\n </div>\n {this.hasEndSlot ? (\n <span\n class=\"icon icon--end\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-end\" />\n </span>\n ) : (\n ''\n )}\n </button>\n <div\n class=\"content\"\n ref={(div) => (this.contentEl = div)}\n tabindex=\"-1\"\n id={this.slideId}\n >\n <div ref={(div) => (this.contentArea = div)} class=\"content__area\">\n <slot />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\nlet slideIds = 0;\n"]}
1
+ {"version":3,"sources":["src/components/details/details.scss?tag=nano-details&encapsulation=shadow","src/components/details/details.tsx"],"names":["detailsCss","Details","hostRef","_this","this","slideId","slideIds","stateChanging","isLoading","label","open","noHandle","iconRotation","onKeyDown","ev","key","onMouseDown","prototype","toggleClick","show","hide","nanoClosed","emit","displayTransition","contentEl","then","style","height","nanoOpened","contentArea","scrollHeight","resize","readTask","writeTask","attachRO","ro","ResizeObserver","observe","componentWillLoad","hasStartSlot","el","querySelector","hasEndSlot","setTimeout","componentDidLoad","connectedCallback","mo","MutationObserver","childList","subtree","attributes","disconnectedCallback","disconnect","render","h","Host","class","Object","assign","createColorClasses","color","loaded","aria-controls","aria-expanded","display","transform","name","ref","div","tabindex","id"],"mappings":"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","sourcesContent":["@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/colours';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/form';\n\n:host {\n /**\n * @prop --padding: Default to 1em;\n\n * @prop --btn-padding: Defaults to var(--padding);\n * @prop --btn-bg-color: Defaults to var(--nano-color-contrast, #dad6d3);\n * @prop --btn-bg-color--open: Defaults to var(--nano-color-base, #dad6d3);\n * @prop --btn-bg-color--hover: Defaults to var(--nano-color-tint, #{$color-offwhite});\n\n * @prop --btn-text-color: Defaults to var(--nano-color-base, #455556);\n * @prop --btn-text-color--open: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n * @prop --btn-text-color--hover: Defaults to var(--nano-color-contrast, var(--btn-text-color));\n\n * @prop --content-bg-color: Defaults to transparent;\n * @prop --content-text-color: Defaults to #455556;\n * @prop --content-transition: Defaults to height .2s ease-out;\n\n * @prop --border-width: Defaults to none;\n * @prop --border-color: Defaults to none;\n * @prop --border-style: Defaults to none;\n * @prop --border-radius: Defaults to none;\n * @prop --box-shadow: Defaults to none;\n * @prop --focus-style: Defaults to #{$control-focus-style}\n */\n\n @include text-inherit();\n\n --padding: 1em;\n --btn-padding: var(--padding);\n --btn-bg-color: var(--nano-color-contrast, #dad6d3);\n --btn-bg-color--open: var(--nano-color-base, #dad6d3);\n --btn-bg-color--hover: var(--nano-color-tint, #{$color-offwhite});\n --btn-text-color: var(--nano-color-base, #455556);\n --btn-text-color--open: var(--nano-color-contrast, var(--btn-text-color));\n --btn-text-color--hover: var(--nano-color-contrast, var(--btn-text-color));\n --content-bg-color: transparent;\n --content-text-color: #455556;\n --content-transition: height 0.2s ease-out;\n --border-width: none;\n --border-color: none;\n --border-style: none;\n --border-radius: none;\n --box-shadow: none;\n --focus-style: #{$control-focus-style};\n\n display: block;\n border-style: var(--border-style);\n border-width: var(--border-width-dims);\n border-color: var(--border-color);\n border-radius: var(--border-radius-dims);\n box-shadow: var(--box-shadow);\n}\n\n:host(:last-of-type) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n --border-radius-dims: 0 0 var(--border-radius) var(--border-radius);\n\n .open .content {\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n }\n}\n\n:host(:first-of-type) {\n --border-radius-dims: var(--border-radius) var(--border-radius) 0 0;\n --border-width-dims: var(--border-width);\n}\n\n:host(:first-of-type:last-of-type) {\n --border-radius-dims: var(--border-radius);\n --border-width-dims: var(--border-width);\n}\n\n:host(:not(:last-of-type):not(:first-of-type)) {\n --border-width-dims: 0 var(--border-width) var(--border-width);\n}\n\n:host(.nano-color) {\n --btn-bg-color: var(--nano-color-contrast, #{nano-color(primary, contrast)});\n --btn-bg-color--open: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-bg-color--hover: var(--nano-color-tint, #{nano-color(primary, tint)});\n --btn-text-color: var(--nano-color-base, #{nano-color(primary, base)});\n --btn-text-color--open:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n --btn-text-color--hover:\n var(\n --nano-color-contrast,\n #{nano-color(primary, contrast)}\n );\n}\n\nbutton {\n @include input-cover;\n\n padding: var(--btn-padding);\n text-align: inherit;\n position: relative;\n font-size: 1em;\n margin: 0;\n transition: 0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;\n display: flex;\n align-items: center;\n background: var(--btn-bg-color);\n color: var(--btn-text-color);\n border-radius: var(--border-radius-dims);\n\n &:focus {\n box-shadow: var(--focus-style);\n outline: none;\n position: relative;\n z-index: 1;\n }\n\n :hover & {\n background: var(--btn-bg-color--hover);\n color: var(--btn-text-color--hover);\n }\n\n .open & {\n background: var(--btn-bg-color--open);\n color: var(--btn-text-color--open);\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .label {\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n flex: 1;\n display: inline-block;\n }\n\n .icon {\n line-height: 0;\n flex-direction: column;\n justify-content: center;\n display: inline-block;\n color: currentColor;\n transition: 0.3s ease transform;\n transform-origin: center;\n\n &--start {\n @include margin(0, var(--padding), 0, 0);\n }\n\n &--end {\n @include margin(0, 0, 0, var(--padding));\n }\n\n ::slotted(nano-icon) {\n --color: 'currentColor';\n }\n }\n}\n\n.content {\n color: var(--content-text-color);\n background: var(--content-bg-color);\n height: 0;\n overflow: hidden;\n transition: 0.2s ease border-radius;\n outline: none;\n\n .loaded & {\n transition: var(--content-transition), 0.2s ease border-radius;\n }\n\n > * {\n opacity: 0;\n transition: opacity 0.2s ease-out;\n\n .open & {\n opacity: 1;\n }\n }\n\n &__area {\n padding: var(--padding);\n }\n}\n","import {\n Component,\n Event,\n EventEmitter,\n Prop,\n h,\n Element,\n Watch,\n Host,\n State,\n writeTask,\n readTask,\n} from '@stencil/core';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { Color } from '../../interface';\nimport { createColorClasses } from '../../utils/theme';\nimport { testLegacyStyle, displayTransition } from '../../utils';\n\n/**\n * A simple element used to hide or reveal more content with slide effect. Can be used independently or nested within a [accordion](story/components-accordion--accordion) element to add 'one item open at a time' support.\n */\n/**\n * @slot - content that will be hidden / revealed\n * @slot icon-start - used for icons at the start of the handle\n * @slot label - can be used when you wish to insert complex label markup\n * @slot icon-end - used for icons at the end of the handle\n */\n@Component({\n tag: 'nano-details',\n styleUrl: 'details.scss',\n shadow: true,\n})\nexport class Details {\n private hasStartSlot: boolean;\n private hasEndSlot: boolean;\n private slideId = `nano-details-${slideIds++}`;\n private mo?: MutationObserver;\n private ro?: ResizeObserver;\n private contentArea: HTMLDivElement;\n private stateChanging: boolean = false;\n\n @State() isLoading = true;\n\n @Element() private el: HTMLNanoDetailsElement;\n\n private contentEl: HTMLElement;\n\n /**\n * Button / handle text to be used if no complex markup required.\n * Otherwise use label slot.\n */\n @Prop() label: string = '';\n\n /**\n * Should item be open on load\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Have no handle - you will need to control the hiding / showing of content with script\n */\n @Prop() noHandle: boolean = false;\n\n /**\n * Icon slot rotation amount (degrees) on open\n */\n @Prop() iconRotation: number = 90;\n\n /**\n * Color to use from your application's color palette.\n */\n @Prop() color?: Color;\n\n /**\n * Emitted when the component opens.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoOpened: EventEmitter;\n\n /**\n * Emitted when the component closes.\n * Note: when wrapped in an accordion this event will not propogate. Use nanoToggle events instead.\n */\n @Event() nanoClosed: EventEmitter;\n\n @Watch('open')\n toggleClick() {\n this.stateChanging = true;\n if (this.open) this.show();\n else this.hide();\n }\n\n private onKeyDown = (ev: KeyboardEvent) => {\n switch (ev.key) {\n case 'Enter':\n case ' ':\n this.open = !this.open;\n break;\n }\n };\n\n private onMouseDown = () => {\n if (this.stateChanging) return;\n this.open = !this.open;\n };\n\n private hide() {\n this.nanoClosed.emit(this.open);\n displayTransition(this.contentEl, 'is-shown', false).then(\n () => (this.stateChanging = false)\n );\n this.contentEl.style.height = '0px';\n }\n\n private show() {\n this.nanoOpened.emit();\n displayTransition(this.contentEl, 'is-shown', true).then(() => {\n this.stateChanging = false;\n });\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n }\n\n private resize() {\n if (\n !this.open ||\n !this.contentArea ||\n !this.contentEl ||\n this.stateChanging\n )\n return;\n readTask(() => {\n if (this.contentArea.scrollHeight > 0) {\n writeTask(() => {\n this.contentEl.style.height = this.contentArea.scrollHeight + 'px';\n });\n }\n });\n }\n\n private attachRO() {\n if (this.ro || !this.contentArea) return;\n\n const ro = (this.ro = new ResizeObserver(() => this.resize()));\n ro.observe(this.contentArea);\n }\n\n componentWillLoad() {\n this.hasStartSlot = !!this.el.querySelector('[slot=\"icon-start\"]');\n this.hasEndSlot = !!this.el.querySelector('[slot=\"icon-end\"]');\n setTimeout(() => {\n this.isLoading = false;\n }, 100);\n }\n\n componentDidLoad() {\n if (this.open) {\n // disable animation on start\n setTimeout(() => {\n this.show();\n }, 0);\n }\n this.attachRO();\n }\n\n connectedCallback() {\n testLegacyStyle(this.el);\n const mo = (this.mo = new MutationObserver(() => this.resize()));\n mo.observe(this.el, { childList: true, subtree: true, attributes: false });\n this.attachRO();\n }\n\n disconnectedCallback() {\n if (this.mo) this.mo.disconnect();\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host class={{ ...createColorClasses(this.color) }}>\n <div\n class={{\n open: this.open,\n loaded: !this.isLoading,\n }}\n >\n <button\n onKeyDown={this.onKeyDown}\n onMouseDown={this.onMouseDown}\n aria-controls={this.slideId}\n aria-expanded={this.open ? 'true' : 'false'}\n style={{ display: this.noHandle ? 'none' : '' }}\n >\n {this.hasStartSlot ? (\n <span\n class=\"icon icon--start\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-start\" />\n </span>\n ) : (\n ''\n )}\n <div class=\"label\">\n {this.label ? this.label : <slot name=\"label\" />}\n </div>\n {this.hasEndSlot ? (\n <span\n class=\"icon icon--end\"\n style={{\n transform: this.open ? `rotate(${this.iconRotation}deg)` : '',\n }}\n >\n <slot name=\"icon-end\" />\n </span>\n ) : (\n ''\n )}\n </button>\n <div\n class=\"content\"\n ref={(div) => (this.contentEl = div)}\n tabindex=\"-1\"\n id={this.slideId}\n >\n <div ref={(div) => (this.contentArea = div)} class=\"content__area\">\n <slot />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\nlet slideIds = 0;\n"]}
@@ -1,2 +1,2 @@
1
- var __awaiter=this&&this.__awaiter||function(o,e,t,a){function i(o){return o instanceof t?o:new t((function(e){e(o)}))}return new(t||(t=Promise))((function(t,n){function r(o){try{l(a.next(o))}catch(e){n(e)}}function s(o){try{l(a["throw"](o))}catch(e){n(e)}}function l(o){o.done?t(o.value):i(o.value).then(r,s)}l((a=a.apply(o,e||[])).next())}))};var __generator=this&&this.__generator||function(o,e){var t={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},a,i,n,r;return r={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function s(o){return function(e){return l([o,e])}}function l(r){if(a)throw new TypeError("Generator is already executing.");while(t)try{if(a=1,i&&(n=r[0]&2?i["return"]:r[0]?i["throw"]||((n=i["return"])&&n.call(i),0):i.next)&&!(n=n.call(i,r[1])).done)return n;if(i=0,n)r=[r[0]&2,n.value];switch(r[0]){case 0:case 1:n=r;break;case 4:t.label++;return{value:r[1],done:false};case 5:t.label++;i=r[1];r=[0];continue;case 7:r=t.ops.pop();t.trys.pop();continue;default:if(!(n=t.trys,n=n.length>0&&n[n.length-1])&&(r[0]===6||r[0]===2)){t=0;continue}if(r[0]===3&&(!n||r[1]>n[0]&&r[1]<n[3])){t.label=r[1];break}if(r[0]===6&&t.label<n[1]){t.label=n[1];n=r;break}if(n&&t.label<n[2]){t.label=n[2];t.ops.push(r);break}if(n[2])t.ops.pop();t.trys.pop();continue}r=e.call(o,t)}catch(s){r=[6,s];i=0}finally{a=n=0}if(r[0]&5)throw r[1];return{value:r[0]?r[1]:void 0,done:true}}};import{r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-20becda2.js";import{l as lockBodyScrolling,u as unlockBodyScrolling}from"./scroll-4162ee24.js";import{M as Modal}from"./modal-1029407c.js";import{r as raf}from"./utils-fd1ada22.js";import{C as ComponentStore}from"./component-store-182d1931.js";import{h as hasSlot}from"./slot-2f257a82.js";import"./dom-ae168a2d.js";import"./tabbable-7818e4c2.js";import"./_commonjsHelpers-11ca3be1.js";import"./throttle-e3c852aa.js";var dialogCss=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--content-background:#fafafa;--footer-content:#e4e6e8;--scrim-color:var(--nano-layer-overlay-dark, rgba(74, 74, 74, .5));--box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.3));--close-button-color:#b5aea7;--width:60rem;--tint-color:#0084a9;--body-padding-v:var(--nano-spacing-large, 20px);--body-padding-h:var(--nano-spacing-large, 20px);--header-padding-v:var(--nano-spacing-medium, 16px);--header-padding-h:var(--nano-spacing-large, 20px);--footer-padding-v:var(--nano-spacing-medium, 16px);--footer-padding-h:var(--nano-spacing-large, 20px)}.dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--nano-layer-index-modal, 700)}.dialog:not(.dialog--visible){position:absolute;width:1px;height:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;pointer-events:none;visibility:hidden}.dialog__panel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;z-index:2;width:var(--width);max-width:calc(100% - var(--nano-spacing-xlarge, 24px));max-height:calc(92% - var(--nano-spacing-xlarge, 24px));background-color:var(--content-background);border-radius:var(--border-radius);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);opacity:0;-webkit-transform:scale(0.8);transform:scale(0.8);-webkit-transition:var(--nano-transition-fast, 0.3s) opacity, var(--nano-transition-fast, 0.3s) transform;transition:var(--nano-transition-fast, 0.3s) opacity, var(--nano-transition-fast, 0.3s) transform;overflow:auto}.dialog__panel:focus{outline:none}.dialog--with-ribbon .dialog__panel{border-top:5px solid var(--tint-color)}.dialog--open .dialog__panel{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1;-webkit-transform:none;transform:none}.dialog--nodismiss .dialog__panel{-webkit-animation:cannotClose 0.25s ease-in-out 1;animation:cannotClose 0.25s ease-in-out 1}@-webkit-keyframes cannotClose{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes cannotClose{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}100%{-webkit-transform:scale(1);transform:scale(1)}}.dialog__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;min-width:var(--width);width:100%;background-color:var(--content-background);border-radius:var(--border-radius) var(--border-radius) 0 0;-webkit-transition:var(--nano-transition-fast, 0.1s) box-shadow;transition:var(--nano-transition-fast, 0.1s) box-shadow}.dialog--visible .dialog__header{min-width:auto}[stuck] .dialog__header{-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2))}.dialog__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;font-size:var(--nano-fontsize-large, 1.25rem);line-height:1.6;padding:var(--header-padding-v) var(--header-padding-h)}.dialog .dialog__close-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:var(--nano-fontsize-xlarge, 1.5rem);padding:0 var(--header-padding-h);--color:var(--close-button-color)}.dialog__body{padding:0 var(--body-padding-h) var(--body-padding-v)}.dialog:not(.dialog--has-header) .dialog__body{padding-top:var(--body-padding-v)}.dialog__body ::slotted(*){max-width:100%}.dialog__body-wrap{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:var(--border-radius)}.dialog:not(.dialog--has-header) .dialog__body-wrap{border-radius:0 0 inherit inherit}.dialog:not(.dialog--has-footer) .dialog__body-wrap{border-radius:inherit inherit 0 0}.dialog__footer{width:100%;padding:var(--footer-padding-v) var(--footer-padding-h);background:var(--footer-content);border-radius:0 0 var(--border-radius) var(--border-radius);position:relative;top:1px}.dialog--visible .dialog__footer{min-width:auto}.dialog__footer ::slotted(button){margin-right:var(--nano-spacing-small, 8px) !important}.dialog:not(.dialog--has-footer) .dialog__footer{display:none}.dialog__close-txt{color:var(--tint-color);border:none;text-decoration:underline;margin:0;text-underline-offset:4px;background-color:transparent;font:inherit;-webkit-box-align:center;cursor:pointer;font-size:var(--nano-fontsize-small, 0.875rem);padding:0.5rem;border-radius:var(--nano-border-radius-small, 2px);-webkit-transition:-webkit-box-shadow 100ms ease-in-out;transition:-webkit-box-shadow 100ms ease-in-out;transition:box-shadow 100ms ease-in-out;transition:box-shadow 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out}.dialog__close-txt:focus{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.dialog__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:var(--scrim-color);opacity:0;-webkit-transition:var(--nano-transition-fast, 0.3s) opacity;transition:var(--nano-transition-fast, 0.3s) opacity;-webkit-backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px))}.dialog--open .dialog__overlay{opacity:1}";var id=0;var Dialog=function(){function o(o){var e=this;registerInstance(this,o);this.nanoShow=createEvent(this,"nanoShow",7);this.nanoAfterShow=createEvent(this,"nanoAfterShow",7);this.nanoHide=createEvent(this,"nanoHide",7);this.nanoAfterHide=createEvent(this,"nanoAfterHide",7);this.nanoInitialFocus=createEvent(this,"nanoInitialFocus",7);this.nanoRequestClose=createEvent(this,"nanoRequestClose",7);this.componentId="dialog-"+ ++id;this.willShow=false;this.willHide=false;this.addedTransEnd=false;this.isVisible=false;this.noDismiss=false;this.hasFooter=false;this.showRibbon=true;this.open=false;this.label="";this.noHeader=false;this.noFooter=false;this.noUserDismiss=false;this.storeMethod="url-hash";this.handleKeyDown=function(o){if(o.key==="Escape"){e.requestClose()}};this.requestClose=function(){var o=e.nanoRequestClose.emit();if(!o.defaultPrevented&&!e.noUserDismiss){e.hide()}else{e.noDismiss=true;setTimeout((function(o){return e.noDismiss=false}),250)}};this.handleTransitionEnd=function(o){if(o.propertyName==="opacity"&&o.composedPath().find((function(o){return o===e.panel||o===e.overlay}))){e.isVisible=e.open;e.willShow=false;e.willHide=false;e.open?e.nanoAfterShow.emit():e.nanoAfterHide.emit()}};this.handleSlotChange=function(){e.hasFooter=hasSlot(e.host,"footer")}}o.prototype.handleOpenChange=function(){this.open?this.show():this.hide()};o.prototype.show=function(){return __awaiter(this,void 0,void 0,(function(){var o;var e=this;return __generator(this,(function(t){if(this.willShow){return[2]}o=this.nanoShow.emit();if(o.defaultPrevented){this.open=false;return[2]}this.originalTrigger=document.activeElement;this.willShow=true;this.isVisible=true;this.open=true;this.modal.activate();lockBodyScrolling(this.host);if(this.open){raf((function(){var o=e.nanoInitialFocus.emit();if(!o.defaultPrevented){e.panel.focus({preventScroll:true})}}))}return[2]}))}))};o.prototype.hide=function(){return __awaiter(this,void 0,void 0,(function(){var o,e;return __generator(this,(function(t){if(this.willHide){return[2]}o=this.nanoHide.emit();if(o.defaultPrevented){this.open=true;return[2]}this.willHide=true;this.open=false;this.modal.deactivate();unlockBodyScrolling(this.host);this.stopVideos();e=this.originalTrigger;if(e&&typeof e.focus==="function"){setTimeout((function(){return e.focus()}))}return[2]}))}))};o.prototype.stopVideos=function(){var o=Array.from(this.host.querySelectorAll("iframe,video"));o.forEach((function(o){if(o.tagName.toLowerCase()==="video")o.pause();else{var e=o.src;o.src=e}}))};o.prototype.connectedCallback=function(){this.modal=new Modal(this.host);if(this.panel){this.addedTransEnd=true;this.panel.addEventListener("transitionend",this.handleTransitionEnd)}};o.prototype.componentWillLoad=function(){this.handleSlotChange();if(this.open)this.show();if(this.storeId)ComponentStore.init(this,["open"],this.storeMethod,this.storeId)};o.prototype.componentDidLoad=function(){if(!this.addedTransEnd){this.panel.addEventListener("transitionend",this.handleTransitionEnd)}};o.prototype.disconnectedCallback=function(){unlockBodyScrolling(this.host);this.addedTransEnd=false;this.panel.removeEventListener("transitionend",this.handleTransitionEnd)};o.prototype.render=function(){var o=this;return h(Host,{showing:this.isVisible?true:undefined},h("div",{part:"base",class:{dialog:true,"dialog--open":this.open,"dialog--visible":this.isVisible,"dialog--has-footer":!this.noFooter,"dialog--has-header":!this.noHeader,"dialog--nodismiss":this.noDismiss,"dialog--with-ribbon":this.showRibbon},onKeyDown:this.handleKeyDown},h("div",{part:"overlay",class:"dialog__overlay",ref:function(e){return o.overlay=e},onClick:this.requestClose}),h("div",{ref:function(e){return o.panel=e},part:"panel",class:"dialog__panel",role:"dialog","aria-modal":"true","aria-hidden":this.open?"false":"true","aria-label":this.noHeader?this.label:null,"aria-labelledby":!this.noHeader?this.componentId+"-title":null,tabIndex:0},h("div",{class:"dialog__body-wrap"},!this.noHeader&&h("nano-sticker",null,h("header",{part:"header",class:"dialog__header"},h("span",{part:"title",class:"dialog__title",id:this.componentId+"-title"},h("slot",{name:"label"},this.label||String.fromCharCode(65279))),!this.noUserDismiss&&h("nano-icon-button",{exportparts:"base:close-button",class:"dialog__close-icon",label:"close dialog",onClick:this.requestClose,iconName:"light/times"}))),h("div",{part:"body",class:"dialog__body"},h("slot",null)),!this.noFooter&&(this.hasFooter||!this.noUserDismiss)&&h("nano-sticker",{position:"bottom"},h("footer",{part:"footer",class:"dialog__footer"},h("slot",{name:"footer",onSlotchange:this.handleSlotChange}),!this.noUserDismiss&&h("button",{class:"dialog__close-txt",onClick:this.requestClose},"Close")))))))};Object.defineProperty(o.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(o,"watchers",{get:function(){return{open:["handleOpenChange"]}},enumerable:false,configurable:true});return o}();Dialog.style=dialogCss;export{Dialog as nano_dialog};
1
+ var __awaiter=this&&this.__awaiter||function(o,e,t,i){function a(o){return o instanceof t?o:new t((function(e){e(o)}))}return new(t||(t=Promise))((function(t,n){function r(o){try{l(i.next(o))}catch(e){n(e)}}function s(o){try{l(i["throw"](o))}catch(e){n(e)}}function l(o){o.done?t(o.value):a(o.value).then(r,s)}l((i=i.apply(o,e||[])).next())}))};var __generator=this&&this.__generator||function(o,e){var t={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,a,n,r;return r={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(r[Symbol.iterator]=function(){return this}),r;function s(o){return function(e){return l([o,e])}}function l(r){if(i)throw new TypeError("Generator is already executing.");while(t)try{if(i=1,a&&(n=r[0]&2?a["return"]:r[0]?a["throw"]||((n=a["return"])&&n.call(a),0):a.next)&&!(n=n.call(a,r[1])).done)return n;if(a=0,n)r=[r[0]&2,n.value];switch(r[0]){case 0:case 1:n=r;break;case 4:t.label++;return{value:r[1],done:false};case 5:t.label++;a=r[1];r=[0];continue;case 7:r=t.ops.pop();t.trys.pop();continue;default:if(!(n=t.trys,n=n.length>0&&n[n.length-1])&&(r[0]===6||r[0]===2)){t=0;continue}if(r[0]===3&&(!n||r[1]>n[0]&&r[1]<n[3])){t.label=r[1];break}if(r[0]===6&&t.label<n[1]){t.label=n[1];n=r;break}if(n&&t.label<n[2]){t.label=n[2];t.ops.push(r);break}if(n[2])t.ops.pop();t.trys.pop();continue}r=e.call(o,t)}catch(s){r=[6,s];a=0}finally{i=n=0}if(r[0]&5)throw r[1];return{value:r[0]?r[1]:void 0,done:true}}};import{r as registerInstance,c as createEvent,h,e as Host,g as getElement}from"./index-912ef959.js";import{l as lockBodyScrolling,u as unlockBodyScrolling}from"./scroll-4162ee24.js";import{M as Modal}from"./modal-1029407c.js";import{h as hasSlot}from"./slot-2f257a82.js";import{C as ComponentStore}from"./component-store-93172454.js";import"./dom-ae168a2d.js";import"./tabbable-7818e4c2.js";import"./_commonjsHelpers-11ca3be1.js";import"./throttle-e3c852aa.js";var dialogCss=":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{--border-radius:var(--nano-layer-border-radius, var(--nano-border-radius-medium, 4px));--content-background:#fafafa;--footer-content:#e4e6e8;--scrim-color:var(--nano-layer-overlay-dark, rgba(74, 74, 74, .5));--box-shadow:var(--nano-layer-shadow-large, 0 2px 8px rgba(0, 0, 0, 0.3));--close-button-color:#b5aea7;--width:60rem;--tint-color:#00607b;--body-padding-v:var(--nano-spacing-large, 20px);--body-padding-h:var(--nano-spacing-large, 20px);--header-padding-v:var(--nano-spacing-medium, 16px);--header-padding-h:var(--nano-spacing-large, 20px);--footer-padding-v:var(--nano-spacing-medium, 16px);--footer-padding-h:var(--nano-spacing-large, 20px)}.dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--nano-layer-index-modal, 700)}.dialog:not(.dialog--visible){position:absolute;width:1px;height:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;pointer-events:none;visibility:hidden}.dialog__panel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;z-index:2;width:var(--width);max-width:calc(100% - var(--nano-spacing-xlarge, 24px));max-height:calc(92% - var(--nano-spacing-xlarge, 24px));background-color:var(--content-background);border-radius:var(--border-radius);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);opacity:0;-webkit-transform:scale(0.8);transform:scale(0.8);-webkit-transition:var(--nano-transition-fast, 0.3s) opacity, var(--nano-transition-fast, 0.3s) transform;transition:var(--nano-transition-fast, 0.3s) opacity, var(--nano-transition-fast, 0.3s) transform}.dialog__panel:focus{outline:none}.dialog--with-ribbon .dialog__panel{border-top:5px solid var(--tint-color)}.dialog--open .dialog__panel{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1;-webkit-transform:none;transform:none}.dialog--nodismiss .dialog__panel{-webkit-animation:cannotClose 0.25s ease-in-out 1;animation:cannotClose 0.25s ease-in-out 1}@-webkit-keyframes cannotClose{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes cannotClose{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}100%{-webkit-transform:scale(1);transform:scale(1)}}.dialog__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;min-width:var(--width);width:100%;background-color:var(--content-background);border-radius:var(--border-radius) var(--border-radius) 0 0;-webkit-transition:var(--nano-transition-fast, 0.1s) box-shadow;transition:var(--nano-transition-fast, 0.1s) box-shadow}.dialog--visible .dialog__header{min-width:auto}[stuck] .dialog__header{-webkit-box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2));box-shadow:var(--nano-layer-shadow-medium, 0 2px 4px rgba(0, 0, 0, 0.2))}.dialog__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;font-size:var(--nano-fontsize-large, 1.25rem);line-height:1.6;padding:var(--header-padding-v) var(--header-padding-h)}.dialog .dialog__close-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:var(--nano-fontsize-xlarge, 1.5rem);padding:0 var(--header-padding-h);--color:var(--close-button-color)}.dialog__body{padding:0 var(--body-padding-h) var(--body-padding-v)}.dialog:not(.dialog--has-header) .dialog__body{padding-top:var(--body-padding-v)}.dialog__body ::slotted(*){max-width:100%}.dialog__body-wrap{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:var(--border-radius)}.dialog:not(.dialog--has-header) .dialog__body-wrap{border-radius:0 0 inherit inherit}.dialog:not(.dialog--has-footer) .dialog__body-wrap{border-radius:inherit inherit 0 0}.dialog__footer{width:100%;padding:var(--footer-padding-v) var(--footer-padding-h);background:var(--footer-content);border-radius:0 0 var(--border-radius) var(--border-radius);position:relative;top:1px}.dialog--visible .dialog__footer{min-width:auto}.dialog__footer ::slotted(button){margin-right:var(--nano-spacing-small, 8px) !important}.dialog:not(.dialog--has-footer) .dialog__footer{display:none}.dialog__close-txt{color:var(--tint-color);border:none;text-decoration:underline;margin:0;text-underline-offset:4px;background-color:transparent;font:inherit;-webkit-box-align:center;cursor:pointer;font-size:var(--nano-fontsize-small, 0.875rem);padding:0.5rem;border-radius:var(--nano-border-radius-small, 2px);-webkit-transition:-webkit-box-shadow 100ms ease-in-out;transition:-webkit-box-shadow 100ms ease-in-out;transition:box-shadow 100ms ease-in-out;transition:box-shadow 100ms ease-in-out, -webkit-box-shadow 100ms ease-in-out}.dialog__close-txt:focus{outline:none;-webkit-box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)))}.dialog__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:var(--scrim-color);opacity:0;-webkit-transition:var(--nano-transition-fast, 0.3s) opacity;transition:var(--nano-transition-fast, 0.3s) opacity;-webkit-backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px));backdrop-filter:blur(var(--nano-layer-overlay-blur, 3px))}.dialog--open .dialog__overlay{opacity:1}";var id=0;var Dialog=function(){function o(o){var e=this;registerInstance(this,o);this.nanoShow=createEvent(this,"nanoShow",7);this.nanoAfterShow=createEvent(this,"nanoAfterShow",7);this.nanoHide=createEvent(this,"nanoHide",7);this.nanoAfterHide=createEvent(this,"nanoAfterHide",7);this.nanoInitialFocus=createEvent(this,"nanoInitialFocus",7);this.nanoRequestClose=createEvent(this,"nanoRequestClose",7);this.componentId="dialog-"+ ++id;this.willShow=false;this.willHide=false;this.addedTransEnd=false;this.isVisible=false;this.noDismiss=false;this.hasFooter=false;this.showRibbon=true;this.open=false;this.noHeader=false;this.noFooter=false;this.noUserDismiss=false;this.storeMethod="url-hash";this.handleKeyDown=function(o){if(o.key==="Escape"){e.requestClose()}};this.requestClose=function(){var o=e.nanoRequestClose.emit();if(!o.defaultPrevented&&!e.noUserDismiss){e.hide()}else{e.noDismiss=true;setTimeout((function(o){return e.noDismiss=false}),250)}};this.handleTransitionEnd=function(o){if(o.propertyName==="opacity"&&o.composedPath().find((function(o){return o===e.panel||o===e.overlay}))){e.isVisible=e.open;e.willShow=false;e.willHide=false;e.open?e.nanoAfterShow.emit():e.nanoAfterHide.emit()}};this.handleSlotChange=function(){e.hasFooter=hasSlot(e.host,"footer")}}o.prototype.handleOpenChange=function(){this.open?this.show():this.hide()};o.prototype.show=function(){return __awaiter(this,void 0,void 0,(function(){var o;var e=this;return __generator(this,(function(t){if(this.willShow){return[2]}o=this.nanoShow.emit();if(o.defaultPrevented){this.open=false;return[2]}this.originalTrigger=document.activeElement;this.willShow=true;this.isVisible=true;this.open=true;this.modal.activate();lockBodyScrolling(this.host);if(this.open){this.host.addEventListener("nanoAfterShow",(function(){var o=e.nanoInitialFocus.emit();if(!o.defaultPrevented){e.panel.focus({preventScroll:true})}}),{once:true})}return[2]}))}))};o.prototype.hide=function(){return __awaiter(this,void 0,void 0,(function(){var o,e;return __generator(this,(function(t){if(this.willHide){return[2]}o=this.nanoHide.emit();if(o.defaultPrevented){this.open=true;return[2]}this.willHide=true;this.open=false;this.modal.deactivate();unlockBodyScrolling(this.host);this.stopVideos();e=this.originalTrigger;if(e&&typeof e.focus==="function"){setTimeout((function(){return e.focus()}))}return[2]}))}))};o.prototype.stopVideos=function(){var o=Array.from(this.host.querySelectorAll("iframe,video"));o.forEach((function(o){if(o.tagName.toLowerCase()==="video")o.pause();else{var e=o.src;o.src=e}}))};o.prototype.connectedCallback=function(){this.modal=new Modal(this.host);if(this.panel){this.addedTransEnd=true;this.panel.addEventListener("transitionend",this.handleTransitionEnd)}};o.prototype.componentWillLoad=function(){this.handleSlotChange();if(this.open)this.show();if(this.storeId)ComponentStore.init(this,["open"],this.storeMethod,this.storeId)};o.prototype.componentDidLoad=function(){if(!this.addedTransEnd){this.panel.addEventListener("transitionend",this.handleTransitionEnd)}};o.prototype.disconnectedCallback=function(){unlockBodyScrolling(this.host);this.addedTransEnd=false;this.panel.removeEventListener("transitionend",this.handleTransitionEnd)};o.prototype.render=function(){var o=this;return h(Host,{showing:this.isVisible?true:undefined},h("div",{part:"base",class:{dialog:true,"dialog--open":this.open,"dialog--visible":this.isVisible,"dialog--has-footer":!this.noFooter,"dialog--has-header":!this.noHeader,"dialog--nodismiss":this.noDismiss,"dialog--with-ribbon":this.showRibbon},onKeyDown:this.handleKeyDown},h("div",{part:"overlay",class:"dialog__overlay",ref:function(e){return o.overlay=e},onClick:this.requestClose}),h("div",{ref:function(e){return o.panel=e},part:"panel",class:"dialog__panel",role:"dialog","aria-modal":"true","aria-hidden":this.open?"false":"true","aria-label":this.noHeader?this.label:null,"aria-labelledby":!this.noHeader?this.componentId+"-title":null,tabIndex:0},h("div",{class:"dialog__body-wrap"},!this.noHeader&&h("nano-sticker",null,h("header",{part:"header",class:"dialog__header"},h("span",{part:"title",class:"dialog__title",id:this.componentId+"-title"},h("slot",{name:"label"},this.label||String.fromCharCode(65279))),!this.noUserDismiss&&h("nano-icon-button",{exportparts:"base:close-button",class:"dialog__close-icon",label:"close dialog",onClick:this.requestClose,iconName:"light/times"}))),h("div",{part:"body",class:"dialog__body"},h("slot",null)),!this.noFooter&&(this.hasFooter||!this.noUserDismiss)&&h("nano-sticker",{position:"bottom"},h("footer",{part:"footer",class:"dialog__footer"},h("slot",{name:"footer",onSlotchange:this.handleSlotChange}),!this.noUserDismiss&&h("button",{class:"dialog__close-txt",onClick:this.requestClose},"Close")))))))};Object.defineProperty(o.prototype,"host",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(o,"watchers",{get:function(){return{open:["handleOpenChange"]}},enumerable:false,configurable:true});return o}();Dialog.style=dialogCss;export{Dialog as nano_dialog};
2
2
  //# sourceMappingURL=nano-dialog.entry.js.map