kemet-ui 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/custom-elements.json +1588 -871
  2. package/dist/components/kemet-accordion/docs/stories.d.ts +12 -0
  3. package/dist/components/kemet-accordion/docs/stories.js +99 -0
  4. package/dist/components/kemet-accordion/docs/stories.js.map +1 -0
  5. package/dist/components/kemet-accordion/kemet-accordion-panel.d.ts +2 -2
  6. package/dist/components/kemet-accordion/kemet-accordion-panel.js +1 -1
  7. package/dist/components/kemet-accordion/kemet-accordion-panel.js.map +1 -1
  8. package/dist/components/kemet-accordion/kemet-accordion.d.ts +3 -3
  9. package/dist/components/kemet-accordion/kemet-accordion.js +2 -1
  10. package/dist/components/kemet-accordion/kemet-accordion.js.map +1 -1
  11. package/dist/components/kemet-accordion/spec.d.ts +2 -0
  12. package/dist/components/kemet-accordion/spec.js +132 -0
  13. package/dist/components/kemet-accordion/spec.js.map +1 -0
  14. package/dist/components/kemet-alert/docs/stories.d.ts +1 -1
  15. package/dist/components/kemet-alert/docs/stories.js +20 -19
  16. package/dist/components/kemet-alert/docs/stories.js.map +1 -1
  17. package/dist/components/kemet-alert/kemet-alert.d.ts +2 -2
  18. package/dist/components/kemet-alert/kemet-alert.js.map +1 -1
  19. package/dist/components/kemet-alert/spec.d.ts +1 -0
  20. package/dist/components/kemet-alert/spec.js +35 -0
  21. package/dist/components/kemet-alert/spec.js.map +1 -0
  22. package/dist/components/kemet-alert/types.d.ts +1 -1
  23. package/dist/components/kemet-avatar/docs/stories.d.ts +1 -1
  24. package/dist/components/kemet-avatar/docs/stories.js.map +1 -1
  25. package/dist/components/kemet-avatar/kemet-avatar.js.map +1 -1
  26. package/dist/components/kemet-avatar/kemet-avatars.js.map +1 -1
  27. package/dist/components/kemet-avatar/spec.d.ts +1 -0
  28. package/dist/components/kemet-avatar/spec.js +26 -0
  29. package/dist/components/kemet-avatar/spec.js.map +1 -0
  30. package/dist/components/kemet-badge/docs/stories.d.ts +1 -1
  31. package/dist/components/kemet-badge/kemet-badge.js.map +1 -1
  32. package/dist/components/kemet-badge/spec.d.ts +1 -0
  33. package/dist/components/kemet-badge/spec.js +21 -0
  34. package/dist/components/kemet-badge/spec.js.map +1 -0
  35. package/dist/components/kemet-badge/types.d.ts +1 -1
  36. package/dist/components/kemet-button/docs/stories.d.ts +1 -1
  37. package/dist/components/kemet-button/kemet-button.d.ts +2 -2
  38. package/dist/components/kemet-button/kemet-button.js +10 -8
  39. package/dist/components/kemet-button/kemet-button.js.map +1 -1
  40. package/dist/components/kemet-button/spec.d.ts +1 -0
  41. package/dist/components/kemet-button/spec.js +49 -0
  42. package/dist/components/kemet-button/spec.js.map +1 -0
  43. package/dist/components/kemet-button/types.d.ts +1 -1
  44. package/dist/components/kemet-card/docs/stories.d.ts +1 -1
  45. package/dist/components/kemet-card/docs/stories.js.map +1 -1
  46. package/dist/components/kemet-card/kemet-card.d.ts +1 -1
  47. package/dist/components/kemet-card/kemet-card.js +1 -1
  48. package/dist/components/kemet-card/kemet-card.js.map +1 -1
  49. package/dist/components/kemet-card/spec.d.ts +1 -0
  50. package/dist/components/kemet-card/spec.js +31 -0
  51. package/dist/components/kemet-card/spec.js.map +1 -0
  52. package/dist/components/kemet-carousel/docs/stories.d.ts +1 -1
  53. package/dist/components/kemet-carousel/docs/stories.js.map +1 -1
  54. package/dist/components/kemet-carousel/kemet-carousel-current.d.ts +1 -1
  55. package/dist/components/kemet-carousel/kemet-carousel-current.js.map +1 -1
  56. package/dist/components/kemet-carousel/kemet-carousel-first.d.ts +1 -0
  57. package/dist/components/kemet-carousel/kemet-carousel-first.js +11 -4
  58. package/dist/components/kemet-carousel/kemet-carousel-first.js.map +1 -1
  59. package/dist/components/kemet-carousel/kemet-carousel-last.d.ts +2 -1
  60. package/dist/components/kemet-carousel/kemet-carousel-last.js +12 -5
  61. package/dist/components/kemet-carousel/kemet-carousel-last.js.map +1 -1
  62. package/dist/components/kemet-carousel/kemet-carousel-link.d.ts +1 -0
  63. package/dist/components/kemet-carousel/kemet-carousel-link.js +14 -4
  64. package/dist/components/kemet-carousel/kemet-carousel-link.js.map +1 -1
  65. package/dist/components/kemet-carousel/kemet-carousel-next.d.ts +1 -0
  66. package/dist/components/kemet-carousel/kemet-carousel-next.js +11 -4
  67. package/dist/components/kemet-carousel/kemet-carousel-next.js.map +1 -1
  68. package/dist/components/kemet-carousel/kemet-carousel-prev.d.ts +1 -0
  69. package/dist/components/kemet-carousel/kemet-carousel-prev.js +11 -4
  70. package/dist/components/kemet-carousel/kemet-carousel-prev.js.map +1 -1
  71. package/dist/components/kemet-carousel/kemet-carousel-slide.js +5 -5
  72. package/dist/components/kemet-carousel/kemet-carousel-slide.js.map +1 -1
  73. package/dist/components/kemet-carousel/kemet-carousel-total.js.map +1 -1
  74. package/dist/components/kemet-carousel/kemet-carousel.d.ts +18 -14
  75. package/dist/components/kemet-carousel/kemet-carousel.js +32 -13
  76. package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
  77. package/dist/components/kemet-carousel/spec.d.ts +10 -0
  78. package/dist/components/kemet-carousel/spec.js +168 -0
  79. package/dist/components/kemet-carousel/spec.js.map +1 -0
  80. package/dist/components/kemet-checkbox/docs/stories.d.ts +1 -1
  81. package/dist/components/kemet-checkbox/kemet-checkbox.d.ts +4 -4
  82. package/dist/components/kemet-checkbox/kemet-checkbox.js +4 -4
  83. package/dist/components/kemet-checkbox/kemet-checkbox.js.map +1 -1
  84. package/dist/components/kemet-checkbox/spec.d.ts +1 -0
  85. package/dist/components/kemet-checkbox/spec.js +33 -0
  86. package/dist/components/kemet-checkbox/spec.js.map +1 -0
  87. package/dist/components/kemet-checkbox/types.d.ts +1 -1
  88. package/dist/components/kemet-combo/docs/stories.d.ts +1 -1
  89. package/dist/components/kemet-combo/kemet-combo.d.ts +9 -8
  90. package/dist/components/kemet-combo/kemet-combo.js +18 -17
  91. package/dist/components/kemet-combo/kemet-combo.js.map +1 -1
  92. package/dist/components/kemet-combo/spec.d.ts +3 -0
  93. package/dist/components/kemet-combo/spec.js +46 -0
  94. package/dist/components/kemet-combo/spec.js.map +1 -0
  95. package/dist/components/kemet-count/docs/stories.d.ts +1 -1
  96. package/dist/components/kemet-count/kemet-count.d.ts +1 -1
  97. package/dist/components/kemet-count/kemet-count.js +1 -1
  98. package/dist/components/kemet-count/kemet-count.js.map +1 -1
  99. package/dist/components/kemet-count/spec.d.ts +4 -0
  100. package/dist/components/kemet-count/spec.js +45 -0
  101. package/dist/components/kemet-count/spec.js.map +1 -0
  102. package/dist/components/kemet-draggable/docs/stories.d.ts +1 -1
  103. package/dist/components/kemet-draggable/kemet-draggable.d.ts +3 -3
  104. package/dist/components/kemet-draggable/kemet-draggable.js +6 -5
  105. package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
  106. package/dist/components/kemet-draggable/spec.d.ts +1 -0
  107. package/dist/components/kemet-draggable/spec.js +30 -0
  108. package/dist/components/kemet-draggable/spec.js.map +1 -0
  109. package/dist/components/kemet-drawer/docs/stories.d.ts +1 -1
  110. package/dist/components/kemet-drawer/kemet-drawer.d.ts +2 -2
  111. package/dist/components/kemet-drawer/kemet-drawer.js +2 -2
  112. package/dist/components/kemet-drawer/kemet-drawer.js.map +1 -1
  113. package/dist/components/kemet-drawer/spec.d.ts +1 -0
  114. package/dist/components/kemet-drawer/spec.js +21 -0
  115. package/dist/components/kemet-drawer/spec.js.map +1 -0
  116. package/dist/components/kemet-drawer/styles.js +1 -0
  117. package/dist/components/kemet-drawer/styles.js.map +1 -1
  118. package/dist/components/kemet-drawer/types.d.ts +2 -2
  119. package/dist/components/kemet-fab/docs/stories.d.ts +1 -1
  120. package/dist/components/kemet-fab/kemet-fab.d.ts +1 -1
  121. package/dist/components/kemet-fab/kemet-fab.js +4 -10
  122. package/dist/components/kemet-fab/kemet-fab.js.map +1 -1
  123. package/dist/components/kemet-fab/spec.d.ts +2 -0
  124. package/dist/components/kemet-fab/spec.js +43 -0
  125. package/dist/components/kemet-fab/spec.js.map +1 -0
  126. package/dist/components/kemet-field/docs/stories.d.ts +1 -1
  127. package/dist/components/kemet-field/kemet-field.d.ts +7 -7
  128. package/dist/components/kemet-field/kemet-field.js +9 -14
  129. package/dist/components/kemet-field/kemet-field.js.map +1 -1
  130. package/dist/components/kemet-field/spec.d.ts +2 -0
  131. package/dist/components/kemet-field/spec.js +38 -0
  132. package/dist/components/kemet-field/spec.js.map +1 -0
  133. package/dist/components/kemet-field/types.d.ts +1 -1
  134. package/dist/components/kemet-flipcard/docs/stories.d.ts +1 -1
  135. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.d.ts +1 -1
  136. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js +2 -3
  137. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js.map +1 -1
  138. package/dist/components/kemet-flipcard/kemet-flipcard.d.ts +2 -2
  139. package/dist/components/kemet-flipcard/kemet-flipcard.js +3 -5
  140. package/dist/components/kemet-flipcard/kemet-flipcard.js.map +1 -1
  141. package/dist/components/kemet-flipcard/spec.d.ts +3 -0
  142. package/dist/components/kemet-flipcard/spec.js +38 -0
  143. package/dist/components/kemet-flipcard/spec.js.map +1 -0
  144. package/dist/components/kemet-icon/docs/stories.d.ts +1 -1
  145. package/dist/components/kemet-icon/kemet-icon.js +1 -1
  146. package/dist/components/kemet-icon/kemet-icon.js.map +1 -1
  147. package/dist/components/kemet-icon/spec.d.ts +1 -0
  148. package/dist/components/kemet-icon/spec.js +69 -0
  149. package/dist/components/kemet-icon/spec.js.map +1 -0
  150. package/dist/components/kemet-input/docs/stories.d.ts +1 -1
  151. package/dist/components/kemet-input/kemet-input.d.ts +3 -22
  152. package/dist/components/kemet-input/kemet-input.js +3 -23
  153. package/dist/components/kemet-input/kemet-input.js.map +1 -1
  154. package/dist/components/kemet-input/spec.d.ts +1 -0
  155. package/dist/components/kemet-input/spec.js +83 -0
  156. package/dist/components/kemet-input/spec.js.map +1 -0
  157. package/dist/components/kemet-input/types.d.ts +3 -3
  158. package/dist/components/kemet-modal/docs/stories.d.ts +1 -1
  159. package/dist/components/kemet-modal/docs/stories.js.map +1 -1
  160. package/dist/components/kemet-modal/kemet-modal-close.js.map +1 -1
  161. package/dist/components/kemet-modal/kemet-modal.d.ts +4 -4
  162. package/dist/components/kemet-modal/kemet-modal.js +3 -3
  163. package/dist/components/kemet-modal/kemet-modal.js.map +1 -1
  164. package/dist/components/kemet-modal/types.d.ts +1 -1
  165. package/dist/components/kemet-multi-input/docs/stories.d.ts +8 -0
  166. package/dist/components/kemet-multi-input/docs/stories.js +33 -0
  167. package/dist/components/kemet-multi-input/docs/stories.js.map +1 -0
  168. package/dist/components/kemet-multi-input/kemet-multi-input.d.ts +116 -0
  169. package/dist/components/kemet-multi-input/kemet-multi-input.js +193 -0
  170. package/dist/components/kemet-multi-input/kemet-multi-input.js.map +1 -0
  171. package/dist/components/kemet-multi-input/styles.d.ts +1 -0
  172. package/dist/components/kemet-multi-input/styles.js +87 -0
  173. package/dist/components/kemet-multi-input/styles.js.map +1 -0
  174. package/dist/components/kemet-multi-input/types.d.ts +5 -0
  175. package/dist/components/kemet-multi-input/types.js +2 -0
  176. package/dist/components/kemet-multi-input/types.js.map +1 -0
  177. package/dist/components/kemet-password/docs/stories.d.ts +1 -1
  178. package/dist/components/kemet-password/kemet-password.d.ts +14 -8
  179. package/dist/components/kemet-password/kemet-password.js +4 -33
  180. package/dist/components/kemet-password/kemet-password.js.map +1 -1
  181. package/dist/components/kemet-password/types.d.ts +1 -1
  182. package/dist/components/kemet-popper/docs/stories.d.ts +1 -1
  183. package/dist/components/kemet-popper/kemet-popper-close.d.ts +1 -1
  184. package/dist/components/kemet-popper/kemet-popper-close.js +2 -3
  185. package/dist/components/kemet-popper/kemet-popper-close.js.map +1 -1
  186. package/dist/components/kemet-popper/kemet-popper.d.ts +18 -7
  187. package/dist/components/kemet-popper/kemet-popper.js +21 -25
  188. package/dist/components/kemet-popper/kemet-popper.js.map +1 -1
  189. package/dist/components/kemet-popper/types.d.ts +3 -3
  190. package/dist/components/kemet-radio/docs/stories.d.ts +1 -1
  191. package/dist/components/kemet-radio/kemet-radio.js.map +1 -1
  192. package/dist/components/kemet-radio/kemet-radios.d.ts +5 -4
  193. package/dist/components/kemet-radio/kemet-radios.js +10 -4
  194. package/dist/components/kemet-radio/kemet-radios.js.map +1 -1
  195. package/dist/components/kemet-radio/spec.d.ts +3 -0
  196. package/dist/components/kemet-radio/spec.js +67 -0
  197. package/dist/components/kemet-radio/spec.js.map +1 -0
  198. package/dist/components/kemet-radio/types.d.ts +2 -2
  199. package/dist/components/kemet-rotator/docs/stories.d.ts +1 -1
  200. package/dist/components/kemet-rotator/kemet-rotator.d.ts +1 -1
  201. package/dist/components/kemet-rotator/kemet-rotator.js +1 -2
  202. package/dist/components/kemet-rotator/kemet-rotator.js.map +1 -1
  203. package/dist/components/kemet-rotator/types.d.ts +1 -1
  204. package/dist/components/kemet-scroll-link/docs/stories.d.ts +1 -1
  205. package/dist/components/kemet-scroll-link/kemet-scroll-link.d.ts +2 -2
  206. package/dist/components/kemet-scroll-link/kemet-scroll-link.js +11 -10
  207. package/dist/components/kemet-scroll-link/kemet-scroll-link.js.map +1 -1
  208. package/dist/components/kemet-scroll-nav/docs/stories.d.ts +1 -1
  209. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.d.ts +2 -2
  210. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js +2 -7
  211. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js.map +1 -1
  212. package/dist/components/kemet-scroll-nav/types.d.ts +1 -1
  213. package/dist/components/kemet-scroll-snap/docs/stories.d.ts +1 -1
  214. package/dist/components/kemet-scroll-snap/docs/stories.js.map +1 -1
  215. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.d.ts +5 -4
  216. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js +1 -1
  217. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js.map +1 -1
  218. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.d.ts +1 -1
  219. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js +1 -1
  220. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js.map +1 -1
  221. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.d.ts +3 -2
  222. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js +2 -7
  223. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js.map +1 -1
  224. package/dist/components/kemet-scroll-snap/types.d.ts +2 -2
  225. package/dist/components/kemet-select/docs/stories.d.ts +1 -1
  226. package/dist/components/kemet-select/kemet-option.d.ts +1 -1
  227. package/dist/components/kemet-select/kemet-option.js +1 -1
  228. package/dist/components/kemet-select/kemet-option.js.map +1 -1
  229. package/dist/components/kemet-select/kemet-select.d.ts +19 -10
  230. package/dist/components/kemet-select/kemet-select.js +3 -44
  231. package/dist/components/kemet-select/kemet-select.js.map +1 -1
  232. package/dist/components/kemet-select/spec.d.ts +3 -0
  233. package/dist/components/kemet-select/spec.js +53 -0
  234. package/dist/components/kemet-select/spec.js.map +1 -0
  235. package/dist/components/kemet-sortable/docs/stories.d.ts +1 -1
  236. package/dist/components/kemet-sortable/docs/stories.js.map +1 -1
  237. package/dist/components/kemet-sortable/kemet-sortable-item.js.map +1 -1
  238. package/dist/components/kemet-sortable/kemet-sortable.d.ts +5 -5
  239. package/dist/components/kemet-sortable/kemet-sortable.js +5 -5
  240. package/dist/components/kemet-sortable/kemet-sortable.js.map +1 -1
  241. package/dist/components/kemet-svgs/docs/stories.d.ts +1 -1
  242. package/dist/components/kemet-svgs/docs/stories.js.map +1 -1
  243. package/dist/components/kemet-svgs/kemet-svg.js.map +1 -1
  244. package/dist/components/kemet-svgs/kemet-svgs.d.ts +1 -1
  245. package/dist/components/kemet-svgs/kemet-svgs.js +1 -1
  246. package/dist/components/kemet-svgs/kemet-svgs.js.map +1 -1
  247. package/dist/components/kemet-tabs/docs/stories.d.ts +1 -1
  248. package/dist/components/kemet-tabs/docs/stories.js.map +1 -1
  249. package/dist/components/kemet-tabs/kemet-tab-panel.d.ts +1 -0
  250. package/dist/components/kemet-tabs/kemet-tab-panel.js +3 -0
  251. package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
  252. package/dist/components/kemet-tabs/kemet-tab.d.ts +1 -0
  253. package/dist/components/kemet-tabs/kemet-tab.js +4 -1
  254. package/dist/components/kemet-tabs/kemet-tab.js.map +1 -1
  255. package/dist/components/kemet-tabs/kemet-tabs.d.ts +23 -14
  256. package/dist/components/kemet-tabs/kemet-tabs.js +3 -47
  257. package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
  258. package/dist/components/kemet-tabs/types.d.ts +3 -3
  259. package/dist/components/kemet-textarea/docs/stories.d.ts +1 -1
  260. package/dist/components/kemet-textarea/kemet-textarea.js.map +1 -1
  261. package/dist/components/kemet-textarea/spec.d.ts +3 -0
  262. package/dist/components/kemet-textarea/spec.js +69 -0
  263. package/dist/components/kemet-textarea/spec.js.map +1 -0
  264. package/dist/components/kemet-textarea/types.d.ts +1 -1
  265. package/dist/components/kemet-timer/docs/stories.d.ts +10 -0
  266. package/dist/components/kemet-timer/docs/stories.js +40 -0
  267. package/dist/components/kemet-timer/docs/stories.js.map +1 -0
  268. package/dist/components/kemet-timer/kemet-timer-display.d.ts +25 -0
  269. package/dist/components/kemet-timer/kemet-timer-display.js +65 -0
  270. package/dist/components/kemet-timer/kemet-timer-display.js.map +1 -0
  271. package/dist/components/kemet-timer/kemet-timer.d.ts +36 -0
  272. package/dist/components/kemet-timer/kemet-timer.js +103 -0
  273. package/dist/components/kemet-timer/kemet-timer.js.map +1 -0
  274. package/dist/components/kemet-timer/styles.d.ts +2 -0
  275. package/dist/components/kemet-timer/styles.js +12 -0
  276. package/dist/components/kemet-timer/styles.js.map +1 -0
  277. package/dist/components/kemet-timer/types.d.ts +1 -0
  278. package/dist/components/kemet-timer/types.js +2 -0
  279. package/dist/components/kemet-timer/types.js.map +1 -0
  280. package/dist/components/kemet-toggle/docs/stories.d.ts +1 -1
  281. package/dist/components/kemet-toggle/kemet-toggle.d.ts +3 -3
  282. package/dist/components/kemet-toggle/kemet-toggle.js +3 -3
  283. package/dist/components/kemet-toggle/kemet-toggle.js.map +1 -1
  284. package/dist/components/kemet-toggle/spec.d.ts +1 -0
  285. package/dist/components/kemet-toggle/spec.js +46 -0
  286. package/dist/components/kemet-toggle/spec.js.map +1 -0
  287. package/dist/components/kemet-tooltip/docs/stories.d.ts +1 -1
  288. package/dist/components/kemet-tooltip/kemet-tooltip.d.ts +2 -2
  289. package/dist/components/kemet-tooltip/kemet-tooltip.js +13 -12
  290. package/dist/components/kemet-tooltip/kemet-tooltip.js.map +1 -1
  291. package/dist/components/kemet-tooltip/types.d.ts +3 -3
  292. package/dist/components/kemet-tracker/docs/stories.d.ts +1 -1
  293. package/dist/components/kemet-tracker/docs/stories.js.map +1 -1
  294. package/dist/components/kemet-tracker/kemet-tracker-step.d.ts +2 -2
  295. package/dist/components/kemet-tracker/kemet-tracker-step.js +2 -2
  296. package/dist/components/kemet-tracker/kemet-tracker-step.js.map +1 -1
  297. package/dist/components/kemet-tracker/kemet-tracker.d.ts +2 -1
  298. package/dist/components/kemet-tracker/kemet-tracker.js.map +1 -1
  299. package/dist/components/kemet-upload/docs/stories.d.ts +1 -1
  300. package/dist/components/kemet-upload/kemet-upload-file.js +1 -2
  301. package/dist/components/kemet-upload/kemet-upload-file.js.map +1 -1
  302. package/dist/components/kemet-upload/kemet-upload.d.ts +3 -3
  303. package/dist/components/kemet-upload/kemet-upload.js +3 -8
  304. package/dist/components/kemet-upload/kemet-upload.js.map +1 -1
  305. package/dist/kemet-components.bundle.js +82 -86
  306. package/dist/kemet-components.bundle.js.map +1 -1
  307. package/dist/kemet-components.cjs +3320 -2985
  308. package/dist/kemet-components.js +3320 -2985
  309. package/dist/styles/kemet.base.css +24 -2
  310. package/dist/styles/kemet.base.css.map +1 -1
  311. package/dist/styles/kemet.core.css +266 -562
  312. package/dist/styles/kemet.core.css.map +1 -1
  313. package/dist/styles/shared/_config.scss +25 -1
  314. package/dist/tsconfig.tsbuildinfo +1 -1
  315. package/dist/utilities/controllers/forms.js +16 -18
  316. package/dist/utilities/controllers/forms.js.map +1 -1
  317. package/dist/utilities/controllers/forms.spec.d.ts +2 -0
  318. package/dist/utilities/controllers/forms.spec.js +36 -0
  319. package/dist/utilities/controllers/forms.spec.js.map +1 -0
  320. package/dist/utilities/misc/drag.d.ts +6 -0
  321. package/dist/utilities/misc/drag.js +63 -0
  322. package/dist/utilities/misc/drag.js.map +1 -0
  323. package/package.json +50 -35
  324. package/dist/components/kemet-accordion/stories.d.ts +0 -12
  325. package/dist/components/kemet-accordion/stories.js +0 -47
  326. package/dist/components/kemet-accordion/stories.js.map +0 -1
@@ -0,0 +1,69 @@
1
+ import { html, render } from 'lit';
2
+ import { expect } from '@wdio/globals';
3
+ import userEvent from '@testing-library/user-event';
4
+ import { fireEvent, waitFor } from '@testing-library/dom';
5
+ import './kemet-textarea';
6
+ import '../kemet-field/kemet-field';
7
+ import '../kemet-count/kemet-count';
8
+ describe('Textarea', () => {
9
+ const templates = {
10
+ default: html `
11
+ <kemet-field>
12
+ <kemet-textarea slot="input"></kemet-textarea>
13
+ </kemet-field>
14
+ `,
15
+ disabled: html `
16
+ <kemet-field>
17
+ <kemet-textarea disabled slot="input"></kemet-textarea>
18
+ </kemet-field>
19
+ `,
20
+ validateImmediately: html `
21
+ <kemet-field>
22
+ <kemet-textarea slot="input" required validate-on-blur></kemet-textarea>
23
+ <kemet-count slot="component" message="characters remaining." limit="6" validate-immediately></kemet-count>
24
+ </kemet-field>
25
+ `,
26
+ };
27
+ it('handles changes to the input properly', async () => {
28
+ render(templates.default, document.body);
29
+ const kemetTextarea = document.querySelector('kemet-textarea');
30
+ await waitFor(async () => {
31
+ const input = kemetTextarea.shadowRoot.querySelector('textarea');
32
+ // TODO figure out why useEvent is not generating code coverage
33
+ fireEvent.input(input, { target: { value: 'test' } });
34
+ fireEvent.change(input, { target: { value: 'test' } });
35
+ fireEvent.blur(input);
36
+ expect(kemetTextarea.status).toBe('standard');
37
+ });
38
+ });
39
+ it('focuses correctly', async () => {
40
+ render(templates.default, document.body);
41
+ const kemetTextarea = document.querySelector('kemet-textarea');
42
+ await waitFor(async () => {
43
+ kemetTextarea.focus();
44
+ fireEvent.focus(kemetTextarea.shadowRoot.querySelector('textarea'));
45
+ expect(kemetTextarea.hasFocus).toBe(true);
46
+ });
47
+ });
48
+ it('should not set a value when user types into a disabled field', async () => {
49
+ render(templates.disabled, document.body);
50
+ const kemetTextarea = document.querySelector('kemet-textarea');
51
+ await waitFor(async () => {
52
+ await userEvent.type(kemetTextarea.shadowRoot.querySelector('textarea'), 'random text');
53
+ await userEvent.click(document.body);
54
+ expect(kemetTextarea.value).toBeFalsy();
55
+ });
56
+ });
57
+ it('should error on blur when validate-on-blur is set and invalid value is entered', async () => {
58
+ render(templates.validateImmediately, document.body);
59
+ const kemetTextarea = document.querySelector('kemet-textarea');
60
+ await waitFor(async () => {
61
+ const input = kemetTextarea.shadowRoot.querySelector('textarea');
62
+ kemetTextarea.focus();
63
+ fireEvent.blur(input);
64
+ kemetTextarea.checkValidity();
65
+ expect(kemetTextarea.status).toBe('error');
66
+ });
67
+ });
68
+ });
69
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-textarea/spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, render } from 'lit';\nimport { expect } from '@wdio/globals';\nimport userEvent from '@testing-library/user-event';\nimport { fireEvent, waitFor } from '@testing-library/dom';\n\nimport './kemet-textarea';\nimport '../kemet-field/kemet-field';\nimport '../kemet-count/kemet-count';\n\ndescribe('Textarea', () => {\n const templates = {\n default: html`\n <kemet-field>\n <kemet-textarea slot=\"input\"></kemet-textarea>\n </kemet-field>\n `,\n disabled: html`\n <kemet-field>\n <kemet-textarea disabled slot=\"input\"></kemet-textarea>\n </kemet-field>\n `,\n validateImmediately: html`\n <kemet-field>\n <kemet-textarea slot=\"input\" required validate-on-blur></kemet-textarea>\n <kemet-count slot=\"component\" message=\"characters remaining.\" limit=\"6\" validate-immediately></kemet-count>\n </kemet-field>\n `,\n };\n\n it('handles changes to the input properly', async () => {\n render(templates.default, document.body);\n const kemetTextarea = document.querySelector('kemet-textarea');\n\n await waitFor(async () => {\n const input = kemetTextarea.shadowRoot.querySelector('textarea');\n // TODO figure out why useEvent is not generating code coverage\n fireEvent.input(input, { target: { value: 'test' } });\n fireEvent.change(input, { target: { value: 'test' } });\n fireEvent.blur(input);\n expect(kemetTextarea.status).toBe('standard');\n });\n });\n\n it('focuses correctly', async () => {\n render(templates.default, document.body);\n const kemetTextarea = document.querySelector('kemet-textarea');\n\n await waitFor(async () => {\n kemetTextarea.focus();\n fireEvent.focus(kemetTextarea.shadowRoot.querySelector('textarea'));\n expect(kemetTextarea.hasFocus).toBe(true);\n });\n });\n\n it('should not set a value when user types into a disabled field', async () => {\n render(templates.disabled, document.body);\n const kemetTextarea = document.querySelector('kemet-textarea');\n\n await waitFor(async () => {\n await userEvent.type(kemetTextarea.shadowRoot.querySelector('textarea'), 'random text');\n await userEvent.click(document.body);\n expect(kemetTextarea.value).toBeFalsy();\n });\n });\n\n it('should error on blur when validate-on-blur is set and invalid value is entered', async () => {\n render(templates.validateImmediately, document.body);\n const kemetTextarea = document.querySelector('kemet-textarea');\n\n await waitFor(async () => {\n const input = kemetTextarea.shadowRoot.querySelector('textarea');\n kemetTextarea.focus();\n fireEvent.blur(input);\n kemetTextarea.checkValidity();\n expect(kemetTextarea.status).toBe('error');\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 KemetTextareaInterface extends HTMLElement {
3
3
  slug?: string;
4
4
  name?: string;
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import '../kemet-timer';
3
+ import '../kemet-timer-display';
4
+ import '../../kemet-tabs/kemet-tabs';
5
+ import '../../kemet-tabs/kemet-tab';
6
+ import '../../kemet-tabs/kemet-tab-panel';
7
+ declare const meta: Meta;
8
+ export default meta;
9
+ type Story = StoryObj;
10
+ export declare const Standard: Story;
@@ -0,0 +1,40 @@
1
+ import { html } from 'lit';
2
+ import { ifDefined } from 'lit/directives/if-defined.js';
3
+ import '../kemet-timer';
4
+ import '../kemet-timer-display';
5
+ import '../../kemet-tabs/kemet-tabs';
6
+ import '../../kemet-tabs/kemet-tab';
7
+ import '../../kemet-tabs/kemet-tab-panel';
8
+ const meta = {
9
+ title: 'Components / Timer',
10
+ component: 'kemet-timer',
11
+ argTypes: {
12
+ format: {
13
+ control: { type: 'select' },
14
+ options: ['seconds', 'minutes', 'hours', 'days'],
15
+ },
16
+ amount: {
17
+ control: { type: 'number' },
18
+ },
19
+ expires: {
20
+ control: { type: 'text' },
21
+ },
22
+ },
23
+ };
24
+ export default meta;
25
+ const Template = args => html `
26
+ <kemet-timer amount=${args.amount} format=${args.format} expires=${ifDefined(args.expires)}>
27
+ <kemet-timer-display format="seconds"></kemet-timer-display>&nbsp;Seconds&nbsp;:
28
+ <kemet-timer-display format="minutes"></kemet-timer-display>&nbsp;Minutes&nbsp;:
29
+ <kemet-timer-display format="hours"></kemet-timer-display>&nbsp;Hours&nbsp;:
30
+ <kemet-timer-display format="days"></kemet-timer-display>&nbsp;Days
31
+ </kemet-timer>
32
+ `;
33
+ export const Standard = {
34
+ render: args => Template(args),
35
+ args: {
36
+ amount: 2,
37
+ format: 'minutes',
38
+ },
39
+ };
40
+ //# sourceMappingURL=stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../../src/components/kemet-timer/docs/stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,gBAAgB,CAAC;AACxB,OAAO,wBAAwB,CAAC;AAEhC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;SACjD;QACD,MAAM,EAAE;YACN,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B;QACD,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC1B;KACF;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA;wBACL,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,MAAM,YAAY,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;CAM3F,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,SAAS;KAClB;CACF,CAAC","sourcesContent":["import { html } from 'lit';\nimport type { Meta, StoryObj } from '@storybook/web-components';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport '../kemet-timer';\nimport '../kemet-timer-display';\n\nimport '../../kemet-tabs/kemet-tabs';\nimport '../../kemet-tabs/kemet-tab';\nimport '../../kemet-tabs/kemet-tab-panel';\n\nconst meta: Meta = {\n title: 'Components / Timer',\n component: 'kemet-timer',\n argTypes: {\n format: {\n control: { type: 'select' },\n options: ['seconds', 'minutes', 'hours', 'days'],\n },\n amount: {\n control: { type: 'number' },\n },\n expires: {\n control: { type: 'text' },\n },\n },\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = args => html`\n <kemet-timer amount=${args.amount} format=${args.format} expires=${ifDefined(args.expires)}>\n <kemet-timer-display format=\"seconds\"></kemet-timer-display>&nbsp;Seconds&nbsp;:\n <kemet-timer-display format=\"minutes\"></kemet-timer-display>&nbsp;Minutes&nbsp;:\n <kemet-timer-display format=\"hours\"></kemet-timer-display>&nbsp;Hours&nbsp;:\n <kemet-timer-display format=\"days\"></kemet-timer-display>&nbsp;Days\n </kemet-timer>\n`;\n\nexport const Standard: Story = {\n render: args => Template(args),\n args: {\n amount: 2,\n format: 'minutes',\n },\n};\n"]}
@@ -0,0 +1,25 @@
1
+ import { LitElement } from 'lit';
2
+ import { TypeFormats } from './types';
3
+ /**
4
+ * @since 3.1.0
5
+ * @status stable
6
+ *
7
+ * @tagname kemet-timer-display
8
+ * @summary Displays remaining time
9
+ *
10
+ * @prop {TypeFormats} format - The format to display the remaining time in
11
+ */
12
+ export default class KemetTimerDisplay extends LitElement {
13
+ static styles: import("lit").CSSResult[];
14
+ format: TypeFormats;
15
+ displayTime: string;
16
+ constructor();
17
+ render(): import("lit-html").TemplateResult<1>;
18
+ getTime(): void;
19
+ getTimeInSeconds(time: any): any;
20
+ }
21
+ declare global {
22
+ interface HTMLElementTagNameMap {
23
+ 'kemet-timer-display': KemetTimerDisplay;
24
+ }
25
+ }
@@ -0,0 +1,65 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from 'lit';
3
+ import { customElement, property, state } from 'lit/decorators.js';
4
+ import { stylesDisplay } from './styles';
5
+ /**
6
+ * @since 3.1.0
7
+ * @status stable
8
+ *
9
+ * @tagname kemet-timer-display
10
+ * @summary Displays remaining time
11
+ *
12
+ * @prop {TypeFormats} format - The format to display the remaining time in
13
+ */
14
+ let KemetTimerDisplay = class KemetTimerDisplay extends LitElement {
15
+ constructor() {
16
+ super();
17
+ this.format = 'seconds';
18
+ this.getTime();
19
+ }
20
+ render() {
21
+ return html `${this.displayTime}`;
22
+ }
23
+ getTime() {
24
+ this.closest('kemet-timer').addEventListener('kemet-timer-increment', (event) => {
25
+ const secondsLeft = event.detail;
26
+ switch (this.format) {
27
+ case 'seconds':
28
+ this.displayTime = (secondsLeft % 60 < 10 ? `0${secondsLeft % 60}` : secondsLeft % 60).toString();
29
+ break;
30
+ case 'minutes':
31
+ // eslint-disable-next-line no-mixed-operators
32
+ this.displayTime = Math.floor((secondsLeft % 86400) % 3600 / 60).toString();
33
+ break;
34
+ case 'hours':
35
+ this.displayTime = Math.floor((secondsLeft % 86400) / 3600).toString();
36
+ break;
37
+ case 'days':
38
+ this.displayTime = Math.floor(secondsLeft / 86400).toString();
39
+ break;
40
+ default:
41
+ this.displayTime = (secondsLeft % 60 < 10 ? `0${secondsLeft % 60}` : secondsLeft % 60).toString();
42
+ }
43
+ });
44
+ }
45
+ getTimeInSeconds(time) {
46
+ switch (this.format) {
47
+ case 'minutes': return time * 60;
48
+ case 'hours': return time * 60 * 60;
49
+ case 'days': return time * 60 * 60 * 24;
50
+ default: return time;
51
+ }
52
+ }
53
+ };
54
+ KemetTimerDisplay.styles = [stylesDisplay];
55
+ __decorate([
56
+ property({ type: String })
57
+ ], KemetTimerDisplay.prototype, "format", void 0);
58
+ __decorate([
59
+ state()
60
+ ], KemetTimerDisplay.prototype, "displayTime", void 0);
61
+ KemetTimerDisplay = __decorate([
62
+ customElement('kemet-timer-display')
63
+ ], KemetTimerDisplay);
64
+ export default KemetTimerDisplay;
65
+ //# sourceMappingURL=kemet-timer-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kemet-timer-display.js","sourceRoot":"","sources":["../../../src/components/kemet-timer/kemet-timer-display.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;;;;GAQG;AAGY,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IASvD;QACE,KAAK,EAAE,CAAC;QANV,WAAM,GAAgB,SAAS,CAAC;QAO9B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,KAAkB,EAAE,EAAE;YAC3F,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;YACjC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,SAAS;oBACZ,IAAI,CAAC,WAAW,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAClG,MAAM;gBACR,KAAK,SAAS;oBACZ,8CAA8C;oBAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC5E,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACvE,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC9D,MAAM;gBACR;oBACE,IAAI,CAAC,WAAW,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,IAAI;QACnB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;YACjC,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;;AA/CM,wBAAM,GAAG,CAAC,aAAa,CAAC,AAAlB,CAAmB;AAGhC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDACK;AAGhC;IADC,KAAK,EAAE;sDACY;AAPD,iBAAiB;IADrC,aAAa,CAAC,qBAAqB,CAAC;GAChB,iBAAiB,CAiDrC;eAjDoB,iBAAiB","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { stylesDisplay } from './styles';\nimport { TypeFormats } from './types';\n\n/**\n * @since 3.1.0\n * @status stable\n *\n * @tagname kemet-timer-display\n * @summary Displays remaining time\n *\n * @prop {TypeFormats} format - The format to display the remaining time in\n */\n\n@customElement('kemet-timer-display')\nexport default class KemetTimerDisplay extends LitElement {\n static styles = [stylesDisplay];\n\n @property({ type: String })\n format: TypeFormats = 'seconds';\n\n @state()\n displayTime: string;\n\n constructor() {\n super();\n this.getTime();\n }\n\n render() {\n return html`${this.displayTime}`;\n }\n\n getTime() {\n this.closest('kemet-timer').addEventListener('kemet-timer-increment', (event: CustomEvent) => {\n const secondsLeft = event.detail;\n switch (this.format) {\n case 'seconds':\n this.displayTime = (secondsLeft % 60 < 10 ? `0${secondsLeft % 60}` : secondsLeft % 60).toString();\n break;\n case 'minutes':\n // eslint-disable-next-line no-mixed-operators\n this.displayTime = Math.floor((secondsLeft % 86400) % 3600 / 60).toString();\n break;\n case 'hours':\n this.displayTime = Math.floor((secondsLeft % 86400) / 3600).toString();\n break;\n case 'days':\n this.displayTime = Math.floor(secondsLeft / 86400).toString();\n break;\n default:\n this.displayTime = (secondsLeft % 60 < 10 ? `0${secondsLeft % 60}` : secondsLeft % 60).toString();\n }\n });\n }\n\n getTimeInSeconds(time) {\n switch (this.format) {\n case 'minutes': return time * 60;\n case 'hours': return time * 60 * 60;\n case 'days': return time * 60 * 60 * 24;\n default: return time;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-timer-display': KemetTimerDisplay\n }\n}\n"]}
@@ -0,0 +1,36 @@
1
+ import { LitElement } from 'lit';
2
+ import { TypeFormats } from './types';
3
+ /**
4
+ * @since 3.1.0
5
+ * @status stable
6
+ *
7
+ * @tagname kemet-timer
8
+ * @summary Counts down from a specified amount of time or date.
9
+ *
10
+ * @prop {string} format - The format of the amount property
11
+ * @prop {number} amount - The amount of time to set the timer
12
+ * @prop {string} expires - Begins a count down to a specified time, accepts a string that matches value given for a Date constructor
13
+ *
14
+ * @event kemet-timer-completed - Fires when the timer reaches 0
15
+ * @event kemet-timer-increment - Fires on tick of the timer
16
+ *
17
+ */
18
+ export default class KemetTimer extends LitElement {
19
+ static styles: import("lit").CSSResult[];
20
+ format: TypeFormats;
21
+ amount: number;
22
+ expires: string;
23
+ /** @internal */
24
+ interval: any;
25
+ firstUpdated(): void;
26
+ updated(prevProps: any): void;
27
+ render(): import("lit-html").TemplateResult<1>;
28
+ getTimeInSeconds(time: any): any;
29
+ timer(seconds?: number): void;
30
+ countDown(): void;
31
+ }
32
+ declare global {
33
+ interface HTMLElementTagNameMap {
34
+ 'kemet-timer': KemetTimer;
35
+ }
36
+ }
@@ -0,0 +1,103 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from 'lit';
3
+ import { customElement, property, state } from 'lit/decorators.js';
4
+ import { stylesBase } from './styles';
5
+ import { emitEvent } from '../../utilities/misc/events';
6
+ /**
7
+ * @since 3.1.0
8
+ * @status stable
9
+ *
10
+ * @tagname kemet-timer
11
+ * @summary Counts down from a specified amount of time or date.
12
+ *
13
+ * @prop {string} format - The format of the amount property
14
+ * @prop {number} amount - The amount of time to set the timer
15
+ * @prop {string} expires - Begins a count down to a specified time, accepts a string that matches value given for a Date constructor
16
+ *
17
+ * @event kemet-timer-completed - Fires when the timer reaches 0
18
+ * @event kemet-timer-increment - Fires on tick of the timer
19
+ *
20
+ */
21
+ let KemetTimer = class KemetTimer extends LitElement {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.format = 'seconds';
25
+ this.amount = 10;
26
+ }
27
+ firstUpdated() {
28
+ if (this.expires) {
29
+ this.countDown();
30
+ }
31
+ else {
32
+ this.timer(this.getTimeInSeconds(this.amount));
33
+ }
34
+ emitEvent(this, 'kemet-timer-started', true);
35
+ emitEvent(this, 'kemet-timer-increment', this.getTimeInSeconds(this.amount));
36
+ }
37
+ updated(prevProps) {
38
+ const hasFormatOrAmountChanged = prevProps.get('format') || prevProps.get('amount');
39
+ const hasExpiredChanged = prevProps.get('expires');
40
+ if (hasFormatOrAmountChanged) {
41
+ clearInterval(this.interval);
42
+ this.timer(this.getTimeInSeconds(this.amount));
43
+ }
44
+ if (hasExpiredChanged) {
45
+ clearInterval(this.interval);
46
+ this.countDown();
47
+ }
48
+ }
49
+ render() {
50
+ return html `<slot></slot>`;
51
+ }
52
+ getTimeInSeconds(time) {
53
+ switch (this.format) {
54
+ case 'minutes': return time * 60;
55
+ case 'hours': return time * 60 * 60;
56
+ case 'days': return time * 60 * 60 * 24;
57
+ default: return time;
58
+ }
59
+ }
60
+ timer(seconds = 0) {
61
+ const now = Date.now();
62
+ const then = now + seconds * 1000;
63
+ this.interval = setInterval(() => {
64
+ const secondsLeft = Math.round((then - Date.now()) / 1000);
65
+ if (secondsLeft < 0) {
66
+ clearInterval(this.interval);
67
+ emitEvent(this, 'kemet-timer-completed', true);
68
+ return;
69
+ }
70
+ emitEvent(this, 'kemet-timer-increment', secondsLeft);
71
+ }, 1000);
72
+ }
73
+ countDown() {
74
+ const expires = new Date(this.expires).getTime();
75
+ this.interval = setInterval(() => {
76
+ const secondsLeft = Math.round((expires - Date.now()) / 1000);
77
+ if (secondsLeft < 0) {
78
+ clearInterval(this.interval);
79
+ emitEvent(this, 'kemet-timer-completed', true);
80
+ return;
81
+ }
82
+ emitEvent(this, 'kemet-timer-increment', secondsLeft);
83
+ }, 1000);
84
+ }
85
+ };
86
+ KemetTimer.styles = [stylesBase];
87
+ __decorate([
88
+ property({ type: String })
89
+ ], KemetTimer.prototype, "format", void 0);
90
+ __decorate([
91
+ property({ type: Number })
92
+ ], KemetTimer.prototype, "amount", void 0);
93
+ __decorate([
94
+ property({ type: String })
95
+ ], KemetTimer.prototype, "expires", void 0);
96
+ __decorate([
97
+ state()
98
+ ], KemetTimer.prototype, "interval", void 0);
99
+ KemetTimer = __decorate([
100
+ customElement('kemet-timer')
101
+ ], KemetTimer);
102
+ export default KemetTimer;
103
+ //# sourceMappingURL=kemet-timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kemet-timer.js","sourceRoot":"","sources":["../../../src/components/kemet-timer/kemet-timer.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { stylesBase } from './styles';\nimport { TypeFormats } from './types';\nimport { emitEvent } from '../../utilities/misc/events';\n\n/**\n * @since 3.1.0\n * @status stable\n *\n * @tagname kemet-timer\n * @summary Counts down from a specified amount of time or date.\n *\n * @prop {string} format - The format of the amount property\n * @prop {number} amount - The amount of time to set the timer\n * @prop {string} expires - Begins a count down to a specified time, accepts a string that matches value given for a Date constructor\n *\n * @event kemet-timer-completed - Fires when the timer reaches 0\n * @event kemet-timer-increment - Fires on tick of the timer\n *\n */\n\n@customElement('kemet-timer')\nexport default class KemetTimer extends LitElement {\n static styles = [stylesBase];\n\n @property({ type: String })\n format: TypeFormats = 'seconds';\n\n @property({ type: Number })\n amount: number = 10;\n\n @property({ type: String })\n expires: string;\n\n /** @internal */\n @state()\n interval;\n\n firstUpdated() {\n if (this.expires) {\n this.countDown();\n } else {\n this.timer(this.getTimeInSeconds(this.amount));\n }\n\n emitEvent(this, 'kemet-timer-started', true);\n emitEvent(this, 'kemet-timer-increment', this.getTimeInSeconds(this.amount));\n }\n\n updated(prevProps) {\n const hasFormatOrAmountChanged = prevProps.get('format') || prevProps.get('amount');\n const hasExpiredChanged = prevProps.get('expires');\n\n if (hasFormatOrAmountChanged) {\n clearInterval(this.interval);\n this.timer(this.getTimeInSeconds(this.amount));\n }\n\n if (hasExpiredChanged) {\n clearInterval(this.interval);\n this.countDown();\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n\n getTimeInSeconds(time) {\n switch (this.format) {\n case 'minutes': return time * 60;\n case 'hours': return time * 60 * 60;\n case 'days': return time * 60 * 60 * 24;\n default: return time;\n }\n }\n\n timer(seconds: number = 0) {\n const now = Date.now();\n const then = now + seconds * 1000;\n\n this.interval = setInterval(() => {\n const secondsLeft = Math.round((then - Date.now()) / 1000);\n\n if (secondsLeft < 0) {\n clearInterval(this.interval);\n emitEvent(this, 'kemet-timer-completed', true);\n return;\n }\n\n emitEvent(this, 'kemet-timer-increment', secondsLeft);\n }, 1000);\n }\n\n countDown() {\n const expires = new Date(this.expires).getTime();\n\n this.interval = setInterval(() => {\n const secondsLeft = Math.round((expires - Date.now()) / 1000);\n\n if (secondsLeft < 0) {\n clearInterval(this.interval);\n emitEvent(this, 'kemet-timer-completed', true);\n return;\n }\n\n emitEvent(this, 'kemet-timer-increment', secondsLeft);\n }, 1000);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-timer': KemetTimer\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const stylesBase: import("lit").CSSResult;
2
+ export declare const stylesDisplay: import("lit").CSSResult;
@@ -0,0 +1,12 @@
1
+ import { css } from 'lit';
2
+ export const stylesBase = css `
3
+ :host {
4
+ display: block;
5
+ }
6
+ `;
7
+ export const stylesDisplay = css `
8
+ :host {
9
+ display: inline-block;
10
+ }
11
+ `;
12
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/components/kemet-timer/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;CAI5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;CAI/B,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const stylesBase = css`\n :host {\n display: block;\n }\n`;\n\nexport const stylesDisplay = css`\n :host {\n display: inline-block;\n }\n`;\n"]}
@@ -0,0 +1 @@
1
+ export type TypeFormats = 'seconds' | 'minutes' | 'hours' | 'days';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/kemet-timer/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TypeFormats = 'seconds' | 'minutes' | 'hours' | 'days';\n"]}
@@ -5,7 +5,7 @@ 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;
10
10
  export declare const Squared: Story;
11
11
  export declare const ShowOptions: Story;
@@ -8,10 +8,10 @@ import { FormSubmitController } from '../../utilities/controllers/forms';
8
8
  * @summary A toggle switch for forms.
9
9
  *
10
10
  * @prop {string} name - The name on the input field
11
- * @prop {boolean} checked - Determines whether or not the toggle is checked
12
- * @prop {boolean} disabled - Determines whether or not the toggle is disabled
11
+ * @prop {boolean} checked - Determines whether the toggle is checked
12
+ * @prop {boolean} disabled - Determines whether the toggle is disabled
13
13
  * @prop {string} label - A description of the toggle's purpose
14
- * @prop {boolean} show - Determines whether or not to show text options
14
+ * @prop {boolean} show - Determines whether to show text options
15
15
  * @prop {boolean} squared - Displays the toggle as squared instead of rounded
16
16
  * @prop {string} optionChecked - The checked option text
17
17
  * @prop {string} optionUnchecked - The unchecked option text
@@ -12,10 +12,10 @@ import { stylesToggle } from './styles';
12
12
  * @summary A toggle switch for forms.
13
13
  *
14
14
  * @prop {string} name - The name on the input field
15
- * @prop {boolean} checked - Determines whether or not the toggle is checked
16
- * @prop {boolean} disabled - Determines whether or not the toggle is disabled
15
+ * @prop {boolean} checked - Determines whether the toggle is checked
16
+ * @prop {boolean} disabled - Determines whether the toggle is disabled
17
17
  * @prop {string} label - A description of the toggle's purpose
18
- * @prop {boolean} show - Determines whether or not to show text options
18
+ * @prop {boolean} show - Determines whether to show text options
19
19
  * @prop {boolean} squared - Displays the toggle as squared instead of rounded
20
20
  * @prop {string} optionChecked - The checked option text
21
21
  * @prop {string} optionUnchecked - The unchecked option text
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-toggle.js","sourceRoot":"","sources":["../../../src/components/kemet-toggle/kemet-toggle.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, css, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormSubmitController } from '../../utilities/controllers/forms';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesToggle } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-toggle\n * @summary A toggle switch for forms.\n *\n * @prop {string} name - The name on the input field\n * @prop {boolean} checked - Determines whether or not the toggle is checked\n * @prop {boolean} disabled - Determines whether or not the toggle is disabled\n * @prop {string} label - A description of the toggle's purpose\n * @prop {boolean} show - Determines whether or not to show text options\n * @prop {boolean} squared - Displays the toggle as squared instead of rounded\n * @prop {string} optionChecked - The checked option text\n * @prop {string} optionUnchecked - The unchecked option text\n *\n * @csspart label - The label element.\n * @csspart control - The control element.\n * @csspart text - The label text.\n * @csspart checked - The checked text.\n * @csspart unchecked - The unchecked text.\n *\n * @cssproperty --kemet-toggle-width - The width of the entire toggle.\n * @cssproperty --kemet-toggle-height - The height of the entire toggle.\n * @cssproperty --kemet-toggle-handle-diameter - The diameter of the handle.\n * @cssproperty --kemet-toggle-track-border - The border of the track.\n * @cssproperty --kemet-toggle-track-color - The color of the track.\n * @cssproperty --kemet-toggle-track-shadow - The shadow on the track.\n * @cssproperty --kemet-toggle-handle-border - The border on the handle.\n * @cssproperty --kemet-toggle-handle-color - The color of the handle.\n * @cssproperty --kemet-toggle-handle-shadow - The shadow on the handle.\n *\n * @event kemet-toggle-change - Fires when the toggle changes state\n *\n */\n\n@customElement('kemet-toggle')\nexport default class KemetToggle extends LitElement {\n formSubmitController: FormSubmitController;\n\n static styles = [stylesToggle];\n\n @property({ type: String })\n name: string = 'toggle-switch';\n\n @property({ type: Boolean, reflect: true })\n checked: boolean = false;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n @property({ type: String })\n label: string = '';\n\n @property({ type: Boolean })\n show: boolean = false;\n\n @property({ type: Boolean })\n squared: boolean = false;\n\n @property({ type: String, attribute: 'option-checked' })\n optionChecked: string = 'on';\n\n @property({ type: String, attribute: 'option-unchecked' })\n optionUnchecked: string = 'off';\n\n @state()\n value: string | boolean = this.checked ? this.optionChecked : this.optionUnchecked;\n\n constructor() {\n super();\n\n /** @internal */\n this.formSubmitController = new FormSubmitController(this);\n }\n\n render() {\n return html`\n <label part=\"label\">\n ${this.makeUncheckedOption()}\n <span part=\"control\">\n <span part=\"track\"></span>\n <span part=\"handle\"></span>\n </span>\n <input\n role=\"switch\"\n type=\"checkbox\"\n name=\"${this.name}\"\n aria-label=\"${this.label}\"\n aria-checked=${this.checked ? 'true' : 'false'}\n ?disabled=${this.disabled}\n ?checked=${this.checked}\n @change=${this.handleChange}\n />\n ${this.makeCheckedOption()}\n <span part=\"text\">${this.label}</span>\n </label>\n `;\n }\n\n handleChange() {\n this.checked = !this.checked;\n this.value = this.checked ? this.optionChecked : this.optionUnchecked;\n emitEvent(this, 'kemet-toggle-change', true);\n }\n\n makeUncheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"unchecked\">${this.optionUnchecked}</span>`;\n }\n\n return null;\n }\n\n makeCheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"checked\">${this.optionChecked}</span>`;\n }\n\n return null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-toggle': KemetToggle\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-toggle.js","sourceRoot":"","sources":["../../../src/components/kemet-toggle/kemet-toggle.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { FormSubmitController } from '../../utilities/controllers/forms';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { stylesToggle } from './styles';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-toggle\n * @summary A toggle switch for forms.\n *\n * @prop {string} name - The name on the input field\n * @prop {boolean} checked - Determines whether the toggle is checked\n * @prop {boolean} disabled - Determines whether the toggle is disabled\n * @prop {string} label - A description of the toggle's purpose\n * @prop {boolean} show - Determines whether to show text options\n * @prop {boolean} squared - Displays the toggle as squared instead of rounded\n * @prop {string} optionChecked - The checked option text\n * @prop {string} optionUnchecked - The unchecked option text\n *\n * @csspart label - The label element.\n * @csspart control - The control element.\n * @csspart text - The label text.\n * @csspart checked - The checked text.\n * @csspart unchecked - The unchecked text.\n *\n * @cssproperty --kemet-toggle-width - The width of the entire toggle.\n * @cssproperty --kemet-toggle-height - The height of the entire toggle.\n * @cssproperty --kemet-toggle-handle-diameter - The diameter of the handle.\n * @cssproperty --kemet-toggle-track-border - The border of the track.\n * @cssproperty --kemet-toggle-track-color - The color of the track.\n * @cssproperty --kemet-toggle-track-shadow - The shadow on the track.\n * @cssproperty --kemet-toggle-handle-border - The border on the handle.\n * @cssproperty --kemet-toggle-handle-color - The color of the handle.\n * @cssproperty --kemet-toggle-handle-shadow - The shadow on the handle.\n *\n * @event kemet-toggle-change - Fires when the toggle changes state\n *\n */\n\n@customElement('kemet-toggle')\nexport default class KemetToggle extends LitElement {\n formSubmitController: FormSubmitController;\n\n static styles = [stylesToggle];\n\n @property({ type: String })\n name: string = 'toggle-switch';\n\n @property({ type: Boolean, reflect: true })\n checked: boolean = false;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n @property({ type: String })\n label: string = '';\n\n @property({ type: Boolean })\n show: boolean = false;\n\n @property({ type: Boolean })\n squared: boolean = false;\n\n @property({ type: String, attribute: 'option-checked' })\n optionChecked: string = 'on';\n\n @property({ type: String, attribute: 'option-unchecked' })\n optionUnchecked: string = 'off';\n\n @state()\n value: string | boolean = this.checked ? this.optionChecked : this.optionUnchecked;\n\n constructor() {\n super();\n\n /** @internal */\n this.formSubmitController = new FormSubmitController(this);\n }\n\n render() {\n return html`\n <label part=\"label\">\n ${this.makeUncheckedOption()}\n <span part=\"control\">\n <span part=\"track\"></span>\n <span part=\"handle\"></span>\n </span>\n <input\n role=\"switch\"\n type=\"checkbox\"\n name=\"${this.name}\"\n aria-label=\"${this.label}\"\n aria-checked=${this.checked ? 'true' : 'false'}\n ?disabled=${this.disabled}\n ?checked=${this.checked}\n @change=${this.handleChange}\n />\n ${this.makeCheckedOption()}\n <span part=\"text\">${this.label}</span>\n </label>\n `;\n }\n\n handleChange() {\n this.checked = !this.checked;\n this.value = this.checked ? this.optionChecked : this.optionUnchecked;\n emitEvent(this, 'kemet-toggle-change', true);\n }\n\n makeUncheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"unchecked\">${this.optionUnchecked}</span>`;\n }\n\n return null;\n }\n\n makeCheckedOption() {\n if (this.show) {\n return html`<span class=\"option\" part=\"checked\">${this.optionChecked}</span>`;\n }\n\n return null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-toggle': KemetToggle\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ import './kemet-toggle';
@@ -0,0 +1,46 @@
1
+ import { html, render } from 'lit';
2
+ import { expect } from '@wdio/globals';
3
+ import { userEvent } from '@testing-library/user-event';
4
+ import { fireEvent, getByText, waitFor } from '@testing-library/dom';
5
+ import './kemet-toggle';
6
+ const templates = {
7
+ default: html `<kemet-toggle label="Label"></kemet-toggle>`,
8
+ checked: html `<kemet-toggle checked label="Label"></kemet-toggle>`,
9
+ showOptions: html `<kemet-toggle label="Label" show option-unchecked="No" option-checked="Yes"></kemet-toggle>`,
10
+ };
11
+ describe('Toggle', () => {
12
+ it('should toggle the switch when clicked', async () => {
13
+ render(templates.default, document.body);
14
+ const toggle = document.querySelector('kemet-toggle');
15
+ await waitFor(async () => {
16
+ const label = toggle.shadowRoot.querySelector('label');
17
+ const input = toggle.shadowRoot.querySelector('input');
18
+ await userEvent.click(label);
19
+ expect(toggle.checked).toBe(true);
20
+ fireEvent.blur(input);
21
+ });
22
+ });
23
+ it('should toggle the switch when clicked and initially checked', async () => {
24
+ render(templates.checked, document.body);
25
+ const toggle = document.querySelector('kemet-toggle');
26
+ await waitFor(async () => {
27
+ const label = toggle.shadowRoot.querySelector('label');
28
+ const input = toggle.shadowRoot.querySelector('input');
29
+ await userEvent.click(label);
30
+ expect(toggle.checked).toBe(false);
31
+ fireEvent.blur(input);
32
+ });
33
+ });
34
+ it('should show option labels', async () => {
35
+ render(templates.showOptions, document.body);
36
+ const kemetToggle = document.querySelector('kemet-toggle');
37
+ await waitFor(() => {
38
+ const label = kemetToggle.shadowRoot.querySelector('label');
39
+ const checkedText = getByText(label, 'Yes');
40
+ const uncheckedText = getByText(label, 'No');
41
+ expect(checkedText).toBeTruthy();
42
+ expect(uncheckedText).toBeTruthy();
43
+ });
44
+ });
45
+ });
46
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/components/kemet-toggle/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,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,gBAAgB,CAAC;AAExB,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,IAAI,CAAA,6CAA6C;IAC1D,OAAO,EAAE,IAAI,CAAA,qDAAqD;IAClE,WAAW,EAAE,IAAI,CAAA,6FAA6F;CAC/G,CAAC;AAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAEtD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAEtD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAE3D,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,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';\nimport { fireEvent, getByText, waitFor } from '@testing-library/dom';\n\nimport './kemet-toggle';\n\nconst templates = {\n default: html`<kemet-toggle label=\"Label\"></kemet-toggle>`,\n checked: html`<kemet-toggle checked label=\"Label\"></kemet-toggle>`,\n showOptions: html`<kemet-toggle label=\"Label\" show option-unchecked=\"No\" option-checked=\"Yes\"></kemet-toggle>`,\n};\n\ndescribe('Toggle', () => {\n it('should toggle the switch when clicked', async () => {\n render(templates.default, document.body);\n const toggle = document.querySelector('kemet-toggle');\n\n await waitFor(async () => {\n const label = toggle.shadowRoot.querySelector('label');\n const input = toggle.shadowRoot.querySelector('input');\n await userEvent.click(label);\n expect(toggle.checked).toBe(true);\n fireEvent.blur(input);\n });\n });\n\n it('should toggle the switch when clicked and initially checked', async () => {\n render(templates.checked, document.body);\n const toggle = document.querySelector('kemet-toggle');\n\n await waitFor(async () => {\n const label = toggle.shadowRoot.querySelector('label');\n const input = toggle.shadowRoot.querySelector('input');\n await userEvent.click(label);\n expect(toggle.checked).toBe(false);\n fireEvent.blur(input);\n });\n });\n\n it('should show option labels', async () => {\n render(templates.showOptions, document.body);\n const kemetToggle = document.querySelector('kemet-toggle');\n\n await waitFor(() => {\n const label = kemetToggle.shadowRoot.querySelector('label');\n const checkedText = getByText(label, 'Yes');\n const uncheckedText = getByText(label, 'No');\n expect(checkedText).toBeTruthy();\n expect(uncheckedText).toBeTruthy();\n });\n });\n});\n"]}
@@ -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 Right: Story;
12
12
  export declare const Bottom: Story;
@@ -4,7 +4,7 @@ import KemetPopper from '../kemet-popper/kemet-popper';
4
4
  * @status stable
5
5
  *
6
6
  * @tagname kemet-tooltip
7
- * @summary A tooltip is a Popper component that displays an dynamic arrow pointing to the trigger.
7
+ * @summary A tooltip is a Popper component that displays a dynamic arrow pointing to the trigger.
8
8
  *
9
9
  * @slot trigger - Controls opening and closing the tooltip.
10
10
  * @slot content - The contents of the tooltip.
@@ -17,7 +17,7 @@ import KemetPopper from '../kemet-popper/kemet-popper';
17
17
  * @cssproperty --kemet-tooltip-border-size - The border size of the arrow
18
18
  * @cssproperty --kemet-tooltip-rounded-tip - How much rounding the tip of the arrow should be. Zero is pointy
19
19
  * @cssproperty --kemet-tooltip-background-color - The background color of the arrow
20
- * @cssproperty --kemet-tooltip-border-color - The border color of the the arrow
20
+ * @cssproperty --kemet-tooltip-border-color - The border color of the arrow
21
21
  * @cssproperty --kemet-tooltip-placement-offset - The offset of the arrow from the trigger
22
22
  *
23
23
  */