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
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/components/kemet-drawer/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,MAAM,cAAc,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,IAAI,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuG5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAqCA,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsDzB,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA2DzB,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwDzB,SAAS,CAAC,cAAc,CAAC;;;;;;CAMxD,CAAC","sourcesContent":["import { css, unsafeCSS } from 'lit';\n\nconst documentHeight = `${document.documentElement.scrollHeight}px`;\n\nexport const stylesBase = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n --kemet-drawer-overlay-color: rgb(var(--kemet-color-black) / 20%);\n --kemet-drawer-width: 300px;\n --kemet-drawer-height: 100%;\n --kemet-drawer-color: rgb(var(--kemet-color-gray-50));\n --kemet-drawer-background-color: rgb(var(--kemet-color-gray-950));\n\n width: 100%;\n }\n\n .off-canvas {\n position: relative;\n overflow: hidden;\n }\n\n .off-canvas__nav {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100;\n visibility: hidden;\n height: 100%;\n transition: all 0.5s;\n }\n\n .off-canvas__nav::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.2);\n content: '';\n opacity: 1;\n transition: opacity 0.5s;\n }\n\n :host([opened]) .off-canvas__nav::after {\n width: 0;\n height: 0;\n opacity: 0;\n transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s;\n }\n\n .off-canvas__pusher {\n position: relative;\n left: 0;\n z-index: 99;\n height: 100%;\n transition: transform 0.5s;\n }\n\n :host([overlay]) .off-canvas__pusher::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 0;\n height: 0;\n background: var(--kemet-drawer-overlay-color);\n content: '';\n opacity: 0;\n transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s;\n }\n\n :host([opened]) .off-canvas__pusher::after {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity 0.5s;\n transform: scale(2);\n }\n\n .off-canvas__content {\n position: relative;\n /* overflow-y: scroll; */\n min-height: 100vh;\n }\n\n .off-canvas__wrapper {\n position: relative;\n }\n\n ::slotted([slot=\"content\"]) {\n min-height: 100vh;\n }\n\n /* -------------------------------------- */\n /* custom properties */\n /* -------------------------------------- */\n\n .off-canvas__nav {\n width: var(--kemet-drawer-width);\n height: var(--kemet-drawer-height);\n color: var(--kemet-drawer-color);\n background: var(--kemet-drawer-background-color);\n }\n`;\n\nexport const stylesEffects = css`\n /* slide */\n :host([effect='slide']) .off-canvas__nav {\n visibility: visible;\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='slide'][opened]) .off-canvas__nav {\n visibility: visible;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='slide']) .off-canvas__nav:after {\n display: none;\n }\n\n :host([effect='slide'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='slide'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='slide'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='slide'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='slide'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='slide'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n /* reveal */\n :host([effect='reveal'][opened]) .off-canvas__pusher {\n transform: translate3d(var(--kemet-drawer-width), 0, 0);\n }\n\n :host([effect='reveal']) .off-canvas__nav {\n z-index: 1;\n }\n\n :host([effect='reveal'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n }\n\n :host([effect='reveal']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='reveal'][side='right'][opened]) .off-canvas__pusher {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='reveal'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='reveal'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='reveal'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='reveal'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='reveal'][side='top'][opened]) .off-canvas__pusher {\n transform: translate3d(0, var(--kemet-drawer-height), 0);\n }\n\n :host([effect='reveal'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='reveal'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n :host([effect='reveal'][side='bottom'][opened]) .off-canvas__pusher {\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n /* push */\n :host([effect='push'][opened]) .off-canvas__pusher {\n transform: translate3d(var(--kemet-drawer-width), 0, 0);\n }\n\n :host([effect='push']) .off-canvas__nav {\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='push'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='push']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='push'][side='right'][opened]) .off-canvas__pusher {\n transform: translate3d(calc(var(--kemet-drawer-width) * -1), 0, 0);\n }\n\n :host([effect='push'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='push'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='push'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='push'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='push'][side='top'][opened]) .off-canvas__pusher {\n transform: translate3d(0, var(--kemet-drawer-height), 0);\n }\n\n :host([effect='push'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='push'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n :host([effect='push'][side='bottom'][opened]) .off-canvas__pusher {\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n /* scale */\n :host([effect='scale']) .off-canvas__pusher {\n transform-style: preserve-3d;\n }\n\n :host([effect='scale'][opened]) .off-canvas__pusher {\n transform: translate3d(0, 0, 0) scale(0.95);\n }\n\n :host([effect='scale']) .off-canvas__nav {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='scale'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='scale']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='scale'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='scale'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='scale'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='scale'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='scale'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='scale'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n`;\n"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/components/kemet-drawer/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,MAAM,cAAc,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,IAAI,CAAC;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwG5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAqCA,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsDzB,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA2DzB,SAAS,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwDzB,SAAS,CAAC,cAAc,CAAC;;;;;;CAMxD,CAAC","sourcesContent":["import { css, unsafeCSS } from 'lit';\n\nconst documentHeight = `${document.documentElement.scrollHeight}px`;\n\nexport const stylesBase = css`\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n --kemet-drawer-overlay-color: rgb(var(--kemet-color-black) / 20%);\n --kemet-drawer-width: 300px;\n --kemet-drawer-height: 100%;\n --kemet-drawer-color: rgb(var(--kemet-color-gray-50));\n --kemet-drawer-background-color: rgb(var(--kemet-color-gray-950));\n\n width: 100%;\n }\n\n .off-canvas {\n position: relative;\n overflow: hidden;\n }\n\n .off-canvas__nav {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100;\n visibility: hidden;\n height: 100%;\n overflow: auto;\n transition: all 0.5s;\n }\n\n .off-canvas__nav::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.2);\n content: '';\n opacity: 1;\n transition: opacity 0.5s;\n }\n\n :host([opened]) .off-canvas__nav::after {\n width: 0;\n height: 0;\n opacity: 0;\n transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s;\n }\n\n .off-canvas__pusher {\n position: relative;\n left: 0;\n z-index: 99;\n height: 100%;\n transition: transform 0.5s;\n }\n\n :host([overlay]) .off-canvas__pusher::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 0;\n height: 0;\n background: var(--kemet-drawer-overlay-color);\n content: '';\n opacity: 0;\n transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s;\n }\n\n :host([opened]) .off-canvas__pusher::after {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition: opacity 0.5s;\n transform: scale(2);\n }\n\n .off-canvas__content {\n position: relative;\n /* overflow-y: scroll; */\n min-height: 100vh;\n }\n\n .off-canvas__wrapper {\n position: relative;\n }\n\n ::slotted([slot=\"content\"]) {\n min-height: 100vh;\n }\n\n /* -------------------------------------- */\n /* custom properties */\n /* -------------------------------------- */\n\n .off-canvas__nav {\n width: var(--kemet-drawer-width);\n height: var(--kemet-drawer-height);\n color: var(--kemet-drawer-color);\n background: var(--kemet-drawer-background-color);\n }\n`;\n\nexport const stylesEffects = css`\n /* slide */\n :host([effect='slide']) .off-canvas__nav {\n visibility: visible;\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='slide'][opened]) .off-canvas__nav {\n visibility: visible;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='slide']) .off-canvas__nav:after {\n display: none;\n }\n\n :host([effect='slide'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='slide'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='slide'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='slide'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='slide'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='slide'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n /* reveal */\n :host([effect='reveal'][opened]) .off-canvas__pusher {\n transform: translate3d(var(--kemet-drawer-width), 0, 0);\n }\n\n :host([effect='reveal']) .off-canvas__nav {\n z-index: 1;\n }\n\n :host([effect='reveal'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n }\n\n :host([effect='reveal']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='reveal'][side='right'][opened]) .off-canvas__pusher {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='reveal'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='reveal'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='reveal'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='reveal'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='reveal'][side='top'][opened]) .off-canvas__pusher {\n transform: translate3d(0, var(--kemet-drawer-height), 0);\n }\n\n :host([effect='reveal'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='reveal'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n :host([effect='reveal'][side='bottom'][opened]) .off-canvas__pusher {\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n /* push */\n :host([effect='push'][opened]) .off-canvas__pusher {\n transform: translate3d(var(--kemet-drawer-width), 0, 0);\n }\n\n :host([effect='push']) .off-canvas__nav {\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='push'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='push']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='push'][side='right'][opened]) .off-canvas__pusher {\n transform: translate3d(calc(var(--kemet-drawer-width) * -1), 0, 0);\n }\n\n :host([effect='push'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='push'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='push'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='push'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='push'][side='top'][opened]) .off-canvas__pusher {\n transform: translate3d(0, var(--kemet-drawer-height), 0);\n }\n\n :host([effect='push'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='push'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n\n :host([effect='push'][side='bottom'][opened]) .off-canvas__pusher {\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n /* scale */\n :host([effect='scale']) .off-canvas__pusher {\n transform-style: preserve-3d;\n }\n\n :host([effect='scale'][opened]) .off-canvas__pusher {\n transform: translate3d(0, 0, 0) scale(0.95);\n }\n\n :host([effect='scale']) .off-canvas__nav {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n }\n\n :host([effect='scale'][opened]) .off-canvas__nav {\n visibility: visible;\n transition: transform 0.5s;\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='scale']) .off-canvas__nav::after {\n display: none;\n }\n\n :host([effect='scale'][side='right']) .off-canvas__nav {\n transform: translate3d(100vw, 0, 0);\n }\n\n :host([effect='scale'][side='right'][opened]) .off-canvas__nav {\n transform: translate3d(calc(100vw - var(--kemet-drawer-width)), 0, 0);\n }\n\n :host([effect='scale'][side='top']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, calc(var(--kemet-drawer-height) * -1), 0);\n }\n\n :host([effect='scale'][side='top'][opened]) .off-canvas__nav {\n transform: translate3d(0, 0, 0);\n }\n\n :host([effect='scale'][side='bottom']) .off-canvas__nav {\n width: 100vw;\n height: var(--kemet-drawer-height, 100vh);\n transform: translate3d(0, ${unsafeCSS(documentHeight)}, 0);\n }\n\n :host([effect='scale'][side='bottom'][opened]) .off-canvas__nav {\n transform: translate3d(0, calc(100vh - var(--kemet-drawer-height)), 0);\n }\n`;\n"]}
@@ -1,2 +1,2 @@
1
- export declare type TypeEffect = 'slide' | 'reveal' | 'push' | 'scale';
2
- export declare type TypeSide = 'left' | 'right' | 'top' | 'bottom';
1
+ export type TypeEffect = 'slide' | 'reveal' | 'push' | 'scale';
2
+ export type TypeSide = 'left' | 'right' | 'top' | 'bottom';
@@ -6,7 +6,7 @@ import '../../kemet-tabs/kemet-tab';
6
6
  import '../../kemet-tabs/kemet-tab-panel';
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 Outlined: Story;
12
12
  export declare const Disabled: Story;
@@ -24,7 +24,7 @@ import { LitElement } from 'lit';
24
24
  * @cssproperty --kemet-fab-pill-radius - The border radius of a pill fab.
25
25
  *
26
26
  * @csspart button - The button's container.
27
- * @csspart icon - The FAB's icon.
27
+ * @csspart icon - The FAB icon.
28
28
  * @csspart text - The text in the FAB.
29
29
  *
30
30
  */
@@ -27,7 +27,7 @@ import { stylesBase } from './styles';
27
27
  * @cssproperty --kemet-fab-pill-radius - The border radius of a pill fab.
28
28
  *
29
29
  * @csspart button - The button's container.
30
- * @csspart icon - The FAB's icon.
30
+ * @csspart icon - The FAB icon.
31
31
  * @csspart text - The text in the FAB.
32
32
  *
33
33
  */
@@ -46,7 +46,7 @@ let KemetFAB = class KemetFAB extends LitElement {
46
46
  }
47
47
  render() {
48
48
  return html `
49
- <button class="button" part="button" ?disabled=${this.disabled} aria-disabled=${this.disabled ? 'true' : 'false'}>
49
+ <button class="button" part="button" ?disabled=${this.disabled}>
50
50
  <span class="icon" part="icon">
51
51
  <slot name="icon"></slot>
52
52
  </span>
@@ -67,18 +67,12 @@ let KemetFAB = class KemetFAB extends LitElement {
67
67
  }
68
68
  }
69
69
  handleScroll() {
70
- if (window.scrollY > this.expandPoint) {
70
+ if (window.scrollY > this.expandPoint && window.scrollY < this.collapsePoint) {
71
71
  this.expanded = true;
72
72
  }
73
- if (window.scrollY < this.expandPoint) {
73
+ else {
74
74
  this.expanded = false;
75
75
  }
76
- if (window.scrollY > this.collapsePoint) {
77
- this.expanded = false;
78
- }
79
- if (window.scrollY < this.collapsePoint) {
80
- this.expanded = true;
81
- }
82
76
  }
83
77
  };
84
78
  KemetFAB.styles = [stylesBase];
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-fab.js","sourceRoot":"","sources":["../../../src/components/kemet-fab/kemet-fab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,IAAqB,QAAQ,GAA7B,MAAqB,QAAS,SAAQ,UAAU;IAAhD;;QAIE,aAAQ,GAAY,KAAK,CAAC;QAG1B,aAAQ,GAAY,KAAK,CAAC;QAG1B,aAAQ,GAAY,KAAK,CAAC;IA4D5B,CAAC;IAjDC,YAAY;QACV,SAAS;QACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;uDACwC,IAAI,CAAC,QAAQ,kBAAkB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;KAQjH,CAAC;IACJ,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;IACH,CAAC;IAED,YAAY;QACV,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;QAED,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;YACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QAED,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;YACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QAED,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;YACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;IACH,CAAC;CACF,CAAA;AArEQ,eAAM,GAAG,CAAC,UAAU,CAAC,CAAC;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAC7B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;6CAClC;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;+CAClC;AAnBH,QAAQ;IAD5B,aAAa,CAAC,WAAW,CAAC;GACN,QAAQ,CAsE5B;eAtEoB,QAAQ","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { stylesBase } from './styles';\n\n/**\n * @since 1.2.0\n * @status stable\n *\n * @tagname kemet-fab\n * @summary The FAB, or Floating Action Button, performs a primary action on a page.\n *\n * @prop {boolean} expanded - The expanded state of the button.\n * @prop {boolean} outlined - Outline style for a button.\n * @prop {boolean} disabled - Determines whether not a button is disabled.\n * @prop {boolean} pill - Displays the fab with rounded corners.\n * @prop {number} expandPoint - The distance, in pixels, where the fab should automatically expand.\n * @prop {number} collapsePoint - The distance, in pixels, where the fab should automatically collapse.\n *\n * @slot Icon - A slot for an icon to display.\n * @slot default - The text for the FAB.\n *\n * @cssproperty --kemet-fab-size - The width and height of the fab.\n * @cssproperty --kemet-fab-color - The text color of the fab.\n * @cssproperty --kemet-fab-background-color - The bg color of the tab.\n * @cssproperty --kemet-fab-outlined-color - The text color of an outlined fab.\n * @cssproperty --kemet-fab-outlined-border - The border of an outlined fab.\n * @cssproperty --kemet-fab-pill-radius - The border radius of a pill fab.\n *\n * @csspart button - The button's container.\n * @csspart icon - The FAB's icon.\n * @csspart text - The text in the FAB.\n *\n */\n\n@customElement('kemet-fab')\nexport default class KemetFAB extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: Boolean, reflect: true })\n expanded: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n outlined: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n pill: boolean;\n\n @property({ type: Number, attribute: 'expand-point' })\n expandPoint: number;\n\n @property({ type: Number, attribute: 'collapse-point' })\n collapsePoint: number;\n\n firstUpdated() {\n // events\n window.addEventListener('scroll', this.handleScroll.bind(this));\n this.addEventListener('mouseover', this.handleMouseOver.bind(this));\n this.addEventListener('mouseout', this.handleMouseOut.bind(this));\n }\n\n render() {\n return html`\n <button class=\"button\" part=\"button\" ?disabled=${this.disabled} aria-disabled=${this.disabled ? 'true' : 'false'}>\n <span class=\"icon\" part=\"icon\">\n <slot name=\"icon\"></slot>\n </span>\n <span class=\"text\" part=\"text\">\n <slot></slot>\n </span>\n </button>\n `;\n }\n\n handleMouseOver() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n\n handleMouseOut() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n\n handleScroll() {\n if (window.scrollY > this.expandPoint) {\n this.expanded = true;\n }\n\n if (window.scrollY < this.expandPoint) {\n this.expanded = false;\n }\n\n if (window.scrollY > this.collapsePoint) {\n this.expanded = false;\n }\n\n if (window.scrollY < this.collapsePoint) {\n this.expanded = true;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-fab': KemetFAB\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-fab.js","sourceRoot":"","sources":["../../../src/components/kemet-fab/kemet-fab.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGY,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;IAAjC;;QAIb,aAAQ,GAAY,KAAK,CAAC;QAG1B,aAAQ,GAAY,KAAK,CAAC;QAG1B,aAAQ,GAAY,KAAK,CAAC;IAkD5B,CAAC;IAvCC,YAAY;QACV,SAAS;QACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;uDACwC,IAAI,CAAC,QAAQ;;;;;;;;KAQ/D,CAAC;IACJ,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED,YAAY;QACV,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;;AA1DM,eAAM,GAAG,CAAC,UAAU,CAAC,AAAf,CAAgB;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACjB;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAC7B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;6CAClC;AAGpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;+CAClC;AAnBH,QAAQ;IAD5B,aAAa,CAAC,WAAW,CAAC;GACN,QAAQ,CA4D5B;eA5DoB,QAAQ","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { stylesBase } from './styles';\n\n/**\n * @since 1.2.0\n * @status stable\n *\n * @tagname kemet-fab\n * @summary The FAB, or Floating Action Button, performs a primary action on a page.\n *\n * @prop {boolean} expanded - The expanded state of the button.\n * @prop {boolean} outlined - Outline style for a button.\n * @prop {boolean} disabled - Determines whether not a button is disabled.\n * @prop {boolean} pill - Displays the fab with rounded corners.\n * @prop {number} expandPoint - The distance, in pixels, where the fab should automatically expand.\n * @prop {number} collapsePoint - The distance, in pixels, where the fab should automatically collapse.\n *\n * @slot Icon - A slot for an icon to display.\n * @slot default - The text for the FAB.\n *\n * @cssproperty --kemet-fab-size - The width and height of the fab.\n * @cssproperty --kemet-fab-color - The text color of the fab.\n * @cssproperty --kemet-fab-background-color - The bg color of the tab.\n * @cssproperty --kemet-fab-outlined-color - The text color of an outlined fab.\n * @cssproperty --kemet-fab-outlined-border - The border of an outlined fab.\n * @cssproperty --kemet-fab-pill-radius - The border radius of a pill fab.\n *\n * @csspart button - The button's container.\n * @csspart icon - The FAB icon.\n * @csspart text - The text in the FAB.\n *\n */\n\n@customElement('kemet-fab')\nexport default class KemetFAB extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: Boolean, reflect: true })\n expanded: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n outlined: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n pill: boolean;\n\n @property({ type: Number, attribute: 'expand-point' })\n expandPoint: number;\n\n @property({ type: Number, attribute: 'collapse-point' })\n collapsePoint: number;\n\n firstUpdated() {\n // events\n window.addEventListener('scroll', this.handleScroll.bind(this));\n this.addEventListener('mouseover', this.handleMouseOver.bind(this));\n this.addEventListener('mouseout', this.handleMouseOut.bind(this));\n }\n\n render() {\n return html`\n <button class=\"button\" part=\"button\" ?disabled=${this.disabled}>\n <span class=\"icon\" part=\"icon\">\n <slot name=\"icon\"></slot>\n </span>\n <span class=\"text\" part=\"text\">\n <slot></slot>\n </span>\n </button>\n `;\n }\n\n handleMouseOver() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n\n handleMouseOut() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n\n handleScroll() {\n if (window.scrollY > this.expandPoint && window.scrollY < this.collapsePoint) {\n this.expanded = true;\n } else {\n this.expanded = false;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-fab': KemetFAB\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import './kemet-fab';
2
+ import '../kemet-icon/kemet-icon';
@@ -0,0 +1,43 @@
1
+ import { html, render } from 'lit';
2
+ import { expect } from '@wdio/globals';
3
+ import './kemet-fab';
4
+ import '../kemet-icon/kemet-icon';
5
+ import userEvent from '@testing-library/user-event';
6
+ import { fireEvent } from '@testing-library/dom';
7
+ describe('FAB', () => {
8
+ const templates = {
9
+ default: html `
10
+ <kemet-fab expand-point="100" collapse-point="200">
11
+ <kemet-icon slot="icon" icon="gear"></kemet-icon>
12
+ Label Here
13
+ </kemet-fab>
14
+ `,
15
+ };
16
+ it('should expand and close on mouse over', async () => {
17
+ render(templates.default, document.body);
18
+ const kemetFab = document.querySelector('kemet-fab');
19
+ await userEvent.hover(kemetFab);
20
+ expect(kemetFab.expanded).toBe(true);
21
+ await userEvent.unhover(kemetFab);
22
+ expect(kemetFab.expanded).toBe(false);
23
+ });
24
+ it('should auto expand when document is scrolled', async () => {
25
+ render(templates.default, document.body);
26
+ const kemetFab = document.querySelector('kemet-fab');
27
+ await fireEvent.scroll(window, { target: { scrollY: 101 } });
28
+ expect(kemetFab.expanded).toBe(true);
29
+ });
30
+ it('should auto collapse past collapse point', async () => {
31
+ render(templates.default, document.body);
32
+ const kemetFab = document.querySelector('kemet-fab');
33
+ await fireEvent.scroll(window, { target: { scrollY: 300 } });
34
+ expect(kemetFab.expanded).toBe(false);
35
+ });
36
+ it('should not expand if expand point has not been reached', async () => {
37
+ render(templates.default, document.body);
38
+ const kemetFab = document.querySelector('kemet-fab');
39
+ await fireEvent.scroll(window, { target: { scrollY: 9 } });
40
+ expect(kemetFab.expanded).toBe(false);
41
+ });
42
+ });
43
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-fab/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,aAAa,CAAC;AACrB,OAAO,0BAA0B,CAAC;AAClC,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAI,CAAA;;;;;KAKZ;KACF,CAAC;IAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAErD,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAErD,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\n\nimport './kemet-fab';\nimport '../kemet-icon/kemet-icon';\nimport userEvent from '@testing-library/user-event';\nimport { fireEvent } from '@testing-library/dom';\n\ndescribe('FAB', () => {\n const templates = {\n default: html`\n <kemet-fab expand-point=\"100\" collapse-point=\"200\">\n <kemet-icon slot=\"icon\" icon=\"gear\"></kemet-icon>\n Label Here\n </kemet-fab>\n `,\n };\n\n it('should expand and close on mouse over', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n await userEvent.hover(kemetFab);\n expect(kemetFab.expanded).toBe(true);\n await userEvent.unhover(kemetFab);\n expect(kemetFab.expanded).toBe(false);\n });\n\n it('should auto expand when document is scrolled', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n\n await fireEvent.scroll(window, { target: { scrollY: 101 } });\n expect(kemetFab.expanded).toBe(true);\n });\n\n it('should auto collapse past collapse point', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n\n await fireEvent.scroll(window, { target: { scrollY: 300 } });\n expect(kemetFab.expanded).toBe(false);\n });\n\n it('should not expand if expand point has not been reached', async () => {\n render(templates.default, document.body);\n const kemetFab = document.querySelector('kemet-fab');\n await fireEvent.scroll(window, { target: { scrollY: 9 } });\n expect(kemetFab.expanded).toBe(false);\n });\n});\n"]}
@@ -9,7 +9,7 @@ import '../../kemet-tabs/kemet-tab';
9
9
  import '../../kemet-tabs/kemet-tab-panel';
10
10
  declare const meta: Meta;
11
11
  export default meta;
12
- declare type Story = StoryObj;
12
+ type Story = StoryObj;
13
13
  export declare const Input: Story;
14
14
  export declare const Select: Story;
15
15
  export declare const Textarea: Story;
@@ -10,7 +10,7 @@ import KemetTextarea from '../kemet-textarea/kemet-textarea';
10
10
  * @tagname kemet-field
11
11
  * @summary Used in combination with Input, Select, and Textarea, to make a Field.
12
12
  *
13
- * @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted sub components.
13
+ * @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted subcomponents.
14
14
  * @prop {string} label - The label text
15
15
  * @prop {string} message - The validation message for error or success
16
16
  * @prop {boolean} focused - Determines if the containing input is focused
@@ -19,9 +19,9 @@ import KemetTextarea from '../kemet-textarea/kemet-textarea';
19
19
  * @prop {number} length - The length of the containing input
20
20
  * @prop {boolean} disabled - Determines the disabled state of the control
21
21
  * @prop {string} errorIcon - The icon while in an error or warning state
22
- * @prop {string} successIcon - The icon while in an success state
22
+ * @prop {string} successIcon - The icon while in a success state
23
23
  *
24
- * @slot component - Allows sub components of the field to display.
24
+ * @slot component - Allows subcomponents of the field to display.
25
25
  *
26
26
  * @csspart label - The label of the field.
27
27
  * @csspart message - The validation message of the field.
@@ -49,10 +49,10 @@ export default class KemetField extends LitElement {
49
49
  render(): import("lit-html").TemplateResult<1>;
50
50
  makeStatusIcon(): import("lit-html").TemplateResult<1>;
51
51
  makeStatusMessage(): import("lit-html").TemplateResult<1>;
52
- handleFocused(event: any): void;
53
- handleStatus(event: any): void;
54
- handleInput(event: any): void;
55
- handleSelection(event: any): void;
52
+ handleFocused(event: CustomEvent): void;
53
+ handleStatus(event: CustomEvent): void;
54
+ handleInput(event: CustomEvent): void;
55
+ handleSelection(event: CustomEvent): void;
56
56
  }
57
57
  declare global {
58
58
  interface HTMLElementTagNameMap {
@@ -10,7 +10,7 @@ import { stylesBase } from './styles';
10
10
  * @tagname kemet-field
11
11
  * @summary Used in combination with Input, Select, and Textarea, to make a Field.
12
12
  *
13
- * @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted sub components.
13
+ * @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted subcomponents.
14
14
  * @prop {string} label - The label text
15
15
  * @prop {string} message - The validation message for error or success
16
16
  * @prop {boolean} focused - Determines if the containing input is focused
@@ -19,9 +19,9 @@ import { stylesBase } from './styles';
19
19
  * @prop {number} length - The length of the containing input
20
20
  * @prop {boolean} disabled - Determines the disabled state of the control
21
21
  * @prop {string} errorIcon - The icon while in an error or warning state
22
- * @prop {string} successIcon - The icon while in an success state
22
+ * @prop {string} successIcon - The icon while in a success state
23
23
  *
24
- * @slot component - Allows sub components of the field to display.
24
+ * @slot component - Allows subcomponents of the field to display.
25
25
  *
26
26
  * @csspart label - The label of the field.
27
27
  * @csspart message - The validation message of the field.
@@ -37,11 +37,11 @@ let KemetField = class KemetField extends LitElement {
37
37
  this.errorIcon = 'exclamation-triangle-fill';
38
38
  this.successIcon = 'check-lg';
39
39
  // listeners
40
- this.addEventListener('kemet-input-focused', event => this.handleFocused(event));
41
- this.addEventListener('kemet-input-status', event => this.handleStatus(event));
42
- this.addEventListener('kemet-input-input', event => this.handleInput(event));
43
- this.addEventListener('kemet-count-status', event => this.handleStatus(event));
44
- this.addEventListener('kemet-combo-selection', event => this.handleSelection(event));
40
+ this.addEventListener('kemet-input-focused', (event) => this.handleFocused(event));
41
+ this.addEventListener('kemet-input-status', (event) => this.handleStatus(event));
42
+ this.addEventListener('kemet-input-input', (event) => this.handleInput(event));
43
+ this.addEventListener('kemet-count-status', (event) => this.handleStatus(event));
44
+ this.addEventListener('kemet-combo-selection', (event) => this.handleSelection(event));
45
45
  }
46
46
  firstUpdated() {
47
47
  this.slotInput = this.querySelector('[slot="input"]');
@@ -89,12 +89,7 @@ let KemetField = class KemetField extends LitElement {
89
89
  }
90
90
  handleInput(event) {
91
91
  emitEvent(this, 'kemet-field-input', event.detail.length);
92
- if (event.detail === '') {
93
- this.filled = false;
94
- }
95
- else {
96
- this.filled = true;
97
- }
92
+ this.filled = event.detail !== '';
98
93
  }
99
94
  handleSelection(event) {
100
95
  this.slotInput.setAttribute('aria-activedescendant', event.detail);
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-field.js","sourceRoot":"","sources":["../../../src/components/kemet-field/kemet-field.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 { stylesBase } from './styles';\nimport { TypeStatus } from './types';\n\nimport KemetCombo from '../kemet-combo/kemet-combo';\nimport KemetInput from '../kemet-input/kemet-input';\nimport KemetTextarea from '../kemet-textarea/kemet-textarea';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-field\n * @summary Used in combination with Input, Select, and Textarea, to make a Field.\n *\n * @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted sub components.\n * @prop {string} label - The label text\n * @prop {string} message - The validation message for error or success\n * @prop {boolean} focused - Determines if the containing input is focused\n * @prop {string} status - The validation status of standard, error, or success\n * @prop {boolean} filled - Is true when the containing input has a value\n * @prop {number} length - The length of the containing input\n * @prop {boolean} disabled - Determines the disabled state of the control\n * @prop {string} errorIcon - The icon while in an error or warning state\n * @prop {string} successIcon - The icon while in an success state\n *\n * @slot component - Allows sub components of the field to display.\n *\n * @csspart label - The label of the field.\n * @csspart message - The validation message of the field.\n * @csspart text - The text in the label.\n *\n * @event kemet-field-input - Fires when input fires on the input slot\n *\n */\n\n@customElement('kemet-field')\nexport default class KemetField extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: String })\n slug: string;\n\n @property({ type: String })\n label: string;\n\n @property({ type: String })\n message: string;\n\n @property({ type: Boolean, reflect: true })\n focused: boolean;\n\n @property({ type: String, reflect: true })\n status: TypeStatus = 'standard';\n\n @property({ type: Boolean, reflect: true })\n filled: boolean;\n\n @property({ type: Number })\n length: number;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean;\n\n @property({ type: String, attribute: 'error-icon' })\n errorIcon: string = 'exclamation-triangle-fill';\n\n @property({ type: String, attribute: 'success-icon' })\n successIcon: string = 'check-lg';\n\n @state()\n slotInput: KemetInput | KemetTextarea;\n\n @state()\n slotCombo: KemetCombo;\n\n constructor() {\n super();\n\n // listeners\n this.addEventListener('kemet-input-focused', event => this.handleFocused(event));\n this.addEventListener('kemet-input-status', event => this.handleStatus(event));\n this.addEventListener('kemet-input-input', event => this.handleInput(event));\n this.addEventListener('kemet-count-status', event => this.handleStatus(event));\n this.addEventListener('kemet-combo-selection', event => this.handleSelection(event));\n }\n\n firstUpdated() {\n this.slotInput = this.querySelector('[slot=\"input\"]');\n this.slotCombo = this.querySelector('[slot=\"combo\"]');\n\n if (this.slotInput.value) {\n this.length = this.slotInput.value.length;\n } else {\n this.length = 0;\n }\n }\n\n render() {\n return html`\n <label for=\"${this.slug}\" id=\"${this.slug}-label\" part=\"label\">\n <span part=\"text\">${this.label}${this.makeStatusIcon()}</span>\n <slot name=\"input\"></slot>\n </label>\n ${this.makeStatusMessage()}\n <slot name=\"component\"></slot>\n `;\n }\n\n makeStatusIcon() {\n if (this.status === 'error' || this.status === 'warning') {\n return html`<kemet-icon icon=\"${this.errorIcon}\" size=\"16\"></kemet-icon>`;\n }\n\n if (this.status === 'success') {\n return html`<kemet-icon icon=\"${this.successIcon}\" size=\"16\"></kemet-icon>`;\n }\n\n return null;\n }\n\n makeStatusMessage() {\n if (this.status !== 'standard') {\n return html`<span class=\"message\" part=\"message\">${this.message}</span>`;\n }\n\n return null;\n }\n\n handleFocused(event) {\n this.focused = event.detail;\n\n if (!this.focused && this.slotCombo && this.slotCombo.options.length < 1) {\n this.slotCombo.show = false;\n }\n }\n\n handleStatus(event) {\n this.status = event.detail.status;\n }\n\n handleInput(event) {\n emitEvent(this, 'kemet-field-input', event.detail.length);\n\n if (event.detail === '') {\n this.filled = false;\n } else {\n this.filled = true;\n }\n }\n\n handleSelection(event) {\n this.slotInput.setAttribute('aria-activedescendant', event.detail);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-field': KemetField\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-field.js","sourceRoot":"","sources":["../../../src/components/kemet-field/kemet-field.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 { stylesBase } from './styles';\nimport { TypeStatus } from './types';\n\nimport KemetCombo from '../kemet-combo/kemet-combo';\nimport KemetInput from '../kemet-input/kemet-input';\nimport KemetTextarea from '../kemet-textarea/kemet-textarea';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-field\n * @summary Used in combination with Input, Select, and Textarea, to make a Field.\n *\n * @prop {string} slug - Uniquely identifies the control. Use the same slug for slotted subcomponents.\n * @prop {string} label - The label text\n * @prop {string} message - The validation message for error or success\n * @prop {boolean} focused - Determines if the containing input is focused\n * @prop {string} status - The validation status of standard, error, or success\n * @prop {boolean} filled - Is true when the containing input has a value\n * @prop {number} length - The length of the containing input\n * @prop {boolean} disabled - Determines the disabled state of the control\n * @prop {string} errorIcon - The icon while in an error or warning state\n * @prop {string} successIcon - The icon while in a success state\n *\n * @slot component - Allows subcomponents of the field to display.\n *\n * @csspart label - The label of the field.\n * @csspart message - The validation message of the field.\n * @csspart text - The text in the label.\n *\n * @event kemet-field-input - Fires when input fires on the input slot\n *\n */\n\n@customElement('kemet-field')\nexport default class KemetField extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: String })\n slug: string;\n\n @property({ type: String })\n label: string;\n\n @property({ type: String })\n message: string;\n\n @property({ type: Boolean, reflect: true })\n focused: boolean;\n\n @property({ type: String, reflect: true })\n status: TypeStatus = 'standard';\n\n @property({ type: Boolean, reflect: true })\n filled: boolean;\n\n @property({ type: Number })\n length: number;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean;\n\n @property({ type: String, attribute: 'error-icon' })\n errorIcon: string = 'exclamation-triangle-fill';\n\n @property({ type: String, attribute: 'success-icon' })\n successIcon: string = 'check-lg';\n\n @state()\n slotInput: KemetInput | KemetTextarea;\n\n @state()\n slotCombo: KemetCombo;\n\n constructor() {\n super();\n\n // listeners\n this.addEventListener('kemet-input-focused', (event: CustomEvent) => this.handleFocused(event));\n this.addEventListener('kemet-input-status', (event: CustomEvent) => this.handleStatus(event));\n this.addEventListener('kemet-input-input', (event: CustomEvent) => this.handleInput(event));\n this.addEventListener('kemet-count-status', (event: CustomEvent) => this.handleStatus(event));\n this.addEventListener('kemet-combo-selection', (event: CustomEvent) => this.handleSelection(event));\n }\n\n firstUpdated() {\n this.slotInput = this.querySelector('[slot=\"input\"]');\n this.slotCombo = this.querySelector('[slot=\"combo\"]');\n\n if (this.slotInput.value) {\n this.length = this.slotInput.value.length;\n } else {\n this.length = 0;\n }\n }\n\n render() {\n return html`\n <label for=\"${this.slug}\" id=\"${this.slug}-label\" part=\"label\">\n <span part=\"text\">${this.label}${this.makeStatusIcon()}</span>\n <slot name=\"input\"></slot>\n </label>\n ${this.makeStatusMessage()}\n <slot name=\"component\"></slot>\n `;\n }\n\n makeStatusIcon() {\n if (this.status === 'error' || this.status === 'warning') {\n return html`<kemet-icon icon=\"${this.errorIcon}\" size=\"16\"></kemet-icon>`;\n }\n\n if (this.status === 'success') {\n return html`<kemet-icon icon=\"${this.successIcon}\" size=\"16\"></kemet-icon>`;\n }\n\n return null;\n }\n\n makeStatusMessage() {\n if (this.status !== 'standard') {\n return html`<span class=\"message\" part=\"message\">${this.message}</span>`;\n }\n\n return null;\n }\n\n handleFocused(event: CustomEvent) {\n this.focused = event.detail;\n\n if (!this.focused && this.slotCombo && this.slotCombo.options.length < 1) {\n this.slotCombo.show = false;\n }\n }\n\n handleStatus(event: CustomEvent) {\n this.status = event.detail.status;\n }\n\n handleInput(event: CustomEvent) {\n emitEvent(this, 'kemet-field-input', event.detail.length);\n this.filled = event.detail !== '';\n }\n\n handleSelection(event: CustomEvent) {\n this.slotInput.setAttribute('aria-activedescendant', event.detail);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-field': KemetField\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import '../kemet-input/kemet-input';
2
+ import './kemet-field';
@@ -0,0 +1,38 @@
1
+ import { html, render } from 'lit';
2
+ import { expect } from '@wdio/globals';
3
+ import { fireEvent, waitFor } from '@testing-library/dom';
4
+ import '../kemet-input/kemet-input';
5
+ import './kemet-field';
6
+ describe('Field', () => {
7
+ const templates = {
8
+ default: html `
9
+ <kemet-field slug="unique-identifier" label="Label" message="Success" status="success">
10
+ <kemet-input slot="input" name="input-field" required validate-on-blur></kemet-input>
11
+ </kemet-field>
12
+ `,
13
+ populated: html `
14
+ <kemet-field slug="unique-identifier" label="Label" message="Success" status="success">
15
+ <kemet-input slot="input" name="input-field" value="test"></kemet-input>
16
+ </kemet-field>
17
+ `,
18
+ };
19
+ it('updates the field status when the input status changes', async () => {
20
+ render(templates.default, document.body);
21
+ const kemetField = document.querySelector('kemet-field');
22
+ const kemetInput = document.querySelector('kemet-input');
23
+ await waitFor(async () => {
24
+ const input = kemetInput.shadowRoot.querySelector('input');
25
+ fireEvent.change(input, { target: { value: '' } });
26
+ fireEvent.blur(input);
27
+ expect(kemetField.status).toBe('error');
28
+ });
29
+ });
30
+ it('fills the length when a value is supplied', async () => {
31
+ render(templates.populated, document.body);
32
+ const kemetField = document.querySelector('kemet-field');
33
+ await waitFor(() => {
34
+ expect(kemetField.length).toBeGreaterThan(0);
35
+ });
36
+ });
37
+ });
38
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-field/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,4BAA4B,CAAC;AACpC,OAAO,eAAe,CAAC;AAEvB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAI,CAAA;;;;KAIZ;QACD,SAAS,EAAE,IAAI,CAAA;;;;KAId;KACF,CAAC;IAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC3D,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport { fireEvent, waitFor } from '@testing-library/dom';\n\nimport '../kemet-input/kemet-input';\nimport './kemet-field';\n\ndescribe('Field', () => {\n const templates = {\n default: html`\n <kemet-field slug=\"unique-identifier\" label=\"Label\" message=\"Success\" status=\"success\">\n <kemet-input slot=\"input\" name=\"input-field\" required validate-on-blur></kemet-input>\n </kemet-field>\n `,\n populated: html`\n <kemet-field slug=\"unique-identifier\" label=\"Label\" message=\"Success\" status=\"success\">\n <kemet-input slot=\"input\" name=\"input-field\" value=\"test\"></kemet-input>\n </kemet-field>\n `,\n };\n\n it('updates the field status when the input status changes', async () => {\n render(templates.default, document.body);\n const kemetField = document.querySelector('kemet-field');\n const kemetInput = document.querySelector('kemet-input');\n\n await waitFor(async () => {\n const input = kemetInput.shadowRoot.querySelector('input');\n fireEvent.change(input, { target: { value: '' } });\n fireEvent.blur(input);\n expect(kemetField.status).toBe('error');\n });\n });\n\n it('fills the length when a value is supplied', async () => {\n render(templates.populated, document.body);\n const kemetField = document.querySelector('kemet-field');\n await waitFor(() => {\n expect(kemetField.length).toBeGreaterThan(0);\n });\n });\n});\n"]}
@@ -1,4 +1,4 @@
1
- export declare type TypeStatus = 'standard' | 'error' | 'success' | 'warning';
1
+ export type TypeStatus = 'standard' | 'error' | 'success' | 'warning';
2
2
  export interface KemetFieldInterface extends HTMLElement {
3
3
  slug?: string;
4
4
  label?: string;
@@ -7,7 +7,7 @@ import '../../kemet-tabs/kemet-tab';
7
7
  import '../../kemet-tabs/kemet-tab-panel';
8
8
  declare const meta: Meta;
9
9
  export default meta;
10
- declare type Story = StoryObj;
10
+ type Story = StoryObj;
11
11
  export declare const Standard: Story;
12
12
  export declare const Vertical: Story;
13
13
  export declare const Rounded: Story;
@@ -12,7 +12,7 @@ export default class KemetFlipcardTrigger extends LitElement {
12
12
  static styles: import("lit").CSSResult[];
13
13
  render(): import("lit-html").TemplateResult<1>;
14
14
  trigger(): void;
15
- handleKeyup(event: any): void;
15
+ handleKeyup(event: KeyboardEvent): void;
16
16
  }
17
17
  declare global {
18
18
  interface HTMLElementTagNameMap {
@@ -2,7 +2,6 @@ import { __decorate } from "tslib";
2
2
  import { LitElement, html, css } from 'lit';
3
3
  import { customElement } from 'lit/decorators.js';
4
4
  import { emitEvent } from '../../utilities/misc/events';
5
- import { keyCodes } from '../../utilities/misc/constants';
6
5
  /**
7
6
  * @since 1.0.0
8
7
  * @status stable
@@ -15,7 +14,7 @@ import { keyCodes } from '../../utilities/misc/constants';
15
14
  let KemetFlipcardTrigger = class KemetFlipcardTrigger extends LitElement {
16
15
  render() {
17
16
  return html `
18
- <slot tabindex="0" @click=${() => this.trigger()} @keypress=${event => this.handleKeyup(event)}></slot>
17
+ <slot tabindex="0" @click=${() => this.trigger()} @keypress=${(event) => this.handleKeyup(event)}></slot>
19
18
  `;
20
19
  }
21
20
  trigger() {
@@ -23,7 +22,7 @@ let KemetFlipcardTrigger = class KemetFlipcardTrigger extends LitElement {
23
22
  }
24
23
  handleKeyup(event) {
25
24
  event.preventDefault();
26
- if (event.keyCode === keyCodes.ENTER) {
25
+ if (event.key === 'Enter') {
27
26
  this.trigger();
28
27
  }
29
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-flipcard-trigger.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard-trigger.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D;;;;;;;;GAQG;AAGH,IAAqB,oBAAoB,GAAzC,MAAqB,oBAAqB,SAAQ,UAAU;IAS1D,MAAM;QACJ,OAAO,IAAI,CAAA;kCACmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,CAAC,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,KAAK;QACf,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,EAAE;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;CACF,CAAA;AAzBQ,2BAAM,GAAG;IACd,GAAG,CAAA;;;;KAIF;CACF,CAAC;AAPiB,oBAAoB;IADxC,aAAa,CAAC,wBAAwB,CAAC;GACnB,oBAAoB,CA0BxC;eA1BoB,oBAAoB","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { keyCodes } from '../../utilities/misc/constants';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-flipcard-trigger\n * @summary Triggers a flipcard component to flip.\n *\n * @event kemet-flipcard-flipped - Fires when a flipcard is flipped\n */\n\n@customElement('kemet-flipcard-trigger')\nexport default class KemetFlipcardTrigger extends LitElement {\n static styles = [\n css`\n :host {\n cursor: pointer;\n }\n `,\n ];\n\n render() {\n return html`\n <slot tabindex=\"0\" @click=${() => this.trigger()} @keypress=${event => this.handleKeyup(event)}></slot>\n `;\n }\n\n trigger() {\n emitEvent(this, 'kemet-flipcard-flipped', this);\n }\n\n handleKeyup(event) {\n event.preventDefault();\n\n if (event.keyCode === keyCodes.ENTER) {\n this.trigger();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-flipcard-trigger': KemetFlipcardTrigger\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-flipcard-trigger.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard-trigger.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD;;;;;;;;GAQG;AAGY,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,UAAU;IAS1D,MAAM;QACJ,OAAO,IAAI,CAAA;kCACmB,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAChH,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,CAAC,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,KAAoB;QAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;;AAxBM,2BAAM,GAAG;IACd,GAAG,CAAA;;;;KAIF;CACF,AANY,CAMX;AAPiB,oBAAoB;IADxC,aAAa,CAAC,wBAAwB,CAAC;GACnB,oBAAoB,CA0BxC;eA1BoB,oBAAoB","sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/misc/events';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-flipcard-trigger\n * @summary Triggers a flipcard component to flip.\n *\n * @event kemet-flipcard-flipped - Fires when a flipcard is flipped\n */\n\n@customElement('kemet-flipcard-trigger')\nexport default class KemetFlipcardTrigger extends LitElement {\n static styles = [\n css`\n :host {\n cursor: pointer;\n }\n `,\n ];\n\n render() {\n return html`\n <slot tabindex=\"0\" @click=${() => this.trigger()} @keypress=${(event: KeyboardEvent) => this.handleKeyup(event)}></slot>\n `;\n }\n\n trigger() {\n emitEvent(this, 'kemet-flipcard-flipped', this);\n }\n\n handleKeyup(event: KeyboardEvent) {\n event.preventDefault();\n\n if (event.key === 'Enter') {\n this.trigger();\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-flipcard-trigger': KemetFlipcardTrigger\n }\n}\n"]}
@@ -37,8 +37,8 @@ export default class KemetFlipcard extends LitElement {
37
37
  measure: boolean;
38
38
  frontChildren: HTMLSlotElement;
39
39
  backChildren: HTMLSlotElement;
40
- frontElement: any;
41
- backElement: any;
40
+ frontElement: HTMLElement;
41
+ backElement: HTMLElement;
42
42
  constructor();
43
43
  firstUpdated(): void;
44
44
  updated(): void;
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { html, LitElement } from 'lit';
3
- import { customElement, property, state, query } from 'lit/decorators.js';
3
+ import { customElement, property, state, query, } from 'lit/decorators.js';
4
4
  import { stylesBase } from './styles';
5
5
  /**
6
6
  * @since 1.0.0
@@ -44,10 +44,8 @@ let KemetFlipcard = class KemetFlipcard extends LitElement {
44
44
  });
45
45
  }
46
46
  firstUpdated() {
47
- if (this.frontChildren)
48
- [this.frontElement] = this.frontChildren.assignedNodes({ flatten: true });
49
- if (this.backChildren)
50
- [this.backElement] = this.backChildren.assignedNodes({ flatten: true });
47
+ this.frontElement = this.querySelector('[slot=front]');
48
+ this.backElement = this.querySelector('[slot=back]');
51
49
  window.addEventListener('resize', this.determineHeight.bind(this));
52
50
  }
53
51
  updated() {
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-flipcard.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { stylesBase } from './styles';\n\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-flipcard\n * @summary A card that has a front and back side which can be flipped.\n *\n * @prop {string} axis\n * @prop {boolean} flipped\n * @prop {boolean} flipOnHover\n * @prop {string} height\n * @prop {boolean} measure\n *\n * @slot front - The front of the card.\n * @slot back - The back of the card.\n *\n * @csspart front - The front of the card.\n * @csspart back - The back of the card.\n * @csspart wrapper - A container for both front and back of the card.\n *\n * @cssproperty --kemet-flipcard-front-color - The text color for the front of the card.\n * @cssproperty --kemet-flipcard-back-color - The text color for the back of the card.\n * @cssproperty --kemet-flipcard-front-background-color - The background color for the front of the card.\n * @cssproperty --kemet-flipcard-back-background-color - The background color for the back of the card.\n * @cssproperty --kemet-flipcard-border - The border on the front and back of the card.\n * @cssproperty --kemet-flipcard-border-radius - The border radius on the front and back of the card.\n * @cssproperty --kemet-flipcard-ratio - The aspect ratio of the card.\n *\n */\n\n@customElement('kemet-flipcard')\nexport default class KemetFlipcard extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: String, reflect: true })\n axis: string = 'horizontal';\n\n @property({ type: Boolean, reflect: true })\n flipped: boolean = false;\n\n @property({ type: Boolean, attribute: 'flip-on-hover' })\n flipOnHover: boolean = false;\n\n @property({ type: String })\n height: string = 'auto';\n\n @property({ type: Boolean })\n measure: boolean = false;\n\n @query('[name=\"front\"]')\n frontChildren: HTMLSlotElement;\n\n @query('[name=\"back\"]')\n backChildren: HTMLSlotElement;\n\n @state()\n frontElement: any;\n\n @state()\n backElement: any;\n\n constructor() {\n super();\n\n this.addEventListener('kemet-flipcard-flipped', () => {\n this.flipped = !this.flipped;\n });\n }\n\n firstUpdated() {\n if (this.frontChildren) [this.frontElement] = this.frontChildren.assignedNodes({ flatten: true });\n if (this.backChildren) [this.backElement] = this.backChildren.assignedNodes({ flatten: true });\n\n window.addEventListener('resize', this.determineHeight.bind(this));\n }\n\n updated() {\n this.determineHeight();\n }\n\n render() {\n return html`\n <section\n tabindex=\"0\"\n part=\"wrapper\"\n @blur=${() => { if (this.flipOnHover) this.flipped = false; }}\n @focus=${() => { if (this.flipOnHover) this.flipped = true; }}\n @mouseover=${() => { if (this.flipOnHover) this.flipped = true; }}\n @mouseout=${() => { if (this.flipOnHover) this.flipped = false; }}>\n <div id=\"front\" class=\"front\" part=\"front\">\n <slot name=\"front\" @slotchange=\"${() => this.determineHeight()}\"></slot>\n </div>\n <div id=\"back\" class=\"back\" part=\"back\">\n <slot name=\"back\" @slotchange=\"${() => this.determineHeight()}\"></slot>\n </div>\n </section>\n `;\n }\n\n determineHeight() {\n // setTimeout is need to simulate a DOM repaint\n // without the repaint, offsetHeight on Custom Elements = 0\n // so this is needed for 'measure' to work correctly\n\n setTimeout(() => {\n if (this.measure) {\n if (this.frontElement?.offsetHeight > this.backElement?.offsetHeight) {\n this.height = `${this.frontElement?.offsetHeight}px`;\n } else {\n this.height = `${this.backElement?.offsetHeight}px`;\n }\n\n this.style.height = this.height;\n } else {\n this.style.removeProperty('height');\n }\n }, 0);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-flipcard': KemetFlipcard\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-flipcard.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/kemet-flipcard.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EACL,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GACtC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGY,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,UAAU;IA8BnD;QACE,KAAK,EAAE,CAAC;QA3BV,SAAI,GAAW,YAAY,CAAC;QAG5B,YAAO,GAAY,KAAK,CAAC;QAGzB,gBAAW,GAAY,KAAK,CAAC;QAG7B,WAAM,GAAW,MAAM,CAAC;QAGxB,YAAO,GAAY,KAAK,CAAC;QAiBvB,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;gBAIC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;iBACpD,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;qBAChD,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;oBACrD,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;;4CAE7B,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE;;;2CAG7B,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE;;;KAGlE,CAAC;IACJ,CAAC;IAED,eAAe;QACb,+CAA+C;QAC/C,2DAA2D;QAC3D,oDAAoD;QAEpD,UAAU,CAAC,GAAG,EAAE;;YACd,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,YAAY,KAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,YAAY,CAAA,EAAE,CAAC;oBACrE,IAAI,CAAC,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,YAAY,0CAAE,YAAY,IAAI,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,YAAY,IAAI,CAAC;gBACtD,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;;AApFM,oBAAM,GAAG,CAAC,UAAU,CAAC,AAAf,CAAgB;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CACd;AAG5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAClB;AAGzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;kDAC3B;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CACH;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8CACH;AAGzB;IADC,KAAK,CAAC,gBAAgB,CAAC;oDACO;AAG/B;IADC,KAAK,CAAC,eAAe,CAAC;mDACO;AAG9B;IADC,KAAK,EAAE;mDACkB;AAG1B;IADC,KAAK,EAAE;kDACiB;AA5BN,aAAa;IADjC,aAAa,CAAC,gBAAgB,CAAC;GACX,aAAa,CAsFjC;eAtFoB,aAAa","sourcesContent":["import { html, LitElement } from 'lit';\nimport {\n customElement, property, state, query,\n} from 'lit/decorators.js';\nimport { stylesBase } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-flipcard\n * @summary A card that has a front and back side which can be flipped.\n *\n * @prop {string} axis\n * @prop {boolean} flipped\n * @prop {boolean} flipOnHover\n * @prop {string} height\n * @prop {boolean} measure\n *\n * @slot front - The front of the card.\n * @slot back - The back of the card.\n *\n * @csspart front - The front of the card.\n * @csspart back - The back of the card.\n * @csspart wrapper - A container for both front and back of the card.\n *\n * @cssproperty --kemet-flipcard-front-color - The text color for the front of the card.\n * @cssproperty --kemet-flipcard-back-color - The text color for the back of the card.\n * @cssproperty --kemet-flipcard-front-background-color - The background color for the front of the card.\n * @cssproperty --kemet-flipcard-back-background-color - The background color for the back of the card.\n * @cssproperty --kemet-flipcard-border - The border on the front and back of the card.\n * @cssproperty --kemet-flipcard-border-radius - The border radius on the front and back of the card.\n * @cssproperty --kemet-flipcard-ratio - The aspect ratio of the card.\n *\n */\n\n@customElement('kemet-flipcard')\nexport default class KemetFlipcard extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: String, reflect: true })\n axis: string = 'horizontal';\n\n @property({ type: Boolean, reflect: true })\n flipped: boolean = false;\n\n @property({ type: Boolean, attribute: 'flip-on-hover' })\n flipOnHover: boolean = false;\n\n @property({ type: String })\n height: string = 'auto';\n\n @property({ type: Boolean })\n measure: boolean = false;\n\n @query('[name=\"front\"]')\n frontChildren: HTMLSlotElement;\n\n @query('[name=\"back\"]')\n backChildren: HTMLSlotElement;\n\n @state()\n frontElement: HTMLElement;\n\n @state()\n backElement: HTMLElement;\n\n constructor() {\n super();\n\n this.addEventListener('kemet-flipcard-flipped', () => {\n this.flipped = !this.flipped;\n });\n }\n\n firstUpdated() {\n this.frontElement = this.querySelector('[slot=front]');\n this.backElement = this.querySelector('[slot=back]');\n window.addEventListener('resize', this.determineHeight.bind(this));\n }\n\n updated() {\n this.determineHeight();\n }\n\n render() {\n return html`\n <section\n tabindex=\"0\"\n part=\"wrapper\"\n @blur=${() => { if (this.flipOnHover) this.flipped = false; }}\n @focus=${() => { if (this.flipOnHover) this.flipped = true; }}\n @mouseover=${() => { if (this.flipOnHover) this.flipped = true; }}\n @mouseout=${() => { if (this.flipOnHover) this.flipped = false; }}>\n <div id=\"front\" class=\"front\" part=\"front\">\n <slot name=\"front\" @slotchange=\"${() => this.determineHeight()}\"></slot>\n </div>\n <div id=\"back\" class=\"back\" part=\"back\">\n <slot name=\"back\" @slotchange=\"${() => this.determineHeight()}\"></slot>\n </div>\n </section>\n `;\n }\n\n determineHeight() {\n // setTimeout is need to simulate a DOM repaint\n // without the repaint, offsetHeight on Custom Elements = 0\n // so this is needed for 'measure' to work correctly\n\n setTimeout(() => {\n if (this.measure) {\n if (this.frontElement?.offsetHeight > this.backElement?.offsetHeight) {\n this.height = `${this.frontElement?.offsetHeight}px`;\n } else {\n this.height = `${this.backElement?.offsetHeight}px`;\n }\n\n this.style.height = this.height;\n } else {\n this.style.removeProperty('height');\n }\n }, 0);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-flipcard': KemetFlipcard\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import './kemet-flipcard';
2
+ import './kemet-flipcard-trigger';
3
+ import '../kemet-button/kemet-button';
@@ -0,0 +1,38 @@
1
+ import { html, render } from 'lit';
2
+ import { expect } from '@wdio/globals';
3
+ import userEvent from '@testing-library/user-event';
4
+ import './kemet-flipcard';
5
+ import './kemet-flipcard-trigger';
6
+ import '../kemet-button/kemet-button';
7
+ import { fireEvent } from '@testing-library/dom';
8
+ describe('Flipcard', () => {
9
+ const templates = {
10
+ default: html `
11
+ <kemet-flipcard measure>
12
+ <div slot="front">
13
+ <p>This is the front of the card.</p>
14
+ <kemet-flipcard-trigger>
15
+ <kemet-button>Flip Me</kemet-button>
16
+ </kemet-flipcard-trigger>
17
+ </div>
18
+ <div slot="back">
19
+ <p>This is the back of the card.</p>
20
+ <kemet-flipcard-trigger>
21
+ <kemet-button>Flip Me</kemet-button>
22
+ </kemet-flipcard-trigger>
23
+ </div>
24
+ </kemet-flipcard>
25
+ `,
26
+ };
27
+ it('should flip the card when trigger is activated', async () => {
28
+ render(templates.default, document.body);
29
+ const kemetFlipcard = document.querySelector('kemet-flipcard');
30
+ const kemetFlipcardTrigger = kemetFlipcard.querySelector('kemet-flipcard-trigger');
31
+ const kemetButton = kemetFlipcardTrigger.querySelector('kemet-button');
32
+ await userEvent.click(kemetButton);
33
+ expect(kemetFlipcard.flipped).toBe(true);
34
+ fireEvent.keyPress(kemetButton, { key: 'Enter' });
35
+ expect(kemetFlipcard.flipped).toBe(false);
36
+ });
37
+ });
38
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-flipcard/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAEpD,OAAO,kBAAkB,CAAC;AAC1B,OAAO,0BAA0B,CAAC;AAClC,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;KAeZ;KACF,CAAC;IAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC/D,MAAM,oBAAoB,GAAG,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAEvE,MAAM,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport userEvent from '@testing-library/user-event';\n\nimport './kemet-flipcard';\nimport './kemet-flipcard-trigger';\nimport '../kemet-button/kemet-button';\nimport { fireEvent } from '@testing-library/dom';\n\ndescribe('Flipcard', () => {\n const templates = {\n default: html`\n <kemet-flipcard measure>\n <div slot=\"front\">\n <p>This is the front of the card.</p>\n <kemet-flipcard-trigger>\n <kemet-button>Flip Me</kemet-button>\n </kemet-flipcard-trigger>\n </div>\n <div slot=\"back\">\n <p>This is the back of the card.</p>\n <kemet-flipcard-trigger>\n <kemet-button>Flip Me</kemet-button>\n </kemet-flipcard-trigger>\n </div>\n </kemet-flipcard>\n `,\n };\n\n it('should flip the card when trigger is activated', async () => {\n render(templates.default, document.body);\n const kemetFlipcard = document.querySelector('kemet-flipcard');\n const kemetFlipcardTrigger = kemetFlipcard.querySelector('kemet-flipcard-trigger');\n const kemetButton = kemetFlipcardTrigger.querySelector('kemet-button');\n\n await userEvent.click(kemetButton);\n expect(kemetFlipcard.flipped).toBe(true);\n\n fireEvent.keyPress(kemetButton, { key: 'Enter' });\n expect(kemetFlipcard.flipped).toBe(false);\n });\n});\n"]}
@@ -5,5 +5,5 @@ import '../../kemet-tabs/kemet-tab';
5
5
  import '../../kemet-tabs/kemet-tab-panel';
6
6
  declare const meta: Meta;
7
7
  export default meta;
8
- declare type Story = StoryObj;
8
+ type Story = StoryObj;
9
9
  export declare const Standard: Story;