@six-group/ui-library 0.0.0-insider.f8f39e7 → 0.0.0-insider.fa2c15f

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 (296) hide show
  1. package/dist/cjs/{form-control-72186fcc.js → form-control-8d64e974.js} +2 -2
  2. package/dist/cjs/{form-control-72186fcc.js.map → form-control-8d64e974.js.map} +1 -1
  3. package/dist/cjs/{index-5dd19c4b.js → index-d7748d51.js} +13 -469
  4. package/dist/cjs/index-d7748d51.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +54 -1
  6. package/dist/cjs/index.cjs.js.map +1 -1
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/six-alert.cjs.entry.js +39 -7
  9. package/dist/cjs/six-alert.cjs.entry.js.map +1 -1
  10. package/dist/cjs/six-avatar.cjs.entry.js +1 -1
  11. package/dist/cjs/six-badge.cjs.entry.js +1 -1
  12. package/dist/cjs/six-button.cjs.entry.js +1 -1
  13. package/dist/cjs/six-card.cjs.entry.js +1 -1
  14. package/dist/cjs/six-checkbox_2.cjs.entry.js +2 -2
  15. package/dist/cjs/six-datepicker.cjs.entry.js +1 -1
  16. package/dist/cjs/six-details.cjs.entry.js +2 -2
  17. package/dist/cjs/six-details.cjs.entry.js.map +1 -1
  18. package/dist/cjs/six-dialog.cjs.entry.js +1 -1
  19. package/dist/cjs/six-drawer.cjs.entry.js +1 -1
  20. package/dist/cjs/six-dropdown_2.cjs.entry.js +6 -4
  21. package/dist/cjs/six-dropdown_2.cjs.entry.js.map +1 -1
  22. package/dist/cjs/six-error-page.cjs.entry.js +1 -1
  23. package/dist/cjs/six-error.cjs.entry.js +1 -1
  24. package/dist/cjs/six-file-list-item.cjs.entry.js +1 -1
  25. package/dist/cjs/six-file-list.cjs.entry.js +1 -1
  26. package/dist/cjs/six-file-upload.cjs.entry.js +1 -1
  27. package/dist/cjs/six-footer.cjs.entry.js +1 -1
  28. package/dist/cjs/six-group-label.cjs.entry.js +2 -2
  29. package/dist/cjs/six-header.cjs.entry.js +1 -1
  30. package/dist/cjs/six-icon-button.cjs.entry.js +1 -1
  31. package/dist/cjs/six-icon.cjs.entry.js +1 -1
  32. package/dist/cjs/six-input.cjs.entry.js +2 -2
  33. package/dist/cjs/six-item-picker.cjs.entry.js +1 -1
  34. package/dist/cjs/six-language-switcher.cjs.entry.js +1 -1
  35. package/dist/cjs/six-layout-grid.cjs.entry.js +1 -1
  36. package/dist/cjs/six-main-container.cjs.entry.js +1 -1
  37. package/dist/cjs/six-menu-divider.cjs.entry.js +1 -1
  38. package/dist/cjs/six-menu-label.cjs.entry.js +1 -1
  39. package/dist/cjs/six-picto.cjs.entry.js +1 -1
  40. package/dist/cjs/six-progress-bar.cjs.entry.js +1 -1
  41. package/dist/cjs/six-progress-ring.cjs.entry.js +1 -1
  42. package/dist/cjs/six-radio.cjs.entry.js +1 -1
  43. package/dist/cjs/six-range.cjs.entry.js +2 -2
  44. package/dist/cjs/six-root.cjs.entry.js +2 -21
  45. package/dist/cjs/six-root.cjs.entry.js.map +1 -1
  46. package/dist/cjs/six-search-field.cjs.entry.js +1 -1
  47. package/dist/cjs/six-select.cjs.entry.js +2 -2
  48. package/dist/cjs/six-sidebar-item-group.cjs.entry.js +1 -1
  49. package/dist/cjs/six-sidebar-item.cjs.entry.js +1 -1
  50. package/dist/cjs/six-sidebar.cjs.entry.js +1 -1
  51. package/dist/cjs/six-spinner.cjs.entry.js +1 -1
  52. package/dist/cjs/six-stage-indicator.cjs.entry.js +22 -0
  53. package/dist/cjs/six-stage-indicator.cjs.entry.js.map +1 -0
  54. package/dist/cjs/six-switch.cjs.entry.js +2 -2
  55. package/dist/cjs/six-tab-group.cjs.entry.js +1 -1
  56. package/dist/cjs/six-tab-panel.cjs.entry.js +1 -1
  57. package/dist/cjs/six-tab.cjs.entry.js +1 -1
  58. package/dist/cjs/six-tag.cjs.entry.js +1 -1
  59. package/dist/cjs/six-textarea.cjs.entry.js +2 -2
  60. package/dist/cjs/six-tile.cjs.entry.js +1 -1
  61. package/dist/cjs/six-timepicker.cjs.entry.js +1 -1
  62. package/dist/cjs/six-tooltip.cjs.entry.js +1 -1
  63. package/dist/cjs/ui-library.cjs.js +2 -2
  64. package/dist/collection/collection-manifest.json +3 -4
  65. package/dist/collection/components/six-alert/six-alert.css +4 -0
  66. package/dist/collection/components/six-alert/six-alert.js +56 -11
  67. package/dist/collection/components/six-alert/six-alert.js.map +1 -1
  68. package/dist/collection/components/six-details/six-details.css +0 -4
  69. package/dist/collection/components/six-dropdown/six-dropdown.js +5 -3
  70. package/dist/collection/components/six-dropdown/six-dropdown.js.map +1 -1
  71. package/dist/collection/components/six-root/six-root.js +1 -69
  72. package/dist/collection/components/six-root/six-root.js.map +1 -1
  73. package/dist/collection/components/six-root/test/six-root.spec.js +0 -7
  74. package/dist/collection/components/six-root/test/six-root.spec.js.map +1 -1
  75. package/dist/collection/index.js +1 -0
  76. package/dist/collection/index.js.map +1 -1
  77. package/dist/collection/utils/alert.js +54 -0
  78. package/dist/collection/utils/alert.js.map +1 -0
  79. package/dist/components/index.js +55 -3
  80. package/dist/components/index.js.map +1 -1
  81. package/dist/components/six-alert.js +38 -6
  82. package/dist/components/six-alert.js.map +1 -1
  83. package/dist/components/six-details2.js +1 -1
  84. package/dist/components/six-details2.js.map +1 -1
  85. package/dist/components/six-dropdown2.js +5 -3
  86. package/dist/components/six-dropdown2.js.map +1 -1
  87. package/dist/components/six-root.js +4 -33
  88. package/dist/components/six-root.js.map +1 -1
  89. package/dist/components.json +45 -114
  90. package/dist/esm/{form-control-77fcccd0.js → form-control-d403a9cf.js} +2 -2
  91. package/dist/esm/{form-control-77fcccd0.js.map → form-control-d403a9cf.js.map} +1 -1
  92. package/dist/esm/{index-6c10d50b.js → index-79d4ef67.js} +13 -469
  93. package/dist/esm/index-79d4ef67.js.map +1 -0
  94. package/dist/esm/index.js +56 -0
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/loader.js +3 -3
  97. package/dist/esm/six-alert.entry.js +39 -7
  98. package/dist/esm/six-alert.entry.js.map +1 -1
  99. package/dist/esm/six-avatar.entry.js +1 -1
  100. package/dist/esm/six-badge.entry.js +1 -1
  101. package/dist/esm/six-button.entry.js +1 -1
  102. package/dist/esm/six-card.entry.js +1 -1
  103. package/dist/esm/six-checkbox_2.entry.js +2 -2
  104. package/dist/esm/six-datepicker.entry.js +1 -1
  105. package/dist/esm/six-details.entry.js +2 -2
  106. package/dist/esm/six-details.entry.js.map +1 -1
  107. package/dist/esm/six-dialog.entry.js +1 -1
  108. package/dist/esm/six-drawer.entry.js +1 -1
  109. package/dist/esm/six-dropdown_2.entry.js +6 -4
  110. package/dist/esm/six-dropdown_2.entry.js.map +1 -1
  111. package/dist/esm/six-error-page.entry.js +1 -1
  112. package/dist/esm/six-error.entry.js +1 -1
  113. package/dist/esm/six-file-list-item.entry.js +1 -1
  114. package/dist/esm/six-file-list.entry.js +1 -1
  115. package/dist/esm/six-file-upload.entry.js +1 -1
  116. package/dist/esm/six-footer.entry.js +1 -1
  117. package/dist/esm/six-group-label.entry.js +2 -2
  118. package/dist/esm/six-header.entry.js +1 -1
  119. package/dist/esm/six-icon-button.entry.js +1 -1
  120. package/dist/esm/six-icon.entry.js +1 -1
  121. package/dist/esm/six-input.entry.js +2 -2
  122. package/dist/esm/six-item-picker.entry.js +1 -1
  123. package/dist/esm/six-language-switcher.entry.js +1 -1
  124. package/dist/esm/six-layout-grid.entry.js +1 -1
  125. package/dist/esm/six-main-container.entry.js +1 -1
  126. package/dist/esm/six-menu-divider.entry.js +1 -1
  127. package/dist/esm/six-menu-label.entry.js +1 -1
  128. package/dist/esm/six-picto.entry.js +1 -1
  129. package/dist/esm/six-progress-bar.entry.js +1 -1
  130. package/dist/esm/six-progress-ring.entry.js +1 -1
  131. package/dist/esm/six-radio.entry.js +1 -1
  132. package/dist/esm/six-range.entry.js +2 -2
  133. package/dist/esm/six-root.entry.js +2 -21
  134. package/dist/esm/six-root.entry.js.map +1 -1
  135. package/dist/esm/six-search-field.entry.js +1 -1
  136. package/dist/esm/six-select.entry.js +2 -2
  137. package/dist/esm/six-sidebar-item-group.entry.js +1 -1
  138. package/dist/esm/six-sidebar-item.entry.js +1 -1
  139. package/dist/esm/six-sidebar.entry.js +1 -1
  140. package/dist/esm/six-spinner.entry.js +1 -1
  141. package/dist/esm/six-stage-indicator.entry.js +18 -0
  142. package/dist/esm/six-stage-indicator.entry.js.map +1 -0
  143. package/dist/esm/six-switch.entry.js +2 -2
  144. package/dist/esm/six-tab-group.entry.js +1 -1
  145. package/dist/esm/six-tab-panel.entry.js +1 -1
  146. package/dist/esm/six-tab.entry.js +1 -1
  147. package/dist/esm/six-tag.entry.js +1 -1
  148. package/dist/esm/six-textarea.entry.js +2 -2
  149. package/dist/esm/six-tile.entry.js +1 -1
  150. package/dist/esm/six-timepicker.entry.js +1 -1
  151. package/dist/esm/six-tooltip.entry.js +1 -1
  152. package/dist/esm/ui-library.js +3 -3
  153. package/dist/types/components/six-alert/six-alert.d.ts +13 -6
  154. package/dist/types/components/six-root/six-root.d.ts +0 -13
  155. package/dist/types/components.d.ts +8 -55
  156. package/dist/types/index.d.ts +1 -0
  157. package/dist/types/types.d.ts +1 -0
  158. package/dist/types/utils/alert.d.ts +10 -0
  159. package/dist/ui-library/index.esm.js +1 -1
  160. package/dist/ui-library/index.esm.js.map +1 -1
  161. package/dist/ui-library/{p-8c38a7bd.entry.js → p-0440335d.entry.js} +2 -2
  162. package/dist/ui-library/{p-d702b6ec.entry.js → p-04cc397c.entry.js} +2 -2
  163. package/dist/ui-library/{p-5a5f6869.entry.js → p-0edd3091.entry.js} +2 -2
  164. package/dist/ui-library/{p-4772a9d3.entry.js → p-150b7664.entry.js} +2 -2
  165. package/dist/ui-library/{p-01ae4500.entry.js → p-1f5840b5.entry.js} +2 -2
  166. package/dist/ui-library/{p-bff679fa.entry.js → p-28cc013e.entry.js} +2 -2
  167. package/dist/ui-library/{p-65778e3d.entry.js → p-3424bbc0.entry.js} +2 -2
  168. package/dist/ui-library/{p-2d86ba99.entry.js → p-348c68a8.entry.js} +2 -2
  169. package/dist/ui-library/{p-31a4a74c.entry.js → p-3723ca06.entry.js} +2 -2
  170. package/dist/ui-library/{p-2008636b.entry.js → p-37aeac5e.entry.js} +2 -2
  171. package/dist/ui-library/{p-fe87f64b.entry.js → p-3d7fb086.entry.js} +2 -2
  172. package/dist/ui-library/{p-979eabb5.entry.js → p-457f7373.entry.js} +2 -2
  173. package/dist/ui-library/{p-b8ea574b.entry.js → p-4a667f31.entry.js} +2 -2
  174. package/dist/ui-library/{p-021f6da9.entry.js → p-50dae789.entry.js} +2 -2
  175. package/dist/ui-library/{p-621c2742.entry.js → p-546e33d9.entry.js} +2 -2
  176. package/dist/ui-library/{p-1be990f9.entry.js → p-5db3a705.entry.js} +2 -2
  177. package/dist/ui-library/{p-67496e8c.js → p-61e66671.js} +2 -2
  178. package/dist/ui-library/{p-db9d2fde.entry.js → p-6296779b.entry.js} +2 -2
  179. package/dist/ui-library/{p-e0dd0307.entry.js → p-64b4755d.entry.js} +2 -2
  180. package/dist/ui-library/p-6c1b046e.entry.js +2 -0
  181. package/dist/ui-library/p-6c1b046e.entry.js.map +1 -0
  182. package/dist/ui-library/{p-4b154936.entry.js → p-7115316e.entry.js} +2 -2
  183. package/dist/ui-library/{p-2132da0a.entry.js → p-870b988d.entry.js} +2 -2
  184. package/dist/ui-library/{p-831517cd.entry.js → p-884c5cf9.entry.js} +2 -2
  185. package/dist/ui-library/{p-2cd674e0.entry.js → p-8888a367.entry.js} +2 -2
  186. package/dist/ui-library/{p-87e197ee.entry.js → p-935c78a7.entry.js} +2 -2
  187. package/dist/ui-library/{p-4a3ba956.entry.js → p-961bd001.entry.js} +2 -2
  188. package/dist/ui-library/{p-98ce9502.entry.js → p-9b08068d.entry.js} +2 -2
  189. package/dist/ui-library/{p-a036cc6f.entry.js → p-9c79341d.entry.js} +2 -2
  190. package/dist/ui-library/{p-adf5a4da.entry.js → p-a9c159f2.entry.js} +2 -2
  191. package/dist/ui-library/{p-88767c27.entry.js → p-ac57ba5c.entry.js} +2 -2
  192. package/dist/ui-library/p-af15381b.js +3 -0
  193. package/dist/ui-library/p-af15381b.js.map +1 -0
  194. package/dist/ui-library/{p-ace4ec84.entry.js → p-b1a5f3cd.entry.js} +2 -2
  195. package/dist/ui-library/{p-78529c8c.entry.js → p-b385a241.entry.js} +2 -2
  196. package/dist/ui-library/p-b74c5d6b.entry.js +2 -0
  197. package/dist/ui-library/p-b74c5d6b.entry.js.map +1 -0
  198. package/dist/ui-library/p-bf2fb53f.entry.js +2 -0
  199. package/dist/ui-library/p-bf2fb53f.entry.js.map +1 -0
  200. package/dist/ui-library/{p-fce214eb.entry.js → p-c2c7370b.entry.js} +2 -2
  201. package/dist/ui-library/{p-1b135e1c.entry.js → p-caea1eb6.entry.js} +2 -2
  202. package/dist/ui-library/{p-d221d86a.entry.js → p-d3f5b9a8.entry.js} +2 -2
  203. package/dist/ui-library/{p-4752a63c.entry.js → p-d42b18eb.entry.js} +2 -2
  204. package/dist/ui-library/{p-a29f6a0e.entry.js → p-d769cc36.entry.js} +2 -2
  205. package/dist/ui-library/{p-e340a0ad.entry.js → p-d95e292e.entry.js} +2 -2
  206. package/dist/ui-library/p-da7f3dbd.entry.js +2 -0
  207. package/dist/ui-library/p-da7f3dbd.entry.js.map +1 -0
  208. package/dist/ui-library/{p-a3fd8c74.entry.js → p-dfb89b6a.entry.js} +2 -2
  209. package/dist/ui-library/{p-1aa28025.entry.js → p-e6032375.entry.js} +2 -2
  210. package/dist/ui-library/{p-943ce0f2.entry.js → p-e60d2324.entry.js} +2 -2
  211. package/dist/ui-library/{p-0274c52c.entry.js → p-e8298c6e.entry.js} +2 -2
  212. package/dist/ui-library/{p-1431a2a8.entry.js → p-ed279165.entry.js} +2 -2
  213. package/dist/ui-library/{p-66cd3b0c.entry.js → p-ed61b75c.entry.js} +2 -2
  214. package/dist/ui-library/{p-391f10f1.entry.js → p-ee872c04.entry.js} +2 -2
  215. package/dist/ui-library/{p-3dd28dc0.entry.js → p-f1ab3384.entry.js} +2 -2
  216. package/dist/ui-library/p-f4ef481c.entry.js +2 -0
  217. package/dist/ui-library/p-f4ef481c.entry.js.map +1 -0
  218. package/dist/ui-library/{p-0cb135aa.entry.js → p-f8cbb8da.entry.js} +2 -2
  219. package/dist/ui-library/ui-library.css +1 -1
  220. package/dist/ui-library/ui-library.esm.js +1 -1
  221. package/dist/ui-library/ui-library.esm.js.map +1 -1
  222. package/package.json +1 -1
  223. package/dist/cjs/index-5dd19c4b.js.map +0 -1
  224. package/dist/cjs/set-attributes_2.cjs.entry.js +0 -73
  225. package/dist/cjs/set-attributes_2.cjs.entry.js.map +0 -1
  226. package/dist/collection/wrappers/set-attributes/set-attributes.js +0 -74
  227. package/dist/collection/wrappers/set-attributes/set-attributes.js.map +0 -1
  228. package/dist/collection/wrappers/set-attributes/test/set-attributes.spec.js +0 -16
  229. package/dist/collection/wrappers/set-attributes/test/set-attributes.spec.js.map +0 -1
  230. package/dist/components/set-attributes.d.ts +0 -11
  231. package/dist/components/set-attributes.js +0 -8
  232. package/dist/components/set-attributes.js.map +0 -1
  233. package/dist/components/set-attributes2.js +0 -73
  234. package/dist/components/set-attributes2.js.map +0 -1
  235. package/dist/esm/index-6c10d50b.js.map +0 -1
  236. package/dist/esm/set-attributes_2.entry.js +0 -68
  237. package/dist/esm/set-attributes_2.entry.js.map +0 -1
  238. package/dist/types/wrappers/set-attributes/set-attributes.d.ts +0 -9
  239. package/dist/ui-library/p-3783aed0.entry.js +0 -2
  240. package/dist/ui-library/p-3783aed0.entry.js.map +0 -1
  241. package/dist/ui-library/p-3f0f59b6.entry.js +0 -2
  242. package/dist/ui-library/p-3f0f59b6.entry.js.map +0 -1
  243. package/dist/ui-library/p-46ee280d.entry.js +0 -2
  244. package/dist/ui-library/p-46ee280d.entry.js.map +0 -1
  245. package/dist/ui-library/p-a919b557.entry.js +0 -2
  246. package/dist/ui-library/p-a919b557.entry.js.map +0 -1
  247. package/dist/ui-library/p-b5f844f7.entry.js +0 -2
  248. package/dist/ui-library/p-b5f844f7.entry.js.map +0 -1
  249. package/dist/ui-library/p-ca63a6fa.js +0 -3
  250. package/dist/ui-library/p-ca63a6fa.js.map +0 -1
  251. /package/dist/ui-library/{p-8c38a7bd.entry.js.map → p-0440335d.entry.js.map} +0 -0
  252. /package/dist/ui-library/{p-d702b6ec.entry.js.map → p-04cc397c.entry.js.map} +0 -0
  253. /package/dist/ui-library/{p-5a5f6869.entry.js.map → p-0edd3091.entry.js.map} +0 -0
  254. /package/dist/ui-library/{p-4772a9d3.entry.js.map → p-150b7664.entry.js.map} +0 -0
  255. /package/dist/ui-library/{p-01ae4500.entry.js.map → p-1f5840b5.entry.js.map} +0 -0
  256. /package/dist/ui-library/{p-bff679fa.entry.js.map → p-28cc013e.entry.js.map} +0 -0
  257. /package/dist/ui-library/{p-65778e3d.entry.js.map → p-3424bbc0.entry.js.map} +0 -0
  258. /package/dist/ui-library/{p-2d86ba99.entry.js.map → p-348c68a8.entry.js.map} +0 -0
  259. /package/dist/ui-library/{p-31a4a74c.entry.js.map → p-3723ca06.entry.js.map} +0 -0
  260. /package/dist/ui-library/{p-2008636b.entry.js.map → p-37aeac5e.entry.js.map} +0 -0
  261. /package/dist/ui-library/{p-fe87f64b.entry.js.map → p-3d7fb086.entry.js.map} +0 -0
  262. /package/dist/ui-library/{p-979eabb5.entry.js.map → p-457f7373.entry.js.map} +0 -0
  263. /package/dist/ui-library/{p-b8ea574b.entry.js.map → p-4a667f31.entry.js.map} +0 -0
  264. /package/dist/ui-library/{p-021f6da9.entry.js.map → p-50dae789.entry.js.map} +0 -0
  265. /package/dist/ui-library/{p-621c2742.entry.js.map → p-546e33d9.entry.js.map} +0 -0
  266. /package/dist/ui-library/{p-1be990f9.entry.js.map → p-5db3a705.entry.js.map} +0 -0
  267. /package/dist/ui-library/{p-67496e8c.js.map → p-61e66671.js.map} +0 -0
  268. /package/dist/ui-library/{p-db9d2fde.entry.js.map → p-6296779b.entry.js.map} +0 -0
  269. /package/dist/ui-library/{p-e0dd0307.entry.js.map → p-64b4755d.entry.js.map} +0 -0
  270. /package/dist/ui-library/{p-4b154936.entry.js.map → p-7115316e.entry.js.map} +0 -0
  271. /package/dist/ui-library/{p-2132da0a.entry.js.map → p-870b988d.entry.js.map} +0 -0
  272. /package/dist/ui-library/{p-831517cd.entry.js.map → p-884c5cf9.entry.js.map} +0 -0
  273. /package/dist/ui-library/{p-2cd674e0.entry.js.map → p-8888a367.entry.js.map} +0 -0
  274. /package/dist/ui-library/{p-87e197ee.entry.js.map → p-935c78a7.entry.js.map} +0 -0
  275. /package/dist/ui-library/{p-4a3ba956.entry.js.map → p-961bd001.entry.js.map} +0 -0
  276. /package/dist/ui-library/{p-98ce9502.entry.js.map → p-9b08068d.entry.js.map} +0 -0
  277. /package/dist/ui-library/{p-a036cc6f.entry.js.map → p-9c79341d.entry.js.map} +0 -0
  278. /package/dist/ui-library/{p-adf5a4da.entry.js.map → p-a9c159f2.entry.js.map} +0 -0
  279. /package/dist/ui-library/{p-88767c27.entry.js.map → p-ac57ba5c.entry.js.map} +0 -0
  280. /package/dist/ui-library/{p-ace4ec84.entry.js.map → p-b1a5f3cd.entry.js.map} +0 -0
  281. /package/dist/ui-library/{p-78529c8c.entry.js.map → p-b385a241.entry.js.map} +0 -0
  282. /package/dist/ui-library/{p-fce214eb.entry.js.map → p-c2c7370b.entry.js.map} +0 -0
  283. /package/dist/ui-library/{p-1b135e1c.entry.js.map → p-caea1eb6.entry.js.map} +0 -0
  284. /package/dist/ui-library/{p-d221d86a.entry.js.map → p-d3f5b9a8.entry.js.map} +0 -0
  285. /package/dist/ui-library/{p-4752a63c.entry.js.map → p-d42b18eb.entry.js.map} +0 -0
  286. /package/dist/ui-library/{p-a29f6a0e.entry.js.map → p-d769cc36.entry.js.map} +0 -0
  287. /package/dist/ui-library/{p-e340a0ad.entry.js.map → p-d95e292e.entry.js.map} +0 -0
  288. /package/dist/ui-library/{p-a3fd8c74.entry.js.map → p-dfb89b6a.entry.js.map} +0 -0
  289. /package/dist/ui-library/{p-1aa28025.entry.js.map → p-e6032375.entry.js.map} +0 -0
  290. /package/dist/ui-library/{p-943ce0f2.entry.js.map → p-e60d2324.entry.js.map} +0 -0
  291. /package/dist/ui-library/{p-0274c52c.entry.js.map → p-e8298c6e.entry.js.map} +0 -0
  292. /package/dist/ui-library/{p-1431a2a8.entry.js.map → p-ed279165.entry.js.map} +0 -0
  293. /package/dist/ui-library/{p-66cd3b0c.entry.js.map → p-ed61b75c.entry.js.map} +0 -0
  294. /package/dist/ui-library/{p-391f10f1.entry.js.map → p-ee872c04.entry.js.map} +0 -0
  295. /package/dist/ui-library/{p-3dd28dc0.entry.js.map → p-f1ab3384.entry.js.map} +0 -0
  296. /package/dist/ui-library/{p-0cb135aa.entry.js.map → p-f8cbb8da.entry.js.map} +0 -0
@@ -1,4 +1,5 @@
1
1
  import { h } from "@stencil/core";
2
+ import { getSlot } from "../../utils/slot";
2
3
  const toastStack = Object.assign(document.createElement('div'), { className: 'six-toast-stack' });
3
4
  /**
4
5
  * @since 1.0
@@ -19,8 +20,11 @@ export class SixAlert {
19
20
  this.handleCloseClick = () => {
20
21
  this.hide();
21
22
  };
22
- this.handleMouseMove = () => {
23
- this.restartAutoHide();
23
+ this.handleMouseEnter = () => {
24
+ this.pauseAutoHide();
25
+ };
26
+ this.handleMouseLeave = () => {
27
+ this.resetAutoHide();
24
28
  };
25
29
  this.handleTransitionEnd = (event) => {
26
30
  const target = event.target;
@@ -84,13 +88,33 @@ export class SixAlert {
84
88
  * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when
85
89
  * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by
86
90
  * calling this method again. The returned promise will resolve after the alert is hidden.
91
+ * @param adjustPosition If true, the top and right position of the toast stack is shifted according to the
92
+ * six-root header's height and the presence of a vertical scrollbar.
87
93
  */
88
- async toast() {
94
+ async toast(adjustPosition = true) {
89
95
  return new Promise((resolve) => {
96
+ var _a;
90
97
  if (!toastStack.parentElement) {
91
98
  document.body.append(toastStack);
92
99
  }
93
100
  toastStack.append(this.host);
101
+ if (adjustPosition) {
102
+ const sixRoot = document.querySelector('six-root');
103
+ const headerSlot = getSlot(sixRoot, 'header');
104
+ const mainSlot = (_a = sixRoot === null || sixRoot === void 0 ? void 0 : sixRoot.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('host main');
105
+ if (mainSlot != null && mainSlot instanceof HTMLElement) {
106
+ const scrollbarWidth = mainSlot.offsetWidth - mainSlot.clientWidth;
107
+ toastStack.style.right = `${scrollbarWidth}px`;
108
+ }
109
+ if (headerSlot != null) {
110
+ const rect = headerSlot === null || headerSlot === void 0 ? void 0 : headerSlot.getBoundingClientRect();
111
+ toastStack.style.top = `${rect.top + rect.height}px`;
112
+ }
113
+ }
114
+ else {
115
+ toastStack.style.top = '0';
116
+ toastStack.style.right = '0';
117
+ }
94
118
  requestAnimationFrame(() => this.show());
95
119
  this.host.addEventListener('six-alert-after-hide', () => {
96
120
  this.host.remove();
@@ -102,13 +126,20 @@ export class SixAlert {
102
126
  }, { once: true });
103
127
  });
104
128
  }
105
- restartAutoHide() {
129
+ pauseAutoHide() {
106
130
  clearTimeout(this.autoHideTimeout);
131
+ }
132
+ resetAutoHide() {
107
133
  if (this.open && this.duration < Infinity) {
108
134
  this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);
109
135
  }
110
136
  }
137
+ restartAutoHide() {
138
+ this.pauseAutoHide();
139
+ this.resetAutoHide();
140
+ }
111
141
  render() {
142
+ const asToast = this.host.closest('.six-toast-stack') != null;
112
143
  return (h("div", { part: "base", class: {
113
144
  alert: true,
114
145
  'alert--open': this.open,
@@ -119,7 +150,8 @@ export class SixAlert {
119
150
  'alert--info': this.type === 'info',
120
151
  'alert--warning': this.type === 'warning',
121
152
  'alert--danger': this.type === 'danger',
122
- }, role: "alert", "aria-live": "assertive", "aria-atomic": "true", "aria-hidden": this.open ? 'false' : 'true', onMouseMove: this.handleMouseMove, onTransitionEnd: this.handleTransitionEnd }, h("span", { part: "icon", class: "alert__icon" }, h("slot", { name: "icon" })), h("span", { part: "message", class: "alert__message" }, h("slot", null)), this.closable && (h("span", { class: "alert__close" }, h("six-icon-button", { name: "clear", exportparts: "base:close-button", onClick: this.handleCloseClick })))));
153
+ 'alert--shadow': asToast,
154
+ }, role: "alert", "aria-live": "assertive", "aria-atomic": "true", "aria-hidden": this.open ? 'false' : 'true', onTransitionEnd: this.handleTransitionEnd, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("span", { part: "icon", class: "alert__icon" }, h("slot", { name: "icon" })), h("span", { part: "message", class: "alert__message" }, h("slot", null)), this.closable && (h("span", { class: "alert__close" }, h("six-icon-button", { name: "clear", exportparts: "base:close-button", onClick: this.handleCloseClick })))));
123
155
  }
124
156
  static get is() { return "six-alert"; }
125
157
  static get encapsulation() { return "shadow"; }
@@ -175,9 +207,15 @@ export class SixAlert {
175
207
  "type": "string",
176
208
  "mutable": false,
177
209
  "complexType": {
178
- "original": "'primary' | 'success' | 'info' | 'warning' | 'danger'",
210
+ "original": "AlertType",
179
211
  "resolved": "\"danger\" | \"info\" | \"primary\" | \"success\" | \"warning\"",
180
- "references": {}
212
+ "references": {
213
+ "AlertType": {
214
+ "location": "local",
215
+ "path": "/home/runner/work/six-webcomponents/six-webcomponents/libraries/ui-library/src/components/six-alert/six-alert.tsx",
216
+ "id": "src/components/six-alert/six-alert.tsx::AlertType"
217
+ }
218
+ }
181
219
  },
182
220
  "required": false,
183
221
  "optional": false,
@@ -201,7 +239,7 @@ export class SixAlert {
201
239
  "optional": false,
202
240
  "docs": {
203
241
  "tags": [],
204
- "text": "The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with the\nalert before it closes (e.g. moves the mouse over it), the timer will restart."
242
+ "text": "The length of time, in milliseconds, the alert will show before closing itself.\nIf the user hovers over the toast alert, the timer will pause.\nOn leaving the element with the mouse, the timer resets."
205
243
  },
206
244
  "attribute": "duration",
207
245
  "reflect": false,
@@ -339,8 +377,12 @@ export class SixAlert {
339
377
  },
340
378
  "toast": {
341
379
  "complexType": {
342
- "signature": "() => Promise<void>",
343
- "parameters": [],
380
+ "signature": "(adjustPosition?: boolean) => Promise<void>",
381
+ "parameters": [{
382
+ "name": "adjustPosition",
383
+ "type": "boolean",
384
+ "docs": "If true, the top and right position of the toast stack is shifted according to the\nsix-root header's height and the presence of a vertical scrollbar."
385
+ }],
344
386
  "references": {
345
387
  "Promise": {
346
388
  "location": "global",
@@ -351,7 +393,10 @@ export class SixAlert {
351
393
  },
352
394
  "docs": {
353
395
  "text": "Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\ndismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\ncalling this method again. The returned promise will resolve after the alert is hidden.",
354
- "tags": []
396
+ "tags": [{
397
+ "name": "param",
398
+ "text": "adjustPosition If true, the top and right position of the toast stack is shifted according to the\nsix-root header's height and the presence of a vertical scrollbar."
399
+ }]
355
400
  }
356
401
  }
357
402
  };
@@ -1 +1 @@
1
- {"version":3,"file":"six-alert.js","sourceRoot":"","sources":["../../../src/components/six-alert/six-alert.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { EmptyPayload } from '../../utils/types';\n\nconst toastStack = Object.assign(document.createElement('div'), { className: 'six-toast-stack' });\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot - The alert's content.\n * @slot icon - An icon to show in the alert.\n *\n * @part base - The component's base wrapper.\n * @part icon - The container that wraps the alert icon.\n * @part message - The alert message.\n * @part close-button - The close button.\n */\n\n@Component({\n tag: 'six-alert',\n styleUrl: 'six-alert.scss',\n shadow: true,\n})\nexport class SixAlert {\n private autoHideTimeout?: number;\n\n @Element() host!: HTMLSixAlertElement;\n\n @State() isVisible = false;\n\n /** Indicates whether or not the alert is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** Set to true to make the alert closable. */\n @Prop({ reflect: true }) closable = false;\n\n /** The type of alert. */\n @Prop({ reflect: true }) type: 'primary' | 'success' | 'info' | 'warning' | 'danger' = 'primary';\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with the\n * alert before it closes (e.g. moves the mouse over it), the timer will restart.\n */\n @Prop() duration = Infinity;\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n @Watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /** Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event({ eventName: 'six-alert-show' }) sixShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the alert opens and all transitions are complete. */\n @Event({ eventName: 'six-alert-after-show' }) sixAfterShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event({ eventName: 'six-alert-hide' }) sixHide!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the alert closes and all transitions are complete. */\n @Event({ eventName: 'six-alert-after-hide' }) sixAfterHide!: EventEmitter<EmptyPayload>;\n\n componentWillLoad() {\n // Show on init if open\n if (this.open) {\n this.show();\n }\n }\n\n /** Shows the alert. */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible) {\n return;\n }\n\n const sixShow = this.sixShow.emit();\n if (sixShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.isVisible = true;\n this.open = true;\n\n if (this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);\n }\n }\n\n /** Hides the alert */\n @Method()\n async hide() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible) {\n return;\n }\n\n const sixHide = this.sixHide.emit();\n if (sixHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n clearTimeout(this.autoHideTimeout);\n this.isVisible = false;\n this.open = false;\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n */\n @Method()\n async toast() {\n return new Promise<void>((resolve) => {\n if (!toastStack.parentElement) {\n document.body.append(toastStack);\n }\n\n toastStack.append(this.host);\n requestAnimationFrame(() => this.show());\n\n this.host.addEventListener(\n 'six-alert-after-hide',\n () => {\n this.host.remove();\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (toastStack.querySelector('six-alert') === null) {\n toastStack.remove();\n }\n },\n { once: true }\n );\n });\n }\n\n private handleCloseClick = () => {\n this.hide();\n };\n\n private handleMouseMove = () => {\n this.restartAutoHide();\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n const target = event.target as HTMLElement;\n\n // Ensure we only emit one event when the target element is no longer visible\n if (event.propertyName === 'opacity' && target.classList.contains('alert')) {\n this.isVisible = this.open;\n this.open ? this.sixAfterShow.emit() : this.sixAfterHide.emit();\n }\n };\n\n private restartAutoHide() {\n clearTimeout(this.autoHideTimeout);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);\n }\n }\n\n render() {\n return (\n <div\n part=\"base\"\n class={{\n alert: true,\n 'alert--open': this.open,\n 'alert--visible': this.isVisible,\n 'alert--closable': this.closable,\n 'alert--primary': this.type === 'primary',\n 'alert--success': this.type === 'success',\n 'alert--info': this.type === 'info',\n 'alert--warning': this.type === 'warning',\n 'alert--danger': this.type === 'danger',\n }}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n onMouseMove={this.handleMouseMove}\n onTransitionEnd={this.handleTransitionEnd}\n >\n <span part=\"icon\" class=\"alert__icon\">\n <slot name=\"icon\" />\n </span>\n\n <span part=\"message\" class=\"alert__message\">\n <slot />\n </span>\n\n {this.closable && (\n <span class=\"alert__close\">\n <six-icon-button\n name=\"clear\"\n exportparts=\"base:close-button\"\n onClick={this.handleCloseClick}\n ></six-icon-button>\n </span>\n )}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-alert.js","sourceRoot":"","sources":["../../../src/components/six-alert/six-alert.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { EmptyPayload } from '../../utils/types';\nimport { getSlot } from '../../utils/slot';\n\nconst toastStack = Object.assign(document.createElement('div'), { className: 'six-toast-stack' });\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot - The alert's content.\n * @slot icon - An icon to show in the alert.\n *\n * @part base - The component's base wrapper.\n * @part icon - The container that wraps the alert icon.\n * @part message - The alert message.\n * @part close-button - The close button.\n */\n\n@Component({\n tag: 'six-alert',\n styleUrl: 'six-alert.scss',\n shadow: true,\n})\nexport class SixAlert {\n private autoHideTimeout?: number;\n\n @Element() host!: HTMLSixAlertElement;\n\n @State() isVisible = false;\n\n /** Indicates whether or not the alert is open. You can use this in lieu of the show/hide methods. */\n @Prop({ mutable: true, reflect: true }) open = false;\n\n /** Set to true to make the alert closable. */\n @Prop({ reflect: true }) closable = false;\n\n /** The type of alert. */\n @Prop({ reflect: true }) type: AlertType = 'primary';\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself.\n * If the user hovers over the toast alert, the timer will pause.\n * On leaving the element with the mouse, the timer resets.\n */\n @Prop() duration = Infinity;\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n\n @Watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /** Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event({ eventName: 'six-alert-show' }) sixShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the alert opens and all transitions are complete. */\n @Event({ eventName: 'six-alert-after-show' }) sixAfterShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event({ eventName: 'six-alert-hide' }) sixHide!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the alert closes and all transitions are complete. */\n @Event({ eventName: 'six-alert-after-hide' }) sixAfterHide!: EventEmitter<EmptyPayload>;\n\n componentWillLoad() {\n // Show on init if open\n if (this.open) {\n this.show();\n }\n }\n\n /** Shows the alert. */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible) {\n return;\n }\n\n const sixShow = this.sixShow.emit();\n if (sixShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.isVisible = true;\n this.open = true;\n\n if (this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);\n }\n }\n\n /** Hides the alert */\n @Method()\n async hide() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible) {\n return;\n }\n\n const sixHide = this.sixHide.emit();\n if (sixHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n clearTimeout(this.autoHideTimeout);\n this.isVisible = false;\n this.open = false;\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n * @param adjustPosition If true, the top and right position of the toast stack is shifted according to the\n * six-root header's height and the presence of a vertical scrollbar.\n */\n @Method()\n async toast(adjustPosition = true) {\n return new Promise<void>((resolve) => {\n if (!toastStack.parentElement) {\n document.body.append(toastStack);\n }\n toastStack.append(this.host);\n\n if (adjustPosition) {\n const sixRoot = document.querySelector('six-root');\n const headerSlot = getSlot(sixRoot, 'header');\n const mainSlot = sixRoot?.shadowRoot?.querySelector('host main');\n if (mainSlot != null && mainSlot instanceof HTMLElement) {\n const scrollbarWidth = mainSlot.offsetWidth - mainSlot.clientWidth;\n toastStack.style.right = `${scrollbarWidth}px`;\n }\n if (headerSlot != null) {\n const rect = headerSlot?.getBoundingClientRect();\n toastStack.style.top = `${rect.top + rect.height}px`;\n }\n } else {\n toastStack.style.top = '0';\n toastStack.style.right = '0';\n }\n\n requestAnimationFrame(() => this.show());\n\n this.host.addEventListener(\n 'six-alert-after-hide',\n () => {\n this.host.remove();\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (toastStack.querySelector('six-alert') === null) {\n toastStack.remove();\n }\n },\n { once: true }\n );\n });\n }\n\n private pauseAutoHide() {\n clearTimeout(this.autoHideTimeout);\n }\n\n private resetAutoHide() {\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);\n }\n }\n\n private restartAutoHide() {\n this.pauseAutoHide();\n this.resetAutoHide();\n }\n\n private handleCloseClick = () => {\n this.hide();\n };\n\n private handleMouseEnter = () => {\n this.pauseAutoHide();\n };\n\n private handleMouseLeave = () => {\n this.resetAutoHide();\n };\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n const target = event.target as HTMLElement;\n\n // Ensure we only emit one event when the target element is no longer visible\n if (event.propertyName === 'opacity' && target.classList.contains('alert')) {\n this.isVisible = this.open;\n this.open ? this.sixAfterShow.emit() : this.sixAfterHide.emit();\n }\n };\n\n render() {\n const asToast = this.host.closest('.six-toast-stack') != null;\n\n return (\n <div\n part=\"base\"\n class={{\n alert: true,\n 'alert--open': this.open,\n 'alert--visible': this.isVisible,\n 'alert--closable': this.closable,\n 'alert--primary': this.type === 'primary',\n 'alert--success': this.type === 'success',\n 'alert--info': this.type === 'info',\n 'alert--warning': this.type === 'warning',\n 'alert--danger': this.type === 'danger',\n 'alert--shadow': asToast,\n }}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n aria-hidden={this.open ? 'false' : 'true'}\n onTransitionEnd={this.handleTransitionEnd}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <span part=\"icon\" class=\"alert__icon\">\n <slot name=\"icon\" />\n </span>\n\n <span part=\"message\" class=\"alert__message\">\n <slot />\n </span>\n\n {this.closable && (\n <span class=\"alert__close\">\n <six-icon-button\n name=\"clear\"\n exportparts=\"base:close-button\"\n onClick={this.handleCloseClick}\n ></six-icon-button>\n </span>\n )}\n </div>\n );\n }\n}\n\nexport type AlertType = 'primary' | 'success' | 'info' | 'warning' | 'danger';\n"]}
@@ -98,10 +98,6 @@
98
98
  transform: rotate(-180deg);
99
99
  }
100
100
 
101
- .details--open:hover {
102
- color: var(--six-input-color-focus);
103
- }
104
-
105
101
  .details__body {
106
102
  height: 0;
107
103
  overflow: hidden;
@@ -25,7 +25,7 @@ export class SixDropdown {
25
25
  this.resizeObserver = new ResizeObserver(debounce(() => this.updatePanelPosition(), 100));
26
26
  this.eventListeners = new EventListeners();
27
27
  this.getMenuItems = () => {
28
- var _a, _b, _c;
28
+ var _a, _b, _c, _d;
29
29
  if (this.options.length > 0) {
30
30
  return {
31
31
  sixMenuItems: this.renderedOptions.map((option) => (h("six-menu-item", { value: option.value }, option.label))),
@@ -39,8 +39,10 @@ export class SixDropdown {
39
39
  const selectionContainer = (_a = this.panelSlot) === null || _a === void 0 ? void 0 : _a.assignedElements({ flatten: true }).filter(isSelectionContainer).at(0);
40
40
  const sixMenuElement = (_b = this.panelSlot) === null || _b === void 0 ? void 0 : _b.assignedElements({ flatten: true }).filter(isSixMenu).at(0);
41
41
  const selectionContainerItems = (selectionContainer === null || selectionContainer === void 0 ? void 0 : selectionContainer.querySelectorAll('six-menu-item')) || [];
42
- const sixMenuItems = (((_c = sixMenuElement === null || sixMenuElement === void 0 ? void 0 : sixMenuElement.querySelector('slot')) === null || _c === void 0 ? void 0 : _c.assignedElements().filter(isSixMenuItem)) ||
43
- []);
42
+ let sixMenuItems = ((_c = sixMenuElement === null || sixMenuElement === void 0 ? void 0 : sixMenuElement.querySelector('slot')) === null || _c === void 0 ? void 0 : _c.assignedElements().filter((el) => isSixMenuItem(el))) || [];
43
+ if (sixMenuItems.length === 0) {
44
+ sixMenuItems = Array.from(((_d = sixMenuElement === null || sixMenuElement === void 0 ? void 0 : sixMenuElement.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelectorAll('six-menu-item')) || []);
45
+ }
44
46
  if (selectionContainerItems.length > 0 || sixMenuItems.length > 0) {
45
47
  return { sixMenuItems, selectionContainerItems: [...selectionContainerItems] };
46
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"six-dropdown.js","sourceRoot":"","sources":["../../../src/components/six-dropdown/six-dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { getNearestTabbableElement } from '../../utils/tabbable';\nimport Popover from '../../utils/popover';\nimport { EventListeners } from '../../utils/event-listeners';\nimport { debounce, DEFAULT_DEBOUNCE_FAST } from '../../utils/execution-control';\nimport { EmptyPayload } from '../../utils/types';\nimport { SixMenuItemData } from '../six-menu/six-menu';\n\nexport interface SixDropdownAutoFilterPayload {\n filterValue: string;\n}\n\nexport interface SixDropdownAsyncFilterPayload {\n filterValue: string;\n}\n\nexport interface SixDropdownScrollPayload {\n scrollHeight: number;\n scrollTop: number;\n scrollbarHeight: number;\n scrollRatio: number;\n}\n\nlet id = 0;\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot trigger - The dropdown's trigger, usually a `<six-button>` element.\n * @slot dropdown-footer - The dropdown's footer area.\n * @slot - The dropdown's content.\n *\n * @part base - The component's base wrapper.\n * @part trigger - The container that wraps the trigger.\n * @part panel - The panel that gets shown when the dropdown is open.\n */\n\n@Component({\n tag: 'six-dropdown',\n styleUrl: 'six-dropdown.scss',\n shadow: true,\n})\nexport class SixDropdown {\n private componentId = `dropdown-${++id}`;\n private isVisible = false;\n private panel?: HTMLElement;\n private scrollPanel?: HTMLElement;\n private panelSlot?: HTMLSlotElement;\n private positioner?: HTMLElement;\n private popover?: Popover;\n private trigger?: HTMLElement;\n private triggerSlot?: HTMLSlotElement;\n private resizeObserver = new ResizeObserver(debounce(() => this.updatePanelPosition(), 100));\n\n // the input element shown in the dropdown when filter is set to true\n private filterInputElement?: HTMLSixInputElement;\n\n @Element() host!: HTMLSixDropdownElement;\n\n /** Indicates whether 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 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 /** Determines whether the dropdown should hide when a menu item is selected. */\n // eslint-disable-next-line @stencil-community/ban-default-true\n @Prop() closeOnSelect = true;\n\n /** The distance in pixels from which to offset the panel away from its trigger. */\n @Prop() distance = 4;\n\n /** The distance in pixels from which to offset the panel along its trigger. */\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 /** The dropdown will close when the user interacts outside of this element (e.g. clicking). */\n @Prop() containingElement?: HTMLElement;\n\n /**\n * Set to true to allow auto filtering for entries in the dropdown.\n * With this flag the dropdown will automatically filter itsel.\n * If you need to coordinate the shown elements yourself,\n * e.g. because you need to call an endpoint use asyncFilter instead\n */\n @Prop() filter = false;\n\n /**\n * Set to true to allow async filtering.\n * When you enter something in the search field the component will only emit an event but not filter any elements itself.\n * You can then simply listen to the 'six-async-filter-fired' event to manage the shown menu-items yourself\n */\n @Prop() asyncFilter = false;\n\n /** The filter's placeholder text. */\n @Prop() filterPlaceholder = 'Filter...';\n\n /** By default the search field will be focused when opening a dropdown with filtering enabled. */\n // eslint-disable-next-line @stencil-community/ban-default-true\n @Prop() autofocusFilter = true;\n\n get filterEnabled() {\n return this.filter || this.asyncFilter;\n }\n\n /** The debounce for the filter callbacks. */\n @Prop({ mutable: true }) filterDebounce = 0;\n\n /** The panel can be opend/closed by pressing the spacebar or the enter key. In some cases you might want to avoid this */\n @Prop() disableHideOnEnterAndSpace = false;\n\n /** Set the options to be shown in the dropdown (alternative to setting the elements via html)*/\n @Prop({ mutable: true }) options: SixMenuItemData[] = [];\n\n /** Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)\n * are actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot. */\n @Prop() virtualScroll = false;\n\n /**\n * Determines if the dropdown panel's width should match the width of the trigger element.\n *\n * If set to `true`, the panel will resize its width to align with the trigger's width.\n * If `false` or omitted, the panel will maintain its default width.\n */\n @Prop() matchTriggerWidth = false;\n\n get container() {\n return this.containingElement || this.host;\n }\n\n /** Emitted when the dropdown opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event({ eventName: 'six-dropdown-show' }) sixShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the dropdown opens and all transitions are complete. */\n @Event({ eventName: 'six-dropdown-after-show' }) sixAfterShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the dropdown closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event({ eventName: 'six-dropdown-hide' }) sixHide!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the dropdown closes and all transitions are complete. */\n @Event({ eventName: 'six-dropdown-after-hide' }) sixAfterHide!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the auto filter is triggered */\n @Event({ eventName: 'six-dropdown-auto-filter-fired' }) sixAutoFilter!: EventEmitter<SixDropdownAutoFilterPayload>;\n\n /** Emitted when the async filter is triggered */\n @Event({ eventName: 'six-async-filter-fired' }) sixAsyncFilterFired!: EventEmitter<SixDropdownAsyncFilterPayload>;\n\n /** Emitted when the user scrolls inside dropdown panel.*/\n @Event({ eventName: 'six-dropdown-scroll' }) sixScroll!: EventEmitter<SixDropdownScrollPayload>;\n\n private eventListeners = new EventListeners();\n\n // internal representation of options, so we don't have to make options mutable\n @State() renderedOptions: SixMenuItemData[] = [];\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n this.updateAccessibleTrigger();\n }\n\n @Watch('distance')\n @Watch('hoist')\n @Watch('placement')\n @Watch('skidding')\n handlePopoverOptionsChange() {\n if (this.popover == null) return;\n\n this.popover.setOptions({\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n });\n }\n\n @Watch('options')\n @Watch('virtualScroll')\n handleOptionsChange() {\n this.validateOptions();\n }\n\n private validateOptions() {\n if (!Array.isArray(this.options)) {\n this.options = [];\n }\n if (this.virtualScroll && this.options.length === 0) {\n console.error('Options must be defined when using virtual scrolling');\n }\n this.renderedOptions = [...this.options];\n }\n\n componentWillLoad() {\n this.validateOptions();\n if (this.asyncFilter) {\n this.filterDebounce = DEFAULT_DEBOUNCE_FAST;\n }\n }\n\n componentDidLoad() {\n this.init();\n if (this.open) {\n void this.show();\n }\n }\n\n connectedCallback() {\n this.init();\n }\n\n private init() {\n this.initPopover();\n\n // listen to filter\n const filterInputElement = this.filterInputElement;\n if (filterInputElement != null) {\n this.eventListeners.add(\n filterInputElement,\n 'six-input-input',\n debounce(() => {\n const filterValue = filterInputElement.value ?? '';\n if (this.filter) {\n this.applyFilter(filterValue);\n }\n this.emitFilterEvents(filterValue);\n }, this.filterDebounce)\n );\n }\n }\n\n private applyFilter(filterTerm: string) {\n const lowerCaseFilterTerm = filterTerm.toLowerCase()?.trim() || '';\n if (this.options.length > 0) {\n this.renderedOptions = this.options.filter(\n (option) =>\n (option.label && String(option.label)?.toLowerCase()?.includes(lowerCaseFilterTerm)) ||\n (option.value && String(option.value)?.toLowerCase()?.includes(lowerCaseFilterTerm))\n );\n } else {\n const { selectionContainerItems, sixMenuItems } = this.getMenuItems();\n const selectionContainerValues = selectionContainerItems.map((s) => s.value);\n\n // Filter items in selection container\n selectionContainerItems.forEach(async (menuItem) => {\n menuItem.style.display = (await containsFilterTerm(menuItem, lowerCaseFilterTerm)) ? 'unset' : 'none';\n });\n\n // Filter other items. Always hide items which contained in the selection container.\n sixMenuItems.forEach(async (menuItem) => {\n menuItem.style.display =\n (await containsFilterTerm(menuItem, lowerCaseFilterTerm)) &&\n !selectionContainerValues.includes(menuItem.value)\n ? 'unset'\n : 'none';\n });\n }\n }\n\n private resetFilter() {\n if (this.filterInputElement != null) {\n this.filterInputElement.value = '';\n this.emitFilterEvents('');\n }\n if (this.options.length > 0) {\n this.renderedOptions = [...this.options];\n } else {\n const { selectionContainerItems, sixMenuItems } = this.getMenuItems();\n [...selectionContainerItems, ...sixMenuItems].forEach((item) => (item.style.display = 'unset'));\n }\n }\n\n private emitFilterEvents(filterValue: string) {\n if (this.filter) {\n this.sixAutoFilter.emit({ filterValue });\n } else if (this.asyncFilter) {\n this.sixAsyncFilterFired.emit({ filterValue });\n }\n }\n\n private initPopover() {\n if (this.trigger == null || this.positioner == null) return;\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: () => {\n if (this.filterEnabled) {\n this.resetFilter();\n }\n this.sixAfterHide.emit();\n },\n onAfterShow: async () => {\n this.sixAfterShow.emit();\n },\n onTransitionEnd: () => {\n if (!this.open && this.scrollPanel != null) {\n this.scrollPanel.scrollTop = 0;\n }\n },\n });\n }\n\n private getMenuItems = (): {\n selectionContainerItems: HTMLSixMenuItemElement[];\n sixMenuItems: HTMLSixMenuItemElement[];\n } => {\n if (this.options.length > 0) {\n return {\n sixMenuItems: this.renderedOptions.map((option) => (\n <six-menu-item value={option.value}>{option.label}</six-menu-item>\n )),\n selectionContainerItems: [],\n };\n }\n if (this.panel == null) return { sixMenuItems: [], selectionContainerItems: [] };\n\n // Relies on the implementation of six-select. Its dropdown slot contains two elements,\n // one for the selected menu items, and one for the other items.\n const selectionContainer = this.panelSlot?.assignedElements({ flatten: true }).filter(isSelectionContainer).at(0);\n const sixMenuElement = this.panelSlot?.assignedElements({ flatten: true }).filter(isSixMenu).at(0) as\n | HTMLSixMenuElement\n | undefined;\n const selectionContainerItems = selectionContainer?.querySelectorAll('six-menu-item') || [];\n const sixMenuItems = (sixMenuElement?.querySelector('slot')?.assignedElements().filter(isSixMenuItem) ||\n []) as HTMLSixMenuItemElement[];\n\n if (selectionContainerItems.length > 0 || sixMenuItems.length > 0) {\n return { sixMenuItems, selectionContainerItems: [...selectionContainerItems] };\n } else {\n return {\n sixMenuItems: sixMenuElement ? Array.from(sixMenuElement.querySelectorAll('six-menu-item')) : [],\n selectionContainerItems: [],\n };\n }\n };\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n this.eventListeners.removeAll();\n void this.hide();\n this.popover?.destroy();\n this.popover = undefined;\n }\n\n /** Shows the dropdown panel */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible || this.popover == null || this.panel == null) {\n return;\n }\n\n const sixShow = this.sixShow.emit();\n if (sixShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.eventListeners.add(this.panel, 'six-menu-item-selected', this.handlePanelSelect);\n this.eventListeners.add(document, 'keydown', this.handleDocumentKeyDown);\n this.eventListeners.add(document, 'mousedown', this.handleDocumentMouseDown);\n\n this.isVisible = true;\n this.open = true;\n\n if (this.trigger != null) {\n this.resizeObserver.observe(this.trigger);\n }\n this.updatePanelPosition();\n this.popover.show();\n\n if (this.filterEnabled && this.autofocusFilter) {\n requestAnimationFrame(() => {\n this.filterInputElement?.setFocus();\n });\n }\n }\n\n /**\n * Set min width of dropdown panel to the width of the trigger element\n */\n private updatePanelPosition() {\n if (!this.open) {\n return;\n }\n\n if (this.matchTriggerWidth && this.trigger != null && this.panel != null) {\n const width = this.trigger.getBoundingClientRect().width;\n this.panel.style.minWidth = `${width}px`;\n }\n\n if (this.popover != null) {\n this.popover.reposition();\n }\n }\n\n /** Hides the dropdown panel */\n @Method()\n async hide() {\n this.resizeObserver.disconnect();\n\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible || this.panel == null || this.popover == null) {\n return;\n }\n\n const sixHide = this.sixHide.emit();\n if (sixHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.eventListeners.remove(this.panel, 'six-menu-item-selected', this.handlePanelSelect);\n this.eventListeners.remove(document, 'keydown', this.handleDocumentKeyDown);\n this.eventListeners.remove(document, 'mousedown', this.handleDocumentMouseDown);\n\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n }\n\n private focusOnTrigger() {\n if (this.trigger == null) return;\n const trigger = this.triggerSlot?.assignedElements({ flatten: true }).at(0) as HTMLSixButtonElement | undefined;\n if (trigger != null) {\n if (typeof trigger.setFocus === 'function') {\n trigger.setFocus();\n } else if (typeof trigger.focus === 'function') {\n trigger.focus();\n }\n }\n }\n\n private getMenu(): HTMLSixMenuElement | undefined {\n return this.panelSlot?.assignedElements({ flatten: true }).filter(isSixMenu).at(0) as\n | HTMLSixMenuElement\n | undefined;\n }\n\n /**\n * Instructs the dropdown menu to reposition. Useful when the position or size of the trigger changes when the menu\n * is activated.\n *\n * @deprecated: use the property `matchTriggerWidth` instead.\n */\n @Method()\n async reposition() {\n if (this.open && this.popover != null) {\n this.popover.reposition();\n }\n }\n\n private handleDocumentKeyDown = (event: Event) => {\n const keyboardEvent = event as KeyboardEvent;\n // Close when escape is pressed\n if (keyboardEvent.key === 'Escape') {\n void this.hide();\n this.focusOnTrigger();\n return;\n }\n\n if (this.filterInputElement === this.host.shadowRoot?.activeElement) {\n if (keyboardEvent.key === 'ArrowDown') {\n const { sixMenuItems, selectionContainerItems } = this.getMenuItems();\n const item = [...selectionContainerItems, ...sixMenuItems].find((item) => item.style.display !== 'none');\n if (item != null) {\n item.setFocus();\n }\n }\n }\n\n // Handle tabbing\n if (keyboardEvent.key === 'Tab') {\n // Tabbing within an open menu should close the dropdown and refocus the trigger\n if (this.open && document.activeElement != null && isSixMenuItem(document.activeElement)) {\n keyboardEvent.preventDefault();\n void this.hide();\n this.focusOnTrigger();\n return;\n }\n\n // Tabbing outside the containing element closes the panel\n //\n // If the dropdown is used within a shadow DOM, we need to obtain the activeElement within that shadowRoot,\n // otherwise `document.activeElement` will only return the name of the parent shadow DOM element.\n setTimeout(() => {\n const activeElement =\n this.container.getRootNode() instanceof ShadowRoot\n ? document.activeElement?.shadowRoot?.activeElement\n : document.activeElement;\n\n if (activeElement?.closest(this.container.tagName.toLowerCase()) !== this.container) {\n void this.hide();\n return;\n }\n });\n }\n };\n\n private handleDocumentMouseDown = (event: Event) => {\n // Close when clicking outside the containing element\n const path = event.composedPath() as EventTarget[];\n if (!path.includes(this.container)) {\n void this.hide();\n return;\n }\n };\n\n private handlePanelSelect = (event: Event) => {\n const target = event.target as HTMLElement;\n\n // Hide the dropdown when a menu item is selected\n if (this.closeOnSelect && isSixMenu(target)) {\n void this.hide();\n this.focusOnTrigger();\n }\n };\n\n private handleTriggerClick = () => {\n this.open ? this.hide() : this.show();\n };\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n // Close when escape or tab is pressed\n if (event.key === 'Escape') {\n this.focusOnTrigger();\n void this.hide();\n return;\n }\n\n // When spacebar/enter is pressed, show the panel but don't focus on the menu. This let's the user press the same\n // key again to hide the menu in case they don't want to make a selection.\n if (!this.disableHideOnEnterAndSpace && [' ', 'Enter'].includes(event.key)) {\n event.preventDefault();\n this.open ? void this.hide() : void this.show();\n return;\n }\n\n const menu = this.getMenu();\n\n // When up/down is pressed, we make the assumption that the user is familiar with the menu and plans to make a\n // selection. Rather than toggle the panel, we focus on the menu (if one exists) and activate the first item for\n // faster navigation.\n if (['ArrowDown', 'ArrowUp'].includes(event.key)) {\n event.preventDefault();\n\n // Show the menu if it's not already open\n if (!this.open) {\n void this.show();\n }\n\n if (menu == null) {\n return;\n }\n const menuItems = [...menu.querySelectorAll('six-menu-item')];\n const firstMenuItem = menuItems.at(0);\n const lastMenuItem = menuItems.at(menuItems.length - 1);\n\n // Focus on a menu item\n if (event.key === 'ArrowDown' && firstMenuItem != null) {\n firstMenuItem.setFocus();\n return;\n }\n\n if (event.key === 'ArrowUp' && lastMenuItem != null) {\n lastMenuItem.setFocus();\n return;\n }\n }\n\n // Other keys bring focus to the menu and initiate type-to-select behavior\n const ignoredKeys = ['Tab', 'Shift', 'Meta', 'Ctrl', 'Alt'];\n if (this.open && menu != null && !ignoredKeys.includes(event.key)) {\n void menu.typeToSelect(event.key);\n return;\n }\n };\n\n private handleTriggerKeyUp = (event: KeyboardEvent) => {\n // Prevent space from triggering a click event in Firefox\n if (event.key === ' ') {\n event.preventDefault();\n }\n };\n\n private handleTriggerSlotChange = () => {\n this.updateAccessibleTrigger();\n };\n\n private handleDropdownScroll = () => {\n if (this.scrollPanel == null) return;\n\n this.sixScroll.emit({\n scrollHeight: this.scrollPanel.scrollHeight,\n scrollTop: this.scrollPanel.scrollTop,\n scrollbarHeight: this.scrollPanel.offsetHeight * (this.scrollPanel.offsetHeight / this.scrollPanel.scrollHeight),\n scrollRatio: this.scrollPanel.scrollTop / (this.scrollPanel.scrollHeight - this.scrollPanel.clientHeight),\n });\n };\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 // a child of the slotted element, or an element in the slotted element's shadow root.\n //\n // For example, the accessible trigger of an <sl-button> is a <button> located inside its shadow root.\n //\n // To determine this, we assume the first tabbable element in the trigger slot is the \"accessible trigger.\"\n //\n private updateAccessibleTrigger() {\n if (this.trigger == null) return;\n const assignedElements = (this.triggerSlot?.assignedElements({ flatten: true }) || []) as HTMLElement[];\n const accessibleTrigger = assignedElements.map(getNearestTabbableElement).at(0);\n if (accessibleTrigger != null) {\n accessibleTrigger.setAttribute('aria-haspopup', 'true');\n accessibleTrigger.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n }\n\n render() {\n return (\n <div\n part=\"base\"\n id={this.componentId}\n class={{\n dropdown: true,\n 'dropdown--open': this.open,\n }}\n >\n <span\n part=\"trigger\"\n class=\"dropdown__trigger\"\n ref={(el) => (this.trigger = el)}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeyDown}\n onKeyUp={this.handleTriggerKeyUp}\n >\n <slot\n name=\"trigger\"\n ref={(el) => (this.triggerSlot = el as HTMLSlotElement)}\n onSlotchange={this.handleTriggerSlotChange}\n />\n </span>\n\n {/* Position the panel with a wrapper since the popover makes use of `translate`. This let's us add transitions\n on the panel without interfering with the position. */}\n <div\n ref={(el) => (this.positioner = el)}\n class={{\n dropdown__positioner: true,\n dropdown__positioner__filtered: (this.filter || this.asyncFilter) && !this.hoist,\n }}\n >\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class=\"dropdown__panel\"\n role=\"menu\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-labelledby={this.componentId}\n >\n {this.filterEnabled && (\n <six-input\n class={{\n filter: true,\n 'filter-hidden': !this.open,\n }}\n dropdown-search\n aria-hidden={this.open ? 'false' : 'true'}\n ref={(el) => (this.filterInputElement = el)}\n placeholder={this.filterPlaceholder}\n >\n <six-icon class=\"filter__icon\" slot=\"suffix\" size=\"small\">\n search\n </six-icon>\n </six-input>\n )}\n <div\n class={{\n dropdown__panel__scroll: true,\n 'dropdown__panel__scroll--virtual': this.virtualScroll,\n }}\n onScroll={this.handleDropdownScroll}\n ref={(el) => (this.scrollPanel = el)}\n >\n <slot ref={(el) => (this.panelSlot = el as HTMLSlotElement)} />\n {this.options.length > 0 && (\n <six-menu part=\"menu\" items={this.renderedOptions} virtualScroll={this.virtualScroll}></six-menu>\n )}\n </div>\n <slot name=\"dropdown-footer\"></slot>\n </div>\n </div>\n </div>\n );\n }\n}\n\nfunction isSixMenu(el?: Element): boolean {\n return el?.tagName.toLowerCase() === 'six-menu';\n}\nfunction isSixMenuItem(el?: Element): boolean {\n return el?.tagName.toLowerCase() === 'six-menu-item';\n}\nfunction isSelectionContainer(el?: Element): boolean {\n return el?.getAttribute('class')?.includes('selection-container') || false;\n}\nasync function containsFilterTerm(menuItem: HTMLSixMenuItemElement, lowerCaseFilterTerm: string): Promise<boolean> {\n return (\n menuItem.value.toLowerCase().includes(lowerCaseFilterTerm) ||\n (await menuItem.getTextLabel()).toLowerCase().includes(lowerCaseFilterTerm)\n );\n}\n"]}
1
+ {"version":3,"file":"six-dropdown.js","sourceRoot":"","sources":["../../../src/components/six-dropdown/six-dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { getNearestTabbableElement } from '../../utils/tabbable';\nimport Popover from '../../utils/popover';\nimport { EventListeners } from '../../utils/event-listeners';\nimport { debounce, DEFAULT_DEBOUNCE_FAST } from '../../utils/execution-control';\nimport { EmptyPayload } from '../../utils/types';\nimport { SixMenuItemData } from '../six-menu/six-menu';\n\nexport interface SixDropdownAutoFilterPayload {\n filterValue: string;\n}\n\nexport interface SixDropdownAsyncFilterPayload {\n filterValue: string;\n}\n\nexport interface SixDropdownScrollPayload {\n scrollHeight: number;\n scrollTop: number;\n scrollbarHeight: number;\n scrollRatio: number;\n}\n\nlet id = 0;\n\n/**\n * @since 1.0\n * @status stable\n *\n * Forked from https://github.com/shoelace-style/shoelace version v2.0.0-beta27.\n *\n * @slot trigger - The dropdown's trigger, usually a `<six-button>` element.\n * @slot dropdown-footer - The dropdown's footer area.\n * @slot - The dropdown's content.\n *\n * @part base - The component's base wrapper.\n * @part trigger - The container that wraps the trigger.\n * @part panel - The panel that gets shown when the dropdown is open.\n */\n\n@Component({\n tag: 'six-dropdown',\n styleUrl: 'six-dropdown.scss',\n shadow: true,\n})\nexport class SixDropdown {\n private componentId = `dropdown-${++id}`;\n private isVisible = false;\n private panel?: HTMLElement;\n private scrollPanel?: HTMLElement;\n private panelSlot?: HTMLSlotElement;\n private positioner?: HTMLElement;\n private popover?: Popover;\n private trigger?: HTMLElement;\n private triggerSlot?: HTMLSlotElement;\n private resizeObserver = new ResizeObserver(debounce(() => this.updatePanelPosition(), 100));\n\n // the input element shown in the dropdown when filter is set to true\n private filterInputElement?: HTMLSixInputElement;\n\n @Element() host!: HTMLSixDropdownElement;\n\n /** Indicates whether 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 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 /** Determines whether the dropdown should hide when a menu item is selected. */\n // eslint-disable-next-line @stencil-community/ban-default-true\n @Prop() closeOnSelect = true;\n\n /** The distance in pixels from which to offset the panel away from its trigger. */\n @Prop() distance = 4;\n\n /** The distance in pixels from which to offset the panel along its trigger. */\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 /** The dropdown will close when the user interacts outside of this element (e.g. clicking). */\n @Prop() containingElement?: HTMLElement;\n\n /**\n * Set to true to allow auto filtering for entries in the dropdown.\n * With this flag the dropdown will automatically filter itsel.\n * If you need to coordinate the shown elements yourself,\n * e.g. because you need to call an endpoint use asyncFilter instead\n */\n @Prop() filter = false;\n\n /**\n * Set to true to allow async filtering.\n * When you enter something in the search field the component will only emit an event but not filter any elements itself.\n * You can then simply listen to the 'six-async-filter-fired' event to manage the shown menu-items yourself\n */\n @Prop() asyncFilter = false;\n\n /** The filter's placeholder text. */\n @Prop() filterPlaceholder = 'Filter...';\n\n /** By default the search field will be focused when opening a dropdown with filtering enabled. */\n // eslint-disable-next-line @stencil-community/ban-default-true\n @Prop() autofocusFilter = true;\n\n get filterEnabled() {\n return this.filter || this.asyncFilter;\n }\n\n /** The debounce for the filter callbacks. */\n @Prop({ mutable: true }) filterDebounce = 0;\n\n /** The panel can be opend/closed by pressing the spacebar or the enter key. In some cases you might want to avoid this */\n @Prop() disableHideOnEnterAndSpace = false;\n\n /** Set the options to be shown in the dropdown (alternative to setting the elements via html)*/\n @Prop({ mutable: true }) options: SixMenuItemData[] = [];\n\n /** Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)\n * are actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot. */\n @Prop() virtualScroll = false;\n\n /**\n * Determines if the dropdown panel's width should match the width of the trigger element.\n *\n * If set to `true`, the panel will resize its width to align with the trigger's width.\n * If `false` or omitted, the panel will maintain its default width.\n */\n @Prop() matchTriggerWidth = false;\n\n get container() {\n return this.containingElement || this.host;\n }\n\n /** Emitted when the dropdown opens. Calling `event.preventDefault()` will prevent it from being opened. */\n @Event({ eventName: 'six-dropdown-show' }) sixShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the dropdown opens and all transitions are complete. */\n @Event({ eventName: 'six-dropdown-after-show' }) sixAfterShow!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the dropdown closes. Calling `event.preventDefault()` will prevent it from being closed. */\n @Event({ eventName: 'six-dropdown-hide' }) sixHide!: EventEmitter<EmptyPayload>;\n\n /** Emitted after the dropdown closes and all transitions are complete. */\n @Event({ eventName: 'six-dropdown-after-hide' }) sixAfterHide!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the auto filter is triggered */\n @Event({ eventName: 'six-dropdown-auto-filter-fired' }) sixAutoFilter!: EventEmitter<SixDropdownAutoFilterPayload>;\n\n /** Emitted when the async filter is triggered */\n @Event({ eventName: 'six-async-filter-fired' }) sixAsyncFilterFired!: EventEmitter<SixDropdownAsyncFilterPayload>;\n\n /** Emitted when the user scrolls inside dropdown panel.*/\n @Event({ eventName: 'six-dropdown-scroll' }) sixScroll!: EventEmitter<SixDropdownScrollPayload>;\n\n private eventListeners = new EventListeners();\n\n // internal representation of options, so we don't have to make options mutable\n @State() renderedOptions: SixMenuItemData[] = [];\n\n @Watch('open')\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n this.updateAccessibleTrigger();\n }\n\n @Watch('distance')\n @Watch('hoist')\n @Watch('placement')\n @Watch('skidding')\n handlePopoverOptionsChange() {\n if (this.popover == null) return;\n\n this.popover.setOptions({\n strategy: this.hoist ? 'fixed' : 'absolute',\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n });\n }\n\n @Watch('options')\n @Watch('virtualScroll')\n handleOptionsChange() {\n this.validateOptions();\n }\n\n private validateOptions() {\n if (!Array.isArray(this.options)) {\n this.options = [];\n }\n if (this.virtualScroll && this.options.length === 0) {\n console.error('Options must be defined when using virtual scrolling');\n }\n this.renderedOptions = [...this.options];\n }\n\n componentWillLoad() {\n this.validateOptions();\n if (this.asyncFilter) {\n this.filterDebounce = DEFAULT_DEBOUNCE_FAST;\n }\n }\n\n componentDidLoad() {\n this.init();\n if (this.open) {\n void this.show();\n }\n }\n\n connectedCallback() {\n this.init();\n }\n\n private init() {\n this.initPopover();\n\n // listen to filter\n const filterInputElement = this.filterInputElement;\n if (filterInputElement != null) {\n this.eventListeners.add(\n filterInputElement,\n 'six-input-input',\n debounce(() => {\n const filterValue = filterInputElement.value ?? '';\n if (this.filter) {\n this.applyFilter(filterValue);\n }\n this.emitFilterEvents(filterValue);\n }, this.filterDebounce)\n );\n }\n }\n\n private applyFilter(filterTerm: string) {\n const lowerCaseFilterTerm = filterTerm.toLowerCase()?.trim() || '';\n if (this.options.length > 0) {\n this.renderedOptions = this.options.filter(\n (option) =>\n (option.label && String(option.label)?.toLowerCase()?.includes(lowerCaseFilterTerm)) ||\n (option.value && String(option.value)?.toLowerCase()?.includes(lowerCaseFilterTerm))\n );\n } else {\n const { selectionContainerItems, sixMenuItems } = this.getMenuItems();\n const selectionContainerValues = selectionContainerItems.map((s) => s.value);\n\n // Filter items in selection container\n selectionContainerItems.forEach(async (menuItem) => {\n menuItem.style.display = (await containsFilterTerm(menuItem, lowerCaseFilterTerm)) ? 'unset' : 'none';\n });\n\n // Filter other items. Always hide items which contained in the selection container.\n sixMenuItems.forEach(async (menuItem) => {\n menuItem.style.display =\n (await containsFilterTerm(menuItem, lowerCaseFilterTerm)) &&\n !selectionContainerValues.includes(menuItem.value)\n ? 'unset'\n : 'none';\n });\n }\n }\n\n private resetFilter() {\n if (this.filterInputElement != null) {\n this.filterInputElement.value = '';\n this.emitFilterEvents('');\n }\n if (this.options.length > 0) {\n this.renderedOptions = [...this.options];\n } else {\n const { selectionContainerItems, sixMenuItems } = this.getMenuItems();\n [...selectionContainerItems, ...sixMenuItems].forEach((item) => (item.style.display = 'unset'));\n }\n }\n\n private emitFilterEvents(filterValue: string) {\n if (this.filter) {\n this.sixAutoFilter.emit({ filterValue });\n } else if (this.asyncFilter) {\n this.sixAsyncFilterFired.emit({ filterValue });\n }\n }\n\n private initPopover() {\n if (this.trigger == null || this.positioner == null) return;\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: () => {\n if (this.filterEnabled) {\n this.resetFilter();\n }\n this.sixAfterHide.emit();\n },\n onAfterShow: async () => {\n this.sixAfterShow.emit();\n },\n onTransitionEnd: () => {\n if (!this.open && this.scrollPanel != null) {\n this.scrollPanel.scrollTop = 0;\n }\n },\n });\n }\n\n private getMenuItems = (): {\n selectionContainerItems: HTMLSixMenuItemElement[];\n sixMenuItems: HTMLSixMenuItemElement[];\n } => {\n if (this.options.length > 0) {\n return {\n sixMenuItems: this.renderedOptions.map((option) => (\n <six-menu-item value={option.value}>{option.label}</six-menu-item>\n )),\n selectionContainerItems: [],\n };\n }\n if (this.panel == null) return { sixMenuItems: [], selectionContainerItems: [] };\n\n // Relies on the implementation of six-select. Its dropdown slot contains two elements,\n // one for the selected menu items, and one for the other items.\n const selectionContainer = this.panelSlot?.assignedElements({ flatten: true }).filter(isSelectionContainer).at(0);\n const sixMenuElement = this.panelSlot?.assignedElements({ flatten: true }).filter(isSixMenu).at(0) as\n | HTMLSixMenuElement\n | undefined;\n const selectionContainerItems = selectionContainer?.querySelectorAll('six-menu-item') || [];\n let sixMenuItems: HTMLSixMenuItemElement[] =\n sixMenuElement\n ?.querySelector('slot')\n ?.assignedElements()\n .filter((el): el is HTMLSixMenuItemElement => isSixMenuItem(el)) || [];\n\n if (sixMenuItems.length === 0) {\n sixMenuItems = Array.from(sixMenuElement?.shadowRoot?.querySelectorAll('six-menu-item') || []);\n }\n\n if (selectionContainerItems.length > 0 || sixMenuItems.length > 0) {\n return { sixMenuItems, selectionContainerItems: [...selectionContainerItems] };\n } else {\n return {\n sixMenuItems: sixMenuElement ? Array.from(sixMenuElement.querySelectorAll('six-menu-item')) : [],\n selectionContainerItems: [],\n };\n }\n };\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n this.eventListeners.removeAll();\n void this.hide();\n this.popover?.destroy();\n this.popover = undefined;\n }\n\n /** Shows the dropdown panel */\n @Method()\n async show() {\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (this.isVisible || this.popover == null || this.panel == null) {\n return;\n }\n\n const sixShow = this.sixShow.emit();\n if (sixShow.defaultPrevented) {\n this.open = false;\n return;\n }\n\n this.eventListeners.add(this.panel, 'six-menu-item-selected', this.handlePanelSelect);\n this.eventListeners.add(document, 'keydown', this.handleDocumentKeyDown);\n this.eventListeners.add(document, 'mousedown', this.handleDocumentMouseDown);\n\n this.isVisible = true;\n this.open = true;\n\n if (this.trigger != null) {\n this.resizeObserver.observe(this.trigger);\n }\n this.updatePanelPosition();\n this.popover.show();\n\n if (this.filterEnabled && this.autofocusFilter) {\n requestAnimationFrame(() => {\n this.filterInputElement?.setFocus();\n });\n }\n }\n\n /**\n * Set min width of dropdown panel to the width of the trigger element\n */\n private updatePanelPosition() {\n if (!this.open) {\n return;\n }\n\n if (this.matchTriggerWidth && this.trigger != null && this.panel != null) {\n const width = this.trigger.getBoundingClientRect().width;\n this.panel.style.minWidth = `${width}px`;\n }\n\n if (this.popover != null) {\n this.popover.reposition();\n }\n }\n\n /** Hides the dropdown panel */\n @Method()\n async hide() {\n this.resizeObserver.disconnect();\n\n // Prevent subsequent calls to the method, whether manually or triggered by the `open` watcher\n if (!this.isVisible || this.panel == null || this.popover == null) {\n return;\n }\n\n const sixHide = this.sixHide.emit();\n if (sixHide.defaultPrevented) {\n this.open = true;\n return;\n }\n\n this.eventListeners.remove(this.panel, 'six-menu-item-selected', this.handlePanelSelect);\n this.eventListeners.remove(document, 'keydown', this.handleDocumentKeyDown);\n this.eventListeners.remove(document, 'mousedown', this.handleDocumentMouseDown);\n\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n }\n\n private focusOnTrigger() {\n if (this.trigger == null) return;\n const trigger = this.triggerSlot?.assignedElements({ flatten: true }).at(0) as HTMLSixButtonElement | undefined;\n if (trigger != null) {\n if (typeof trigger.setFocus === 'function') {\n trigger.setFocus();\n } else if (typeof trigger.focus === 'function') {\n trigger.focus();\n }\n }\n }\n\n private getMenu(): HTMLSixMenuElement | undefined {\n return this.panelSlot?.assignedElements({ flatten: true }).filter(isSixMenu).at(0) as\n | HTMLSixMenuElement\n | undefined;\n }\n\n /**\n * Instructs the dropdown menu to reposition. Useful when the position or size of the trigger changes when the menu\n * is activated.\n *\n * @deprecated: use the property `matchTriggerWidth` instead.\n */\n @Method()\n async reposition() {\n if (this.open && this.popover != null) {\n this.popover.reposition();\n }\n }\n\n private handleDocumentKeyDown = (event: Event) => {\n const keyboardEvent = event as KeyboardEvent;\n // Close when escape is pressed\n if (keyboardEvent.key === 'Escape') {\n void this.hide();\n this.focusOnTrigger();\n return;\n }\n\n if (this.filterInputElement === this.host.shadowRoot?.activeElement) {\n if (keyboardEvent.key === 'ArrowDown') {\n const { sixMenuItems, selectionContainerItems } = this.getMenuItems();\n const item = [...selectionContainerItems, ...sixMenuItems].find((item) => item.style.display !== 'none');\n if (item != null) {\n item.setFocus();\n }\n }\n }\n\n // Handle tabbing\n if (keyboardEvent.key === 'Tab') {\n // Tabbing within an open menu should close the dropdown and refocus the trigger\n if (this.open && document.activeElement != null && isSixMenuItem(document.activeElement)) {\n keyboardEvent.preventDefault();\n void this.hide();\n this.focusOnTrigger();\n return;\n }\n\n // Tabbing outside the containing element closes the panel\n //\n // If the dropdown is used within a shadow DOM, we need to obtain the activeElement within that shadowRoot,\n // otherwise `document.activeElement` will only return the name of the parent shadow DOM element.\n setTimeout(() => {\n const activeElement =\n this.container.getRootNode() instanceof ShadowRoot\n ? document.activeElement?.shadowRoot?.activeElement\n : document.activeElement;\n\n if (activeElement?.closest(this.container.tagName.toLowerCase()) !== this.container) {\n void this.hide();\n return;\n }\n });\n }\n };\n\n private handleDocumentMouseDown = (event: Event) => {\n // Close when clicking outside the containing element\n const path = event.composedPath() as EventTarget[];\n if (!path.includes(this.container)) {\n void this.hide();\n return;\n }\n };\n\n private handlePanelSelect = (event: Event) => {\n const target = event.target as HTMLElement;\n\n // Hide the dropdown when a menu item is selected\n if (this.closeOnSelect && isSixMenu(target)) {\n void this.hide();\n this.focusOnTrigger();\n }\n };\n\n private handleTriggerClick = () => {\n this.open ? this.hide() : this.show();\n };\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n // Close when escape or tab is pressed\n if (event.key === 'Escape') {\n this.focusOnTrigger();\n void this.hide();\n return;\n }\n\n // When spacebar/enter is pressed, show the panel but don't focus on the menu. This let's the user press the same\n // key again to hide the menu in case they don't want to make a selection.\n if (!this.disableHideOnEnterAndSpace && [' ', 'Enter'].includes(event.key)) {\n event.preventDefault();\n this.open ? void this.hide() : void this.show();\n return;\n }\n\n const menu = this.getMenu();\n\n // When up/down is pressed, we make the assumption that the user is familiar with the menu and plans to make a\n // selection. Rather than toggle the panel, we focus on the menu (if one exists) and activate the first item for\n // faster navigation.\n if (['ArrowDown', 'ArrowUp'].includes(event.key)) {\n event.preventDefault();\n\n // Show the menu if it's not already open\n if (!this.open) {\n void this.show();\n }\n\n if (menu == null) {\n return;\n }\n const menuItems = [...menu.querySelectorAll('six-menu-item')];\n const firstMenuItem = menuItems.at(0);\n const lastMenuItem = menuItems.at(menuItems.length - 1);\n\n // Focus on a menu item\n if (event.key === 'ArrowDown' && firstMenuItem != null) {\n firstMenuItem.setFocus();\n return;\n }\n\n if (event.key === 'ArrowUp' && lastMenuItem != null) {\n lastMenuItem.setFocus();\n return;\n }\n }\n\n // Other keys bring focus to the menu and initiate type-to-select behavior\n const ignoredKeys = ['Tab', 'Shift', 'Meta', 'Ctrl', 'Alt'];\n if (this.open && menu != null && !ignoredKeys.includes(event.key)) {\n void menu.typeToSelect(event.key);\n return;\n }\n };\n\n private handleTriggerKeyUp = (event: KeyboardEvent) => {\n // Prevent space from triggering a click event in Firefox\n if (event.key === ' ') {\n event.preventDefault();\n }\n };\n\n private handleTriggerSlotChange = () => {\n this.updateAccessibleTrigger();\n };\n\n private handleDropdownScroll = () => {\n if (this.scrollPanel == null) return;\n\n this.sixScroll.emit({\n scrollHeight: this.scrollPanel.scrollHeight,\n scrollTop: this.scrollPanel.scrollTop,\n scrollbarHeight: this.scrollPanel.offsetHeight * (this.scrollPanel.offsetHeight / this.scrollPanel.scrollHeight),\n scrollRatio: this.scrollPanel.scrollTop / (this.scrollPanel.scrollHeight - this.scrollPanel.clientHeight),\n });\n };\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 // a child of the slotted element, or an element in the slotted element's shadow root.\n //\n // For example, the accessible trigger of an <sl-button> is a <button> located inside its shadow root.\n //\n // To determine this, we assume the first tabbable element in the trigger slot is the \"accessible trigger.\"\n //\n private updateAccessibleTrigger() {\n if (this.trigger == null) return;\n const assignedElements = (this.triggerSlot?.assignedElements({ flatten: true }) || []) as HTMLElement[];\n const accessibleTrigger = assignedElements.map(getNearestTabbableElement).at(0);\n if (accessibleTrigger != null) {\n accessibleTrigger.setAttribute('aria-haspopup', 'true');\n accessibleTrigger.setAttribute('aria-expanded', this.open ? 'true' : 'false');\n }\n }\n\n render() {\n return (\n <div\n part=\"base\"\n id={this.componentId}\n class={{\n dropdown: true,\n 'dropdown--open': this.open,\n }}\n >\n <span\n part=\"trigger\"\n class=\"dropdown__trigger\"\n ref={(el) => (this.trigger = el)}\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleTriggerKeyDown}\n onKeyUp={this.handleTriggerKeyUp}\n >\n <slot\n name=\"trigger\"\n ref={(el) => (this.triggerSlot = el as HTMLSlotElement)}\n onSlotchange={this.handleTriggerSlotChange}\n />\n </span>\n\n {/* Position the panel with a wrapper since the popover makes use of `translate`. This let's us add transitions\n on the panel without interfering with the position. */}\n <div\n ref={(el) => (this.positioner = el)}\n class={{\n dropdown__positioner: true,\n dropdown__positioner__filtered: (this.filter || this.asyncFilter) && !this.hoist,\n }}\n >\n <div\n ref={(el) => (this.panel = el)}\n part=\"panel\"\n class=\"dropdown__panel\"\n role=\"menu\"\n aria-hidden={this.open ? 'false' : 'true'}\n aria-labelledby={this.componentId}\n >\n {this.filterEnabled && (\n <six-input\n class={{\n filter: true,\n 'filter-hidden': !this.open,\n }}\n dropdown-search\n aria-hidden={this.open ? 'false' : 'true'}\n ref={(el) => (this.filterInputElement = el)}\n placeholder={this.filterPlaceholder}\n >\n <six-icon class=\"filter__icon\" slot=\"suffix\" size=\"small\">\n search\n </six-icon>\n </six-input>\n )}\n <div\n class={{\n dropdown__panel__scroll: true,\n 'dropdown__panel__scroll--virtual': this.virtualScroll,\n }}\n onScroll={this.handleDropdownScroll}\n ref={(el) => (this.scrollPanel = el)}\n >\n <slot ref={(el) => (this.panelSlot = el as HTMLSlotElement)} />\n {this.options.length > 0 && (\n <six-menu part=\"menu\" items={this.renderedOptions} virtualScroll={this.virtualScroll}></six-menu>\n )}\n </div>\n <slot name=\"dropdown-footer\"></slot>\n </div>\n </div>\n </div>\n );\n }\n}\n\nfunction isSixMenu(el?: Element): boolean {\n return el?.tagName.toLowerCase() === 'six-menu';\n}\nfunction isSixMenuItem(el?: Element): boolean {\n return el?.tagName.toLowerCase() === 'six-menu-item';\n}\nfunction isSelectionContainer(el?: Element): boolean {\n return el?.getAttribute('class')?.includes('selection-container') || false;\n}\nasync function containsFilterTerm(menuItem: HTMLSixMenuItemElement, lowerCaseFilterTerm: string): Promise<boolean> {\n return (\n menuItem.value.toLowerCase().includes(lowerCaseFilterTerm) ||\n (await menuItem.getTextLabel()).toLowerCase().includes(lowerCaseFilterTerm)\n );\n}\n"]}
@@ -11,27 +11,12 @@ import { h } from "@stencil/core";
11
11
  */
12
12
  export class SixRoot {
13
13
  constructor() {
14
- this.resizeObserver = new ResizeObserver(([host]) => {
15
- const { width } = host.contentRect;
16
- this.collapse = width < this.breakpoint;
17
- });
18
- this.breakpoint = 1024;
19
14
  this.padded = true;
20
15
  this.stage = null;
21
16
  this.version = '';
22
- this.collapse = false;
23
- }
24
- handleCollapsed(collapsed) {
25
- this.collapsedEvent.emit({ collapsed });
26
- }
27
- componentWillLoad() {
28
- this.resizeObserver.observe(this.host);
29
- }
30
- disconnectedCallback() {
31
- this.resizeObserver.disconnect();
32
17
  }
33
18
  render() {
34
- return (h("host", { class: "six-root" }, h("header", { part: "header" }, this.stage && h("six-stage-indicator", { stage: this.stage }, this.version), h("slot", { name: "header" })), h("nav", { class: "six-root__left-sidebar", part: "left-sidebar" }, h("set-attributes", { value: { open: !this.collapse } }, h("slot", { name: "left-sidebar" }))), h("main", { part: "main" }, h("div", { class: { 'six-root__container': true, 'six-root__container--padded': this.padded }, part: "container" }, h("slot", { name: "main" })), h("div", { class: "six-root__footer" }, h("slot", { name: "footer" }))), h("nav", { class: "six-root__right-sidebar", part: "right-sidebar" }, h("slot", { name: "right-sidebar" }))));
19
+ return (h("host", { class: "six-root" }, h("header", { part: "header" }, this.stage && h("six-stage-indicator", { stage: this.stage }, this.version), h("slot", { name: "header" })), h("nav", { class: "six-root__left-sidebar", part: "left-sidebar" }, h("slot", { name: "left-sidebar" })), h("main", { part: "main" }, h("div", { class: { 'six-root__container': true, 'six-root__container--padded': this.padded }, part: "container" }, h("slot", { name: "main" })), h("div", { class: "six-root__footer" }, h("slot", { name: "footer" }))), h("nav", { class: "six-root__right-sidebar", part: "right-sidebar" }, h("slot", { name: "right-sidebar" }))));
35
20
  }
36
21
  static get is() { return "six-root"; }
37
22
  static get encapsulation() { return "shadow"; }
@@ -47,24 +32,6 @@ export class SixRoot {
47
32
  }
48
33
  static get properties() {
49
34
  return {
50
- "breakpoint": {
51
- "type": "number",
52
- "mutable": false,
53
- "complexType": {
54
- "original": "number",
55
- "resolved": "number",
56
- "references": {}
57
- },
58
- "required": false,
59
- "optional": false,
60
- "docs": {
61
- "tags": [],
62
- "text": "Breakpoint for smaller screens when the right sidebar is collapsed by default."
63
- },
64
- "attribute": "breakpoint",
65
- "reflect": false,
66
- "defaultValue": "1024"
67
- },
68
35
  "padded": {
69
36
  "type": "boolean",
70
37
  "mutable": false,
@@ -127,41 +94,6 @@ export class SixRoot {
127
94
  }
128
95
  };
129
96
  }
130
- static get states() {
131
- return {
132
- "collapse": {}
133
- };
134
- }
135
- static get events() {
136
- return [{
137
- "method": "collapsedEvent",
138
- "name": "six-root-collapsed",
139
- "bubbles": true,
140
- "cancelable": true,
141
- "composed": true,
142
- "docs": {
143
- "tags": [],
144
- "text": "Emitted when display size is updated."
145
- },
146
- "complexType": {
147
- "original": "SixRootCollapsedPayload",
148
- "resolved": "SixRootCollapsedPayload",
149
- "references": {
150
- "SixRootCollapsedPayload": {
151
- "location": "local",
152
- "path": "/home/runner/work/six-webcomponents/six-webcomponents/libraries/ui-library/src/components/six-root/six-root.tsx",
153
- "id": "src/components/six-root/six-root.tsx::SixRootCollapsedPayload"
154
- }
155
- }
156
- }
157
- }];
158
- }
159
97
  static get elementRef() { return "host"; }
160
- static get watchers() {
161
- return [{
162
- "propName": "collapse",
163
- "methodName": "handleCollapsed"
164
- }];
165
- }
166
98
  }
167
99
  //# sourceMappingURL=six-root.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"six-root.js","sourceRoot":"","sources":["../../../src/components/six-root/six-root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAO/F;;;;;;;;;GASG;AAOH,MAAM,OAAO,OAAO;;QAqBV,mBAAc,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;YACrD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1C,CAAC,CAAC,CAAC;0BApBkB,IAAI;sBAIR,IAAI;qBAGM,IAAI;uBAGb,EAAE;wBAKA,KAAK;;IAQzB,eAAe,CAAC,SAAkB;QAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,OAAO,CACL,YAAM,KAAK,EAAC,UAAU;YACpB,cAAQ,IAAI,EAAC,QAAQ;gBAClB,IAAI,CAAC,KAAK,IAAI,2BAAqB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAG,IAAI,CAAC,OAAO,CAAuB;gBAC3F,YAAM,IAAI,EAAC,QAAQ,GAAG,CACf;YACT,WAAK,KAAK,EAAC,wBAAwB,EAAC,IAAI,EAAC,cAAc;gBACrD,sBAAgB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAC7C,YAAM,IAAI,EAAC,cAAc,GAAG,CACb,CACb;YACN,YAAM,IAAI,EAAC,MAAM;gBACf,WAAK,KAAK,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAC,WAAW;oBACvG,YAAM,IAAI,EAAC,MAAM,GAAG,CAChB;gBACN,WAAK,KAAK,EAAC,kBAAkB;oBAC3B,YAAM,IAAI,EAAC,QAAQ,GAAG,CAClB,CACD;YACP,WAAK,KAAK,EAAC,yBAAyB,EAAC,IAAI,EAAC,eAAe;gBACvD,YAAM,IAAI,EAAC,eAAe,GAAG,CACzB,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\nimport { StageType } from '../six-stage-indicator/six-stage-indicator';\n\nexport interface SixRootCollapsedPayload {\n collapsed: boolean;\n}\n\n/**\n * @since 1.0\n * @status stable\n *\n * @slot header - Used to define the header component.\n * @slot main - Used to define the components in the main area.\n * @slot left-sidebar - Used to define the sidebar on the left side.\n * @slot right-sidebar - Used to define the sidebar on the right side.\n * @slot footer - Used to define the footer component.\n */\n\n@Component({\n tag: 'six-root',\n styleUrl: 'six-root.scss',\n shadow: true,\n})\nexport class SixRoot {\n @Element() host!: HTMLSixRootElement;\n\n /** Breakpoint for smaller screens when the right sidebar is collapsed by default. */\n @Prop() breakpoint = 1024;\n\n /** Defines whether the content section should be padded */\n // eslint-disable-next-line @stencil-community/ban-default-true\n @Prop() padded = true;\n\n /** Defines the stage of the application*/\n @Prop() stage: StageType = null;\n\n /** Defines the version of the application*/\n @Prop() version = '';\n\n /** Emitted when display size is updated. */\n @Event({ eventName: 'six-root-collapsed' }) collapsedEvent!: EventEmitter<SixRootCollapsedPayload>;\n\n @State() collapse = false;\n\n private resizeObserver = new ResizeObserver(([host]) => {\n const { width } = host.contentRect;\n this.collapse = width < this.breakpoint;\n });\n\n @Watch('collapse')\n handleCollapsed(collapsed: boolean) {\n this.collapsedEvent.emit({ collapsed });\n }\n\n componentWillLoad() {\n this.resizeObserver.observe(this.host);\n }\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n }\n\n render() {\n return (\n <host class=\"six-root\">\n <header part=\"header\">\n {this.stage && <six-stage-indicator stage={this.stage}>{this.version}</six-stage-indicator>}\n <slot name=\"header\" />\n </header>\n <nav class=\"six-root__left-sidebar\" part=\"left-sidebar\">\n <set-attributes value={{ open: !this.collapse }}>\n <slot name=\"left-sidebar\" />\n </set-attributes>\n </nav>\n <main part=\"main\">\n <div class={{ 'six-root__container': true, 'six-root__container--padded': this.padded }} part=\"container\">\n <slot name=\"main\" />\n </div>\n <div class=\"six-root__footer\">\n <slot name=\"footer\" />\n </div>\n </main>\n <nav class=\"six-root__right-sidebar\" part=\"right-sidebar\">\n <slot name=\"right-sidebar\" />\n </nav>\n </host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-root.js","sourceRoot":"","sources":["../../../src/components/six-root/six-root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG5D;;;;;;;;;GASG;AAOH,MAAM,OAAO,OAAO;;sBAKD,IAAI;qBAGM,IAAI;uBAGb,EAAE;;IAEpB,MAAM;QACJ,OAAO,CACL,YAAM,KAAK,EAAC,UAAU;YACpB,cAAQ,IAAI,EAAC,QAAQ;gBAClB,IAAI,CAAC,KAAK,IAAI,2BAAqB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAG,IAAI,CAAC,OAAO,CAAuB;gBAC3F,YAAM,IAAI,EAAC,QAAQ,GAAG,CACf;YACT,WAAK,KAAK,EAAC,wBAAwB,EAAC,IAAI,EAAC,cAAc;gBACrD,YAAM,IAAI,EAAC,cAAc,GAAG,CACxB;YACN,YAAM,IAAI,EAAC,MAAM;gBACf,WAAK,KAAK,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAC,WAAW;oBACvG,YAAM,IAAI,EAAC,MAAM,GAAG,CAChB;gBACN,WAAK,KAAK,EAAC,kBAAkB;oBAC3B,YAAM,IAAI,EAAC,QAAQ,GAAG,CAClB,CACD;YACP,WAAK,KAAK,EAAC,yBAAyB,EAAC,IAAI,EAAC,eAAe;gBACvD,YAAM,IAAI,EAAC,eAAe,GAAG,CACzB,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, h, Prop } from '@stencil/core';\nimport { StageType } from '../six-stage-indicator/six-stage-indicator';\n\n/**\n * @since 1.0\n * @status stable\n *\n * @slot header - Used to define the header component.\n * @slot main - Used to define the components in the main area.\n * @slot left-sidebar - Used to define the sidebar on the left side.\n * @slot right-sidebar - Used to define the sidebar on the right side.\n * @slot footer - Used to define the footer component.\n */\n\n@Component({\n tag: 'six-root',\n styleUrl: 'six-root.scss',\n shadow: true,\n})\nexport class SixRoot {\n @Element() host!: HTMLSixRootElement;\n\n /** Defines whether the content section should be padded */\n // eslint-disable-next-line @stencil-community/ban-default-true\n @Prop() padded = true;\n\n /** Defines the stage of the application*/\n @Prop() stage: StageType = null;\n\n /** Defines the version of the application*/\n @Prop() version = '';\n\n render() {\n return (\n <host class=\"six-root\">\n <header part=\"header\">\n {this.stage && <six-stage-indicator stage={this.stage}>{this.version}</six-stage-indicator>}\n <slot name=\"header\" />\n </header>\n <nav class=\"six-root__left-sidebar\" part=\"left-sidebar\">\n <slot name=\"left-sidebar\" />\n </nav>\n <main part=\"main\">\n <div class={{ 'six-root__container': true, 'six-root__container--padded': this.padded }} part=\"container\">\n <slot name=\"main\" />\n </div>\n <div class=\"six-root__footer\">\n <slot name=\"footer\" />\n </div>\n </main>\n <nav class=\"six-root__right-sidebar\" part=\"right-sidebar\">\n <slot name=\"right-sidebar\" />\n </nav>\n </host>\n );\n }\n}\n"]}
@@ -1,10 +1,5 @@
1
1
  import { newSpecPage } from "@stencil/core/testing";
2
2
  import { SixRoot } from "../six-root";
3
- global.ResizeObserver = jest.fn().mockImplementation(() => ({
4
- observe: jest.fn(),
5
- unobserve: jest.fn(),
6
- disconnect: jest.fn(),
7
- }));
8
3
  describe('six-root', () => {
9
4
  it('renders', async () => {
10
5
  const page = await newSpecPage({
@@ -19,9 +14,7 @@ describe('six-root', () => {
19
14
  <slot name="header"></slot>
20
15
  </header>
21
16
  <nav class="six-root__left-sidebar" part="left-sidebar">
22
- <set-attributes>
23
17
  <slot name="left-sidebar"></slot>
24
- </set-attributes>
25
18
  </nav>
26
19
  <main part="main">
27
20
  <div class="six-root__container six-root__container--padded" part="container">
@@ -1 +1 @@
1
- {"version":3,"file":"six-root.spec.js","sourceRoot":"","sources":["../../../../src/components/six-root/test/six-root.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;IAClB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;CACtB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;KA0B7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { SixRoot } from '../six-root';\n\nglobal.ResizeObserver = jest.fn().mockImplementation(() => ({\n observe: jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n}));\n\ndescribe('six-root', () => {\n it('renders', async () => {\n const page = await newSpecPage({\n components: [SixRoot],\n html: `<six-root></six-root>`,\n });\n\n expect(page.root).toEqualHtml(`\n <six-root>\n <mock:shadow-root>\n <host class=\"six-root\">\n <header part=\"header\">\n <slot name=\"header\"></slot>\n </header>\n <nav class=\"six-root__left-sidebar\" part=\"left-sidebar\">\n <set-attributes>\n <slot name=\"left-sidebar\"></slot>\n </set-attributes>\n </nav>\n <main part=\"main\">\n <div class=\"six-root__container six-root__container--padded\" part=\"container\">\n <slot name=\"main\"></slot>\n </div>\n <div class=\"six-root__footer\">\n <slot name=\"footer\"></slot>\n </div>\n </main>\n <nav class=\"six-root__right-sidebar\" part=\"right-sidebar\">\n <slot name=\"right-sidebar\"></slot>\n </nav>\n </host>\n </mock:shadow-root>\n </six-root>\n `);\n });\n});\n"]}
1
+ {"version":3,"file":"six-root.spec.js","sourceRoot":"","sources":["../../../../src/components/six-root/test/six-root.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAwB7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { SixRoot } from '../six-root';\n\ndescribe('six-root', () => {\n it('renders', async () => {\n const page = await newSpecPage({\n components: [SixRoot],\n html: `<six-root></six-root>`,\n });\n\n expect(page.root).toEqualHtml(`\n <six-root>\n <mock:shadow-root>\n <host class=\"six-root\">\n <header part=\"header\">\n <slot name=\"header\"></slot>\n </header>\n <nav class=\"six-root__left-sidebar\" part=\"left-sidebar\">\n <slot name=\"left-sidebar\"></slot>\n </nav>\n <main part=\"main\">\n <div class=\"six-root__container six-root__container--padded\" part=\"container\">\n <slot name=\"main\"></slot>\n </div>\n <div class=\"six-root__footer\">\n <slot name=\"footer\"></slot>\n </div>\n </main>\n <nav class=\"six-root__right-sidebar\" part=\"right-sidebar\">\n <slot name=\"right-sidebar\"></slot>\n </nav>\n </host>\n </mock:shadow-root>\n </six-root>\n `);\n });\n});\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from './utils/error-messages';
2
+ export * from './utils/alert';
2
3
  //# sourceMappingURL=index.js.map