kemet-ui 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/custom-elements.json +1588 -871
  2. package/dist/components/kemet-accordion/docs/stories.d.ts +12 -0
  3. package/dist/components/kemet-accordion/docs/stories.js +99 -0
  4. package/dist/components/kemet-accordion/docs/stories.js.map +1 -0
  5. package/dist/components/kemet-accordion/kemet-accordion-panel.d.ts +2 -2
  6. package/dist/components/kemet-accordion/kemet-accordion-panel.js +1 -1
  7. package/dist/components/kemet-accordion/kemet-accordion-panel.js.map +1 -1
  8. package/dist/components/kemet-accordion/kemet-accordion.d.ts +3 -3
  9. package/dist/components/kemet-accordion/kemet-accordion.js +2 -1
  10. package/dist/components/kemet-accordion/kemet-accordion.js.map +1 -1
  11. package/dist/components/kemet-accordion/spec.d.ts +2 -0
  12. package/dist/components/kemet-accordion/spec.js +132 -0
  13. package/dist/components/kemet-accordion/spec.js.map +1 -0
  14. package/dist/components/kemet-alert/docs/stories.d.ts +1 -1
  15. package/dist/components/kemet-alert/docs/stories.js +20 -19
  16. package/dist/components/kemet-alert/docs/stories.js.map +1 -1
  17. package/dist/components/kemet-alert/kemet-alert.d.ts +2 -2
  18. package/dist/components/kemet-alert/kemet-alert.js.map +1 -1
  19. package/dist/components/kemet-alert/spec.d.ts +1 -0
  20. package/dist/components/kemet-alert/spec.js +35 -0
  21. package/dist/components/kemet-alert/spec.js.map +1 -0
  22. package/dist/components/kemet-alert/types.d.ts +1 -1
  23. package/dist/components/kemet-avatar/docs/stories.d.ts +1 -1
  24. package/dist/components/kemet-avatar/docs/stories.js.map +1 -1
  25. package/dist/components/kemet-avatar/kemet-avatar.js.map +1 -1
  26. package/dist/components/kemet-avatar/kemet-avatars.js.map +1 -1
  27. package/dist/components/kemet-avatar/spec.d.ts +1 -0
  28. package/dist/components/kemet-avatar/spec.js +26 -0
  29. package/dist/components/kemet-avatar/spec.js.map +1 -0
  30. package/dist/components/kemet-badge/docs/stories.d.ts +1 -1
  31. package/dist/components/kemet-badge/kemet-badge.js.map +1 -1
  32. package/dist/components/kemet-badge/spec.d.ts +1 -0
  33. package/dist/components/kemet-badge/spec.js +21 -0
  34. package/dist/components/kemet-badge/spec.js.map +1 -0
  35. package/dist/components/kemet-badge/types.d.ts +1 -1
  36. package/dist/components/kemet-button/docs/stories.d.ts +1 -1
  37. package/dist/components/kemet-button/kemet-button.d.ts +2 -2
  38. package/dist/components/kemet-button/kemet-button.js +10 -8
  39. package/dist/components/kemet-button/kemet-button.js.map +1 -1
  40. package/dist/components/kemet-button/spec.d.ts +1 -0
  41. package/dist/components/kemet-button/spec.js +49 -0
  42. package/dist/components/kemet-button/spec.js.map +1 -0
  43. package/dist/components/kemet-button/types.d.ts +1 -1
  44. package/dist/components/kemet-card/docs/stories.d.ts +1 -1
  45. package/dist/components/kemet-card/docs/stories.js.map +1 -1
  46. package/dist/components/kemet-card/kemet-card.d.ts +1 -1
  47. package/dist/components/kemet-card/kemet-card.js +1 -1
  48. package/dist/components/kemet-card/kemet-card.js.map +1 -1
  49. package/dist/components/kemet-card/spec.d.ts +1 -0
  50. package/dist/components/kemet-card/spec.js +31 -0
  51. package/dist/components/kemet-card/spec.js.map +1 -0
  52. package/dist/components/kemet-carousel/docs/stories.d.ts +1 -1
  53. package/dist/components/kemet-carousel/docs/stories.js.map +1 -1
  54. package/dist/components/kemet-carousel/kemet-carousel-current.d.ts +1 -1
  55. package/dist/components/kemet-carousel/kemet-carousel-current.js.map +1 -1
  56. package/dist/components/kemet-carousel/kemet-carousel-first.d.ts +1 -0
  57. package/dist/components/kemet-carousel/kemet-carousel-first.js +11 -4
  58. package/dist/components/kemet-carousel/kemet-carousel-first.js.map +1 -1
  59. package/dist/components/kemet-carousel/kemet-carousel-last.d.ts +2 -1
  60. package/dist/components/kemet-carousel/kemet-carousel-last.js +12 -5
  61. package/dist/components/kemet-carousel/kemet-carousel-last.js.map +1 -1
  62. package/dist/components/kemet-carousel/kemet-carousel-link.d.ts +1 -0
  63. package/dist/components/kemet-carousel/kemet-carousel-link.js +14 -4
  64. package/dist/components/kemet-carousel/kemet-carousel-link.js.map +1 -1
  65. package/dist/components/kemet-carousel/kemet-carousel-next.d.ts +1 -0
  66. package/dist/components/kemet-carousel/kemet-carousel-next.js +11 -4
  67. package/dist/components/kemet-carousel/kemet-carousel-next.js.map +1 -1
  68. package/dist/components/kemet-carousel/kemet-carousel-prev.d.ts +1 -0
  69. package/dist/components/kemet-carousel/kemet-carousel-prev.js +11 -4
  70. package/dist/components/kemet-carousel/kemet-carousel-prev.js.map +1 -1
  71. package/dist/components/kemet-carousel/kemet-carousel-slide.js +5 -5
  72. package/dist/components/kemet-carousel/kemet-carousel-slide.js.map +1 -1
  73. package/dist/components/kemet-carousel/kemet-carousel-total.js.map +1 -1
  74. package/dist/components/kemet-carousel/kemet-carousel.d.ts +18 -14
  75. package/dist/components/kemet-carousel/kemet-carousel.js +32 -13
  76. package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
  77. package/dist/components/kemet-carousel/spec.d.ts +10 -0
  78. package/dist/components/kemet-carousel/spec.js +168 -0
  79. package/dist/components/kemet-carousel/spec.js.map +1 -0
  80. package/dist/components/kemet-checkbox/docs/stories.d.ts +1 -1
  81. package/dist/components/kemet-checkbox/kemet-checkbox.d.ts +4 -4
  82. package/dist/components/kemet-checkbox/kemet-checkbox.js +4 -4
  83. package/dist/components/kemet-checkbox/kemet-checkbox.js.map +1 -1
  84. package/dist/components/kemet-checkbox/spec.d.ts +1 -0
  85. package/dist/components/kemet-checkbox/spec.js +33 -0
  86. package/dist/components/kemet-checkbox/spec.js.map +1 -0
  87. package/dist/components/kemet-checkbox/types.d.ts +1 -1
  88. package/dist/components/kemet-combo/docs/stories.d.ts +1 -1
  89. package/dist/components/kemet-combo/kemet-combo.d.ts +9 -8
  90. package/dist/components/kemet-combo/kemet-combo.js +18 -17
  91. package/dist/components/kemet-combo/kemet-combo.js.map +1 -1
  92. package/dist/components/kemet-combo/spec.d.ts +3 -0
  93. package/dist/components/kemet-combo/spec.js +46 -0
  94. package/dist/components/kemet-combo/spec.js.map +1 -0
  95. package/dist/components/kemet-count/docs/stories.d.ts +1 -1
  96. package/dist/components/kemet-count/kemet-count.d.ts +1 -1
  97. package/dist/components/kemet-count/kemet-count.js +1 -1
  98. package/dist/components/kemet-count/kemet-count.js.map +1 -1
  99. package/dist/components/kemet-count/spec.d.ts +4 -0
  100. package/dist/components/kemet-count/spec.js +45 -0
  101. package/dist/components/kemet-count/spec.js.map +1 -0
  102. package/dist/components/kemet-draggable/docs/stories.d.ts +1 -1
  103. package/dist/components/kemet-draggable/kemet-draggable.d.ts +3 -3
  104. package/dist/components/kemet-draggable/kemet-draggable.js +6 -5
  105. package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
  106. package/dist/components/kemet-draggable/spec.d.ts +1 -0
  107. package/dist/components/kemet-draggable/spec.js +30 -0
  108. package/dist/components/kemet-draggable/spec.js.map +1 -0
  109. package/dist/components/kemet-drawer/docs/stories.d.ts +1 -1
  110. package/dist/components/kemet-drawer/kemet-drawer.d.ts +2 -2
  111. package/dist/components/kemet-drawer/kemet-drawer.js +2 -2
  112. package/dist/components/kemet-drawer/kemet-drawer.js.map +1 -1
  113. package/dist/components/kemet-drawer/spec.d.ts +1 -0
  114. package/dist/components/kemet-drawer/spec.js +21 -0
  115. package/dist/components/kemet-drawer/spec.js.map +1 -0
  116. package/dist/components/kemet-drawer/styles.js +1 -0
  117. package/dist/components/kemet-drawer/styles.js.map +1 -1
  118. package/dist/components/kemet-drawer/types.d.ts +2 -2
  119. package/dist/components/kemet-fab/docs/stories.d.ts +1 -1
  120. package/dist/components/kemet-fab/kemet-fab.d.ts +1 -1
  121. package/dist/components/kemet-fab/kemet-fab.js +4 -10
  122. package/dist/components/kemet-fab/kemet-fab.js.map +1 -1
  123. package/dist/components/kemet-fab/spec.d.ts +2 -0
  124. package/dist/components/kemet-fab/spec.js +43 -0
  125. package/dist/components/kemet-fab/spec.js.map +1 -0
  126. package/dist/components/kemet-field/docs/stories.d.ts +1 -1
  127. package/dist/components/kemet-field/kemet-field.d.ts +7 -7
  128. package/dist/components/kemet-field/kemet-field.js +9 -14
  129. package/dist/components/kemet-field/kemet-field.js.map +1 -1
  130. package/dist/components/kemet-field/spec.d.ts +2 -0
  131. package/dist/components/kemet-field/spec.js +38 -0
  132. package/dist/components/kemet-field/spec.js.map +1 -0
  133. package/dist/components/kemet-field/types.d.ts +1 -1
  134. package/dist/components/kemet-flipcard/docs/stories.d.ts +1 -1
  135. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.d.ts +1 -1
  136. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js +2 -3
  137. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js.map +1 -1
  138. package/dist/components/kemet-flipcard/kemet-flipcard.d.ts +2 -2
  139. package/dist/components/kemet-flipcard/kemet-flipcard.js +3 -5
  140. package/dist/components/kemet-flipcard/kemet-flipcard.js.map +1 -1
  141. package/dist/components/kemet-flipcard/spec.d.ts +3 -0
  142. package/dist/components/kemet-flipcard/spec.js +38 -0
  143. package/dist/components/kemet-flipcard/spec.js.map +1 -0
  144. package/dist/components/kemet-icon/docs/stories.d.ts +1 -1
  145. package/dist/components/kemet-icon/kemet-icon.js +1 -1
  146. package/dist/components/kemet-icon/kemet-icon.js.map +1 -1
  147. package/dist/components/kemet-icon/spec.d.ts +1 -0
  148. package/dist/components/kemet-icon/spec.js +69 -0
  149. package/dist/components/kemet-icon/spec.js.map +1 -0
  150. package/dist/components/kemet-input/docs/stories.d.ts +1 -1
  151. package/dist/components/kemet-input/kemet-input.d.ts +3 -22
  152. package/dist/components/kemet-input/kemet-input.js +3 -23
  153. package/dist/components/kemet-input/kemet-input.js.map +1 -1
  154. package/dist/components/kemet-input/spec.d.ts +1 -0
  155. package/dist/components/kemet-input/spec.js +83 -0
  156. package/dist/components/kemet-input/spec.js.map +1 -0
  157. package/dist/components/kemet-input/types.d.ts +3 -3
  158. package/dist/components/kemet-modal/docs/stories.d.ts +1 -1
  159. package/dist/components/kemet-modal/docs/stories.js.map +1 -1
  160. package/dist/components/kemet-modal/kemet-modal-close.js.map +1 -1
  161. package/dist/components/kemet-modal/kemet-modal.d.ts +4 -4
  162. package/dist/components/kemet-modal/kemet-modal.js +3 -3
  163. package/dist/components/kemet-modal/kemet-modal.js.map +1 -1
  164. package/dist/components/kemet-modal/types.d.ts +1 -1
  165. package/dist/components/kemet-multi-input/docs/stories.d.ts +8 -0
  166. package/dist/components/kemet-multi-input/docs/stories.js +33 -0
  167. package/dist/components/kemet-multi-input/docs/stories.js.map +1 -0
  168. package/dist/components/kemet-multi-input/kemet-multi-input.d.ts +116 -0
  169. package/dist/components/kemet-multi-input/kemet-multi-input.js +193 -0
  170. package/dist/components/kemet-multi-input/kemet-multi-input.js.map +1 -0
  171. package/dist/components/kemet-multi-input/styles.d.ts +1 -0
  172. package/dist/components/kemet-multi-input/styles.js +87 -0
  173. package/dist/components/kemet-multi-input/styles.js.map +1 -0
  174. package/dist/components/kemet-multi-input/types.d.ts +5 -0
  175. package/dist/components/kemet-multi-input/types.js +2 -0
  176. package/dist/components/kemet-multi-input/types.js.map +1 -0
  177. package/dist/components/kemet-password/docs/stories.d.ts +1 -1
  178. package/dist/components/kemet-password/kemet-password.d.ts +14 -8
  179. package/dist/components/kemet-password/kemet-password.js +4 -33
  180. package/dist/components/kemet-password/kemet-password.js.map +1 -1
  181. package/dist/components/kemet-password/types.d.ts +1 -1
  182. package/dist/components/kemet-popper/docs/stories.d.ts +1 -1
  183. package/dist/components/kemet-popper/kemet-popper-close.d.ts +1 -1
  184. package/dist/components/kemet-popper/kemet-popper-close.js +2 -3
  185. package/dist/components/kemet-popper/kemet-popper-close.js.map +1 -1
  186. package/dist/components/kemet-popper/kemet-popper.d.ts +18 -7
  187. package/dist/components/kemet-popper/kemet-popper.js +21 -25
  188. package/dist/components/kemet-popper/kemet-popper.js.map +1 -1
  189. package/dist/components/kemet-popper/types.d.ts +3 -3
  190. package/dist/components/kemet-radio/docs/stories.d.ts +1 -1
  191. package/dist/components/kemet-radio/kemet-radio.js.map +1 -1
  192. package/dist/components/kemet-radio/kemet-radios.d.ts +5 -4
  193. package/dist/components/kemet-radio/kemet-radios.js +10 -4
  194. package/dist/components/kemet-radio/kemet-radios.js.map +1 -1
  195. package/dist/components/kemet-radio/spec.d.ts +3 -0
  196. package/dist/components/kemet-radio/spec.js +67 -0
  197. package/dist/components/kemet-radio/spec.js.map +1 -0
  198. package/dist/components/kemet-radio/types.d.ts +2 -2
  199. package/dist/components/kemet-rotator/docs/stories.d.ts +1 -1
  200. package/dist/components/kemet-rotator/kemet-rotator.d.ts +1 -1
  201. package/dist/components/kemet-rotator/kemet-rotator.js +1 -2
  202. package/dist/components/kemet-rotator/kemet-rotator.js.map +1 -1
  203. package/dist/components/kemet-rotator/types.d.ts +1 -1
  204. package/dist/components/kemet-scroll-link/docs/stories.d.ts +1 -1
  205. package/dist/components/kemet-scroll-link/kemet-scroll-link.d.ts +2 -2
  206. package/dist/components/kemet-scroll-link/kemet-scroll-link.js +11 -10
  207. package/dist/components/kemet-scroll-link/kemet-scroll-link.js.map +1 -1
  208. package/dist/components/kemet-scroll-nav/docs/stories.d.ts +1 -1
  209. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.d.ts +2 -2
  210. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js +2 -7
  211. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js.map +1 -1
  212. package/dist/components/kemet-scroll-nav/types.d.ts +1 -1
  213. package/dist/components/kemet-scroll-snap/docs/stories.d.ts +1 -1
  214. package/dist/components/kemet-scroll-snap/docs/stories.js.map +1 -1
  215. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.d.ts +5 -4
  216. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js +1 -1
  217. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js.map +1 -1
  218. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.d.ts +1 -1
  219. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js +1 -1
  220. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js.map +1 -1
  221. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.d.ts +3 -2
  222. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js +2 -7
  223. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js.map +1 -1
  224. package/dist/components/kemet-scroll-snap/types.d.ts +2 -2
  225. package/dist/components/kemet-select/docs/stories.d.ts +1 -1
  226. package/dist/components/kemet-select/kemet-option.d.ts +1 -1
  227. package/dist/components/kemet-select/kemet-option.js +1 -1
  228. package/dist/components/kemet-select/kemet-option.js.map +1 -1
  229. package/dist/components/kemet-select/kemet-select.d.ts +19 -10
  230. package/dist/components/kemet-select/kemet-select.js +3 -44
  231. package/dist/components/kemet-select/kemet-select.js.map +1 -1
  232. package/dist/components/kemet-select/spec.d.ts +3 -0
  233. package/dist/components/kemet-select/spec.js +53 -0
  234. package/dist/components/kemet-select/spec.js.map +1 -0
  235. package/dist/components/kemet-sortable/docs/stories.d.ts +1 -1
  236. package/dist/components/kemet-sortable/docs/stories.js.map +1 -1
  237. package/dist/components/kemet-sortable/kemet-sortable-item.js.map +1 -1
  238. package/dist/components/kemet-sortable/kemet-sortable.d.ts +5 -5
  239. package/dist/components/kemet-sortable/kemet-sortable.js +5 -5
  240. package/dist/components/kemet-sortable/kemet-sortable.js.map +1 -1
  241. package/dist/components/kemet-svgs/docs/stories.d.ts +1 -1
  242. package/dist/components/kemet-svgs/docs/stories.js.map +1 -1
  243. package/dist/components/kemet-svgs/kemet-svg.js.map +1 -1
  244. package/dist/components/kemet-svgs/kemet-svgs.d.ts +1 -1
  245. package/dist/components/kemet-svgs/kemet-svgs.js +1 -1
  246. package/dist/components/kemet-svgs/kemet-svgs.js.map +1 -1
  247. package/dist/components/kemet-tabs/docs/stories.d.ts +1 -1
  248. package/dist/components/kemet-tabs/docs/stories.js.map +1 -1
  249. package/dist/components/kemet-tabs/kemet-tab-panel.d.ts +1 -0
  250. package/dist/components/kemet-tabs/kemet-tab-panel.js +3 -0
  251. package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
  252. package/dist/components/kemet-tabs/kemet-tab.d.ts +1 -0
  253. package/dist/components/kemet-tabs/kemet-tab.js +4 -1
  254. package/dist/components/kemet-tabs/kemet-tab.js.map +1 -1
  255. package/dist/components/kemet-tabs/kemet-tabs.d.ts +23 -14
  256. package/dist/components/kemet-tabs/kemet-tabs.js +3 -47
  257. package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
  258. package/dist/components/kemet-tabs/types.d.ts +3 -3
  259. package/dist/components/kemet-textarea/docs/stories.d.ts +1 -1
  260. package/dist/components/kemet-textarea/kemet-textarea.js.map +1 -1
  261. package/dist/components/kemet-textarea/spec.d.ts +3 -0
  262. package/dist/components/kemet-textarea/spec.js +69 -0
  263. package/dist/components/kemet-textarea/spec.js.map +1 -0
  264. package/dist/components/kemet-textarea/types.d.ts +1 -1
  265. package/dist/components/kemet-timer/docs/stories.d.ts +10 -0
  266. package/dist/components/kemet-timer/docs/stories.js +40 -0
  267. package/dist/components/kemet-timer/docs/stories.js.map +1 -0
  268. package/dist/components/kemet-timer/kemet-timer-display.d.ts +25 -0
  269. package/dist/components/kemet-timer/kemet-timer-display.js +65 -0
  270. package/dist/components/kemet-timer/kemet-timer-display.js.map +1 -0
  271. package/dist/components/kemet-timer/kemet-timer.d.ts +36 -0
  272. package/dist/components/kemet-timer/kemet-timer.js +103 -0
  273. package/dist/components/kemet-timer/kemet-timer.js.map +1 -0
  274. package/dist/components/kemet-timer/styles.d.ts +2 -0
  275. package/dist/components/kemet-timer/styles.js +12 -0
  276. package/dist/components/kemet-timer/styles.js.map +1 -0
  277. package/dist/components/kemet-timer/types.d.ts +1 -0
  278. package/dist/components/kemet-timer/types.js +2 -0
  279. package/dist/components/kemet-timer/types.js.map +1 -0
  280. package/dist/components/kemet-toggle/docs/stories.d.ts +1 -1
  281. package/dist/components/kemet-toggle/kemet-toggle.d.ts +3 -3
  282. package/dist/components/kemet-toggle/kemet-toggle.js +3 -3
  283. package/dist/components/kemet-toggle/kemet-toggle.js.map +1 -1
  284. package/dist/components/kemet-toggle/spec.d.ts +1 -0
  285. package/dist/components/kemet-toggle/spec.js +46 -0
  286. package/dist/components/kemet-toggle/spec.js.map +1 -0
  287. package/dist/components/kemet-tooltip/docs/stories.d.ts +1 -1
  288. package/dist/components/kemet-tooltip/kemet-tooltip.d.ts +2 -2
  289. package/dist/components/kemet-tooltip/kemet-tooltip.js +13 -12
  290. package/dist/components/kemet-tooltip/kemet-tooltip.js.map +1 -1
  291. package/dist/components/kemet-tooltip/types.d.ts +3 -3
  292. package/dist/components/kemet-tracker/docs/stories.d.ts +1 -1
  293. package/dist/components/kemet-tracker/docs/stories.js.map +1 -1
  294. package/dist/components/kemet-tracker/kemet-tracker-step.d.ts +2 -2
  295. package/dist/components/kemet-tracker/kemet-tracker-step.js +2 -2
  296. package/dist/components/kemet-tracker/kemet-tracker-step.js.map +1 -1
  297. package/dist/components/kemet-tracker/kemet-tracker.d.ts +2 -1
  298. package/dist/components/kemet-tracker/kemet-tracker.js.map +1 -1
  299. package/dist/components/kemet-upload/docs/stories.d.ts +1 -1
  300. package/dist/components/kemet-upload/kemet-upload-file.js +1 -2
  301. package/dist/components/kemet-upload/kemet-upload-file.js.map +1 -1
  302. package/dist/components/kemet-upload/kemet-upload.d.ts +3 -3
  303. package/dist/components/kemet-upload/kemet-upload.js +3 -8
  304. package/dist/components/kemet-upload/kemet-upload.js.map +1 -1
  305. package/dist/kemet-components.bundle.js +82 -86
  306. package/dist/kemet-components.bundle.js.map +1 -1
  307. package/dist/kemet-components.cjs +3320 -2985
  308. package/dist/kemet-components.js +3320 -2985
  309. package/dist/styles/kemet.base.css +24 -2
  310. package/dist/styles/kemet.base.css.map +1 -1
  311. package/dist/styles/kemet.core.css +266 -562
  312. package/dist/styles/kemet.core.css.map +1 -1
  313. package/dist/styles/shared/_config.scss +25 -1
  314. package/dist/tsconfig.tsbuildinfo +1 -1
  315. package/dist/utilities/controllers/forms.js +16 -18
  316. package/dist/utilities/controllers/forms.js.map +1 -1
  317. package/dist/utilities/controllers/forms.spec.d.ts +2 -0
  318. package/dist/utilities/controllers/forms.spec.js +36 -0
  319. package/dist/utilities/controllers/forms.spec.js.map +1 -0
  320. package/dist/utilities/misc/drag.d.ts +6 -0
  321. package/dist/utilities/misc/drag.js +63 -0
  322. package/dist/utilities/misc/drag.js.map +1 -0
  323. package/package.json +50 -35
  324. package/dist/components/kemet-accordion/stories.d.ts +0 -12
  325. package/dist/components/kemet-accordion/stories.js +0 -47
  326. package/dist/components/kemet-accordion/stories.js.map +0 -1
@@ -0,0 +1,12 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import '../kemet-accordion';
3
+ import '../kemet-accordion-panel';
4
+ import '../../kemet-tabs/kemet-tabs';
5
+ import '../../kemet-tabs/kemet-tab';
6
+ import '../../kemet-tabs/kemet-tab-panel';
7
+ import '../../kemet-icon/kemet-icon';
8
+ declare const meta: Meta;
9
+ export default meta;
10
+ type Story = StoryObj;
11
+ export declare const Standard: Story;
12
+ export declare const TogglePanels: Story;
@@ -0,0 +1,99 @@
1
+ import { html } from 'lit';
2
+ import { userEvent, waitFor, within, expect, } from '@storybook/test';
3
+ import '../kemet-accordion';
4
+ import '../kemet-accordion-panel';
5
+ import '../../kemet-tabs/kemet-tabs';
6
+ import '../../kemet-tabs/kemet-tab';
7
+ import '../../kemet-tabs/kemet-tab-panel';
8
+ import '../../kemet-icon/kemet-icon';
9
+ const meta = {
10
+ title: 'Components / Accordion',
11
+ component: 'kemet-accordion',
12
+ };
13
+ export default meta;
14
+ const Template = args => html `
15
+ <kemet-accordion ?toggle-panels=${args.togglePanels} kemet-elevation="layer-4">
16
+ <kemet-accordion-panel>
17
+ <h3 slot="trigger">Trigger 1</h3>
18
+ <kemet-icon slot="icon" icon="chevron-down" size="18"></kemet-icon>
19
+ <div slot="body">
20
+ <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
21
+ </div>
22
+ </kemet-accordion-panel>
23
+ <kemet-accordion-panel>
24
+ <h3 slot="trigger">Trigger 2</h3>
25
+ <kemet-icon slot="icon" icon="chevron-down" size="18"></kemet-icon>
26
+ <div slot="body">
27
+ <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
28
+ </div>
29
+ </kemet-accordion-panel>
30
+ <kemet-accordion-panel>
31
+ <h3 slot="trigger">Trigger 3</h3>
32
+ <kemet-icon slot="icon" icon="chevron-down" size="18"></kemet-icon>
33
+ <div slot="body">
34
+ <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
35
+ </div>
36
+ </kemet-accordion-panel>
37
+ </kemet-accordion>
38
+ `;
39
+ export const Standard = {
40
+ render: args => Template(args),
41
+ play: async ({ canvasElement, step }) => {
42
+ const canvas = within(canvasElement);
43
+ const trigger1 = canvas.getByText('Trigger 1');
44
+ const trigger2 = canvas.getByText('Trigger 2');
45
+ const trigger3 = canvas.getByText('Trigger 3');
46
+ const panel1 = trigger1.closest('kemet-accordion-panel');
47
+ const panel2 = trigger2.closest('kemet-accordion-panel');
48
+ const panel3 = trigger3.closest('kemet-accordion-panel');
49
+ const accordion = trigger1.closest('kemet-accordion');
50
+ await step('Expand Trigger 2', async () => {
51
+ await userEvent.click(trigger2);
52
+ await waitFor(() => expect(panel2.opened).toBeTruthy());
53
+ });
54
+ await step('Expand them all', async () => {
55
+ accordion.expandAll();
56
+ await waitFor(() => expect(panel1.opened).toBeTruthy());
57
+ await waitFor(() => expect(panel2.opened).toBeTruthy());
58
+ await waitFor(() => expect(panel3.opened).toBeTruthy());
59
+ });
60
+ await step('Collapse them all', async () => {
61
+ accordion.collapseAll();
62
+ await waitFor(() => expect(panel1.opened).toBeFalsy());
63
+ await waitFor(() => expect(panel2.opened).toBeFalsy());
64
+ await waitFor(() => expect(panel3.opened).toBeFalsy());
65
+ });
66
+ },
67
+ };
68
+ export const TogglePanels = {
69
+ render: args => Template(args),
70
+ args: {
71
+ togglePanels: true,
72
+ },
73
+ play: async ({ canvasElement, step }) => {
74
+ const canvas = within(canvasElement);
75
+ const trigger1 = canvas.getByText('Trigger 1');
76
+ const trigger2 = canvas.getByText('Trigger 2');
77
+ const panel2 = trigger2.closest('kemet-accordion-panel');
78
+ await step('Expand Trigger 2', async () => {
79
+ await userEvent.click(trigger2);
80
+ await waitFor(() => expect(panel2.opened).toBeTruthy());
81
+ });
82
+ await step('Expand Trigger 1', async () => {
83
+ await waitFor(() => expect(panel2.opened).toBeTruthy());
84
+ await userEvent.click(trigger1);
85
+ await waitFor(() => expect(panel2.opened).toBeFalsy());
86
+ });
87
+ await step('Keyboard', async () => {
88
+ // await userEvent.click(trigger1);
89
+ // await userEvent.tab();
90
+ trigger2.focus();
91
+ await userEvent.keyboard('{ArrowDown}{Enter}');
92
+ // console.log(document.activeElement);
93
+ // fireEvent.keyDown(trigger1, { key: 'ArrowDown' });
94
+ // fireEvent.keyDown(trigger2, { key: 'Enter'});
95
+ // console.log(panel2.opened);
96
+ });
97
+ },
98
+ };
99
+ //# sourceMappingURL=stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../../src/components/kemet-accordion/docs/stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit';\nimport type { Meta, StoryObj } from '@storybook/web-components';\nimport {\n userEvent, waitFor, within, expect,\n} from '@storybook/test';\n\nimport '../kemet-accordion';\nimport '../kemet-accordion-panel';\n\nimport '../../kemet-tabs/kemet-tabs';\nimport '../../kemet-tabs/kemet-tab';\nimport '../../kemet-tabs/kemet-tab-panel';\n\nimport '../../kemet-icon/kemet-icon';\n\nconst meta: Meta = {\n title: 'Components / Accordion',\n component: 'kemet-accordion',\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = args => html`\n <kemet-accordion ?toggle-panels=${args.togglePanels} kemet-elevation=\"layer-4\">\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 1</h3>\n <kemet-icon slot=\"icon\" icon=\"chevron-down\" size=\"18\"></kemet-icon>\n <div slot=\"body\">\n <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 2</h3>\n <kemet-icon slot=\"icon\" icon=\"chevron-down\" size=\"18\"></kemet-icon>\n <div slot=\"body\">\n <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 3</h3>\n <kemet-icon slot=\"icon\" icon=\"chevron-down\" size=\"18\"></kemet-icon>\n <div slot=\"body\">\n <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n </kemet-accordion>\n`;\n\nexport const Standard: Story = {\n render: args => Template(args),\n play: async ({ canvasElement, step }) => {\n const canvas = within(canvasElement);\n const trigger1 = canvas.getByText('Trigger 1');\n const trigger2 = canvas.getByText('Trigger 2');\n const trigger3 = canvas.getByText('Trigger 3');\n const panel1 = trigger1.closest('kemet-accordion-panel');\n const panel2 = trigger2.closest('kemet-accordion-panel');\n const panel3 = trigger3.closest('kemet-accordion-panel');\n const accordion = trigger1.closest('kemet-accordion');\n\n await step('Expand Trigger 2', async () => {\n await userEvent.click(trigger2);\n await waitFor(() => expect(panel2.opened).toBeTruthy());\n });\n\n await step('Expand them all', async () => {\n accordion.expandAll();\n await waitFor(() => expect(panel1.opened).toBeTruthy());\n await waitFor(() => expect(panel2.opened).toBeTruthy());\n await waitFor(() => expect(panel3.opened).toBeTruthy());\n });\n\n await step('Collapse them all', async () => {\n accordion.collapseAll();\n await waitFor(() => expect(panel1.opened).toBeFalsy());\n await waitFor(() => expect(panel2.opened).toBeFalsy());\n await waitFor(() => expect(panel3.opened).toBeFalsy());\n });\n },\n};\n\nexport const TogglePanels: Story = {\n render: args => Template(args),\n args: {\n togglePanels: true,\n },\n play: async ({ canvasElement, step }) => {\n const canvas = within(canvasElement);\n const trigger1 = canvas.getByText('Trigger 1');\n const trigger2 = canvas.getByText('Trigger 2');\n const panel2 = trigger2.closest('kemet-accordion-panel');\n\n await step('Expand Trigger 2', async () => {\n await userEvent.click(trigger2);\n await waitFor(() => expect(panel2.opened).toBeTruthy());\n });\n\n await step('Expand Trigger 1', async () => {\n await waitFor(() => expect(panel2.opened).toBeTruthy());\n await userEvent.click(trigger1);\n await waitFor(() => expect(panel2.opened).toBeFalsy());\n });\n\n await step('Keyboard', async () => {\n // await userEvent.click(trigger1);\n // await userEvent.tab();\n\n trigger2.focus();\n await userEvent.keyboard('{ArrowDown}{Enter}');\n\n // console.log(document.activeElement);\n // fireEvent.keyDown(trigger1, { key: 'ArrowDown' });\n // fireEvent.keyDown(trigger2, { key: 'Enter'});\n // console.log(panel2.opened);\n });\n },\n};\n"]}
@@ -36,12 +36,12 @@ export default class KemetAccordionPanel extends LitElement {
36
36
  /** @internal */
37
37
  bodyElementLast: HTMLElement | null | undefined;
38
38
  firstUpdated(): void;
39
- updated(prevProps: any): void;
39
+ updated(prevProps: Map<string, never>): void;
40
40
  render(): import("lit-html").TemplateResult<1>;
41
41
  toggle(): void;
42
42
  focusableBodyElements(): void;
43
43
  a11y(): void;
44
- handleKeyDown(event: any): void;
44
+ handleKeyDown(event: KeyboardEvent): void;
45
45
  }
46
46
  declare global {
47
47
  interface HTMLElementTagNameMap {
@@ -62,7 +62,7 @@ let KemetAccordionPanel = class KemetAccordionPanel extends LitElement {
62
62
  class="trigger"
63
63
  part="trigger"
64
64
  @click=${() => this.toggle()}
65
- @keydown=${event => this.handleKeyDown(event)}
65
+ @keydown=${(event) => this.handleKeyDown(event)}
66
66
  >
67
67
  <slot name="trigger"></slot>
68
68
  <slot name="icon"></slot>
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-accordion-panel.js","sourceRoot":"","sources":["../../../src/components/kemet-accordion/kemet-accordion-panel.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesPanel } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-accordion-panel\n * @summary A blade for an accordion.\n *\n * @prop {boolean} opened - Determines the opened state of the panel\n * @prop {string} maxHeight - Sets the max height of the panel's body\n * @prop {string} slug - Uniquely identifies a panel for accessibility purposes\n *\n * @slot trigger - The trigger button that opens and closes the panel.\n * @slot body - The body content of the panel.\n * @slot icon - The icon for the panel.\n *\n * @csspart trigger - Contains the trigger for the panel.\n * @csspart body - Contains the body for the panel.\n *\n * @event kemet-accordion-panel-opened - Fires when a panel is opened\n * @event kemet-accordion-panel-closed - Fires when a panel is closed\n *\n */\n\n@customElement('kemet-accordion-panel')\nexport default class KemetAccordionPanel extends LitElement {\n static styles = [stylesPanel];\n\n @property({ type: Boolean, reflect: true })\n opened: boolean | undefined = undefined;\n\n @property({ type: String, attribute: 'max-height'})\n maxHeight: string = '0px';\n\n @property({ type: String })\n slug: string = 'panel';\n\n @property({ type: Number })\n index: number;\n\n /** @internal */\n @state()\n focusableSelector: string;\n\n /** @internal */\n @state()\n bodyElement: HTMLElement | null;\n\n /** @internal */\n @state()\n bodyElementFirst: HTMLElement | null | undefined;\n\n /** @internal */\n @state()\n bodyElementLast: HTMLElement | null | undefined;\n\n firstUpdated() {\n this.focusableSelector = 'body, a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]';\n this.bodyElement = this.querySelector('[slot=\"body\"]');\n this.bodyElementFirst = this.bodyElement?.querySelector(':first-child');\n this.bodyElementLast = this.bodyElement?.querySelector(':last-child');\n\n if (this.bodyElementFirst) this.bodyElementFirst.style.marginTop = '0';\n if (this.bodyElementLast) this.bodyElementLast.style.marginBottom = '0';\n }\n\n updated(prevProps) {\n if (!prevProps.get('opened') && this.opened === true) {\n this.maxHeight = `${this.bodyElement?.offsetHeight}px`;\n emitEvent(this, 'kemet-accordion-panel-opened', this);\n }\n\n if (prevProps.get('opened') && this.opened === false) {\n this.maxHeight = '0px';\n emitEvent(this, 'kemet-accordion-panel-closed', this);\n }\n\n this.a11y();\n this.focusableBodyElements();\n }\n\n render() {\n return html`\n <button\n class=\"trigger\"\n part=\"trigger\"\n @click=${() => this.toggle()}\n @keydown=${event => this.handleKeyDown(event)}\n >\n <slot name=\"trigger\"></slot>\n <slot name=\"icon\"></slot>\n </button>\n <section class=\"body\" part=\"body\" style=\"max-height:${this.maxHeight};\">\n <slot name=\"body\"></slot>\n </section>\n `;\n }\n\n toggle() {\n this.opened = !this.opened;\n }\n\n focusableBodyElements() {\n const focusableElements = this.bodyElement?.querySelectorAll(this.focusableSelector);\n\n if (this.opened) {\n focusableElements?.forEach((element) => {\n element.removeAttribute('tabindex');\n });\n } else {\n focusableElements?.forEach((element) => {\n element.setAttribute('tabindex', '-1');\n });\n }\n }\n\n a11y() {\n const trigger = this.shadowRoot?.querySelector('.trigger');\n const body = this.shadowRoot?.querySelector('.body');\n\n trigger?.setAttribute('id', `${this.slug}-button`);\n trigger?.setAttribute('aria-controls', `${this.slug}-content`);\n\n body?.setAttribute('id', `${this.slug}-content`);\n body?.setAttribute('aria-labelledby', `${this.slug}-button`);\n body?.setAttribute('aria-hidden', `${!this.opened}`);\n }\n\n handleKeyDown(event) {\n if (event.key === 'Space' || event.key === 'Enter') {\n this.toggle();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-accordion-panel': KemetAccordionPanel\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-accordion-panel.js","sourceRoot":"","sources":["../../../src/components/kemet-accordion/kemet-accordion-panel.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesPanel } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-accordion-panel\n * @summary A blade for an accordion.\n *\n * @prop {boolean} opened - Determines the opened state of the panel\n * @prop {string} maxHeight - Sets the max height of the panel's body\n * @prop {string} slug - Uniquely identifies a panel for accessibility purposes\n *\n * @slot trigger - The trigger button that opens and closes the panel.\n * @slot body - The body content of the panel.\n * @slot icon - The icon for the panel.\n *\n * @csspart trigger - Contains the trigger for the panel.\n * @csspart body - Contains the body for the panel.\n *\n * @event kemet-accordion-panel-opened - Fires when a panel is opened\n * @event kemet-accordion-panel-closed - Fires when a panel is closed\n *\n */\n\n@customElement('kemet-accordion-panel')\nexport default class KemetAccordionPanel extends LitElement {\n static styles = [stylesPanel];\n\n @property({ type: Boolean, reflect: true })\n opened: boolean | undefined = undefined;\n\n @property({ type: String, attribute: 'max-height' })\n maxHeight: string = '0px';\n\n @property({ type: String })\n slug: string = 'panel';\n\n @property({ type: Number })\n index: number;\n\n /** @internal */\n @state()\n focusableSelector: string;\n\n /** @internal */\n @state()\n bodyElement: HTMLElement | null;\n\n /** @internal */\n @state()\n bodyElementFirst: HTMLElement | null | undefined;\n\n /** @internal */\n @state()\n bodyElementLast: HTMLElement | null | undefined;\n\n firstUpdated() {\n this.focusableSelector = 'body, a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]';\n this.bodyElement = this.querySelector('[slot=\"body\"]');\n this.bodyElementFirst = this.bodyElement?.querySelector(':first-child');\n this.bodyElementLast = this.bodyElement?.querySelector(':last-child');\n\n if (this.bodyElementFirst) this.bodyElementFirst.style.marginTop = '0';\n if (this.bodyElementLast) this.bodyElementLast.style.marginBottom = '0';\n }\n\n updated(prevProps: Map<string, never>) {\n if (!prevProps.get('opened') && this.opened === true) {\n this.maxHeight = `${this.bodyElement?.offsetHeight}px`;\n emitEvent(this, 'kemet-accordion-panel-opened', this);\n }\n\n if (prevProps.get('opened') && this.opened === false) {\n this.maxHeight = '0px';\n emitEvent(this, 'kemet-accordion-panel-closed', this);\n }\n\n this.a11y();\n this.focusableBodyElements();\n }\n\n render() {\n return html`\n <button\n class=\"trigger\"\n part=\"trigger\"\n @click=${() => this.toggle()}\n @keydown=${(event: KeyboardEvent) => this.handleKeyDown(event)}\n >\n <slot name=\"trigger\"></slot>\n <slot name=\"icon\"></slot>\n </button>\n <section class=\"body\" part=\"body\" style=\"max-height:${this.maxHeight};\">\n <slot name=\"body\"></slot>\n </section>\n `;\n }\n\n toggle() {\n this.opened = !this.opened;\n }\n\n focusableBodyElements() {\n const focusableElements = this.bodyElement?.querySelectorAll(this.focusableSelector);\n\n if (this.opened) {\n focusableElements?.forEach((element) => {\n element.removeAttribute('tabindex');\n });\n } else {\n focusableElements?.forEach((element) => {\n element.setAttribute('tabindex', '-1');\n });\n }\n }\n\n a11y() {\n const trigger = this.shadowRoot?.querySelector('.trigger');\n const body = this.shadowRoot?.querySelector('.body');\n\n trigger?.setAttribute('id', `${this.slug}-button`);\n trigger?.setAttribute('aria-controls', `${this.slug}-content`);\n\n body?.setAttribute('id', `${this.slug}-content`);\n body?.setAttribute('aria-labelledby', `${this.slug}-button`);\n body?.setAttribute('aria-hidden', `${!this.opened}`);\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Space' || event.key === 'Enter') {\n this.toggle();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-accordion-panel': KemetAccordionPanel\n }\n}\n"]}
@@ -25,9 +25,9 @@ export default class KemetAccordion extends LitElement {
25
25
  firstUpdated(): void;
26
26
  render(): import("lit-html").TemplateResult<1>;
27
27
  handleSlotChange(): void;
28
- handlePanelOpened(event: any): void;
29
- navigatePanels(direction: any): void;
30
- handleKeyDown(event: any): void;
28
+ handlePanelOpened(event: CustomEvent): void;
29
+ navigatePanels(direction: string): void;
30
+ handleKeyDown(event: KeyboardEvent): void;
31
31
  expandAll(): void;
32
32
  collapseAll(): void;
33
33
  }
@@ -75,11 +75,12 @@ let KemetAccordion = class KemetAccordion extends LitElement {
75
75
  this.panels[this.currentPanel].shadowRoot.querySelector('button').focus();
76
76
  }
77
77
  handleKeyDown(event) {
78
+ const target = event.target;
78
79
  switch (event.key) {
79
80
  case 'Enter':
80
81
  case 'Space':
81
82
  event.preventDefault();
82
- event.target.click();
83
+ target.click();
83
84
  break;
84
85
  case 'ArrowLeft':
85
86
  case 'ArrowUp':
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-accordion.js","sourceRoot":"","sources":["../../../src/components/kemet-accordion/kemet-accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { stylesBase } from './styles';\nimport KemetAccordionPanel from './kemet-accordion-panel';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-accordion\n * @summary A component that acts like a standard accordion.\n *\n * @prop {number} currentPanel - The index value for the most recently opened panel\n * @prop {boolean} togglePanels - Support for closing all inactive panels when one is opened\n *\n */\n\n@customElement('kemet-accordion')\nexport default class KemetAccordion extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: Number, attribute: 'current-panel' })\n currentPanel: number = 0;\n\n @property({ type: Boolean, attribute: 'toggle-panels' })\n togglePanels: boolean = false;\n\n /** @internal */\n @state()\n panels: NodeListOf<KemetAccordionPanel>;\n\n /** @internal */\n @state()\n onKeyDown: (event: KeyboardEvent) => void;\n\n /** @internal */\n @state()\n currentPanelFocus: number;\n\n constructor() {\n super();\n\n // bindings\n this.addEventListener('kemet-accordion-panel-opened', this.handlePanelOpened.bind(this));\n }\n\n firstUpdated() {\n this.onKeyDown = event => this.handleKeyDown(event);\n }\n\n render() {\n return html`<slot @slotchange=${() => this.handleSlotChange()}></slot>`;\n }\n\n handleSlotChange() {\n this.panels = this.querySelectorAll('kemet-accordion-panel');\n\n this.panels.forEach((panel: KemetAccordionPanel, index) => {\n panel.index = index;\n panel.removeEventListener('keydown', this.onKeyDown);\n panel.addEventListener('keydown', this.onKeyDown);\n });\n }\n\n handlePanelOpened(event) {\n this.panels?.forEach((panel: KemetAccordionPanel) => {\n if (panel === event.detail) {\n this.currentPanel = panel.index;\n }\n });\n\n if (this.togglePanels) {\n this.panels?.forEach((panel: KemetAccordionPanel) => {\n if (panel !== event.detail) {\n panel.opened = false;\n }\n });\n }\n }\n\n navigatePanels(direction) {\n switch (direction) {\n case 'home':\n this.currentPanel = 0;\n break;\n case 'end':\n this.currentPanel = this.panels.length - 1;\n break;\n case 'next':\n this.currentPanel += 1;\n break;\n case 'prev':\n this.currentPanel -= 1;\n break;\n default:\n this.currentPanelFocus = 0;\n break;\n }\n\n if (this.currentPanel > this.panels.length - 1) this.currentPanel = 0;\n if (this.currentPanel < 0) this.currentPanel = this.panels.length - 1;\n\n this.panels[this.currentPanel].shadowRoot.querySelector('button').focus();\n }\n\n handleKeyDown(event) {\n switch (event.key) {\n case 'Enter':\n case 'Space':\n event.preventDefault();\n event.target.click();\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n this.navigatePanels('prev');\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n this.navigatePanels('next');\n break;\n case 'End':\n event.preventDefault();\n this.navigatePanels('end');\n break;\n case 'Home':\n event.preventDefault();\n this.navigatePanels('home');\n break;\n default:\n break;\n }\n }\n\n expandAll() {\n this.panels.forEach((panel) => {\n panel.opened = true;\n });\n }\n\n collapseAll() {\n this.panels.forEach((panel) => {\n panel.opened = false;\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-accordion': KemetAccordion\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-accordion.js","sourceRoot":"","sources":["../../../src/components/kemet-accordion/kemet-accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { stylesBase } from './styles';\nimport KemetAccordionPanel from './kemet-accordion-panel';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-accordion\n * @summary A component that acts like a standard accordion.\n *\n * @prop {number} currentPanel - The index value for the most recently opened panel\n * @prop {boolean} togglePanels - Support for closing all inactive panels when one is opened\n *\n */\n\n@customElement('kemet-accordion')\nexport default class KemetAccordion extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: Number, attribute: 'current-panel' })\n currentPanel: number = 0;\n\n @property({ type: Boolean, attribute: 'toggle-panels' })\n togglePanels: boolean = false;\n\n /** @internal */\n @state()\n panels: NodeListOf<KemetAccordionPanel>;\n\n /** @internal */\n @state()\n onKeyDown: (event: KeyboardEvent) => void;\n\n /** @internal */\n @state()\n currentPanelFocus: number;\n\n constructor() {\n super();\n\n // bindings\n this.addEventListener('kemet-accordion-panel-opened', this.handlePanelOpened.bind(this));\n }\n\n firstUpdated() {\n this.onKeyDown = event => this.handleKeyDown(event);\n }\n\n render() {\n return html`<slot @slotchange=${() => this.handleSlotChange()}></slot>`;\n }\n\n handleSlotChange() {\n this.panels = this.querySelectorAll('kemet-accordion-panel');\n\n this.panels.forEach((panel: KemetAccordionPanel, index) => {\n panel.index = index;\n panel.removeEventListener('keydown', this.onKeyDown);\n panel.addEventListener('keydown', this.onKeyDown);\n });\n }\n\n handlePanelOpened(event: CustomEvent) {\n this.panels?.forEach((panel: KemetAccordionPanel) => {\n if (panel === event.detail) {\n this.currentPanel = panel.index;\n }\n });\n\n if (this.togglePanels) {\n this.panels?.forEach((panel: KemetAccordionPanel) => {\n if (panel !== event.detail) {\n panel.opened = false;\n }\n });\n }\n }\n\n navigatePanels(direction: string) {\n switch (direction) {\n case 'home':\n this.currentPanel = 0;\n break;\n case 'end':\n this.currentPanel = this.panels.length - 1;\n break;\n case 'next':\n this.currentPanel += 1;\n break;\n case 'prev':\n this.currentPanel -= 1;\n break;\n default:\n this.currentPanelFocus = 0;\n break;\n }\n\n if (this.currentPanel > this.panels.length - 1) this.currentPanel = 0;\n if (this.currentPanel < 0) this.currentPanel = this.panels.length - 1;\n\n this.panels[this.currentPanel].shadowRoot.querySelector('button').focus();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n switch (event.key) {\n case 'Enter':\n case 'Space':\n event.preventDefault();\n target.click();\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n this.navigatePanels('prev');\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n this.navigatePanels('next');\n break;\n case 'End':\n event.preventDefault();\n this.navigatePanels('end');\n break;\n case 'Home':\n event.preventDefault();\n this.navigatePanels('home');\n break;\n default:\n break;\n }\n }\n\n expandAll() {\n this.panels.forEach((panel) => {\n panel.opened = true;\n });\n }\n\n collapseAll() {\n this.panels.forEach((panel) => {\n panel.opened = false;\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-accordion': KemetAccordion\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import './kemet-accordion';
2
+ import './kemet-accordion-panel';
@@ -0,0 +1,132 @@
1
+ import { html, render } from 'lit';
2
+ import { expect } from '@wdio/globals';
3
+ import userEvent from '@testing-library/user-event';
4
+ import { fireEvent, getByText, waitFor } from '@testing-library/dom';
5
+ import './kemet-accordion';
6
+ import './kemet-accordion-panel';
7
+ describe('Accordion', () => {
8
+ const templates = {
9
+ default: html `
10
+ <kemet-accordion toggle-panels>
11
+ <kemet-accordion-panel>
12
+ <h3 slot="trigger">Trigger 1</h3>
13
+ <svg slot="icon" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
14
+ <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"></path>
15
+ </svg>
16
+ <svg slot="icon-opened" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
17
+ <path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"></path>
18
+ </svg>
19
+ <div slot="body">
20
+ <p><a href="https://google.com">Google</a>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
21
+ </div>
22
+ </kemet-accordion-panel>
23
+ <kemet-accordion-panel>
24
+ <h3 slot="trigger">Trigger 2</h3>
25
+ <svg slot="icon" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
26
+ <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"></path>
27
+ </svg>
28
+ <svg slot="icon-opened" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
29
+ <path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"></path>
30
+ </svg>
31
+ <div slot="body">
32
+ <p><a href="https://google.com">Google</a> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
33
+ </div>
34
+ </kemet-accordion-panel>
35
+ <kemet-accordion-panel>
36
+ <h3 slot="trigger">Trigger 3</h3>
37
+ <svg slot="icon" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
38
+ <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708"></path>
39
+ </svg>
40
+ <svg slot="icon-opened" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
41
+ <path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z"></path>
42
+ </svg>
43
+ <div slot="body">
44
+ <p><a href="https://google.com">Google</a> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>
45
+ </div>
46
+ </kemet-accordion-panel>
47
+ </kemet-accordion>
48
+ `,
49
+ };
50
+ it('opens a closed panel', async () => {
51
+ render(templates.default, document.body);
52
+ const trigger1 = getByText(document.documentElement, 'Trigger 1');
53
+ const kemetPanel = trigger1.closest('kemet-accordion-panel');
54
+ await userEvent.click(trigger1);
55
+ expect(kemetPanel.opened).toBe(true);
56
+ });
57
+ it('toggles a panel correctly', async () => {
58
+ render(templates.default, document.body);
59
+ const kemetPanel = document.querySelector('kemet-accordion-panel');
60
+ await waitFor(() => {
61
+ kemetPanel.toggle();
62
+ expect(kemetPanel.hasAttribute('opened')).toBe(false);
63
+ });
64
+ });
65
+ it('open a panel with the enter key', async () => {
66
+ render(templates.default, document.body);
67
+ const trigger1 = getByText(document.documentElement, 'Trigger 1');
68
+ const kemetPanel = trigger1.closest('kemet-accordion-panel');
69
+ trigger1.focus();
70
+ fireEvent.keyDown(trigger1, { key: 'Enter' });
71
+ expect(kemetPanel.opened).toBe(true);
72
+ });
73
+ it('should toggle panels', async () => {
74
+ render(templates.default, document.body);
75
+ const trigger1 = getByText(document.documentElement, 'Trigger 1');
76
+ const trigger2 = getByText(document.documentElement, 'Trigger 2');
77
+ const panel1 = trigger1.closest('kemet-accordion-panel');
78
+ await waitFor(async () => {
79
+ await userEvent.click(trigger1);
80
+ expect(panel1.opened).toBe(true);
81
+ await userEvent.click(trigger2);
82
+ expect(panel1.opened).toBe(false);
83
+ });
84
+ });
85
+ it('should expand and collapse all panels', () => {
86
+ render(templates.default, document.body);
87
+ const accordion = document.querySelector('kemet-accordion');
88
+ const panel1 = getByText(document.documentElement, 'Trigger 1').closest('kemet-accordion-panel');
89
+ const panel2 = getByText(document.documentElement, 'Trigger 2').closest('kemet-accordion-panel');
90
+ const panel3 = getByText(document.documentElement, 'Trigger 3').closest('kemet-accordion-panel');
91
+ accordion.expandAll();
92
+ expect(panel1.opened).toBe(true);
93
+ expect(panel2.opened).toBe(true);
94
+ expect(panel3.opened).toBe(true);
95
+ accordion.collapseAll();
96
+ expect(panel1.opened).toBe(false);
97
+ expect(panel2.opened).toBe(false);
98
+ expect(panel3.opened).toBe(false);
99
+ });
100
+ it('should handle keyboard navigation', async () => {
101
+ render(templates.default, document.body);
102
+ const accordion = document.querySelector('kemet-accordion');
103
+ const trigger1 = getByText(document.documentElement, 'Trigger 1');
104
+ fireEvent.keyDown(trigger1, { key: 'ArrowDown' });
105
+ expect(accordion.currentPanel).toBe(2);
106
+ fireEvent.keyDown(trigger1, { key: 'ArrowUp' });
107
+ expect(accordion.currentPanel).toBe(1);
108
+ fireEvent.keyDown(trigger1, { key: 'ArrowRight' });
109
+ expect(accordion.currentPanel).toBe(2);
110
+ fireEvent.keyDown(trigger1, { key: 'ArrowLeft' });
111
+ expect(accordion.currentPanel).toBe(1);
112
+ fireEvent.keyDown(trigger1, { key: 'Home' });
113
+ expect(accordion.currentPanel).toBe(0);
114
+ fireEvent.keyDown(trigger1, { key: 'End' });
115
+ expect(accordion.currentPanel).toBe(2);
116
+ });
117
+ it('should loop back to first panel when end of panels is reached', () => {
118
+ render(templates.default, document.body);
119
+ const accordion = document.querySelector('kemet-accordion');
120
+ const trigger1 = getByText(document.documentElement, 'Trigger 1');
121
+ fireEvent.keyDown(trigger1, { key: 'ArrowDown' });
122
+ expect(accordion.currentPanel).toBe(0);
123
+ });
124
+ it('should go to last panel when up is pressed on first panel', () => {
125
+ render(templates.default, document.body);
126
+ const accordion = document.querySelector('kemet-accordion');
127
+ const trigger1 = getByText(document.documentElement, 'Trigger 1');
128
+ fireEvent.keyDown(trigger1, { key: 'ArrowUp' });
129
+ expect(accordion.currentPanel).toBe(2);
130
+ });
131
+ });
132
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-accordion/spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport userEvent from '@testing-library/user-event';\nimport { fireEvent, getByText, waitFor } from '@testing-library/dom';\n\nimport './kemet-accordion';\nimport './kemet-accordion-panel';\n\ndescribe('Accordion', () => {\n const templates = {\n default: html`\n <kemet-accordion toggle-panels>\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 1</h3>\n <svg slot=\"icon\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708\"></path>\n </svg>\n <svg slot=\"icon-opened\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z\"></path>\n </svg>\n <div slot=\"body\">\n <p><a href=\"https://google.com\">Google</a>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 2</h3>\n <svg slot=\"icon\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708\"></path>\n </svg>\n <svg slot=\"icon-opened\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z\"></path>\n </svg>\n <div slot=\"body\">\n <p><a href=\"https://google.com\">Google</a> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n <kemet-accordion-panel>\n <h3 slot=\"trigger\">Trigger 3</h3>\n <svg slot=\"icon\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708\"></path>\n </svg>\n <svg slot=\"icon-opened\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z\"></path>\n </svg>\n <div slot=\"body\">\n <p><a href=\"https://google.com\">Google</a> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p>\n </div>\n </kemet-accordion-panel>\n </kemet-accordion>\n `,\n };\n\n it('opens a closed panel', async () => {\n render(templates.default, document.body);\n const trigger1 = getByText(document.documentElement, 'Trigger 1');\n const kemetPanel = trigger1.closest('kemet-accordion-panel');\n await userEvent.click(trigger1);\n expect(kemetPanel.opened).toBe(true);\n });\n\n it('toggles a panel correctly', async () => {\n render(templates.default, document.body);\n const kemetPanel = document.querySelector('kemet-accordion-panel');\n\n await waitFor(() => {\n kemetPanel.toggle();\n expect(kemetPanel.hasAttribute('opened')).toBe(false);\n });\n });\n\n it('open a panel with the enter key', async () => {\n render(templates.default, document.body);\n const trigger1 = getByText(document.documentElement, 'Trigger 1');\n const kemetPanel = trigger1.closest('kemet-accordion-panel');\n trigger1.focus();\n fireEvent.keyDown(trigger1, { key: 'Enter' });\n expect(kemetPanel.opened).toBe(true);\n });\n\n it('should toggle panels', async () => {\n render(templates.default, document.body);\n\n const trigger1 = getByText(document.documentElement, 'Trigger 1');\n const trigger2 = getByText(document.documentElement, 'Trigger 2');\n const panel1 = trigger1.closest('kemet-accordion-panel');\n\n await waitFor(async () => {\n await userEvent.click(trigger1);\n expect(panel1.opened).toBe(true);\n await userEvent.click(trigger2);\n expect(panel1.opened).toBe(false);\n });\n });\n\n it('should expand and collapse all panels', () => {\n render(templates.default, document.body);\n\n const accordion = document.querySelector('kemet-accordion');\n const panel1 = getByText(document.documentElement, 'Trigger 1').closest('kemet-accordion-panel');\n const panel2 = getByText(document.documentElement, 'Trigger 2').closest('kemet-accordion-panel');\n const panel3 = getByText(document.documentElement, 'Trigger 3').closest('kemet-accordion-panel');\n\n accordion.expandAll();\n\n expect(panel1.opened).toBe(true);\n expect(panel2.opened).toBe(true);\n expect(panel3.opened).toBe(true);\n\n accordion.collapseAll();\n\n expect(panel1.opened).toBe(false);\n expect(panel2.opened).toBe(false);\n expect(panel3.opened).toBe(false);\n });\n\n it('should handle keyboard navigation', async () => {\n render(templates.default, document.body);\n\n const accordion = document.querySelector('kemet-accordion');\n const trigger1 = getByText(document.documentElement, 'Trigger 1');\n\n fireEvent.keyDown(trigger1, { key: 'ArrowDown' });\n expect(accordion.currentPanel).toBe(2);\n fireEvent.keyDown(trigger1, { key: 'ArrowUp' });\n expect(accordion.currentPanel).toBe(1);\n fireEvent.keyDown(trigger1, { key: 'ArrowRight' });\n expect(accordion.currentPanel).toBe(2);\n fireEvent.keyDown(trigger1, { key: 'ArrowLeft' });\n expect(accordion.currentPanel).toBe(1);\n fireEvent.keyDown(trigger1, { key: 'Home' });\n expect(accordion.currentPanel).toBe(0);\n fireEvent.keyDown(trigger1, { key: 'End' });\n expect(accordion.currentPanel).toBe(2);\n });\n\n it('should loop back to first panel when end of panels is reached', () => {\n render(templates.default, document.body);\n const accordion = document.querySelector('kemet-accordion');\n const trigger1 = getByText(document.documentElement, 'Trigger 1');\n fireEvent.keyDown(trigger1, { key: 'ArrowDown' });\n expect(accordion.currentPanel).toBe(0);\n });\n\n it('should go to last panel when up is pressed on first panel', () => {\n render(templates.default, document.body);\n const accordion = document.querySelector('kemet-accordion');\n const trigger1 = getByText(document.documentElement, 'Trigger 1');\n fireEvent.keyDown(trigger1, { key: 'ArrowUp' });\n expect(accordion.currentPanel).toBe(2);\n });\n});\n"]}
@@ -6,7 +6,7 @@ import '../../kemet-tabs/kemet-tab-panel';
6
6
  import '../../kemet-icon/kemet-icon';
7
7
  declare const meta: Meta;
8
8
  export default meta;
9
- declare type Story = StoryObj;
9
+ type Story = StoryObj;
10
10
  export declare const Standard: Story;
11
11
  export declare const Heading: Story;
12
12
  export declare const Icon: Story;
@@ -1,5 +1,6 @@
1
1
  import { html, nothing } from 'lit';
2
2
  import { ifDefined } from 'lit/directives/if-defined.js';
3
+ import { userEvent, within, expect } from '@storybook/test';
3
4
  import '../kemet-alert';
4
5
  import '../../kemet-tabs/kemet-tabs';
5
6
  import '../../kemet-tabs/kemet-tab';
@@ -37,7 +38,7 @@ const meta = {
37
38
  control: { type: 'select' },
38
39
  options: ['none', 'top-full', 'bottom-full', 'top-right', 'top-left', 'bottom-right', 'bottom-left'],
39
40
  },
40
- }
41
+ },
41
42
  };
42
43
  export default meta;
43
44
  const Template = (args) => {
@@ -67,26 +68,13 @@ const Template = (args) => {
67
68
  </kemet-alert>
68
69
  `;
69
70
  };
70
- // export const Standard: Story = {
71
- // render: (args: any) => Template(args),
72
- // args: {
73
- // heading: 'This is a heading.',
74
- // text: 'The brown fox jumped over the lazy dog.',
75
- // icon: 'gear',
76
- // status: 'standard',
77
- // closable: false,
78
- // border: 'left',
79
- // opened: true,
80
- // overlay: 'none',
81
- // },
82
- // };
83
71
  export const Standard = {
84
72
  render: (args) => Template(args),
85
73
  args: {
86
74
  opened: true,
87
75
  text: 'The brown fox jumped over the lazy dog.',
88
76
  overlay: 'none',
89
- }
77
+ },
90
78
  };
91
79
  export const Heading = {
92
80
  render: (args) => Template(args),
@@ -117,6 +105,19 @@ export const Closable = {
117
105
  closable: true,
118
106
  overlay: 'none',
119
107
  },
108
+ play: async ({ canvasElement, step }) => {
109
+ const canvas = within(canvasElement);
110
+ const alert = canvas.getByText('This is a heading.').closest('kemet-alert');
111
+ const closeButton = alert.shadowRoot.querySelector('.close kemet-icon');
112
+ await step('Close the Alert', async () => {
113
+ await userEvent.click(closeButton);
114
+ expect(alert.opened).toBeFalsy();
115
+ });
116
+ await step('Reopen the Alert', async () => {
117
+ alert.opened = true;
118
+ expect(alert.opened).toBeTruthy();
119
+ });
120
+ },
120
121
  };
121
122
  export const BorderTop = {
122
123
  render: (args) => Template(args),
@@ -176,7 +177,7 @@ export const Primary = {
176
177
  closable: true,
177
178
  border: 'left',
178
179
  overlay: 'none',
179
- status: 'primary'
180
+ status: 'primary',
180
181
  },
181
182
  };
182
183
  export const Success = {
@@ -189,7 +190,7 @@ export const Success = {
189
190
  closable: true,
190
191
  border: 'left',
191
192
  overlay: 'none',
192
- status: 'success'
193
+ status: 'success',
193
194
  },
194
195
  };
195
196
  export const Warning = {
@@ -202,7 +203,7 @@ export const Warning = {
202
203
  closable: true,
203
204
  border: 'left',
204
205
  overlay: 'none',
205
- status: 'warning'
206
+ status: 'warning',
206
207
  },
207
208
  };
208
209
  export const Error = {
@@ -215,7 +216,7 @@ export const Error = {
215
216
  closable: true,
216
217
  border: 'left',
217
218
  overlay: 'none',
218
- status: 'error'
219
+ status: 'error',
219
220
  },
220
221
  };
221
222
  //# sourceMappingURL=stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../../src/components/kemet-alert/docs/stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { Meta, StoryObj } from '@storybook/web-components';\n\nimport '../kemet-alert';\n\nimport '../../kemet-tabs/kemet-tabs';\nimport '../../kemet-tabs/kemet-tab';\nimport '../../kemet-tabs/kemet-tab-panel';\n\nimport '../../kemet-icon/kemet-icon';\n\nconst meta: Meta = {\n title: 'Components / Alert',\n component: 'kemet-alert',\n argTypes: {\n heading: {\n control: { type: 'text' },\n },\n text: {\n control: { type: 'text' },\n },\n icon: {\n control: { type: 'select' },\n options: ['none', 'info-circle', 'check-circle', 'gear', 'exclamation-circle'],\n },\n status: {\n control: { type: 'select' },\n options: ['standard', 'primary', 'success', 'warning', 'error'],\n },\n closable: {\n control: { type: 'boolean' },\n },\n border: {\n control: { type: 'select' },\n options: ['none', 'top', 'right', 'bottom', 'left'],\n },\n opened: {\n control: { type: 'boolean' },\n },\n overlay: {\n control: { type: 'select' },\n options: ['none', 'top-full', 'bottom-full', 'top-right', 'top-left', 'bottom-right', 'bottom-left'],\n },\n }\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = (args) => {\n const makeIcon = () => {\n if (args.icon !== 'none' && args.icon) {\n return html`<kemet-icon slot=\"icon\" icon=${args.icon} size=\"24\" ></kemet-icon>`;\n }\n\n return null;\n };\n\n const makeHeading = () => {\n if (args.heading !== '' && args.heading) {\n return html`<h3 kemet-margin-bottom=\"none\" kemet-margin-top=\"none\">${args.heading}</h3>`;\n }\n\n return null;\n };\n\n return html`\n <kemet-alert\n status=${ifDefined(args.status)}\n ?closable=${args.closable}\n ?opened=${args.opened}\n border-status=${args.border}\n overlay=${ifDefined(args.overlay !== 'none' ? args.overlay : null)}\n kemet-margin=${ifDefined(args.overlay.indexOf('full') < 0 ? '2xl' : nothing)}>\n ${makeIcon()}\n ${makeHeading()}\n ${args.text}\n </kemet-alert>\n `;\n};\n\n// export const Standard: Story = {\n// render: (args: any) => Template(args),\n// args: {\n// heading: 'This is a heading.',\n// text: 'The brown fox jumped over the lazy dog.',\n// icon: 'gear',\n// status: 'standard',\n// closable: false,\n// border: 'left',\n// opened: true,\n// overlay: 'none',\n// },\n// };\n\nexport const Standard: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n text: 'The brown fox jumped over the lazy dog.',\n overlay: 'none',\n }\n};\n\nexport const Heading: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n overlay: 'none',\n },\n};\n\nexport const Icon: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n overlay: 'none',\n },\n};\n\nexport const Closable: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n overlay: 'none',\n },\n};\n\nexport const BorderTop: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'top',\n overlay: 'none',\n },\n};\n\nexport const BorderRight: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'right',\n overlay: 'none',\n },\n};\n\nexport const BorderBottom: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'bottom',\n overlay: 'none',\n },\n};\n\nexport const BorderLeft: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'left',\n overlay: 'none',\n },\n};\n\nexport const Primary: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'primary'\n },\n};\n\nexport const Success: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'check-circle',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'success'\n },\n};\n\nexport const Warning: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'exclamation-triangle',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'warning'\n },\n};\n\nexport const Error: Story = {\n render: (args: any) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'exclamation-octagon',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'error'\n },\n};\n\n\n"]}
1
+ {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../../src/components/kemet-alert/docs/stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { Args, Meta, StoryObj } from '@storybook/web-components';\nimport { userEvent, within, expect } from '@storybook/test';\n\nimport '../kemet-alert';\n\nimport '../../kemet-tabs/kemet-tabs';\nimport '../../kemet-tabs/kemet-tab';\nimport '../../kemet-tabs/kemet-tab-panel';\n\nimport '../../kemet-icon/kemet-icon';\n\nconst meta: Meta = {\n title: 'Components / Alert',\n component: 'kemet-alert',\n argTypes: {\n heading: {\n control: { type: 'text' },\n },\n text: {\n control: { type: 'text' },\n },\n icon: {\n control: { type: 'select' },\n options: ['none', 'info-circle', 'check-circle', 'gear', 'exclamation-circle'],\n },\n status: {\n control: { type: 'select' },\n options: ['standard', 'primary', 'success', 'warning', 'error'],\n },\n closable: {\n control: { type: 'boolean' },\n },\n border: {\n control: { type: 'select' },\n options: ['none', 'top', 'right', 'bottom', 'left'],\n },\n opened: {\n control: { type: 'boolean' },\n },\n overlay: {\n control: { type: 'select' },\n options: ['none', 'top-full', 'bottom-full', 'top-right', 'top-left', 'bottom-right', 'bottom-left'],\n },\n },\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = (args: Args) => {\n const makeIcon = () => {\n if (args.icon !== 'none' && args.icon) {\n return html`<kemet-icon slot=\"icon\" icon=${args.icon} size=\"24\" ></kemet-icon>`;\n }\n\n return null;\n };\n\n const makeHeading = () => {\n if (args.heading !== '' && args.heading) {\n return html`<h3 kemet-margin-bottom=\"none\" kemet-margin-top=\"none\">${args.heading}</h3>`;\n }\n\n return null;\n };\n\n return html`\n <kemet-alert\n status=${ifDefined(args.status)}\n ?closable=${args.closable}\n ?opened=${args.opened}\n border-status=${args.border}\n overlay=${ifDefined(args.overlay !== 'none' ? args.overlay : null)}\n kemet-margin=${ifDefined(args.overlay.indexOf('full') < 0 ? '2xl' : nothing)}>\n ${makeIcon()}\n ${makeHeading()}\n ${args.text}\n </kemet-alert>\n `;\n};\n\nexport const Standard: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n text: 'The brown fox jumped over the lazy dog.',\n overlay: 'none',\n },\n};\n\nexport const Heading: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n overlay: 'none',\n },\n};\n\nexport const Icon: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n overlay: 'none',\n },\n};\n\nexport const Closable: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n overlay: 'none',\n },\n play: async ({ canvasElement, step }) => {\n const canvas = within(canvasElement);\n const alert = canvas.getByText('This is a heading.').closest('kemet-alert');\n const closeButton = alert.shadowRoot.querySelector('.close kemet-icon');\n\n await step('Close the Alert', async () => {\n await userEvent.click(closeButton);\n expect(alert.opened).toBeFalsy();\n });\n\n await step('Reopen the Alert', async () => {\n alert.opened = true;\n expect(alert.opened).toBeTruthy();\n });\n },\n};\n\nexport const BorderTop: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'top',\n overlay: 'none',\n },\n};\n\nexport const BorderRight: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'right',\n overlay: 'none',\n },\n};\n\nexport const BorderBottom: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'bottom',\n overlay: 'none',\n },\n};\n\nexport const BorderLeft: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'left',\n overlay: 'none',\n },\n};\n\nexport const Primary: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'info-circle',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'primary',\n },\n};\n\nexport const Success: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'check-circle',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'success',\n },\n};\n\nexport const Warning: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'exclamation-triangle',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'warning',\n },\n};\n\nexport const Error: Story = {\n render: (args: Args) => Template(args),\n args: {\n opened: true,\n heading: 'This is a heading.',\n text: 'The brown fox jumped over the lazy dog.',\n icon: 'exclamation-octagon',\n closable: true,\n border: 'left',\n overlay: 'none',\n status: 'error',\n },\n};\n"]}