@six-group/ui-library 0.0.0-insider.804b89a → 0.0.0-insider.8112beb

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 (649) hide show
  1. package/dist/cjs/error-messages-6e8049a4.js +119 -0
  2. package/dist/cjs/error-messages-6e8049a4.js.map +1 -0
  3. package/dist/cjs/{form-control-f9bc25dd.js → form-control-8d64e974.js} +2 -2
  4. package/dist/cjs/{form-control-f9bc25dd.js.map → form-control-8d64e974.js.map} +1 -1
  5. package/dist/cjs/{index-3baddcdc.js → index-d7748d51.js} +53 -490
  6. package/dist/cjs/index-d7748d51.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +54 -101
  8. package/dist/cjs/index.cjs.js.map +1 -1
  9. package/dist/cjs/loader.cjs.js +2 -2
  10. package/dist/cjs/six-alert.cjs.entry.js +26 -3
  11. package/dist/cjs/six-alert.cjs.entry.js.map +1 -1
  12. package/dist/cjs/six-avatar.cjs.entry.js +2 -2
  13. package/dist/cjs/six-avatar.cjs.entry.js.map +1 -1
  14. package/dist/cjs/six-badge.cjs.entry.js +2 -2
  15. package/dist/cjs/six-badge.cjs.entry.js.map +1 -1
  16. package/dist/cjs/six-button.cjs.entry.js +3 -3
  17. package/dist/cjs/six-button.cjs.entry.js.map +1 -1
  18. package/dist/cjs/six-card.cjs.entry.js +2 -2
  19. package/dist/cjs/six-card.cjs.entry.js.map +1 -1
  20. package/dist/cjs/six-checkbox_2.cjs.entry.js +190 -0
  21. package/dist/cjs/six-checkbox_2.cjs.entry.js.map +1 -0
  22. package/dist/cjs/six-datepicker.cjs.entry.js +4 -3
  23. package/dist/cjs/six-datepicker.cjs.entry.js.map +1 -1
  24. package/dist/cjs/six-details.cjs.entry.js +2 -2
  25. package/dist/cjs/six-details.cjs.entry.js.map +1 -1
  26. package/dist/cjs/six-dialog.cjs.entry.js +3 -3
  27. package/dist/cjs/six-dialog.cjs.entry.js.map +1 -1
  28. package/dist/cjs/six-drawer.cjs.entry.js +3 -3
  29. package/dist/cjs/six-drawer.cjs.entry.js.map +1 -1
  30. package/dist/cjs/six-dropdown_2.cjs.entry.js +195 -125
  31. package/dist/cjs/six-dropdown_2.cjs.entry.js.map +1 -1
  32. package/dist/cjs/six-error-page.cjs.entry.js +1 -1
  33. package/dist/cjs/six-error.cjs.entry.js +1 -1
  34. package/dist/cjs/six-file-list-item.cjs.entry.js +2 -2
  35. package/dist/cjs/six-file-list-item.cjs.entry.js.map +1 -1
  36. package/dist/cjs/six-file-list.cjs.entry.js +1 -1
  37. package/dist/cjs/six-file-upload.cjs.entry.js +2 -2
  38. package/dist/cjs/six-file-upload.cjs.entry.js.map +1 -1
  39. package/dist/cjs/six-footer.cjs.entry.js +2 -2
  40. package/dist/cjs/six-footer.cjs.entry.js.map +1 -1
  41. package/dist/cjs/six-group-label.cjs.entry.js +4 -4
  42. package/dist/cjs/six-group-label.cjs.entry.js.map +1 -1
  43. package/dist/cjs/six-header.cjs.entry.js +4 -4
  44. package/dist/cjs/six-header.cjs.entry.js.map +1 -1
  45. package/dist/cjs/six-icon-button.cjs.entry.js +2 -2
  46. package/dist/cjs/six-icon-button.cjs.entry.js.map +1 -1
  47. package/dist/cjs/six-icon.cjs.entry.js +2 -2
  48. package/dist/cjs/six-icon.cjs.entry.js.map +1 -1
  49. package/dist/cjs/six-input.cjs.entry.js +6 -4
  50. package/dist/cjs/six-input.cjs.entry.js.map +1 -1
  51. package/dist/cjs/six-item-picker.cjs.entry.js +2 -2
  52. package/dist/cjs/six-item-picker.cjs.entry.js.map +1 -1
  53. package/dist/cjs/six-language-switcher.cjs.entry.js +1 -1
  54. package/dist/cjs/six-layout-grid.cjs.entry.js +1 -1
  55. package/dist/cjs/six-main-container.cjs.entry.js +1 -1
  56. package/dist/cjs/six-main-container.cjs.entry.js.map +1 -1
  57. package/dist/cjs/six-menu-divider.cjs.entry.js +2 -2
  58. package/dist/cjs/six-menu-divider.cjs.entry.js.map +1 -1
  59. package/dist/cjs/six-menu-label.cjs.entry.js +2 -2
  60. package/dist/cjs/six-menu-label.cjs.entry.js.map +1 -1
  61. package/dist/cjs/six-picto.cjs.entry.js +1 -1
  62. package/dist/cjs/six-progress-bar.cjs.entry.js +2 -2
  63. package/dist/cjs/six-progress-bar.cjs.entry.js.map +1 -1
  64. package/dist/cjs/six-progress-ring.cjs.entry.js +2 -2
  65. package/dist/cjs/six-progress-ring.cjs.entry.js.map +1 -1
  66. package/dist/cjs/six-radio.cjs.entry.js +2 -2
  67. package/dist/cjs/six-radio.cjs.entry.js.map +1 -1
  68. package/dist/cjs/six-range.cjs.entry.js +4 -4
  69. package/dist/cjs/six-range.cjs.entry.js.map +1 -1
  70. package/dist/cjs/six-root.cjs.entry.js +2 -21
  71. package/dist/cjs/six-root.cjs.entry.js.map +1 -1
  72. package/dist/cjs/six-search-field.cjs.entry.js +2 -2
  73. package/dist/cjs/six-search-field.cjs.entry.js.map +1 -1
  74. package/dist/cjs/six-select.cjs.entry.js +300 -169
  75. package/dist/cjs/six-select.cjs.entry.js.map +1 -1
  76. package/dist/cjs/six-sidebar-item-group.cjs.entry.js +3 -3
  77. package/dist/cjs/six-sidebar-item-group.cjs.entry.js.map +1 -1
  78. package/dist/cjs/six-sidebar-item.cjs.entry.js +1 -1
  79. package/dist/cjs/six-sidebar.cjs.entry.js +2 -2
  80. package/dist/cjs/six-sidebar.cjs.entry.js.map +1 -1
  81. package/dist/cjs/six-spinner.cjs.entry.js +2 -2
  82. package/dist/cjs/six-spinner.cjs.entry.js.map +1 -1
  83. package/dist/cjs/six-stage-indicator.cjs.entry.js +22 -0
  84. package/dist/cjs/six-stage-indicator.cjs.entry.js.map +1 -0
  85. package/dist/cjs/six-switch.cjs.entry.js +4 -4
  86. package/dist/cjs/six-switch.cjs.entry.js.map +1 -1
  87. package/dist/cjs/six-tab-group.cjs.entry.js +2 -2
  88. package/dist/cjs/six-tab-group.cjs.entry.js.map +1 -1
  89. package/dist/cjs/six-tab-panel.cjs.entry.js +2 -2
  90. package/dist/cjs/six-tab-panel.cjs.entry.js.map +1 -1
  91. package/dist/cjs/six-tab.cjs.entry.js +2 -2
  92. package/dist/cjs/six-tab.cjs.entry.js.map +1 -1
  93. package/dist/cjs/six-tag.cjs.entry.js +3 -3
  94. package/dist/cjs/six-tag.cjs.entry.js.map +1 -1
  95. package/dist/cjs/six-textarea.cjs.entry.js +4 -4
  96. package/dist/cjs/six-textarea.cjs.entry.js.map +1 -1
  97. package/dist/cjs/six-tile.cjs.entry.js +3 -3
  98. package/dist/cjs/six-tile.cjs.entry.js.map +1 -1
  99. package/dist/cjs/six-timepicker.cjs.entry.js +4 -4
  100. package/dist/cjs/six-timepicker.cjs.entry.js.map +1 -1
  101. package/dist/cjs/six-tooltip.cjs.entry.js +2 -2
  102. package/dist/cjs/six-tooltip.cjs.entry.js.map +1 -1
  103. package/dist/cjs/{slot-9821749e.js → slot-1b1232a1.js} +1 -3
  104. package/dist/cjs/slot-1b1232a1.js.map +1 -0
  105. package/dist/cjs/{types-0a6d66f6.js → types-d3da200b.js} +3 -1
  106. package/dist/cjs/types-d3da200b.js.map +1 -0
  107. package/dist/cjs/ui-library.cjs.js +3 -3
  108. package/dist/cjs/ui-library.cjs.js.map +1 -1
  109. package/dist/collection/collection-manifest.json +4 -5
  110. package/dist/collection/components/six-alert/six-alert.css +5 -1
  111. package/dist/collection/components/six-alert/six-alert.js +42 -6
  112. package/dist/collection/components/six-alert/six-alert.js.map +1 -1
  113. package/dist/collection/components/six-avatar/six-avatar.css +2 -2
  114. package/dist/collection/components/six-badge/six-badge.css +1 -1
  115. package/dist/collection/components/six-button/six-button.css +2 -1
  116. package/dist/collection/components/six-button/six-button.js +3 -2
  117. package/dist/collection/components/six-button/six-button.js.map +1 -1
  118. package/dist/collection/components/six-card/six-card.css +4 -5
  119. package/dist/collection/components/six-checkbox/six-checkbox.css +1 -1
  120. package/dist/collection/components/six-checkbox/six-checkbox.js +3 -2
  121. package/dist/collection/components/six-checkbox/six-checkbox.js.map +1 -1
  122. package/dist/collection/components/six-datepicker/six-date-formats.js +1 -0
  123. package/dist/collection/components/six-datepicker/six-date-formats.js.map +1 -1
  124. package/dist/collection/components/six-datepicker/six-datepicker.css +1 -1
  125. package/dist/collection/components/six-datepicker/six-datepicker.js +6 -4
  126. package/dist/collection/components/six-datepicker/six-datepicker.js.map +1 -1
  127. package/dist/collection/components/six-details/six-details.css +1 -5
  128. package/dist/collection/components/six-details/six-details.js.map +1 -1
  129. package/dist/collection/components/six-dialog/six-dialog.css +2 -2
  130. package/dist/collection/components/six-drawer/six-drawer.css +2 -2
  131. package/dist/collection/components/six-dropdown/six-dropdown.css +22 -7
  132. package/dist/collection/components/six-dropdown/six-dropdown.js +213 -123
  133. package/dist/collection/components/six-dropdown/six-dropdown.js.map +1 -1
  134. package/dist/collection/components/six-dropdown/test/six-dropdown.spec.js +54 -29
  135. package/dist/collection/components/six-dropdown/test/six-dropdown.spec.js.map +1 -1
  136. package/dist/collection/components/six-file-list-item/six-file-list-item.css +1 -1
  137. package/dist/collection/components/six-file-upload/six-file-upload.css +1 -4
  138. package/dist/collection/components/six-footer/six-footer.css +2 -2
  139. package/dist/collection/components/six-group-label/six-group-label.css +1 -1
  140. package/dist/collection/components/six-header/six-header.css +6 -2
  141. package/dist/collection/components/six-header/six-header.js +4 -3
  142. package/dist/collection/components/six-header/six-header.js.map +1 -1
  143. package/dist/collection/components/six-header/test/six-header.spec.js +4 -2
  144. package/dist/collection/components/six-header/test/six-header.spec.js.map +1 -1
  145. package/dist/collection/components/six-icon/six-icon.css +3 -7
  146. package/dist/collection/components/six-icon-button/six-icon-button.css +1 -1
  147. package/dist/collection/components/six-input/six-input.css +10 -1
  148. package/dist/collection/components/six-input/six-input.js +44 -16
  149. package/dist/collection/components/six-input/six-input.js.map +1 -1
  150. package/dist/collection/components/six-item-picker/six-item-picker.js.map +1 -1
  151. package/dist/collection/components/six-item-picker/types.js +2 -0
  152. package/dist/collection/components/six-item-picker/types.js.map +1 -1
  153. package/dist/collection/components/six-main-container/six-main-container.js.map +1 -1
  154. package/dist/collection/components/six-menu/six-menu.css +8 -7
  155. package/dist/collection/components/six-menu/six-menu.js +28 -6
  156. package/dist/collection/components/six-menu/six-menu.js.map +1 -1
  157. package/dist/collection/components/six-menu/test/six-menu.spec.js +6 -6
  158. package/dist/collection/components/six-menu/test/six-menu.spec.js.map +1 -1
  159. package/dist/collection/components/six-menu-divider/six-menu-divider.css +3 -2
  160. package/dist/collection/components/six-menu-item/six-menu-item.css +13 -2
  161. package/dist/collection/components/six-menu-item/six-menu-item.js +36 -7
  162. package/dist/collection/components/six-menu-item/six-menu-item.js.map +1 -1
  163. package/dist/collection/components/six-menu-label/six-menu-label.css +1 -1
  164. package/dist/collection/components/six-progress-bar/six-progress-bar.css +1 -1
  165. package/dist/collection/components/six-progress-ring/six-progress-ring.css +1 -1
  166. package/dist/collection/components/six-radio/six-radio.css +1 -1
  167. package/dist/collection/components/six-radio/six-radio.js +3 -2
  168. package/dist/collection/components/six-radio/six-radio.js.map +1 -1
  169. package/dist/collection/components/six-range/six-range.css +1 -1
  170. package/dist/collection/components/six-range/six-range.js +3 -2
  171. package/dist/collection/components/six-range/six-range.js.map +1 -1
  172. package/dist/collection/components/six-root/six-root.js +1 -69
  173. package/dist/collection/components/six-root/six-root.js.map +1 -1
  174. package/dist/collection/components/six-root/test/six-root.spec.js +0 -7
  175. package/dist/collection/components/six-root/test/six-root.spec.js.map +1 -1
  176. package/dist/collection/components/six-search-field/six-search-field.css +1 -1
  177. package/dist/collection/components/six-select/six-select.css +54 -66
  178. package/dist/collection/components/six-select/six-select.js +343 -168
  179. package/dist/collection/components/six-select/six-select.js.map +1 -1
  180. package/dist/collection/components/six-select/test/six-select.spec.js +31 -15
  181. package/dist/collection/components/six-select/test/six-select.spec.js.map +1 -1
  182. package/dist/collection/components/six-sidebar/six-sidebar.css +2 -2
  183. package/dist/collection/components/six-sidebar/six-sidebar.js +6 -4
  184. package/dist/collection/components/six-sidebar/six-sidebar.js.map +1 -1
  185. package/dist/collection/components/six-sidebar-item-group/six-sidebar-item-group.css +1 -1
  186. package/dist/collection/components/six-spinner/six-spinner.css +1 -1
  187. package/dist/collection/components/six-stage-indicator/six-stage-indicator.css +1 -1
  188. package/dist/collection/components/six-switch/six-switch.css +1 -1
  189. package/dist/collection/components/six-switch/six-switch.js +3 -2
  190. package/dist/collection/components/six-switch/six-switch.js.map +1 -1
  191. package/dist/collection/components/six-tab/six-tab.css +1 -1
  192. package/dist/collection/components/six-tab/six-tab.js +3 -2
  193. package/dist/collection/components/six-tab/six-tab.js.map +1 -1
  194. package/dist/collection/components/six-tab-group/six-tab-group.css +1 -1
  195. package/dist/collection/components/six-tab-group/six-tab-group.js +3 -2
  196. package/dist/collection/components/six-tab-group/six-tab-group.js.map +1 -1
  197. package/dist/collection/components/six-tab-panel/six-tab-panel.css +1 -1
  198. package/dist/collection/components/six-tag/six-tag.css +1 -1
  199. package/dist/collection/components/six-textarea/six-textarea.css +1 -1
  200. package/dist/collection/components/six-textarea/six-textarea.js +24 -16
  201. package/dist/collection/components/six-textarea/six-textarea.js.map +1 -1
  202. package/dist/collection/components/six-tile/six-tile.css +2 -2
  203. package/dist/collection/components/six-tile/six-tile.js.map +1 -1
  204. package/dist/collection/components/six-timepicker/six-timepicker.css +1 -1
  205. package/dist/collection/components/six-timepicker/six-timepicker.js +3 -2
  206. package/dist/collection/components/six-timepicker/six-timepicker.js.map +1 -1
  207. package/dist/collection/components/six-tooltip/six-tooltip.css +1 -1
  208. package/dist/collection/index.js +1 -0
  209. package/dist/collection/index.js.map +1 -1
  210. package/dist/collection/utils/alert.js +54 -0
  211. package/dist/collection/utils/alert.js.map +1 -0
  212. package/dist/collection/utils/error-messages.js +7 -0
  213. package/dist/collection/utils/error-messages.js.map +1 -1
  214. package/dist/collection/utils/slot.js +0 -1
  215. package/dist/collection/utils/slot.js.map +1 -1
  216. package/dist/components/index.js +50 -102
  217. package/dist/components/index.js.map +1 -1
  218. package/dist/components/six-alert.js +25 -2
  219. package/dist/components/six-alert.js.map +1 -1
  220. package/dist/components/six-avatar.js +1 -1
  221. package/dist/components/six-avatar.js.map +1 -1
  222. package/dist/components/six-badge.js +1 -1
  223. package/dist/components/six-badge.js.map +1 -1
  224. package/dist/components/six-button.js +1 -142
  225. package/dist/components/six-button.js.map +1 -1
  226. package/dist/components/six-button2.js +146 -0
  227. package/dist/components/six-button2.js.map +1 -0
  228. package/dist/components/six-card.js +1 -1
  229. package/dist/components/six-card.js.map +1 -1
  230. package/dist/components/six-checkbox.js +1 -161
  231. package/dist/components/six-checkbox.js.map +1 -1
  232. package/dist/components/six-checkbox2.js +165 -0
  233. package/dist/components/six-checkbox2.js.map +1 -0
  234. package/dist/components/six-datepicker.js +2 -1
  235. package/dist/components/six-datepicker.js.map +1 -1
  236. package/dist/components/six-details2.js +1 -1
  237. package/dist/components/six-details2.js.map +1 -1
  238. package/dist/components/six-dialog.js +1 -1
  239. package/dist/components/six-dialog.js.map +1 -1
  240. package/dist/components/six-drawer.js +1 -1
  241. package/dist/components/six-drawer.js.map +1 -1
  242. package/dist/components/six-dropdown2.js +199 -125
  243. package/dist/components/six-dropdown2.js.map +1 -1
  244. package/dist/components/six-file-list-item.js +1 -1
  245. package/dist/components/six-file-list-item.js.map +1 -1
  246. package/dist/components/six-file-upload.js +1 -1
  247. package/dist/components/six-file-upload.js.map +1 -1
  248. package/dist/components/six-footer.js +1 -1
  249. package/dist/components/six-footer.js.map +1 -1
  250. package/dist/components/six-group-label.js +1 -1
  251. package/dist/components/six-group-label.js.map +1 -1
  252. package/dist/components/six-header.js +9 -3
  253. package/dist/components/six-header.js.map +1 -1
  254. package/dist/components/six-icon-button2.js +1 -1
  255. package/dist/components/six-icon-button2.js.map +1 -1
  256. package/dist/components/six-icon2.js +1 -1
  257. package/dist/components/six-icon2.js.map +1 -1
  258. package/dist/components/six-input2.js +4 -1
  259. package/dist/components/six-input2.js.map +1 -1
  260. package/dist/components/six-item-picker2.js +2 -0
  261. package/dist/components/six-item-picker2.js.map +1 -1
  262. package/dist/components/six-main-container.js.map +1 -1
  263. package/dist/components/six-menu-divider.js +1 -1
  264. package/dist/components/six-menu-divider.js.map +1 -1
  265. package/dist/components/six-menu-item2.js +28 -5
  266. package/dist/components/six-menu-item2.js.map +1 -1
  267. package/dist/components/six-menu-label.js +1 -1
  268. package/dist/components/six-menu-label.js.map +1 -1
  269. package/dist/components/six-menu2.js +22 -6
  270. package/dist/components/six-menu2.js.map +1 -1
  271. package/dist/components/six-progress-bar.js +1 -1
  272. package/dist/components/six-progress-bar.js.map +1 -1
  273. package/dist/components/six-progress-ring.js +1 -1
  274. package/dist/components/six-progress-ring.js.map +1 -1
  275. package/dist/components/six-radio.js +1 -1
  276. package/dist/components/six-radio.js.map +1 -1
  277. package/dist/components/six-range.js +1 -1
  278. package/dist/components/six-range.js.map +1 -1
  279. package/dist/components/six-root.js +4 -33
  280. package/dist/components/six-root.js.map +1 -1
  281. package/dist/components/six-search-field.js +1 -1
  282. package/dist/components/six-search-field.js.map +1 -1
  283. package/dist/components/six-select.js +435 -185
  284. package/dist/components/six-select.js.map +1 -1
  285. package/dist/components/six-sidebar-item-group.js +1 -1
  286. package/dist/components/six-sidebar-item-group.js.map +1 -1
  287. package/dist/components/six-sidebar.js +1 -1
  288. package/dist/components/six-sidebar.js.map +1 -1
  289. package/dist/components/six-spinner2.js +1 -1
  290. package/dist/components/six-spinner2.js.map +1 -1
  291. package/dist/components/six-stage-indicator2.js +1 -1
  292. package/dist/components/six-stage-indicator2.js.map +1 -1
  293. package/dist/components/six-switch.js +1 -1
  294. package/dist/components/six-switch.js.map +1 -1
  295. package/dist/components/six-tab-group.js +1 -1
  296. package/dist/components/six-tab-group.js.map +1 -1
  297. package/dist/components/six-tab-panel.js +1 -1
  298. package/dist/components/six-tab-panel.js.map +1 -1
  299. package/dist/components/six-tab.js +1 -1
  300. package/dist/components/six-tab.js.map +1 -1
  301. package/dist/components/six-tag.js +98 -1
  302. package/dist/components/six-tag.js.map +1 -1
  303. package/dist/components/six-textarea.js +1 -1
  304. package/dist/components/six-textarea.js.map +1 -1
  305. package/dist/components/six-tile.js +1 -1
  306. package/dist/components/six-tile.js.map +1 -1
  307. package/dist/components/six-timepicker2.js +1 -1
  308. package/dist/components/six-timepicker2.js.map +1 -1
  309. package/dist/components/six-tooltip2.js +1 -1
  310. package/dist/components/six-tooltip2.js.map +1 -1
  311. package/dist/components/slot.js +1 -2
  312. package/dist/components/slot.js.map +1 -1
  313. package/dist/components.d.ts +1 -21
  314. package/dist/components.json +566 -227
  315. package/dist/esm/error-messages-1eaaad23.js +115 -0
  316. package/dist/esm/error-messages-1eaaad23.js.map +1 -0
  317. package/dist/esm/{form-control-6b30894f.js → form-control-d403a9cf.js} +2 -2
  318. package/dist/esm/{form-control-6b30894f.js.map → form-control-d403a9cf.js.map} +1 -1
  319. package/dist/esm/{index-17d8173e.js → index-79d4ef67.js} +53 -490
  320. package/dist/esm/index-79d4ef67.js.map +1 -0
  321. package/dist/esm/index.js +51 -100
  322. package/dist/esm/index.js.map +1 -1
  323. package/dist/esm/loader.js +3 -3
  324. package/dist/esm/six-alert.entry.js +26 -3
  325. package/dist/esm/six-alert.entry.js.map +1 -1
  326. package/dist/esm/six-avatar.entry.js +2 -2
  327. package/dist/esm/six-avatar.entry.js.map +1 -1
  328. package/dist/esm/six-badge.entry.js +2 -2
  329. package/dist/esm/six-badge.entry.js.map +1 -1
  330. package/dist/esm/six-button.entry.js +3 -3
  331. package/dist/esm/six-button.entry.js.map +1 -1
  332. package/dist/esm/six-card.entry.js +2 -2
  333. package/dist/esm/six-card.entry.js.map +1 -1
  334. package/dist/esm/six-checkbox_2.entry.js +185 -0
  335. package/dist/esm/six-checkbox_2.entry.js.map +1 -0
  336. package/dist/esm/six-datepicker.entry.js +4 -3
  337. package/dist/esm/six-datepicker.entry.js.map +1 -1
  338. package/dist/esm/six-details.entry.js +2 -2
  339. package/dist/esm/six-details.entry.js.map +1 -1
  340. package/dist/esm/six-dialog.entry.js +3 -3
  341. package/dist/esm/six-dialog.entry.js.map +1 -1
  342. package/dist/esm/six-drawer.entry.js +3 -3
  343. package/dist/esm/six-drawer.entry.js.map +1 -1
  344. package/dist/esm/six-dropdown_2.entry.js +196 -126
  345. package/dist/esm/six-dropdown_2.entry.js.map +1 -1
  346. package/dist/esm/six-error-page.entry.js +1 -1
  347. package/dist/esm/six-error.entry.js +1 -1
  348. package/dist/esm/six-file-list-item.entry.js +2 -2
  349. package/dist/esm/six-file-list-item.entry.js.map +1 -1
  350. package/dist/esm/six-file-list.entry.js +1 -1
  351. package/dist/esm/six-file-upload.entry.js +2 -2
  352. package/dist/esm/six-file-upload.entry.js.map +1 -1
  353. package/dist/esm/six-footer.entry.js +2 -2
  354. package/dist/esm/six-footer.entry.js.map +1 -1
  355. package/dist/esm/six-group-label.entry.js +4 -4
  356. package/dist/esm/six-group-label.entry.js.map +1 -1
  357. package/dist/esm/six-header.entry.js +4 -4
  358. package/dist/esm/six-header.entry.js.map +1 -1
  359. package/dist/esm/six-icon-button.entry.js +2 -2
  360. package/dist/esm/six-icon-button.entry.js.map +1 -1
  361. package/dist/esm/six-icon.entry.js +2 -2
  362. package/dist/esm/six-icon.entry.js.map +1 -1
  363. package/dist/esm/six-input.entry.js +6 -4
  364. package/dist/esm/six-input.entry.js.map +1 -1
  365. package/dist/esm/six-item-picker.entry.js +2 -2
  366. package/dist/esm/six-item-picker.entry.js.map +1 -1
  367. package/dist/esm/six-language-switcher.entry.js +1 -1
  368. package/dist/esm/six-layout-grid.entry.js +1 -1
  369. package/dist/esm/six-main-container.entry.js +1 -1
  370. package/dist/esm/six-main-container.entry.js.map +1 -1
  371. package/dist/esm/six-menu-divider.entry.js +2 -2
  372. package/dist/esm/six-menu-divider.entry.js.map +1 -1
  373. package/dist/esm/six-menu-label.entry.js +2 -2
  374. package/dist/esm/six-menu-label.entry.js.map +1 -1
  375. package/dist/esm/six-picto.entry.js +1 -1
  376. package/dist/esm/six-progress-bar.entry.js +2 -2
  377. package/dist/esm/six-progress-bar.entry.js.map +1 -1
  378. package/dist/esm/six-progress-ring.entry.js +2 -2
  379. package/dist/esm/six-progress-ring.entry.js.map +1 -1
  380. package/dist/esm/six-radio.entry.js +2 -2
  381. package/dist/esm/six-radio.entry.js.map +1 -1
  382. package/dist/esm/six-range.entry.js +4 -4
  383. package/dist/esm/six-range.entry.js.map +1 -1
  384. package/dist/esm/six-root.entry.js +2 -21
  385. package/dist/esm/six-root.entry.js.map +1 -1
  386. package/dist/esm/six-search-field.entry.js +2 -2
  387. package/dist/esm/six-search-field.entry.js.map +1 -1
  388. package/dist/esm/six-select.entry.js +300 -169
  389. package/dist/esm/six-select.entry.js.map +1 -1
  390. package/dist/esm/six-sidebar-item-group.entry.js +3 -3
  391. package/dist/esm/six-sidebar-item-group.entry.js.map +1 -1
  392. package/dist/esm/six-sidebar-item.entry.js +1 -1
  393. package/dist/esm/six-sidebar.entry.js +2 -2
  394. package/dist/esm/six-sidebar.entry.js.map +1 -1
  395. package/dist/esm/six-spinner.entry.js +2 -2
  396. package/dist/esm/six-spinner.entry.js.map +1 -1
  397. package/dist/esm/six-stage-indicator.entry.js +18 -0
  398. package/dist/esm/six-stage-indicator.entry.js.map +1 -0
  399. package/dist/esm/six-switch.entry.js +4 -4
  400. package/dist/esm/six-switch.entry.js.map +1 -1
  401. package/dist/esm/six-tab-group.entry.js +2 -2
  402. package/dist/esm/six-tab-group.entry.js.map +1 -1
  403. package/dist/esm/six-tab-panel.entry.js +2 -2
  404. package/dist/esm/six-tab-panel.entry.js.map +1 -1
  405. package/dist/esm/six-tab.entry.js +2 -2
  406. package/dist/esm/six-tab.entry.js.map +1 -1
  407. package/dist/esm/six-tag.entry.js +3 -3
  408. package/dist/esm/six-tag.entry.js.map +1 -1
  409. package/dist/esm/six-textarea.entry.js +4 -4
  410. package/dist/esm/six-textarea.entry.js.map +1 -1
  411. package/dist/esm/six-tile.entry.js +3 -3
  412. package/dist/esm/six-tile.entry.js.map +1 -1
  413. package/dist/esm/six-timepicker.entry.js +4 -4
  414. package/dist/esm/six-timepicker.entry.js.map +1 -1
  415. package/dist/esm/six-tooltip.entry.js +2 -2
  416. package/dist/esm/six-tooltip.entry.js.map +1 -1
  417. package/dist/esm/{slot-41bc439a.js → slot-56531341.js} +2 -3
  418. package/dist/esm/slot-56531341.js.map +1 -0
  419. package/dist/esm/{types-07748c42.js → types-a07bb999.js} +3 -1
  420. package/dist/esm/types-a07bb999.js.map +1 -0
  421. package/dist/esm/ui-library.js +4 -4
  422. package/dist/esm/ui-library.js.map +1 -1
  423. package/dist/types/components/six-alert/six-alert.d.ts +5 -2
  424. package/dist/types/components/six-dropdown/six-dropdown.d.ts +28 -9
  425. package/dist/types/components/six-input/six-input.d.ts +4 -0
  426. package/dist/types/components/six-menu/six-menu.d.ts +4 -0
  427. package/dist/types/components/six-menu-item/six-menu-item.d.ts +7 -1
  428. package/dist/types/components/six-root/six-root.d.ts +0 -13
  429. package/dist/types/components/six-select/six-select.d.ts +27 -12
  430. package/dist/types/components.d.ts +60 -56
  431. package/dist/types/index.d.ts +1 -0
  432. package/dist/types/types.d.ts +1 -0
  433. package/dist/types/utils/alert.d.ts +10 -0
  434. package/dist/types/utils/error-messages.d.ts +1 -0
  435. package/dist/types/utils/slot.d.ts +0 -1
  436. package/dist/ui-library/index.esm.js +1 -1
  437. package/dist/ui-library/index.esm.js.map +1 -1
  438. package/dist/ui-library/p-0440335d.entry.js +2 -0
  439. package/dist/ui-library/{p-c12a94ce.entry.js.map → p-0440335d.entry.js.map} +1 -1
  440. package/dist/ui-library/p-04cc397c.entry.js +2 -0
  441. package/dist/ui-library/{p-58661675.entry.js.map → p-04cc397c.entry.js.map} +1 -1
  442. package/dist/ui-library/p-0cebf1d2.js +2 -0
  443. package/dist/ui-library/p-0cebf1d2.js.map +1 -0
  444. package/dist/ui-library/p-0edd3091.entry.js +2 -0
  445. package/dist/ui-library/{p-a0658b26.entry.js.map → p-0edd3091.entry.js.map} +1 -1
  446. package/dist/ui-library/p-150b7664.entry.js +2 -0
  447. package/dist/ui-library/{p-a4e4620c.entry.js.map → p-150b7664.entry.js.map} +1 -1
  448. package/dist/ui-library/{p-c86aa5b3.entry.js → p-1f5840b5.entry.js} +2 -2
  449. package/dist/ui-library/p-28cc013e.entry.js +2 -0
  450. package/dist/ui-library/p-28cc013e.entry.js.map +1 -0
  451. package/dist/ui-library/p-3424bbc0.entry.js +2 -0
  452. package/dist/ui-library/p-3424bbc0.entry.js.map +1 -0
  453. package/dist/ui-library/p-348c68a8.entry.js +2 -0
  454. package/dist/ui-library/p-348c68a8.entry.js.map +1 -0
  455. package/dist/ui-library/p-3723ca06.entry.js +2 -0
  456. package/dist/ui-library/p-3723ca06.entry.js.map +1 -0
  457. package/dist/ui-library/p-37aeac5e.entry.js +2 -0
  458. package/dist/ui-library/{p-19a61686.entry.js.map → p-37aeac5e.entry.js.map} +1 -1
  459. package/dist/ui-library/p-3d7fb086.entry.js +2 -0
  460. package/dist/ui-library/p-3d7fb086.entry.js.map +1 -0
  461. package/dist/ui-library/{p-74a714c0.entry.js → p-457f7373.entry.js} +2 -2
  462. package/dist/ui-library/{p-74a714c0.entry.js.map → p-457f7373.entry.js.map} +1 -1
  463. package/dist/ui-library/p-4a667f31.entry.js +2 -0
  464. package/dist/ui-library/p-4a667f31.entry.js.map +1 -0
  465. package/dist/ui-library/p-50dae789.entry.js +2 -0
  466. package/dist/ui-library/{p-6aa2929a.entry.js.map → p-50dae789.entry.js.map} +1 -1
  467. package/dist/ui-library/{p-c1675a45.entry.js → p-546e33d9.entry.js} +2 -2
  468. package/dist/ui-library/{p-1d0c5929.entry.js → p-5db3a705.entry.js} +2 -2
  469. package/dist/ui-library/{p-1d0c5929.entry.js.map → p-5db3a705.entry.js.map} +1 -1
  470. package/dist/ui-library/{p-6907a7dc.js → p-61e66671.js} +2 -2
  471. package/dist/ui-library/p-6296779b.entry.js +2 -0
  472. package/dist/ui-library/{p-bdb79948.entry.js.map → p-6296779b.entry.js.map} +1 -1
  473. package/dist/ui-library/p-64b4755d.entry.js +2 -0
  474. package/dist/ui-library/{p-3187bc23.entry.js.map → p-64b4755d.entry.js.map} +1 -1
  475. package/dist/ui-library/p-664b7913.entry.js +2 -0
  476. package/dist/ui-library/p-664b7913.entry.js.map +1 -0
  477. package/dist/ui-library/p-6c1b046e.entry.js +2 -0
  478. package/dist/ui-library/p-6c1b046e.entry.js.map +1 -0
  479. package/dist/ui-library/p-7115316e.entry.js +2 -0
  480. package/dist/ui-library/p-7115316e.entry.js.map +1 -0
  481. package/dist/ui-library/{p-0861899a.js → p-862d474e.js} +1 -1
  482. package/dist/ui-library/p-862d474e.js.map +1 -0
  483. package/dist/ui-library/p-870b988d.entry.js +2 -0
  484. package/dist/ui-library/{p-479d8087.entry.js.map → p-870b988d.entry.js.map} +1 -1
  485. package/dist/ui-library/{p-d310a6dd.entry.js → p-884c5cf9.entry.js} +2 -2
  486. package/dist/ui-library/p-8888a367.entry.js +2 -0
  487. package/dist/ui-library/{p-ee71e3a3.entry.js.map → p-8888a367.entry.js.map} +1 -1
  488. package/dist/ui-library/{p-816f857d.entry.js → p-935c78a7.entry.js} +2 -2
  489. package/dist/ui-library/p-961bd001.entry.js +2 -0
  490. package/dist/ui-library/{p-fcd57e0a.entry.js.map → p-961bd001.entry.js.map} +1 -1
  491. package/dist/ui-library/{p-bee65dd9.entry.js → p-9b08068d.entry.js} +2 -2
  492. package/dist/ui-library/p-9b08068d.entry.js.map +1 -0
  493. package/dist/ui-library/p-9c79341d.entry.js +2 -0
  494. package/dist/ui-library/{p-3d54ecf2.entry.js.map → p-9c79341d.entry.js.map} +1 -1
  495. package/dist/ui-library/{p-cd35b3c6.entry.js → p-a9c159f2.entry.js} +2 -2
  496. package/dist/ui-library/p-ac57ba5c.entry.js +2 -0
  497. package/dist/ui-library/{p-ada23fe3.entry.js.map → p-ac57ba5c.entry.js.map} +1 -1
  498. package/dist/ui-library/p-ae45f6f4.entry.js +2 -0
  499. package/dist/ui-library/p-ae45f6f4.entry.js.map +1 -0
  500. package/dist/ui-library/p-af15381b.js +3 -0
  501. package/dist/ui-library/p-af15381b.js.map +1 -0
  502. package/dist/ui-library/p-b1a5f3cd.entry.js +2 -0
  503. package/dist/ui-library/p-b1a5f3cd.entry.js.map +1 -0
  504. package/dist/ui-library/p-b385a241.entry.js +2 -0
  505. package/dist/ui-library/{p-b5ac1219.entry.js.map → p-b385a241.entry.js.map} +1 -1
  506. package/dist/ui-library/p-c2c7370b.entry.js +2 -0
  507. package/dist/ui-library/{p-911eb578.entry.js.map → p-c2c7370b.entry.js.map} +1 -1
  508. package/dist/ui-library/p-caea1eb6.entry.js +2 -0
  509. package/dist/ui-library/{p-ce373da5.entry.js.map → p-caea1eb6.entry.js.map} +1 -1
  510. package/dist/ui-library/{p-d2cf4280.entry.js → p-d3f5b9a8.entry.js} +2 -2
  511. package/dist/ui-library/p-d42b18eb.entry.js +2 -0
  512. package/dist/ui-library/{p-7432d409.entry.js.map → p-d42b18eb.entry.js.map} +1 -1
  513. package/dist/ui-library/p-d769cc36.entry.js +2 -0
  514. package/dist/ui-library/p-d769cc36.entry.js.map +1 -0
  515. package/dist/ui-library/p-d95e292e.entry.js +2 -0
  516. package/dist/ui-library/{p-c07b1240.entry.js.map → p-d95e292e.entry.js.map} +1 -1
  517. package/dist/ui-library/p-da7f3dbd.entry.js +2 -0
  518. package/dist/ui-library/p-da7f3dbd.entry.js.map +1 -0
  519. package/dist/ui-library/p-dfb89b6a.entry.js +2 -0
  520. package/dist/ui-library/p-dfb89b6a.entry.js.map +1 -0
  521. package/dist/ui-library/p-e080d5b6.js +2 -0
  522. package/dist/ui-library/p-e080d5b6.js.map +1 -0
  523. package/dist/ui-library/p-e6032375.entry.js +2 -0
  524. package/dist/ui-library/p-e6032375.entry.js.map +1 -0
  525. package/dist/ui-library/p-e60d2324.entry.js +2 -0
  526. package/dist/ui-library/p-e60d2324.entry.js.map +1 -0
  527. package/dist/ui-library/p-e8298c6e.entry.js +2 -0
  528. package/dist/ui-library/{p-882fbf6f.entry.js.map → p-e8298c6e.entry.js.map} +1 -1
  529. package/dist/ui-library/p-ed279165.entry.js +2 -0
  530. package/dist/ui-library/p-ed279165.entry.js.map +1 -0
  531. package/dist/ui-library/p-ed61b75c.entry.js +2 -0
  532. package/dist/ui-library/p-ed61b75c.entry.js.map +1 -0
  533. package/dist/ui-library/p-ee872c04.entry.js +2 -0
  534. package/dist/ui-library/p-ee872c04.entry.js.map +1 -0
  535. package/dist/ui-library/p-f1ab3384.entry.js +2 -0
  536. package/dist/ui-library/{p-23c02c98.entry.js.map → p-f1ab3384.entry.js.map} +1 -1
  537. package/dist/ui-library/p-f4ef481c.entry.js +2 -0
  538. package/dist/ui-library/p-f4ef481c.entry.js.map +1 -0
  539. package/dist/ui-library/{p-f73a6bdc.entry.js → p-f8cbb8da.entry.js} +2 -2
  540. package/dist/ui-library/ui-library.css +1 -10
  541. package/dist/ui-library/ui-library.esm.js +1 -1
  542. package/dist/ui-library/ui-library.esm.js.map +1 -1
  543. package/package.json +5 -8
  544. package/dist/cjs/index-3baddcdc.js.map +0 -1
  545. package/dist/cjs/set-attributes_2.cjs.entry.js +0 -73
  546. package/dist/cjs/set-attributes_2.cjs.entry.js.map +0 -1
  547. package/dist/cjs/six-checkbox.cjs.entry.js +0 -127
  548. package/dist/cjs/six-checkbox.cjs.entry.js.map +0 -1
  549. package/dist/cjs/six-menu-item.cjs.entry.js +0 -63
  550. package/dist/cjs/six-menu-item.cjs.entry.js.map +0 -1
  551. package/dist/cjs/slot-9821749e.js.map +0 -1
  552. package/dist/cjs/types-0a6d66f6.js.map +0 -1
  553. package/dist/collection/wrappers/set-attributes/set-attributes.js +0 -74
  554. package/dist/collection/wrappers/set-attributes/set-attributes.js.map +0 -1
  555. package/dist/collection/wrappers/set-attributes/test/set-attributes.spec.js +0 -16
  556. package/dist/collection/wrappers/set-attributes/test/set-attributes.spec.js.map +0 -1
  557. package/dist/components/set-attributes.d.ts +0 -11
  558. package/dist/components/set-attributes.js +0 -8
  559. package/dist/components/set-attributes.js.map +0 -1
  560. package/dist/components/set-attributes2.js +0 -73
  561. package/dist/components/set-attributes2.js.map +0 -1
  562. package/dist/components/six-tag2.js +0 -102
  563. package/dist/components/six-tag2.js.map +0 -1
  564. package/dist/esm/index-17d8173e.js.map +0 -1
  565. package/dist/esm/set-attributes_2.entry.js +0 -68
  566. package/dist/esm/set-attributes_2.entry.js.map +0 -1
  567. package/dist/esm/six-checkbox.entry.js +0 -123
  568. package/dist/esm/six-checkbox.entry.js.map +0 -1
  569. package/dist/esm/six-menu-item.entry.js +0 -59
  570. package/dist/esm/six-menu-item.entry.js.map +0 -1
  571. package/dist/esm/slot-41bc439a.js.map +0 -1
  572. package/dist/esm/types-07748c42.js.map +0 -1
  573. package/dist/types/wrappers/set-attributes/set-attributes.d.ts +0 -9
  574. package/dist/ui-library/p-0861899a.js.map +0 -1
  575. package/dist/ui-library/p-0a81b42c.entry.js +0 -2
  576. package/dist/ui-library/p-0a81b42c.entry.js.map +0 -1
  577. package/dist/ui-library/p-0beec94f.js +0 -3
  578. package/dist/ui-library/p-0beec94f.js.map +0 -1
  579. package/dist/ui-library/p-0e7332db.entry.js +0 -2
  580. package/dist/ui-library/p-0e7332db.entry.js.map +0 -1
  581. package/dist/ui-library/p-178f5782.entry.js +0 -2
  582. package/dist/ui-library/p-178f5782.entry.js.map +0 -1
  583. package/dist/ui-library/p-19a61686.entry.js +0 -2
  584. package/dist/ui-library/p-23c02c98.entry.js +0 -2
  585. package/dist/ui-library/p-28221447.entry.js +0 -2
  586. package/dist/ui-library/p-28221447.entry.js.map +0 -1
  587. package/dist/ui-library/p-2b59175f.entry.js +0 -2
  588. package/dist/ui-library/p-2b59175f.entry.js.map +0 -1
  589. package/dist/ui-library/p-2eed9d8d.entry.js +0 -2
  590. package/dist/ui-library/p-2eed9d8d.entry.js.map +0 -1
  591. package/dist/ui-library/p-3187bc23.entry.js +0 -2
  592. package/dist/ui-library/p-32e1a5ab.entry.js +0 -2
  593. package/dist/ui-library/p-32e1a5ab.entry.js.map +0 -1
  594. package/dist/ui-library/p-3d54ecf2.entry.js +0 -2
  595. package/dist/ui-library/p-4229f7e8.entry.js +0 -2
  596. package/dist/ui-library/p-4229f7e8.entry.js.map +0 -1
  597. package/dist/ui-library/p-479d8087.entry.js +0 -2
  598. package/dist/ui-library/p-49aa8d1e.entry.js +0 -2
  599. package/dist/ui-library/p-49aa8d1e.entry.js.map +0 -1
  600. package/dist/ui-library/p-58661675.entry.js +0 -2
  601. package/dist/ui-library/p-5d43ea07.entry.js +0 -2
  602. package/dist/ui-library/p-5d43ea07.entry.js.map +0 -1
  603. package/dist/ui-library/p-6aa2929a.entry.js +0 -2
  604. package/dist/ui-library/p-7432d409.entry.js +0 -2
  605. package/dist/ui-library/p-76825395.entry.js +0 -2
  606. package/dist/ui-library/p-76825395.entry.js.map +0 -1
  607. package/dist/ui-library/p-882fbf6f.entry.js +0 -2
  608. package/dist/ui-library/p-88fd4973.entry.js +0 -2
  609. package/dist/ui-library/p-88fd4973.entry.js.map +0 -1
  610. package/dist/ui-library/p-8b750c9e.entry.js +0 -2
  611. package/dist/ui-library/p-8b750c9e.entry.js.map +0 -1
  612. package/dist/ui-library/p-911eb578.entry.js +0 -2
  613. package/dist/ui-library/p-93fcda4a.entry.js +0 -2
  614. package/dist/ui-library/p-93fcda4a.entry.js.map +0 -1
  615. package/dist/ui-library/p-981b3228.entry.js +0 -2
  616. package/dist/ui-library/p-981b3228.entry.js.map +0 -1
  617. package/dist/ui-library/p-9b1ff147.entry.js +0 -2
  618. package/dist/ui-library/p-9b1ff147.entry.js.map +0 -1
  619. package/dist/ui-library/p-a0658b26.entry.js +0 -2
  620. package/dist/ui-library/p-a4e4620c.entry.js +0 -2
  621. package/dist/ui-library/p-ada23fe3.entry.js +0 -2
  622. package/dist/ui-library/p-b5ac1219.entry.js +0 -2
  623. package/dist/ui-library/p-ba247565.entry.js +0 -2
  624. package/dist/ui-library/p-ba247565.entry.js.map +0 -1
  625. package/dist/ui-library/p-bdb79948.entry.js +0 -2
  626. package/dist/ui-library/p-bee65dd9.entry.js.map +0 -1
  627. package/dist/ui-library/p-c07b1240.entry.js +0 -2
  628. package/dist/ui-library/p-c12a94ce.entry.js +0 -2
  629. package/dist/ui-library/p-c2df8c27.entry.js +0 -2
  630. package/dist/ui-library/p-c2df8c27.entry.js.map +0 -1
  631. package/dist/ui-library/p-ce373da5.entry.js +0 -2
  632. package/dist/ui-library/p-dfb6bff6.entry.js +0 -2
  633. package/dist/ui-library/p-dfb6bff6.entry.js.map +0 -1
  634. package/dist/ui-library/p-ee71e3a3.entry.js +0 -2
  635. package/dist/ui-library/p-ef317d69.entry.js +0 -2
  636. package/dist/ui-library/p-ef317d69.entry.js.map +0 -1
  637. package/dist/ui-library/p-f385f1c2.entry.js +0 -2
  638. package/dist/ui-library/p-f385f1c2.entry.js.map +0 -1
  639. package/dist/ui-library/p-faa04bb5.js +0 -2
  640. package/dist/ui-library/p-faa04bb5.js.map +0 -1
  641. package/dist/ui-library/p-fcd57e0a.entry.js +0 -2
  642. /package/dist/ui-library/{p-c86aa5b3.entry.js.map → p-1f5840b5.entry.js.map} +0 -0
  643. /package/dist/ui-library/{p-c1675a45.entry.js.map → p-546e33d9.entry.js.map} +0 -0
  644. /package/dist/ui-library/{p-6907a7dc.js.map → p-61e66671.js.map} +0 -0
  645. /package/dist/ui-library/{p-d310a6dd.entry.js.map → p-884c5cf9.entry.js.map} +0 -0
  646. /package/dist/ui-library/{p-816f857d.entry.js.map → p-935c78a7.entry.js.map} +0 -0
  647. /package/dist/ui-library/{p-cd35b3c6.entry.js.map → p-a9c159f2.entry.js.map} +0 -0
  648. /package/dist/ui-library/{p-d2cf4280.entry.js.map → p-d3f5b9a8.entry.js.map} +0 -0
  649. /package/dist/ui-library/{p-f73a6bdc.entry.js.map → p-f8cbb8da.entry.js.map} +0 -0
@@ -4,7 +4,7 @@ import { EventListeners } from "../../utils/event-listeners";
4
4
  import { debounce } from "../../utils/execution-control";
5
5
  const isFocusedMenuItem = (menuItem) => { var _a, _b, _c; return (_c = (_b = (_a = menuItem === null || menuItem === void 0 ? void 0 : menuItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.menu-item')) === null || _b === void 0 ? void 0 : _b.classList) === null || _c === void 0 ? void 0 : _c.contains('menu-item--focused'); };
6
6
  const isSIXMenuItemElement = (el) => (el === null || el === void 0 ? void 0 : el.tagName.toLowerCase()) === 'six-menu-item';
7
- const mapToMenuItem = ({ value, label }) => h("six-menu-item", { value: value }, label);
7
+ const mapToMenuItem = ({ value, label }) => (h("six-menu-item", { key: value, value: value }, label));
8
8
  const DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING = 5;
9
9
  const DEFAULT_SIX_MENU_ITEM_HEIGHT = 64;
10
10
  /**
@@ -33,6 +33,7 @@ export class SixMenu {
33
33
  this.virtualScroll = false;
34
34
  this.itemSize = 10;
35
35
  this.scrollingDebounce = 15;
36
+ this.disableKeyboardHandling = false;
36
37
  this.scrollingIndex = 0;
37
38
  this.sixMenuItemHeight = DEFAULT_SIX_MENU_ITEM_HEIGHT;
38
39
  }
@@ -136,6 +137,9 @@ export class SixMenu {
136
137
  }
137
138
  }
138
139
  handleKeyDown(event) {
140
+ if (this.disableKeyboardHandling) {
141
+ return;
142
+ }
139
143
  // Make a selection when pressing enter
140
144
  if (event.key === 'Enter') {
141
145
  const activeItem = this.getActiveItem();
@@ -209,13 +213,12 @@ export class SixMenu {
209
213
  }
210
214
  return this.items
211
215
  .slice(this.scrollingIndex, Math.min(this.items.length, this.itemSize + this.scrollingIndex))
212
- .map(mapToMenuItem);
216
+ .map(({ value, label }) => (h("six-menu-item", { checkType: "check", key: value, value: value }, label)));
213
217
  }
214
218
  render() {
215
219
  return (h("div", { ref: (el) => (this.menuWrapper = el), style: this.getMenuWrapperStyle(), part: "wrapper", class: {
216
220
  menu: true,
217
- 'menu--noshadow': this.removeBoxShadow,
218
- 'menu__wrapper--scrollable': this.getItemsShown() > 0,
221
+ '.no-shadow': this.removeBoxShadow,
219
222
  } }, h("div", { ref: (el) => (this.menu = el), part: "base", role: "menu", onClick: this.handleClick, onKeyDown: this.handleKeyDown, tabIndex: 0, style: this.getMenuContainerStyle() }, h("slot", null), this.renderItems()), this.virtualScroll && h("div", { style: this.getScrollbarGhostStyle() })));
220
223
  }
221
224
  static get is() { return "six-menu"; }
@@ -342,6 +345,24 @@ export class SixMenu {
342
345
  "attribute": "scrolling-debounce",
343
346
  "reflect": false,
344
347
  "defaultValue": "15"
348
+ },
349
+ "disableKeyboardHandling": {
350
+ "type": "boolean",
351
+ "mutable": false,
352
+ "complexType": {
353
+ "original": "boolean",
354
+ "resolved": "boolean",
355
+ "references": {}
356
+ },
357
+ "required": false,
358
+ "optional": false,
359
+ "docs": {
360
+ "tags": [],
361
+ "text": "Internal: Disables handling of key presses."
362
+ },
363
+ "attribute": "disable-keyboard-handling",
364
+ "reflect": false,
365
+ "defaultValue": "false"
345
366
  }
346
367
  };
347
368
  }
@@ -381,8 +402,9 @@ export class SixMenu {
381
402
  "complexType": {
382
403
  "signature": "(key: string) => Promise<void>",
383
404
  "parameters": [{
384
- "tags": [],
385
- "text": ""
405
+ "name": "key",
406
+ "type": "string",
407
+ "docs": ""
386
408
  }],
387
409
  "references": {
388
410
  "Promise": {
@@ -1 +1 @@
1
- {"version":3,"file":"six-menu.js","sourceRoot":"","sources":["../../../src/components/six-menu/six-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State } from '@stencil/core';\nimport { getTextContent } from '../../utils/slot';\nimport { StyleDeclaration } from '../../utils/types';\nimport { EventListeners } from '../../utils/event-listeners';\nimport { debounce } from '../../utils/execution-control';\n\nexport interface SixMenuItemData {\n label: string;\n value: string;\n}\n\nexport interface SixMenuItemSelectedPayload {\n name: string;\n item: HTMLSixMenuItemElement;\n}\n\nconst isFocusedMenuItem = (menuItem: HTMLSixMenuItemElement) =>\n menuItem?.shadowRoot?.querySelector('.menu-item')?.classList?.contains('menu-item--focused');\n\nconst isSIXMenuItemElement = (el?: Element): el is HTMLSixMenuItemElement =>\n el?.tagName.toLowerCase() === 'six-menu-item';\n\nconst mapToMenuItem = ({ value, label }: SixMenuItemData) => <six-menu-item value={value}>{label}</six-menu-item>;\n\nconst DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING = 5;\n\nconst DEFAULT_SIX_MENU_ITEM_HEIGHT = 64;\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 menu's content, including menu items, menu dividers, and menu labels.\n *\n * @part base - The component's base wrapper.\n */\n@Component({\n tag: 'six-menu',\n styleUrl: 'six-menu.scss',\n shadow: true,\n})\nexport class SixMenu {\n private readonly eventListeners = new EventListeners();\n\n private menu?: HTMLElement;\n private menuWrapper?: HTMLElement;\n private typeToSelectString = '';\n private typeToSelectTimeout?: number;\n\n @Element() host!: HTMLSixMenuElement;\n\n /** Emitted when a menu item is selected. */\n @Event({ eventName: 'six-menu-item-selected' }) sixMenuItemSelected!: EventEmitter<SixMenuItemSelectedPayload>;\n\n /** Set to true to remove the box-shadow */\n @Prop() removeBoxShadow = false;\n\n /** Set the options to be shown in the dropdown */\n @Prop() items: SixMenuItemData[] | null = null;\n\n /** Defines how many items should be shown. If the number of items is larger than this property a scrollbar will be shown */\n @Prop() itemsShown?: number;\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 * Used for virtual scrolling\n * Define how many items should be rendered in the DOM when using virtual scrolling\n */\n @Prop() itemSize = 10;\n\n /**\n * Used for virtual scrolling\n * Define the debounce for listening on scrolling changes in milliseconds.\n * The lower the number the more sensitive the component reacts to scrolling changes.\n */\n @Prop() scrollingDebounce = 15;\n\n /**\n * Used to calculate which items should be rendered in the DOM\n */\n @State()\n private scrollingIndex = 0;\n\n // set a default item height, this variable will be updated with the real value after the first render.\n // However, it's necessary to have a default value because we can only fetch the proper height after the first render\n @State()\n sixMenuItemHeight = DEFAULT_SIX_MENU_ITEM_HEIGHT;\n\n connectedCallback() {\n this.handleClick = this.handleClick.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n componentWillLoad() {\n if (this.items === null) {\n return;\n }\n }\n\n private handleScrolling = () => {\n if (this.menuWrapper == null) return;\n // for performance improvements we only update the DOM if the scrollRatio change \"enough\"\n this.scrollingIndex = Math.floor(this.menuWrapper.scrollTop / this.sixMenuItemHeight);\n };\n\n componentDidLoad() {\n this.setupForVirtualScrollingAfterRendering();\n }\n\n disconnectedCallback() {\n this.eventListeners.removeAll();\n }\n\n /**\n * Initiates type-to-select logic, which automatically selects an option based on what the user is currently typing.\n * The key passed will be appended to the internal query and the selection will be updated. After a brief period, the\n * internal query is cleared automatically. This method is intended to be used with the keydown event. Useful for\n * enabling type-to-select when the menu doesn't have focus.\n */\n @Method()\n async typeToSelect(key: string) {\n clearTimeout(this.typeToSelectTimeout);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.typeToSelectTimeout = setTimeout(() => (this.typeToSelectString = ''), 750);\n this.typeToSelectString += key.toLowerCase();\n const items = this.getItems();\n for (const item of items) {\n const slot = item.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement;\n const label = getTextContent(slot).toLowerCase().trim();\n if (label.substring(0, this.typeToSelectString.length) === this.typeToSelectString) {\n item.setFocus();\n break;\n }\n }\n }\n\n private getItemsShown(): number {\n const defaultItemsShown = this.virtualScroll ? DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING : 0;\n return this.itemsShown ?? defaultItemsShown;\n }\n\n private setupForVirtualScrollingAfterRendering() {\n if (!this.virtualScroll || this.menuWrapper == null) return;\n\n this.eventListeners.add(this.menuWrapper, 'scroll', debounce(this.handleScrolling, this.scrollingDebounce));\n\n // set menu height to proper height once the item is rendered.\n const menuItemHeight = this.menu?.querySelector('six-menu-item')?.clientHeight;\n if (menuItemHeight != null && menuItemHeight > 0) {\n this.sixMenuItemHeight = menuItemHeight;\n }\n }\n\n private getItems(): HTMLSixMenuItemElement[] {\n if (this.menu == null) return [];\n\n if (this.items != null) {\n return this.items.map(mapToMenuItem);\n }\n\n const slot = this.menu.querySelector('slot');\n if (slot == null) return [];\n return [...slot.assignedElements({ flatten: true })].filter(\n (el): el is HTMLSixMenuItemElement => isSIXMenuItemElement(el) && !el.disabled\n );\n }\n\n private getActiveItemIndex() {\n const items = this.getItems();\n const selectedItem = this.getActiveItem();\n if (selectedItem != null) {\n const itemIndex = items.indexOf(selectedItem);\n if (itemIndex > -1) {\n return itemIndex;\n }\n }\n const sixMenuItems = this.extractItemsFromDOM();\n return sixMenuItems.findIndex(isFocusedMenuItem);\n }\n\n private getActiveItem(): HTMLSixMenuItemElement | undefined {\n const activeElement = this.getItems().find((i) => i === document.activeElement);\n if (activeElement != null) {\n return activeElement;\n }\n return this.extractItemsFromDOM()?.find(isFocusedMenuItem);\n }\n\n private extractItemsFromDOM() {\n return Array.from(this.host.shadowRoot?.querySelectorAll('six-menu-item') ?? []);\n }\n\n private setActiveItem(item: HTMLSixMenuItemElement) {\n item?.setFocus();\n }\n\n private handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const clickedItem = target.closest('six-menu-item');\n if (clickedItem && !clickedItem.disabled) {\n this.sixMenuItemSelected.emit({ name: clickedItem.value, item: clickedItem });\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n // Make a selection when pressing enter\n if (event.key === 'Enter') {\n const activeItem = this.getActiveItem();\n event.preventDefault();\n\n if (activeItem != null) {\n this.sixMenuItemSelected.emit({ name: activeItem.value, item: activeItem });\n }\n }\n\n // Prevent scrolling when space is pressed\n if (event.key === ' ') {\n event.preventDefault();\n }\n\n // Move the selection when pressing down or up\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const items = this.items === null ? this.getItems() : this.extractItemsFromDOM();\n\n let indexOfActiveItem = this.getActiveItemIndex();\n\n if (items.length > 0) {\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n indexOfActiveItem++;\n } else if (event.key === 'ArrowUp') {\n indexOfActiveItem--;\n } else if (event.key === 'Home') {\n indexOfActiveItem = 0;\n } else if (event.key === 'End') {\n indexOfActiveItem = items.length - 1;\n }\n\n if (indexOfActiveItem < 0) indexOfActiveItem = 0;\n if (indexOfActiveItem > items.length - 1) indexOfActiveItem = items.length - 1;\n\n this.setActiveItem(items[indexOfActiveItem]);\n\n return;\n }\n }\n\n void this.typeToSelect(event.key);\n }\n\n private getMenuWrapperStyle() {\n const styles: Partial<StyleDeclaration> = {};\n if (this.getItemsShown() > 0) {\n // calculate the proper height to show the correct number of items\n styles.height = `${(this.getItemsShown() ?? 0) * this.sixMenuItemHeight}px`;\n }\n return {\n ...styles,\n };\n }\n\n private getMenuContainerStyle() {\n const styles: Partial<StyleDeclaration> = {};\n\n if (this.virtualScroll) {\n // calculate height of content are if all items would be rendered so the scrollbar has the proper size\n styles.transform = `translateY(${this.sixMenuItemHeight * this.scrollingIndex}px)`;\n }\n\n return {\n ...styles,\n };\n }\n\n private getScrollbarGhostStyle() {\n const styles: Partial<StyleDeclaration> = {};\n\n if (this.virtualScroll && this.items !== null) {\n styles.height = `${this.items.length * this.sixMenuItemHeight - this.itemSize * this.sixMenuItemHeight}px`;\n }\n\n return {\n ...styles,\n };\n }\n\n private renderItems() {\n if (this.items === undefined || this.items === null) {\n return;\n }\n\n if (!this.virtualScroll) {\n return this.items.map(mapToMenuItem);\n }\n\n return this.items\n .slice(this.scrollingIndex, Math.min(this.items.length, this.itemSize + this.scrollingIndex))\n .map(mapToMenuItem);\n }\n\n render() {\n return (\n <div\n ref={(el) => (this.menuWrapper = el)}\n style={this.getMenuWrapperStyle()}\n part=\"wrapper\"\n class={{\n menu: true,\n 'menu--noshadow': this.removeBoxShadow,\n 'menu__wrapper--scrollable': this.getItemsShown() > 0,\n }}\n >\n <div\n ref={(el) => (this.menu = el)}\n part=\"base\"\n role=\"menu\"\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n style={this.getMenuContainerStyle()}\n >\n <slot />\n {this.renderItems()}\n </div>\n {this.virtualScroll && <div style={this.getScrollbarGhostStyle()} />}\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-menu.js","sourceRoot":"","sources":["../../../src/components/six-menu/six-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State } from '@stencil/core';\nimport { getTextContent } from '../../utils/slot';\nimport { StyleDeclaration } from '../../utils/types';\nimport { EventListeners } from '../../utils/event-listeners';\nimport { debounce } from '../../utils/execution-control';\n\nexport interface SixMenuItemData {\n label: string;\n value: string;\n}\n\nexport interface SixMenuItemSelectedPayload {\n name: string;\n item: HTMLSixMenuItemElement;\n}\n\nconst isFocusedMenuItem = (menuItem: HTMLSixMenuItemElement) =>\n menuItem?.shadowRoot?.querySelector('.menu-item')?.classList?.contains('menu-item--focused');\n\nconst isSIXMenuItemElement = (el?: Element): el is HTMLSixMenuItemElement =>\n el?.tagName.toLowerCase() === 'six-menu-item';\n\nconst mapToMenuItem = ({ value, label }: SixMenuItemData) => (\n <six-menu-item key={value} value={value}>\n {label}\n </six-menu-item>\n);\n\nconst DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING = 5;\n\nconst DEFAULT_SIX_MENU_ITEM_HEIGHT = 64;\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 menu's content, including menu items, menu dividers, and menu labels.\n *\n * @part base - The component's base wrapper.\n */\n@Component({\n tag: 'six-menu',\n styleUrl: 'six-menu.scss',\n shadow: true,\n})\nexport class SixMenu {\n private readonly eventListeners = new EventListeners();\n\n private menu?: HTMLElement;\n private menuWrapper?: HTMLElement;\n private typeToSelectString = '';\n private typeToSelectTimeout?: number;\n\n @Element() host!: HTMLSixMenuElement;\n\n /** Emitted when a menu item is selected. */\n @Event({ eventName: 'six-menu-item-selected' }) sixMenuItemSelected!: EventEmitter<SixMenuItemSelectedPayload>;\n\n /** Set to true to remove the box-shadow */\n @Prop() removeBoxShadow = false;\n\n /** Set the options to be shown in the dropdown */\n @Prop() items: SixMenuItemData[] | null = null;\n\n /** Defines how many items should be shown. If the number of items is larger than this property a scrollbar will be shown */\n @Prop() itemsShown?: number;\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 * Used for virtual scrolling\n * Define how many items should be rendered in the DOM when using virtual scrolling\n */\n @Prop() itemSize = 10;\n\n /**\n * Used for virtual scrolling\n * Define the debounce for listening on scrolling changes in milliseconds.\n * The lower the number the more sensitive the component reacts to scrolling changes.\n */\n @Prop() scrollingDebounce = 15;\n\n /**\n * Internal: Disables handling of key presses.\n */\n @Prop() disableKeyboardHandling = false;\n\n /**\n * Used to calculate which items should be rendered in the DOM\n */\n @State()\n private scrollingIndex = 0;\n\n // set a default item height, this variable will be updated with the real value after the first render.\n // However, it's necessary to have a default value because we can only fetch the proper height after the first render\n @State()\n sixMenuItemHeight = DEFAULT_SIX_MENU_ITEM_HEIGHT;\n\n connectedCallback() {\n this.handleClick = this.handleClick.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n componentWillLoad() {\n if (this.items === null) {\n return;\n }\n }\n\n private handleScrolling = () => {\n if (this.menuWrapper == null) return;\n // for performance improvements we only update the DOM if the scrollRatio change \"enough\"\n this.scrollingIndex = Math.floor(this.menuWrapper.scrollTop / this.sixMenuItemHeight);\n };\n\n componentDidLoad() {\n this.setupForVirtualScrollingAfterRendering();\n }\n\n disconnectedCallback() {\n this.eventListeners.removeAll();\n }\n\n /**\n * Initiates type-to-select logic, which automatically selects an option based on what the user is currently typing.\n * The key passed will be appended to the internal query and the selection will be updated. After a brief period, the\n * internal query is cleared automatically. This method is intended to be used with the keydown event. Useful for\n * enabling type-to-select when the menu doesn't have focus.\n */\n @Method()\n async typeToSelect(key: string) {\n clearTimeout(this.typeToSelectTimeout);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.typeToSelectTimeout = setTimeout(() => (this.typeToSelectString = ''), 750);\n this.typeToSelectString += key.toLowerCase();\n const items = this.getItems();\n for (const item of items) {\n const slot = item.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement;\n const label = getTextContent(slot).toLowerCase().trim();\n if (label.substring(0, this.typeToSelectString.length) === this.typeToSelectString) {\n item.setFocus();\n break;\n }\n }\n }\n\n private getItemsShown(): number {\n const defaultItemsShown = this.virtualScroll ? DEFAULT_NUMBER_OF_ITEMS_SHOWN_FOR_VIRTUAL_SCROLLING : 0;\n return this.itemsShown ?? defaultItemsShown;\n }\n\n private setupForVirtualScrollingAfterRendering() {\n if (!this.virtualScroll || this.menuWrapper == null) return;\n\n this.eventListeners.add(this.menuWrapper, 'scroll', debounce(this.handleScrolling, this.scrollingDebounce));\n\n // set menu height to proper height once the item is rendered.\n const menuItemHeight = this.menu?.querySelector('six-menu-item')?.clientHeight;\n if (menuItemHeight != null && menuItemHeight > 0) {\n this.sixMenuItemHeight = menuItemHeight;\n }\n }\n\n private getItems(): HTMLSixMenuItemElement[] {\n if (this.menu == null) return [];\n\n if (this.items != null) {\n return this.items.map(mapToMenuItem);\n }\n\n const slot = this.menu.querySelector('slot');\n if (slot == null) return [];\n return [...slot.assignedElements({ flatten: true })].filter(\n (el): el is HTMLSixMenuItemElement => isSIXMenuItemElement(el) && !el.disabled\n );\n }\n\n private getActiveItemIndex() {\n const items = this.getItems();\n const selectedItem = this.getActiveItem();\n if (selectedItem != null) {\n const itemIndex = items.indexOf(selectedItem);\n if (itemIndex > -1) {\n return itemIndex;\n }\n }\n const sixMenuItems = this.extractItemsFromDOM();\n return sixMenuItems.findIndex(isFocusedMenuItem);\n }\n\n private getActiveItem(): HTMLSixMenuItemElement | undefined {\n const activeElement = this.getItems().find((i) => i === document.activeElement);\n if (activeElement != null) {\n return activeElement;\n }\n return this.extractItemsFromDOM()?.find(isFocusedMenuItem);\n }\n\n private extractItemsFromDOM() {\n return Array.from(this.host.shadowRoot?.querySelectorAll('six-menu-item') ?? []);\n }\n\n private setActiveItem(item: HTMLSixMenuItemElement) {\n item?.setFocus();\n }\n\n private handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const clickedItem = target.closest('six-menu-item');\n if (clickedItem && !clickedItem.disabled) {\n this.sixMenuItemSelected.emit({ name: clickedItem.value, item: clickedItem });\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n if (this.disableKeyboardHandling) {\n return;\n }\n\n // Make a selection when pressing enter\n if (event.key === 'Enter') {\n const activeItem = this.getActiveItem();\n event.preventDefault();\n\n if (activeItem != null) {\n this.sixMenuItemSelected.emit({ name: activeItem.value, item: activeItem });\n }\n }\n\n // Prevent scrolling when space is pressed\n if (event.key === ' ') {\n event.preventDefault();\n }\n\n // Move the selection when pressing down or up\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const items = this.items === null ? this.getItems() : this.extractItemsFromDOM();\n\n let indexOfActiveItem = this.getActiveItemIndex();\n\n if (items.length > 0) {\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n indexOfActiveItem++;\n } else if (event.key === 'ArrowUp') {\n indexOfActiveItem--;\n } else if (event.key === 'Home') {\n indexOfActiveItem = 0;\n } else if (event.key === 'End') {\n indexOfActiveItem = items.length - 1;\n }\n\n if (indexOfActiveItem < 0) indexOfActiveItem = 0;\n if (indexOfActiveItem > items.length - 1) indexOfActiveItem = items.length - 1;\n\n this.setActiveItem(items[indexOfActiveItem]);\n\n return;\n }\n }\n\n void this.typeToSelect(event.key);\n }\n\n private getMenuWrapperStyle() {\n const styles: Partial<StyleDeclaration> = {};\n if (this.getItemsShown() > 0) {\n // calculate the proper height to show the correct number of items\n styles.height = `${(this.getItemsShown() ?? 0) * this.sixMenuItemHeight}px`;\n }\n return {\n ...styles,\n };\n }\n\n private getMenuContainerStyle() {\n const styles: Partial<StyleDeclaration> = {};\n\n if (this.virtualScroll) {\n // calculate height of content are if all items would be rendered so the scrollbar has the proper size\n styles.transform = `translateY(${this.sixMenuItemHeight * this.scrollingIndex}px)`;\n }\n\n return {\n ...styles,\n };\n }\n\n private getScrollbarGhostStyle() {\n const styles: Partial<StyleDeclaration> = {};\n\n if (this.virtualScroll && this.items !== null) {\n styles.height = `${this.items.length * this.sixMenuItemHeight - this.itemSize * this.sixMenuItemHeight}px`;\n }\n\n return {\n ...styles,\n };\n }\n\n private renderItems() {\n if (this.items === undefined || this.items === null) {\n return;\n }\n\n if (!this.virtualScroll) {\n return this.items.map(mapToMenuItem);\n }\n\n return this.items\n .slice(this.scrollingIndex, Math.min(this.items.length, this.itemSize + this.scrollingIndex))\n .map(({ value, label }: SixMenuItemData) => (\n <six-menu-item checkType=\"check\" key={value} value={value}>\n {label}\n </six-menu-item>\n ));\n }\n\n render() {\n return (\n <div\n ref={(el) => (this.menuWrapper = el)}\n style={this.getMenuWrapperStyle()}\n part=\"wrapper\"\n class={{\n menu: true,\n '.no-shadow': this.removeBoxShadow,\n }}\n >\n <div\n ref={(el) => (this.menu = el)}\n part=\"base\"\n role=\"menu\"\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n tabIndex={0}\n style={this.getMenuContainerStyle()}\n >\n <slot />\n {this.renderItems()}\n </div>\n {this.virtualScroll && <div style={this.getScrollbarGhostStyle()} />}\n </div>\n );\n }\n}\n"]}
@@ -24,13 +24,13 @@ describe('six-menu', () => {
24
24
  html: `<six-menu remove-box-shadow></six-menu>`,
25
25
  });
26
26
  expect(page.root).toEqualHtml(`
27
- <six-menu remove-box-shadow>
27
+ <six-menu remove-box-shadow="">
28
28
  <mock:shadow-root>
29
- <div class="menu menu--noshadow" part="wrapper">
30
- <div part="base" role="menu" tabindex="0">
31
- <slot></slot>
29
+ <div class=".no-shadow menu" part="wrapper">
30
+ <div part="base" role="menu" tabindex="0">
31
+ <slot></slot>
32
+ </div>
32
33
  </div>
33
- </div>
34
34
  </mock:shadow-root>
35
35
  </six-menu>
36
36
  `);
@@ -43,7 +43,7 @@ describe('six-menu', () => {
43
43
  expect(page.root).toEqualHtml(`
44
44
  <six-menu virtual-scroll="">
45
45
  <mock:shadow-root>
46
- <div class="menu menu__wrapper--scrollable" part="wrapper" style="height: 320px;">
46
+ <div class="menu" part="wrapper" style="height: 320px;">
47
47
  <div part="base" role="menu" tabindex="0" style="transform: translateY(0px);">
48
48
  <slot></slot>
49
49
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"six-menu.spec.js","sourceRoot":"","sources":["../../../../src/components/six-menu/test/six-menu.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;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;KAU7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,yCAAyC;SAChD,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;KAU7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,sCAAsC;SAC7C,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;KAW7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,QAAQ;QACR,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;QAEH,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1D,KAAK,EAAE,SAAS,GAAG,EAAE;gBACrB,KAAK,EAAE,SAAS,GAAG,EAAE;aACtB,CAAC,CAAC,CAAC;SACL;QACD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,OAAO;QACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;KAmB7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { SixMenu } from '../six-menu';\n\ndescribe('six-menu', () => {\n it('renders', async () => {\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu></six-menu>`,\n });\n expect(page.root).toEqualHtml(`\n <six-menu>\n <mock:shadow-root>\n <div class=\"menu\" part=\"wrapper\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\">\n <slot></slot>\n </div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n\n it('renders without box-shadow', async () => {\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu remove-box-shadow></six-menu>`,\n });\n expect(page.root).toEqualHtml(`\n <six-menu remove-box-shadow>\n <mock:shadow-root>\n <div class=\"menu menu--noshadow\" part=\"wrapper\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\">\n <slot></slot>\n </div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n\n it('renders virtual scrolling', async () => {\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu virtual-scroll></six-menu>`,\n });\n expect(page.root).toEqualHtml(`\n <six-menu virtual-scroll=\"\">\n <mock:shadow-root>\n <div class=\"menu menu__wrapper--scrollable\" part=\"wrapper\" style=\"height: 320px;\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\" style=\"transform: translateY(0px);\">\n <slot></slot>\n </div>\n <div></div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n\n it('renders dynamically added items', async () => {\n // given\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu></six-menu>`,\n });\n\n // when\n if (page.root != null) {\n page.root.items = Array.from(Array(3).keys()).map((idx) => ({\n label: `label ${idx}`,\n value: `value ${idx}`,\n }));\n }\n await page.waitForChanges();\n\n // then\n expect(page.root).toEqualHtml(`\n <six-menu>\n <mock:shadow-root>\n <div class=\"menu\" part=\"wrapper\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\">\n <slot></slot>\n <six-menu-item value=\"value 0\">\n label 0\n </six-menu-item>\n <six-menu-item value=\"value 1\">\n label 1\n </six-menu-item>\n <six-menu-item value=\"value 2\">\n label 2\n </six-menu-item>\n </div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n});\n"]}
1
+ {"version":3,"file":"six-menu.spec.js","sourceRoot":"","sources":["../../../../src/components/six-menu/test/six-menu.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;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;KAU7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,yCAAyC;SAChD,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;KAU7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,sCAAsC;SAC7C,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;KAW7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,QAAQ;QACR,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAC;QAEH,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1D,KAAK,EAAE,SAAS,GAAG,EAAE;gBACrB,KAAK,EAAE,SAAS,GAAG,EAAE;aACtB,CAAC,CAAC,CAAC;SACL;QACD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,OAAO;QACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;KAmB7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from '@stencil/core/testing';\nimport { SixMenu } from '../six-menu';\n\ndescribe('six-menu', () => {\n it('renders', async () => {\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu></six-menu>`,\n });\n expect(page.root).toEqualHtml(`\n <six-menu>\n <mock:shadow-root>\n <div class=\"menu\" part=\"wrapper\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\">\n <slot></slot>\n </div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n\n it('renders without box-shadow', async () => {\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu remove-box-shadow></six-menu>`,\n });\n expect(page.root).toEqualHtml(`\n <six-menu remove-box-shadow=\"\">\n <mock:shadow-root>\n <div class=\".no-shadow menu\" part=\"wrapper\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\">\n <slot></slot>\n </div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n\n it('renders virtual scrolling', async () => {\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu virtual-scroll></six-menu>`,\n });\n expect(page.root).toEqualHtml(`\n <six-menu virtual-scroll=\"\">\n <mock:shadow-root>\n <div class=\"menu\" part=\"wrapper\" style=\"height: 320px;\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\" style=\"transform: translateY(0px);\">\n <slot></slot>\n </div>\n <div></div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n\n it('renders dynamically added items', async () => {\n // given\n const page = await newSpecPage({\n components: [SixMenu],\n html: `<six-menu></six-menu>`,\n });\n\n // when\n if (page.root != null) {\n page.root.items = Array.from(Array(3).keys()).map((idx) => ({\n label: `label ${idx}`,\n value: `value ${idx}`,\n }));\n }\n await page.waitForChanges();\n\n // then\n expect(page.root).toEqualHtml(`\n <six-menu>\n <mock:shadow-root>\n <div class=\"menu\" part=\"wrapper\">\n <div part=\"base\" role=\"menu\" tabindex=\"0\">\n <slot></slot>\n <six-menu-item value=\"value 0\">\n label 0\n </six-menu-item>\n <six-menu-item value=\"value 1\">\n label 1\n </six-menu-item>\n <six-menu-item value=\"value 2\">\n label 2\n </six-menu-item>\n </div>\n </div>\n </mock:shadow-root>\n </six-menu>\n `);\n });\n});\n"]}
@@ -3,7 +3,7 @@
3
3
  box-sizing: border-box;
4
4
  }
5
5
  :host *, :host *:before, :host *:after {
6
- box-sizing: inherit;
6
+ box-sizing: border-box;
7
7
  }
8
8
 
9
9
  :host {
@@ -12,5 +12,6 @@
12
12
 
13
13
  .menu-divider {
14
14
  border-top: solid var(--six-border-width) var(--six-menu-divider-color);
15
- margin: 0;
15
+ margin-top: var(--six-spacing-xx-small);
16
+ margin-bottom: var(--six-spacing-xx-small);
16
17
  }
@@ -3,13 +3,17 @@
3
3
  box-sizing: border-box;
4
4
  }
5
5
  :host *, :host *:before, :host *:after {
6
- box-sizing: inherit;
6
+ box-sizing: border-box;
7
7
  }
8
8
 
9
9
  :host {
10
10
  display: block;
11
11
  }
12
12
 
13
+ :focus {
14
+ outline: none;
15
+ }
16
+
13
17
  .menu-item {
14
18
  position: relative;
15
19
  display: flex;
@@ -22,7 +26,7 @@
22
26
  text-align: left;
23
27
  color: var(--six-input-color);
24
28
  border-radius: var(--six-border-radius-medium);
25
- padding: var(--six-spacing-medium) var(--six-spacing-medium);
29
+ padding: var(--six-spacing-x-small) var(--six-spacing-medium);
26
30
  transition: var(--six-transition-fast) fill;
27
31
  user-select: none;
28
32
  white-space: nowrap;
@@ -32,6 +36,10 @@
32
36
  outline: none;
33
37
  background-color: var(--six-menu-item-background-color);
34
38
  }
39
+ .menu-item.menu-item--active:not(.menu-item--disabled) {
40
+ outline: none;
41
+ background-color: var(--six-menu-item-background-color);
42
+ }
35
43
  .menu-item.menu-item--disabled {
36
44
  outline: none;
37
45
  color: var(--six-input-color-disabled);
@@ -65,6 +73,9 @@
65
73
  visibility: hidden;
66
74
  font-size: inherit;
67
75
  }
76
+ .menu-item .menu-item__checkbox {
77
+ margin-top: -1px;
78
+ }
68
79
 
69
80
  .menu-item--checked .menu-item__check {
70
81
  visibility: visible;
@@ -18,7 +18,12 @@ import { getTextContent } from "../../utils/slot";
18
18
  */
19
19
  export class SixMenuItem {
20
20
  constructor() {
21
+ this.handleCheckboxChange = () => {
22
+ this.host.dispatchEvent(new Event('click', { bubbles: true, cancelable: true }));
23
+ };
21
24
  this.hasFocus = false;
25
+ this.active = false;
26
+ this.checkType = 'check';
22
27
  this.checked = false;
23
28
  this.value = '';
24
29
  this.disabled = false;
@@ -28,6 +33,7 @@ export class SixMenuItem {
28
33
  this.handleFocus = this.handleFocus.bind(this);
29
34
  this.handleMouseEnter = this.handleMouseEnter.bind(this);
30
35
  this.handleMouseLeave = this.handleMouseLeave.bind(this);
36
+ this.handleCheckboxChange = this.handleCheckboxChange.bind(this);
31
37
  }
32
38
  /** Sets focus on the button. */
33
39
  async setFocus(options) {
@@ -50,10 +56,11 @@ export class SixMenuItem {
50
56
  this.hasFocus = true;
51
57
  }
52
58
  handleMouseEnter() {
53
- return this.setFocus();
59
+ this.active = true;
54
60
  }
55
61
  handleMouseLeave() {
56
- return this.removeFocus();
62
+ this.active = false;
63
+ this.hasFocus = false;
57
64
  }
58
65
  render() {
59
66
  return (h("div", { ref: (el) => (this.menuItem = el), part: "base", class: {
@@ -61,7 +68,8 @@ export class SixMenuItem {
61
68
  'menu-item--checked': this.checked,
62
69
  'menu-item--disabled': this.disabled,
63
70
  'menu-item--focused': this.hasFocus,
64
- }, role: "menuitem", "aria-disabled": this.disabled ? 'true' : 'false', "aria-checked": this.checked ? 'true' : 'false', tabIndex: !this.disabled ? 0 : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, h("span", { part: "prefix", class: "menu-item__prefix" }, h("slot", { name: "prefix" })), h("span", { part: "label", class: "menu-item__label" }, h("slot", { ref: (el) => (this.defaultSlot = el) })), h("span", { part: "suffix", class: "menu-item__suffix" }, h("slot", { name: "suffix" })), h("span", { part: "checked-icon", class: "menu-item__check" }, h("six-icon", { size: "small", "aria-hidden": "true" }, "check"))));
71
+ 'menu-item--active': this.active,
72
+ }, role: "menuitem", "aria-disabled": this.disabled ? 'true' : 'false', "aria-checked": this.checked ? 'true' : 'false', tabIndex: !this.disabled ? 0 : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }, this.checkType === 'checkbox' && (h("span", { class: "menu-item__checkbox" }, h("six-checkbox", { "onSix-checkbox-change": this.handleCheckboxChange, disabled: this.disabled, checked: this.checked }))), h("span", { part: "prefix", class: "menu-item__prefix" }, h("slot", { name: "prefix" })), h("span", { part: "label", class: "menu-item__label" }, h("slot", { ref: (el) => (this.defaultSlot = el) })), h("span", { part: "suffix", class: "menu-item__suffix" }, h("slot", { name: "suffix" })), this.checkType === 'check' && (h("span", { part: "checked-icon", class: "menu-item__check" }, h("six-icon", { size: "small", "aria-hidden": "true" }, "check")))));
65
73
  }
66
74
  static get is() { return "six-menu-item"; }
67
75
  static get encapsulation() { return "shadow"; }
@@ -77,6 +85,24 @@ export class SixMenuItem {
77
85
  }
78
86
  static get properties() {
79
87
  return {
88
+ "checkType": {
89
+ "type": "string",
90
+ "mutable": false,
91
+ "complexType": {
92
+ "original": "'checkbox' | 'check'",
93
+ "resolved": "\"check\" | \"checkbox\"",
94
+ "references": {}
95
+ },
96
+ "required": false,
97
+ "optional": false,
98
+ "docs": {
99
+ "tags": [],
100
+ "text": "Defines if the checked state is displayed as a checkbox or a check-icon"
101
+ },
102
+ "attribute": "check-type",
103
+ "reflect": false,
104
+ "defaultValue": "'check'"
105
+ },
80
106
  "checked": {
81
107
  "type": "boolean",
82
108
  "mutable": false,
@@ -89,7 +115,7 @@ export class SixMenuItem {
89
115
  "optional": false,
90
116
  "docs": {
91
117
  "tags": [],
92
- "text": "Set to true to draw the item in a checked state."
118
+ "text": "Internal: Draws the item in a checked state. CheckType needs to be set to 'checkbox' or 'check' to show the\nchecked state"
93
119
  },
94
120
  "attribute": "checked",
95
121
  "reflect": true,
@@ -135,7 +161,8 @@ export class SixMenuItem {
135
161
  }
136
162
  static get states() {
137
163
  return {
138
- "hasFocus": {}
164
+ "hasFocus": {},
165
+ "active": {}
139
166
  };
140
167
  }
141
168
  static get methods() {
@@ -144,8 +171,9 @@ export class SixMenuItem {
144
171
  "complexType": {
145
172
  "signature": "(options?: FocusOptions) => Promise<void>",
146
173
  "parameters": [{
147
- "tags": [],
148
- "text": ""
174
+ "name": "options",
175
+ "type": "FocusOptions | undefined",
176
+ "docs": ""
149
177
  }],
150
178
  "references": {
151
179
  "Promise": {
@@ -200,5 +228,6 @@ export class SixMenuItem {
200
228
  }
201
229
  };
202
230
  }
231
+ static get elementRef() { return "host"; }
203
232
  }
204
233
  //# sourceMappingURL=six-menu-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"six-menu-item.js","sourceRoot":"","sources":["../../../src/components/six-menu-item/six-menu-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;;;GAeG;AAOH,MAAM,OAAO,WAAW;;wBAIF,KAAK;uBAGU,KAAK;qBAGP,EAAE;wBAGC,KAAK;;IAEzC,iBAAiB;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,gCAAgC;IAEhC,KAAK,CAAC,QAAQ,CAAC,OAAsB;;QACnC,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,qCAAqC;IAErC,KAAK,CAAC,WAAW;;QACf,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,kFAAkF;IAElF,YAAY;QACV,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,OAAO,CACL,WACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EACjC,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;gBACL,WAAW,EAAE,IAAI;gBACjB,oBAAoB,EAAE,IAAI,CAAC,OAAO;gBAClC,qBAAqB,EAAE,IAAI,CAAC,QAAQ;gBACpC,oBAAoB,EAAE,IAAI,CAAC,QAAQ;aACpC,EACD,IAAI,EAAC,UAAU,mBACA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBACjC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC7C,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACxC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,YAAY,EAAE,IAAI,CAAC,gBAAgB;YAEnC,YAAM,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,mBAAmB;gBAC3C,YAAM,IAAI,EAAC,QAAQ,GAAG,CACjB;YAEP,YAAM,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,kBAAkB;gBACzC,YAAM,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,EAAqB,CAAC,GAAI,CAC5D;YAEP,YAAM,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,mBAAmB;gBAC3C,YAAM,IAAI,EAAC,QAAQ,GAAG,CACjB;YAEP,YAAM,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,kBAAkB;gBAChD,gBAAU,IAAI,EAAC,OAAO,iBAAa,MAAM,YAE9B,CACN,CACH,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Method, Prop, State } from '@stencil/core';\nimport { getTextContent } from '../../utils/slot';\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 menu item's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @part base - The component's base wrapper.\n * @part checked-icon - The container that wraps the checked icon.\n * @part prefix - The prefix container.\n * @part label - The menu item label.\n * @part suffix - The suffix container.\n */\n\n@Component({\n tag: 'six-menu-item',\n styleUrl: 'six-menu-item.scss',\n shadow: true,\n})\nexport class SixMenuItem {\n private menuItem?: HTMLElement;\n private defaultSlot?: HTMLSlotElement;\n\n @State() hasFocus = false;\n\n /** Set to true to draw the item in a checked state. */\n @Prop({ reflect: true }) checked = false;\n\n /** A unique value to store in the menu item. This can be used as a way to identify menu items when selected. */\n @Prop({ reflect: true }) value = '';\n\n /** Set to true to draw the menu item in a disabled state. */\n @Prop({ reflect: true }) disabled = false;\n\n connectedCallback() {\n this.handleBlur = this.handleBlur.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n }\n\n /** Sets focus on the button. */\n @Method()\n async setFocus(options?: FocusOptions) {\n this.menuItem?.focus(options);\n }\n\n /** Removes focus from the button. */\n @Method()\n async removeFocus() {\n this.menuItem?.blur();\n }\n\n /** Returns a text label based on the contents of the menu item's default slot. */\n @Method()\n getTextLabel() {\n return Promise.resolve(getTextContent(this.defaultSlot));\n }\n\n private handleBlur() {\n this.hasFocus = false;\n }\n\n private handleFocus() {\n this.hasFocus = true;\n }\n\n private handleMouseEnter() {\n return this.setFocus();\n }\n\n private handleMouseLeave() {\n return this.removeFocus();\n }\n\n render() {\n return (\n <div\n ref={(el) => (this.menuItem = el)}\n part=\"base\"\n class={{\n 'menu-item': true,\n 'menu-item--checked': this.checked,\n 'menu-item--disabled': this.disabled,\n 'menu-item--focused': this.hasFocus,\n }}\n role=\"menuitem\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-checked={this.checked ? 'true' : 'false'}\n tabIndex={!this.disabled ? 0 : undefined}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <span part=\"prefix\" class=\"menu-item__prefix\">\n <slot name=\"prefix\" />\n </span>\n\n <span part=\"label\" class=\"menu-item__label\">\n <slot ref={(el) => (this.defaultSlot = el as HTMLSlotElement)} />\n </span>\n\n <span part=\"suffix\" class=\"menu-item__suffix\">\n <slot name=\"suffix\" />\n </span>\n\n <span part=\"checked-icon\" class=\"menu-item__check\">\n <six-icon size=\"small\" aria-hidden=\"true\">\n check\n </six-icon>\n </span>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-menu-item.js","sourceRoot":"","sources":["../../../src/components/six-menu-item/six-menu-item.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Method, Prop, State } from '@stencil/core';\nimport { getTextContent } from '../../utils/slot';\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 menu item's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @part base - The component's base wrapper.\n * @part checked-icon - The container that wraps the checked icon.\n * @part prefix - The prefix container.\n * @part label - The menu item label.\n * @part suffix - The suffix container.\n */\n\n@Component({\n tag: 'six-menu-item',\n styleUrl: 'six-menu-item.scss',\n shadow: true,\n})\nexport class SixMenuItem {\n private menuItem?: HTMLElement;\n private defaultSlot?: HTMLSlotElement;\n\n @Element() host!: HTMLSixMenuItemElement;\n\n @State() hasFocus = false;\n\n @State() active = false;\n\n /** Defines if the checked state is displayed as a checkbox or a check-icon */\n @Prop() checkType: 'checkbox' | 'check' = 'check';\n\n /** Internal: Draws the item in a checked state. CheckType needs to be set to 'checkbox' or 'check' to show the\n * checked state */\n @Prop({ reflect: true }) checked = false;\n\n /** A unique value to store in the menu item. This can be used as a way to identify menu items when selected. */\n @Prop({ reflect: true }) value = '';\n\n /** Set to true to draw the menu item in a disabled state. */\n @Prop({ reflect: true }) disabled = false;\n\n connectedCallback() {\n this.handleBlur = this.handleBlur.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCheckboxChange = this.handleCheckboxChange.bind(this);\n }\n\n /** Sets focus on the button. */\n @Method()\n async setFocus(options?: FocusOptions) {\n this.menuItem?.focus(options);\n }\n\n /** Removes focus from the button. */\n @Method()\n async removeFocus() {\n this.menuItem?.blur();\n }\n\n /** Returns a text label based on the contents of the menu item's default slot. */\n @Method()\n getTextLabel() {\n return Promise.resolve(getTextContent(this.defaultSlot));\n }\n\n private handleBlur() {\n this.hasFocus = false;\n }\n\n private handleFocus() {\n this.hasFocus = true;\n }\n\n private handleMouseEnter() {\n this.active = true;\n }\n\n private handleMouseLeave() {\n this.active = false;\n this.hasFocus = false;\n }\n\n private handleCheckboxChange = () => {\n this.host.dispatchEvent(new Event('click', { bubbles: true, cancelable: true }));\n };\n\n render() {\n return (\n <div\n ref={(el) => (this.menuItem = el)}\n part=\"base\"\n class={{\n 'menu-item': true,\n 'menu-item--checked': this.checked,\n 'menu-item--disabled': this.disabled,\n 'menu-item--focused': this.hasFocus,\n 'menu-item--active': this.active,\n }}\n role=\"menuitem\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-checked={this.checked ? 'true' : 'false'}\n tabIndex={!this.disabled ? 0 : undefined}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.checkType === 'checkbox' && (\n <span class=\"menu-item__checkbox\">\n <six-checkbox\n onSix-checkbox-change={this.handleCheckboxChange}\n disabled={this.disabled}\n checked={this.checked}\n ></six-checkbox>\n </span>\n )}\n\n <span part=\"prefix\" class=\"menu-item__prefix\">\n <slot name=\"prefix\" />\n </span>\n\n <span part=\"label\" class=\"menu-item__label\">\n <slot ref={(el) => (this.defaultSlot = el as HTMLSlotElement)} />\n </span>\n\n <span part=\"suffix\" class=\"menu-item__suffix\">\n <slot name=\"suffix\" />\n </span>\n\n {this.checkType === 'check' && (\n <span part=\"checked-icon\" class=\"menu-item__check\">\n <six-icon size=\"small\" aria-hidden=\"true\">\n check\n </six-icon>\n </span>\n )}\n </div>\n );\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  box-sizing: border-box;
4
4
  }
5
5
  :host *, :host *:before, :host *:after {
6
- box-sizing: inherit;
6
+ box-sizing: border-box;
7
7
  }
8
8
 
9
9
  :host {
@@ -3,7 +3,7 @@
3
3
  box-sizing: border-box;
4
4
  }
5
5
  :host *, :host *:before, :host *:after {
6
- box-sizing: inherit;
6
+ box-sizing: border-box;
7
7
  }
8
8
 
9
9
  /**
@@ -3,7 +3,7 @@
3
3
  box-sizing: border-box;
4
4
  }
5
5
  :host *, :host *:before, :host *:after {
6
- box-sizing: inherit;
6
+ box-sizing: border-box;
7
7
  }
8
8
 
9
9
  /**
@@ -3,7 +3,7 @@
3
3
  box-sizing: border-box;
4
4
  }
5
5
  :host *, :host *:before, :host *:after {
6
- box-sizing: inherit;
6
+ box-sizing: border-box;
7
7
  }
8
8
 
9
9
  :host {
@@ -293,8 +293,9 @@ export class SixRadio {
293
293
  "complexType": {
294
294
  "signature": "(options?: FocusOptions) => Promise<void>",
295
295
  "parameters": [{
296
- "tags": [],
297
- "text": ""
296
+ "name": "options",
297
+ "type": "FocusOptions | undefined",
298
+ "docs": ""
298
299
  }],
299
300
  "references": {
300
301
  "Promise": {
@@ -1 +1 @@
1
- {"version":3,"file":"six-radio.js","sourceRoot":"","sources":["../../../src/components/six-radio/six-radio.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 { EventListeners } from '../../utils/event-listeners';\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 - The radio's label.\n *\n * @part base - The component's base wrapper.\n * @part control - The radio control.\n * @part checked-icon - The container the wraps the checked icon.\n * @part label - The radio label.\n */\n\n@Component({\n tag: 'six-radio',\n styleUrl: 'six-radio.scss',\n shadow: true,\n})\nexport class SixRadio {\n private inputId = `radio-${++id}`;\n private labelId = `radio-label-${id}`;\n private nativeInput?: HTMLInputElement;\n private eventListeners = new EventListeners();\n\n @Element() host!: HTMLSixRadioElement;\n\n @State() hasFocus = false;\n\n /** The radio's name attribute. */\n @Prop() name = '';\n\n /** The radio's value attribute. */\n @Prop({ reflect: true }) value = 'on';\n\n /** Set to true to disable the radio. */\n @Prop() disabled = false;\n\n /** Set to true to draw the radio in a checked state. */\n @Prop({ mutable: true, reflect: true }) checked = false;\n\n /** If this property is set to true and an error message is provided by `errorText`, the error message is displayed. */\n @Prop({ reflect: true }) invalid = false;\n\n @Watch('checked')\n handleCheckedChange() {\n if (this.checked) {\n this.getSiblingRadios().forEach((radio) => (radio.checked = false));\n }\n if (this.nativeInput != null) {\n this.nativeInput.checked = this.checked;\n }\n }\n\n @Watch('name')\n handleNameChange(name: string) {\n if (this.nativeInput != null) {\n this.nativeInput.name = name;\n }\n }\n\n /** Emitted when the control loses focus. */\n @Event({ eventName: 'six-radio-blur' }) sixBlur!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the control's checked state changes. */\n @Event({ eventName: 'six-radio-change' }) sixChange!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the control gains focus. */\n @Event({ eventName: 'six-radio-focus' }) sixFocus!: EventEmitter<EmptyPayload>;\n\n connectedCallback() {\n this.eventListeners.forward('six-radio-change', 'change', this.host);\n this.eventListeners.forward('six-radio-blur', 'blur', this.host);\n this.eventListeners.forward('six-radio-focus', 'focus', this.host);\n }\n\n disconnectedCallback() {\n this.eventListeners.removeAll();\n }\n\n /** Sets focus on the radio. */\n @Method()\n async setFocus(options?: FocusOptions) {\n this.nativeInput?.focus(options);\n }\n\n /** Removes focus from the radio. */\n @Method()\n async removeFocus() {\n this.nativeInput?.blur();\n }\n\n private getAllRadios() {\n const form = this.host.closest('form') || document.body;\n\n if (this.name === '') return [];\n\n return [...form.querySelectorAll('six-radio')].filter(\n (radio: HTMLSixRadioElement) => radio.name === this.name\n ) as HTMLSixRadioElement[];\n }\n\n private getSiblingRadios() {\n return this.getAllRadios().filter((radio) => radio !== this.host) as HTMLSixRadioElement[];\n }\n\n private handleClick = () => {\n if (this.nativeInput != null) {\n this.checked = this.nativeInput.checked;\n this.sixChange.emit();\n }\n };\n\n private handleBlur = () => {\n this.hasFocus = false;\n this.sixBlur.emit();\n };\n\n private handleFocus = () => {\n this.hasFocus = true;\n this.sixFocus.emit();\n };\n\n private handleKeyDown = (keyboardEvent: KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(keyboardEvent.key)) {\n const radios = this.getAllRadios().filter((radio) => !radio.disabled);\n const incr = ['ArrowUp', 'ArrowLeft'].includes(keyboardEvent.key) ? -1 : 1;\n let index = radios.indexOf(this.host) + incr;\n if (index < 0) index = radios.length - 1;\n if (index > radios.length - 1) index = 0;\n\n this.getAllRadios().forEach((radio) => (radio.checked = false));\n radios[index].setFocus();\n radios[index].checked = true;\n radios[index].dispatchEvent(new CustomEvent('six-radio-change', { bubbles: true, cancelable: true }));\n keyboardEvent.preventDefault();\n }\n };\n\n private handleMouseDown = (event: MouseEvent) => {\n // Prevent clicks on the label from briefly blurring the input\n event.preventDefault();\n this.nativeInput?.focus();\n };\n\n render() {\n return (\n <label\n part=\"base\"\n class={{\n radio: true,\n 'radio--checked': this.checked,\n 'radio--disabled': this.disabled,\n 'radio--focused': this.hasFocus,\n }}\n htmlFor={this.inputId}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <span part=\"control\" class=\"radio__control\">\n <span part=\"checked-icon\" class=\"radio__icon\">\n <svg viewBox=\"0 0 16 16\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"currentColor\">\n <circle cx=\"8\" cy=\"8\" r=\"5\"></circle>\n </g>\n </g>\n </svg>\n </span>\n\n <input\n ref={(el) => (this.nativeInput = el)}\n id={this.inputId}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked}\n disabled={this.disabled}\n role=\"radio\"\n aria-checked={this.checked ? 'true' : 'false'}\n aria-labelledby={this.labelId}\n onClick={this.handleClick}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n />\n </span>\n\n <span part=\"label\" id={this.labelId} class=\"radio__label\">\n <slot />\n </span>\n </label>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"six-radio.js","sourceRoot":"","sources":["../../../src/components/six-radio/six-radio.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 { EventListeners } from '../../utils/event-listeners';\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 - The radio's label.\n *\n * @part base - The component's base wrapper.\n * @part control - The radio control.\n * @part checked-icon - The container the wraps the checked icon.\n * @part label - The radio label.\n */\n\n@Component({\n tag: 'six-radio',\n styleUrl: 'six-radio.scss',\n shadow: true,\n})\nexport class SixRadio {\n private inputId = `radio-${++id}`;\n private labelId = `radio-label-${id}`;\n private nativeInput?: HTMLInputElement;\n private eventListeners = new EventListeners();\n\n @Element() host!: HTMLSixRadioElement;\n\n @State() hasFocus = false;\n\n /** The radio's name attribute. */\n @Prop() name = '';\n\n /** The radio's value attribute. */\n @Prop({ reflect: true }) value = 'on';\n\n /** Set to true to disable the radio. */\n @Prop() disabled = false;\n\n /** Set to true to draw the radio in a checked state. */\n @Prop({ mutable: true, reflect: true }) checked = false;\n\n /** If this property is set to true and an error message is provided by `errorText`, the error message is displayed. */\n @Prop({ reflect: true }) invalid = false;\n\n @Watch('checked')\n handleCheckedChange() {\n if (this.checked) {\n this.getSiblingRadios().forEach((radio) => (radio.checked = false));\n }\n if (this.nativeInput != null) {\n this.nativeInput.checked = this.checked;\n }\n }\n\n @Watch('name')\n handleNameChange(name: string) {\n if (this.nativeInput != null) {\n this.nativeInput.name = name;\n }\n }\n\n /** Emitted when the control loses focus. */\n @Event({ eventName: 'six-radio-blur' }) sixBlur!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the control's checked state changes. */\n @Event({ eventName: 'six-radio-change' }) sixChange!: EventEmitter<EmptyPayload>;\n\n /** Emitted when the control gains focus. */\n @Event({ eventName: 'six-radio-focus' }) sixFocus!: EventEmitter<EmptyPayload>;\n\n connectedCallback() {\n this.eventListeners.forward('six-radio-change', 'change', this.host);\n this.eventListeners.forward('six-radio-blur', 'blur', this.host);\n this.eventListeners.forward('six-radio-focus', 'focus', this.host);\n }\n\n disconnectedCallback() {\n this.eventListeners.removeAll();\n }\n\n /** Sets focus on the radio. */\n @Method()\n async setFocus(options?: FocusOptions) {\n this.nativeInput?.focus(options);\n }\n\n /** Removes focus from the radio. */\n @Method()\n async removeFocus() {\n this.nativeInput?.blur();\n }\n\n private getAllRadios() {\n const form = this.host.closest('form') || document.body;\n\n if (this.name === '') return [];\n\n return [...form.querySelectorAll('six-radio')].filter(\n (radio: HTMLSixRadioElement) => radio.name === this.name\n ) as HTMLSixRadioElement[];\n }\n\n private getSiblingRadios() {\n return this.getAllRadios().filter((radio) => radio !== this.host) as HTMLSixRadioElement[];\n }\n\n private handleClick = () => {\n if (this.nativeInput != null) {\n this.checked = this.nativeInput.checked;\n this.sixChange.emit();\n }\n };\n\n private handleBlur = () => {\n this.hasFocus = false;\n this.sixBlur.emit();\n };\n\n private handleFocus = () => {\n this.hasFocus = true;\n this.sixFocus.emit();\n };\n\n private handleKeyDown = (keyboardEvent: KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(keyboardEvent.key)) {\n const radios = this.getAllRadios().filter((radio) => !radio.disabled);\n const incr = ['ArrowUp', 'ArrowLeft'].includes(keyboardEvent.key) ? -1 : 1;\n let index = radios.indexOf(this.host) + incr;\n if (index < 0) index = radios.length - 1;\n if (index > radios.length - 1) index = 0;\n\n this.getAllRadios().forEach((radio) => (radio.checked = false));\n radios[index].setFocus();\n radios[index].checked = true;\n radios[index].dispatchEvent(new CustomEvent('six-radio-change', { bubbles: true, cancelable: true }));\n keyboardEvent.preventDefault();\n }\n };\n\n private handleMouseDown = (event: MouseEvent) => {\n // Prevent clicks on the label from briefly blurring the input\n event.preventDefault();\n this.nativeInput?.focus();\n };\n\n render() {\n return (\n <label\n part=\"base\"\n class={{\n radio: true,\n 'radio--checked': this.checked,\n 'radio--disabled': this.disabled,\n 'radio--focused': this.hasFocus,\n }}\n htmlFor={this.inputId}\n onKeyDown={this.handleKeyDown}\n onMouseDown={this.handleMouseDown}\n >\n <span part=\"control\" class=\"radio__control\">\n <span part=\"checked-icon\" class=\"radio__icon\">\n <svg viewBox=\"0 0 16 16\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"currentColor\">\n <circle cx=\"8\" cy=\"8\" r=\"5\"></circle>\n </g>\n </g>\n </svg>\n </span>\n\n <input\n ref={(el) => (this.nativeInput = el)}\n id={this.inputId}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked}\n disabled={this.disabled}\n role=\"radio\"\n aria-checked={this.checked ? 'true' : 'false'}\n aria-labelledby={this.labelId}\n onClick={this.handleClick}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n />\n </span>\n\n <span part=\"label\" id={this.labelId} class=\"radio__label\">\n <slot />\n </span>\n </label>\n );\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  box-sizing: border-box;
4
4
  }
5
5
  :host *, :host *:before, :host *:after {
6
- box-sizing: inherit;
6
+ box-sizing: border-box;
7
7
  }
8
8
 
9
9
  .form-control .form-control__label {
@@ -534,8 +534,9 @@ export class SixRange {
534
534
  "complexType": {
535
535
  "signature": "(options?: FocusOptions) => Promise<void>",
536
536
  "parameters": [{
537
- "tags": [],
538
- "text": ""
537
+ "name": "options",
538
+ "type": "FocusOptions | undefined",
539
+ "docs": ""
539
540
  }],
540
541
  "references": {
541
542
  "Promise": {