kemet-ui 3.0.1 → 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 (251) hide show
  1. package/custom-elements.json +995 -220
  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.js.map +1 -1
  6. package/dist/components/kemet-accordion/kemet-accordion.js.map +1 -1
  7. package/dist/components/kemet-accordion/spec.d.ts +2 -0
  8. package/dist/components/kemet-accordion/spec.js +132 -0
  9. package/dist/components/kemet-accordion/spec.js.map +1 -0
  10. package/dist/components/kemet-alert/docs/stories.d.ts +1 -1
  11. package/dist/components/kemet-alert/docs/stories.js +20 -19
  12. package/dist/components/kemet-alert/docs/stories.js.map +1 -1
  13. package/dist/components/kemet-alert/kemet-alert.js.map +1 -1
  14. package/dist/components/kemet-alert/spec.d.ts +1 -0
  15. package/dist/components/kemet-alert/spec.js +35 -0
  16. package/dist/components/kemet-alert/spec.js.map +1 -0
  17. package/dist/components/kemet-alert/types.d.ts +1 -1
  18. package/dist/components/kemet-avatar/docs/stories.d.ts +1 -1
  19. package/dist/components/kemet-avatar/docs/stories.js.map +1 -1
  20. package/dist/components/kemet-avatar/kemet-avatar.js.map +1 -1
  21. package/dist/components/kemet-avatar/kemet-avatars.js.map +1 -1
  22. package/dist/components/kemet-avatar/spec.d.ts +1 -0
  23. package/dist/components/kemet-avatar/spec.js +26 -0
  24. package/dist/components/kemet-avatar/spec.js.map +1 -0
  25. package/dist/components/kemet-badge/docs/stories.d.ts +1 -1
  26. package/dist/components/kemet-badge/kemet-badge.js.map +1 -1
  27. package/dist/components/kemet-badge/spec.d.ts +1 -0
  28. package/dist/components/kemet-badge/spec.js +21 -0
  29. package/dist/components/kemet-badge/spec.js.map +1 -0
  30. package/dist/components/kemet-badge/types.d.ts +1 -1
  31. package/dist/components/kemet-button/docs/stories.d.ts +1 -1
  32. package/dist/components/kemet-button/kemet-button.js +9 -7
  33. package/dist/components/kemet-button/kemet-button.js.map +1 -1
  34. package/dist/components/kemet-button/spec.d.ts +1 -0
  35. package/dist/components/kemet-button/spec.js +49 -0
  36. package/dist/components/kemet-button/spec.js.map +1 -0
  37. package/dist/components/kemet-button/types.d.ts +1 -1
  38. package/dist/components/kemet-card/docs/stories.d.ts +1 -1
  39. package/dist/components/kemet-card/docs/stories.js.map +1 -1
  40. package/dist/components/kemet-card/kemet-card.js.map +1 -1
  41. package/dist/components/kemet-card/spec.d.ts +1 -0
  42. package/dist/components/kemet-card/spec.js +31 -0
  43. package/dist/components/kemet-card/spec.js.map +1 -0
  44. package/dist/components/kemet-carousel/docs/stories.d.ts +1 -1
  45. package/dist/components/kemet-carousel/docs/stories.js.map +1 -1
  46. package/dist/components/kemet-carousel/kemet-carousel-current.js.map +1 -1
  47. package/dist/components/kemet-carousel/kemet-carousel-first.d.ts +1 -0
  48. package/dist/components/kemet-carousel/kemet-carousel-first.js +11 -4
  49. package/dist/components/kemet-carousel/kemet-carousel-first.js.map +1 -1
  50. package/dist/components/kemet-carousel/kemet-carousel-last.d.ts +1 -0
  51. package/dist/components/kemet-carousel/kemet-carousel-last.js +11 -4
  52. package/dist/components/kemet-carousel/kemet-carousel-last.js.map +1 -1
  53. package/dist/components/kemet-carousel/kemet-carousel-link.d.ts +1 -0
  54. package/dist/components/kemet-carousel/kemet-carousel-link.js +14 -4
  55. package/dist/components/kemet-carousel/kemet-carousel-link.js.map +1 -1
  56. package/dist/components/kemet-carousel/kemet-carousel-next.d.ts +1 -0
  57. package/dist/components/kemet-carousel/kemet-carousel-next.js +11 -4
  58. package/dist/components/kemet-carousel/kemet-carousel-next.js.map +1 -1
  59. package/dist/components/kemet-carousel/kemet-carousel-prev.d.ts +1 -0
  60. package/dist/components/kemet-carousel/kemet-carousel-prev.js +11 -4
  61. package/dist/components/kemet-carousel/kemet-carousel-prev.js.map +1 -1
  62. package/dist/components/kemet-carousel/kemet-carousel-slide.js +5 -5
  63. package/dist/components/kemet-carousel/kemet-carousel-slide.js.map +1 -1
  64. package/dist/components/kemet-carousel/kemet-carousel-total.js.map +1 -1
  65. package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
  66. package/dist/components/kemet-carousel/spec.d.ts +10 -0
  67. package/dist/components/kemet-carousel/spec.js +168 -0
  68. package/dist/components/kemet-carousel/spec.js.map +1 -0
  69. package/dist/components/kemet-checkbox/docs/stories.d.ts +1 -1
  70. package/dist/components/kemet-checkbox/kemet-checkbox.js.map +1 -1
  71. package/dist/components/kemet-checkbox/spec.d.ts +1 -0
  72. package/dist/components/kemet-checkbox/spec.js +33 -0
  73. package/dist/components/kemet-checkbox/spec.js.map +1 -0
  74. package/dist/components/kemet-checkbox/types.d.ts +1 -1
  75. package/dist/components/kemet-combo/docs/stories.d.ts +1 -1
  76. package/dist/components/kemet-combo/kemet-combo.d.ts +1 -0
  77. package/dist/components/kemet-combo/kemet-combo.js +5 -0
  78. package/dist/components/kemet-combo/kemet-combo.js.map +1 -1
  79. package/dist/components/kemet-combo/spec.d.ts +3 -0
  80. package/dist/components/kemet-combo/spec.js +46 -0
  81. package/dist/components/kemet-combo/spec.js.map +1 -0
  82. package/dist/components/kemet-count/docs/stories.d.ts +1 -1
  83. package/dist/components/kemet-count/kemet-count.js.map +1 -1
  84. package/dist/components/kemet-count/spec.d.ts +4 -0
  85. package/dist/components/kemet-count/spec.js +45 -0
  86. package/dist/components/kemet-count/spec.js.map +1 -0
  87. package/dist/components/kemet-draggable/docs/stories.d.ts +1 -1
  88. package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
  89. package/dist/components/kemet-draggable/spec.d.ts +1 -0
  90. package/dist/components/kemet-draggable/spec.js +30 -0
  91. package/dist/components/kemet-draggable/spec.js.map +1 -0
  92. package/dist/components/kemet-drawer/docs/stories.d.ts +1 -1
  93. package/dist/components/kemet-drawer/kemet-drawer.js.map +1 -1
  94. package/dist/components/kemet-drawer/spec.d.ts +1 -0
  95. package/dist/components/kemet-drawer/spec.js +21 -0
  96. package/dist/components/kemet-drawer/spec.js.map +1 -0
  97. package/dist/components/kemet-drawer/types.d.ts +2 -2
  98. package/dist/components/kemet-fab/docs/stories.d.ts +1 -1
  99. package/dist/components/kemet-fab/kemet-fab.js +3 -9
  100. package/dist/components/kemet-fab/kemet-fab.js.map +1 -1
  101. package/dist/components/kemet-fab/spec.d.ts +2 -0
  102. package/dist/components/kemet-fab/spec.js +43 -0
  103. package/dist/components/kemet-fab/spec.js.map +1 -0
  104. package/dist/components/kemet-field/docs/stories.d.ts +1 -1
  105. package/dist/components/kemet-field/kemet-field.js.map +1 -1
  106. package/dist/components/kemet-field/spec.d.ts +2 -0
  107. package/dist/components/kemet-field/spec.js +38 -0
  108. package/dist/components/kemet-field/spec.js.map +1 -0
  109. package/dist/components/kemet-field/types.d.ts +1 -1
  110. package/dist/components/kemet-flipcard/docs/stories.d.ts +1 -1
  111. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js.map +1 -1
  112. package/dist/components/kemet-flipcard/kemet-flipcard.js.map +1 -1
  113. package/dist/components/kemet-flipcard/spec.d.ts +3 -0
  114. package/dist/components/kemet-flipcard/spec.js +38 -0
  115. package/dist/components/kemet-flipcard/spec.js.map +1 -0
  116. package/dist/components/kemet-icon/docs/stories.d.ts +1 -1
  117. package/dist/components/kemet-icon/kemet-icon.js +1 -1
  118. package/dist/components/kemet-icon/kemet-icon.js.map +1 -1
  119. package/dist/components/kemet-icon/spec.d.ts +1 -0
  120. package/dist/components/kemet-icon/spec.js +69 -0
  121. package/dist/components/kemet-icon/spec.js.map +1 -0
  122. package/dist/components/kemet-input/docs/stories.d.ts +1 -1
  123. package/dist/components/kemet-input/kemet-input.js +1 -1
  124. package/dist/components/kemet-input/kemet-input.js.map +1 -1
  125. package/dist/components/kemet-input/spec.d.ts +1 -0
  126. package/dist/components/kemet-input/spec.js +83 -0
  127. package/dist/components/kemet-input/spec.js.map +1 -0
  128. package/dist/components/kemet-input/types.d.ts +3 -3
  129. package/dist/components/kemet-modal/docs/stories.d.ts +1 -1
  130. package/dist/components/kemet-modal/docs/stories.js.map +1 -1
  131. package/dist/components/kemet-modal/kemet-modal-close.js.map +1 -1
  132. package/dist/components/kemet-modal/kemet-modal.js.map +1 -1
  133. package/dist/components/kemet-modal/types.d.ts +1 -1
  134. package/dist/components/kemet-multi-input/docs/stories.d.ts +8 -0
  135. package/dist/components/kemet-multi-input/docs/stories.js +33 -0
  136. package/dist/components/kemet-multi-input/docs/stories.js.map +1 -0
  137. package/dist/components/kemet-multi-input/kemet-multi-input.d.ts +116 -0
  138. package/dist/components/kemet-multi-input/kemet-multi-input.js +193 -0
  139. package/dist/components/kemet-multi-input/kemet-multi-input.js.map +1 -0
  140. package/dist/components/kemet-multi-input/styles.d.ts +1 -0
  141. package/dist/components/kemet-multi-input/styles.js +87 -0
  142. package/dist/components/kemet-multi-input/styles.js.map +1 -0
  143. package/dist/components/kemet-multi-input/types.d.ts +5 -0
  144. package/dist/components/kemet-multi-input/types.js +2 -0
  145. package/dist/components/kemet-multi-input/types.js.map +1 -0
  146. package/dist/components/kemet-password/docs/stories.d.ts +1 -1
  147. package/dist/components/kemet-password/kemet-password.js.map +1 -1
  148. package/dist/components/kemet-password/types.d.ts +1 -1
  149. package/dist/components/kemet-popper/docs/stories.d.ts +1 -1
  150. package/dist/components/kemet-popper/kemet-popper-close.js.map +1 -1
  151. package/dist/components/kemet-popper/kemet-popper.js.map +1 -1
  152. package/dist/components/kemet-popper/types.d.ts +3 -3
  153. package/dist/components/kemet-radio/docs/stories.d.ts +1 -1
  154. package/dist/components/kemet-radio/kemet-radio.js.map +1 -1
  155. package/dist/components/kemet-radio/kemet-radios.js.map +1 -1
  156. package/dist/components/kemet-radio/spec.d.ts +3 -0
  157. package/dist/components/kemet-radio/spec.js +67 -0
  158. package/dist/components/kemet-radio/spec.js.map +1 -0
  159. package/dist/components/kemet-radio/types.d.ts +2 -2
  160. package/dist/components/kemet-rotator/docs/stories.d.ts +1 -1
  161. package/dist/components/kemet-rotator/kemet-rotator.js.map +1 -1
  162. package/dist/components/kemet-rotator/types.d.ts +1 -1
  163. package/dist/components/kemet-scroll-link/docs/stories.d.ts +1 -1
  164. package/dist/components/kemet-scroll-link/kemet-scroll-link.js.map +1 -1
  165. package/dist/components/kemet-scroll-nav/docs/stories.d.ts +1 -1
  166. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js.map +1 -1
  167. package/dist/components/kemet-scroll-nav/types.d.ts +1 -1
  168. package/dist/components/kemet-scroll-snap/docs/stories.d.ts +1 -1
  169. package/dist/components/kemet-scroll-snap/docs/stories.js.map +1 -1
  170. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js.map +1 -1
  171. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js.map +1 -1
  172. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js.map +1 -1
  173. package/dist/components/kemet-scroll-snap/types.d.ts +2 -2
  174. package/dist/components/kemet-select/docs/stories.d.ts +1 -1
  175. package/dist/components/kemet-select/kemet-option.js.map +1 -1
  176. package/dist/components/kemet-select/kemet-select.js.map +1 -1
  177. package/dist/components/kemet-select/spec.d.ts +3 -0
  178. package/dist/components/kemet-select/spec.js +53 -0
  179. package/dist/components/kemet-select/spec.js.map +1 -0
  180. package/dist/components/kemet-sortable/docs/stories.d.ts +1 -1
  181. package/dist/components/kemet-sortable/docs/stories.js.map +1 -1
  182. package/dist/components/kemet-sortable/kemet-sortable-item.js.map +1 -1
  183. package/dist/components/kemet-sortable/kemet-sortable.js.map +1 -1
  184. package/dist/components/kemet-svgs/docs/stories.d.ts +1 -1
  185. package/dist/components/kemet-svgs/docs/stories.js.map +1 -1
  186. package/dist/components/kemet-svgs/kemet-svg.js.map +1 -1
  187. package/dist/components/kemet-svgs/kemet-svgs.js.map +1 -1
  188. package/dist/components/kemet-tabs/docs/stories.d.ts +1 -1
  189. package/dist/components/kemet-tabs/docs/stories.js.map +1 -1
  190. package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
  191. package/dist/components/kemet-tabs/kemet-tab.js.map +1 -1
  192. package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
  193. package/dist/components/kemet-tabs/types.d.ts +3 -3
  194. package/dist/components/kemet-textarea/docs/stories.d.ts +1 -1
  195. package/dist/components/kemet-textarea/kemet-textarea.js.map +1 -1
  196. package/dist/components/kemet-textarea/spec.d.ts +3 -0
  197. package/dist/components/kemet-textarea/spec.js +69 -0
  198. package/dist/components/kemet-textarea/spec.js.map +1 -0
  199. package/dist/components/kemet-textarea/types.d.ts +1 -1
  200. package/dist/components/kemet-timer/docs/stories.d.ts +10 -0
  201. package/dist/components/kemet-timer/docs/stories.js +40 -0
  202. package/dist/components/kemet-timer/docs/stories.js.map +1 -0
  203. package/dist/components/kemet-timer/kemet-timer-display.d.ts +25 -0
  204. package/dist/components/kemet-timer/kemet-timer-display.js +65 -0
  205. package/dist/components/kemet-timer/kemet-timer-display.js.map +1 -0
  206. package/dist/components/kemet-timer/kemet-timer.d.ts +36 -0
  207. package/dist/components/kemet-timer/kemet-timer.js +103 -0
  208. package/dist/components/kemet-timer/kemet-timer.js.map +1 -0
  209. package/dist/components/kemet-timer/styles.d.ts +2 -0
  210. package/dist/components/kemet-timer/styles.js +12 -0
  211. package/dist/components/kemet-timer/styles.js.map +1 -0
  212. package/dist/components/kemet-timer/types.d.ts +1 -0
  213. package/dist/components/kemet-timer/types.js +2 -0
  214. package/dist/components/kemet-timer/types.js.map +1 -0
  215. package/dist/components/kemet-toggle/docs/stories.d.ts +1 -1
  216. package/dist/components/kemet-toggle/kemet-toggle.js.map +1 -1
  217. package/dist/components/kemet-toggle/spec.d.ts +1 -0
  218. package/dist/components/kemet-toggle/spec.js +46 -0
  219. package/dist/components/kemet-toggle/spec.js.map +1 -0
  220. package/dist/components/kemet-tooltip/docs/stories.d.ts +1 -1
  221. package/dist/components/kemet-tooltip/kemet-tooltip.js.map +1 -1
  222. package/dist/components/kemet-tooltip/types.d.ts +3 -3
  223. package/dist/components/kemet-tracker/docs/stories.d.ts +1 -1
  224. package/dist/components/kemet-tracker/docs/stories.js.map +1 -1
  225. package/dist/components/kemet-tracker/kemet-tracker-step.js.map +1 -1
  226. package/dist/components/kemet-tracker/kemet-tracker.js.map +1 -1
  227. package/dist/components/kemet-upload/docs/stories.d.ts +1 -1
  228. package/dist/components/kemet-upload/kemet-upload-file.js.map +1 -1
  229. package/dist/components/kemet-upload/kemet-upload.js.map +1 -1
  230. package/dist/kemet-components.bundle.js +16 -32
  231. package/dist/kemet-components.bundle.js.map +1 -1
  232. package/dist/kemet-components.cjs +3721 -3263
  233. package/dist/kemet-components.js +3721 -3263
  234. package/dist/styles/kemet.base.css +24 -2
  235. package/dist/styles/kemet.base.css.map +1 -1
  236. package/dist/styles/kemet.core.css +266 -2
  237. package/dist/styles/kemet.core.css.map +1 -1
  238. package/dist/styles/shared/_config.scss +25 -1
  239. package/dist/tsconfig.tsbuildinfo +1 -1
  240. package/dist/utilities/controllers/forms.js +16 -18
  241. package/dist/utilities/controllers/forms.js.map +1 -1
  242. package/dist/utilities/controllers/forms.spec.d.ts +2 -0
  243. package/dist/utilities/controllers/forms.spec.js +36 -0
  244. package/dist/utilities/controllers/forms.spec.js.map +1 -0
  245. package/dist/utilities/misc/drag.d.ts +6 -0
  246. package/dist/utilities/misc/drag.js +63 -0
  247. package/dist/utilities/misc/drag.js.map +1 -0
  248. package/package.json +46 -33
  249. package/dist/components/kemet-accordion/stories.d.ts +0 -12
  250. package/dist/components/kemet-accordion/stories.js +0 -47
  251. package/dist/components/kemet-accordion/stories.js.map +0 -1
@@ -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;
@@ -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, 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"]}
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;
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-tooltip.js","sourceRoot":"","sources":["../../../src/components/kemet-tooltip/kemet-tooltip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,WAAW,MAAM,8BAA8B,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,IAAqB,YAAY,GAAjC,MAAqB,YAAa,SAAQ,WAAW;IAGnD,MAAM;QACJ,iEAAiE;QACjE,OAAO,IAAI,CAAA;;;;;iBAKE,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC1E,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;qBAC9E,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iBAClE,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC3D,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnE,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;;;;;;qBAM1D,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC/D,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;;2CAExC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;;;;;KAKzF,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;IACzF,CAAC;CACF,CAAA;AAnCQ,mBAAM,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;AADtM,YAAY;IADhC,aAAa,CAAC,eAAe,CAAC;GACV,YAAY,CAoChC;eApCoB,YAAY","sourcesContent":["import { html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { stylesTooltip } from './styles';\nimport { stylesPopper } from '../kemet-popper/styles';\nimport {\n stylesPopperFade,\n stylesPopperScale,\n stylesPopperSlide,\n stylesPopperFall,\n stylesPopperFlipHorizontal,\n stylesPopperFlipVertical,\n stylesPopperSign,\n stylesPopperSuperScaled,\n} from '../kemet-popper/styles.effects';\nimport KemetPopper from '../kemet-popper/kemet-popper';\n\n/**\n * @since 2.0.0\n * @status stable\n *\n * @tagname kemet-tooltip\n * @summary A tooltip is a Popper component that displays a dynamic arrow pointing to the trigger.\n *\n * @slot trigger - Controls opening and closing the tooltip.\n * @slot content - The contents of the tooltip.\n *\n * @csspart trigger - Contains the trigger for the tooltip.\n * @csspart content - Contains the content for the tooltip.\n *\n * @cssproperty --kemet-tooltip-content-height - The height of the content.\n * @cssproperty --kemet-tooltip-size - The width and height of arrow's container\n * @cssproperty --kemet-tooltip-border-size - The border size of the arrow\n * @cssproperty --kemet-tooltip-rounded-tip - How much rounding the tip of the arrow should be. Zero is pointy\n * @cssproperty --kemet-tooltip-background-color - The background color of the arrow\n * @cssproperty --kemet-tooltip-border-color - The border color of the arrow\n * @cssproperty --kemet-tooltip-placement-offset - The offset of the arrow from the trigger\n *\n */\n\n@customElement('kemet-tooltip')\nexport default class KemetTooltip extends KemetPopper {\n static styles = [stylesTooltip, stylesPopper, stylesPopperFade, stylesPopperScale, stylesPopperSlide, stylesPopperFall, stylesPopperFlipHorizontal, stylesPopperFlipVertical, stylesPopperSign, stylesPopperSuperScaled];\n\n render() {\n // eslint-disable-next-line lit-a11y/mouse-events-have-key-events\n return html`\n <div\n id=\"trigger\"\n part=\"trigger\"\n tabIndex=\"0\"\n @click=${this.fireOn === 'click' ? (event: MouseEvent) => this.toggle(event) : null}\n @keyup=${this.fireOn === 'click' ? (event: KeyboardEvent) => this.handleKeyUp(event) : null}\n @mouseover=${this.fireOn !== 'click' ? () => { this.opened = true; } : null}\n @focus=${this.fireOn !== 'click' ? () => { this.opened = true; } : null}\n @mouseout=${this.fireOn !== 'click' ? () => { this.opened = false; } : null}\n @blur=${this.fireOn !== 'click' ? () => { this.opened = false; } : null}\n >\n <slot name=\"trigger\"></slot>\n </div>\n <div\n id=\"content\"\n @mouseover=${this.fireOn !== 'click' ? () => { this.opened = true; } : null}\n @mouseout=${this.fireOn !== 'click' ? () => { this.opened = false; } : null}\n >\n <slot name=\"content\" @slotchange=${() => { this.makePopper(); this.measureContent(); }}></slot>\n <div id=\"arrow-container\" part=\"arrow-container\" data-popper-arrow>\n <div id=\"arrow\" part=\"arrow\"></div>\n </div>\n </div>\n `;\n }\n\n measureContent() {\n const height = this.contentElement.offsetHeight;\n this.contentElement.style.setProperty('--kemet-tooltip-content-height', `${height}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tooltip': KemetTooltip\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-tooltip.js","sourceRoot":"","sources":["../../../src/components/kemet-tooltip/kemet-tooltip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,WAAW,MAAM,8BAA8B,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGY,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,WAAW;IAGnD,MAAM;QACJ,iEAAiE;QACjE,OAAO,IAAI,CAAA;;;;;iBAKE,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC1E,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;qBAC9E,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iBAClE,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC3D,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnE,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;;;;;;qBAM1D,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC/D,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;;2CAExC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;;;;;KAKzF,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;IACzF,CAAC;;AAlCM,mBAAM,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,AAA3M,CAA4M;AADtM,YAAY;IADhC,aAAa,CAAC,eAAe,CAAC;GACV,YAAY,CAoChC;eApCoB,YAAY","sourcesContent":["import { html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { stylesTooltip } from './styles';\nimport { stylesPopper } from '../kemet-popper/styles';\nimport {\n stylesPopperFade,\n stylesPopperScale,\n stylesPopperSlide,\n stylesPopperFall,\n stylesPopperFlipHorizontal,\n stylesPopperFlipVertical,\n stylesPopperSign,\n stylesPopperSuperScaled,\n} from '../kemet-popper/styles.effects';\nimport KemetPopper from '../kemet-popper/kemet-popper';\n\n/**\n * @since 2.0.0\n * @status stable\n *\n * @tagname kemet-tooltip\n * @summary A tooltip is a Popper component that displays a dynamic arrow pointing to the trigger.\n *\n * @slot trigger - Controls opening and closing the tooltip.\n * @slot content - The contents of the tooltip.\n *\n * @csspart trigger - Contains the trigger for the tooltip.\n * @csspart content - Contains the content for the tooltip.\n *\n * @cssproperty --kemet-tooltip-content-height - The height of the content.\n * @cssproperty --kemet-tooltip-size - The width and height of arrow's container\n * @cssproperty --kemet-tooltip-border-size - The border size of the arrow\n * @cssproperty --kemet-tooltip-rounded-tip - How much rounding the tip of the arrow should be. Zero is pointy\n * @cssproperty --kemet-tooltip-background-color - The background color of the arrow\n * @cssproperty --kemet-tooltip-border-color - The border color of the arrow\n * @cssproperty --kemet-tooltip-placement-offset - The offset of the arrow from the trigger\n *\n */\n\n@customElement('kemet-tooltip')\nexport default class KemetTooltip extends KemetPopper {\n static styles = [stylesTooltip, stylesPopper, stylesPopperFade, stylesPopperScale, stylesPopperSlide, stylesPopperFall, stylesPopperFlipHorizontal, stylesPopperFlipVertical, stylesPopperSign, stylesPopperSuperScaled];\n\n render() {\n // eslint-disable-next-line lit-a11y/mouse-events-have-key-events\n return html`\n <div\n id=\"trigger\"\n part=\"trigger\"\n tabIndex=\"0\"\n @click=${this.fireOn === 'click' ? (event: MouseEvent) => this.toggle(event) : null}\n @keyup=${this.fireOn === 'click' ? (event: KeyboardEvent) => this.handleKeyUp(event) : null}\n @mouseover=${this.fireOn !== 'click' ? () => { this.opened = true; } : null}\n @focus=${this.fireOn !== 'click' ? () => { this.opened = true; } : null}\n @mouseout=${this.fireOn !== 'click' ? () => { this.opened = false; } : null}\n @blur=${this.fireOn !== 'click' ? () => { this.opened = false; } : null}\n >\n <slot name=\"trigger\"></slot>\n </div>\n <div\n id=\"content\"\n @mouseover=${this.fireOn !== 'click' ? () => { this.opened = true; } : null}\n @mouseout=${this.fireOn !== 'click' ? () => { this.opened = false; } : null}\n >\n <slot name=\"content\" @slotchange=${() => { this.makePopper(); this.measureContent(); }}></slot>\n <div id=\"arrow-container\" part=\"arrow-container\" data-popper-arrow>\n <div id=\"arrow\" part=\"arrow\"></div>\n </div>\n </div>\n `;\n }\n\n measureContent() {\n const height = this.contentElement.offsetHeight;\n this.contentElement.style.setProperty('--kemet-tooltip-content-height', `${height}px`);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tooltip': KemetTooltip\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
- export declare type TypePlacement = 'auto' | 'auto-start' | 'auto-end' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | 'left-start' | 'left-end';
2
- export declare type TypeFireOn = 'click' | 'hover';
3
- export declare type TypeEffect = 'none' | 'fade' | 'scale' | 'slide' | 'fall' | 'flip-horizontal' | 'flip-vertical' | 'sign' | 'super-scaled';
1
+ export type TypePlacement = 'auto' | 'auto-start' | 'auto-end' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | 'left-start' | 'left-end';
2
+ export type TypeFireOn = 'click' | 'hover';
3
+ export type TypeEffect = 'none' | 'fade' | 'scale' | 'slide' | 'fall' | 'flip-horizontal' | 'flip-vertical' | 'sign' | 'super-scaled';
@@ -6,6 +6,6 @@ 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 HideDotContent: Story;
@@ -1 +1 @@
1
- {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../../src/components/kemet-tracker/docs/stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,kBAAkB,CAAC;AAC1B,OAAO,uBAAuB,CAAC;AAE/B,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,sBAAsB;IAC7B,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;KACf;IACD,QAAQ,EAAE;QACR,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;SACpC;KACF;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;QAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA,kCAAkC,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,aAAa,CAAC,KAAK,IAAI,CAAC,WAAW,sBAAsB,IAAI,CAAC,cAAc,SAAS,CAAC,uBAAuB,CAAC,CAAC;KAC3N;IAED,OAAO,IAAI,CAAA;gCACmB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QAClD,KAAK;;GAEV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAU;IACnC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE;QACJ,cAAc,EAAE,IAAI;KACrB;CACF,CAAC","sourcesContent":["import { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { Meta, StoryObj } from '@storybook/web-components';\n\nimport '../kemet-tracker';\nimport '../kemet-tracker-step';\n\nimport '../../kemet-tabs/kemet-tabs';\nimport '../../kemet-tabs/kemet-tab';\nimport '../../kemet-tabs/kemet-tab-panel';\n\nconst meta: Meta = {\n title: 'Components / Tracker',\n component: 'kemet-tracker',\n args: {\n numOfSteps: 5,\n currentStep: 3,\n },\n argTypes: {\n currentStep: {\n control: { type: 'number', max: 5 },\n },\n }\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = (args) => {\n const steps = [];\n\n for (let i = 1; i <= args.numOfSteps; i += 1) {\n steps.push(html`<kemet-tracker-step ?completed=${i < args.currentStep || args.currentStep > args.numOfSteps} ?current=${i === args.currentStep} ?hide-dot-content=${args.hideDotContent}>Step ${i}</kemet-tracker-step>`);\n }\n\n return html`\n <kemet-tracker breakpoint=${ifDefined(args.breakpoint)}>\n ${steps}\n </kemet-tracker>\n `;\n};\n\nexport const Standard: Story = {\n render: args => Template(args),\n};\n\nexport const HideDotContent: Story = {\n render: args => Template(args),\n args: {\n hideDotContent: true,\n }\n};\n"]}
1
+ {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../../src/components/kemet-tracker/docs/stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,kBAAkB,CAAC;AAC1B,OAAO,uBAAuB,CAAC;AAE/B,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAE1C,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,sBAAsB;IAC7B,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;KACf;IACD,QAAQ,EAAE;QACR,WAAW,EAAE;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;SACpC;KACF;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA,kCAAkC,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,aAAa,CAAC,KAAK,IAAI,CAAC,WAAW,sBAAsB,IAAI,CAAC,cAAc,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC5N,CAAC;IAED,OAAO,IAAI,CAAA;gCACmB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QAClD,KAAK;;GAEV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAU;IACnC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE;QACJ,cAAc,EAAE,IAAI;KACrB;CACF,CAAC","sourcesContent":["import { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { Meta, StoryObj } from '@storybook/web-components';\n\nimport '../kemet-tracker';\nimport '../kemet-tracker-step';\n\nimport '../../kemet-tabs/kemet-tabs';\nimport '../../kemet-tabs/kemet-tab';\nimport '../../kemet-tabs/kemet-tab-panel';\n\nconst meta: Meta = {\n title: 'Components / Tracker',\n component: 'kemet-tracker',\n args: {\n numOfSteps: 5,\n currentStep: 3,\n },\n argTypes: {\n currentStep: {\n control: { type: 'number', max: 5 },\n },\n }\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = (args) => {\n const steps = [];\n\n for (let i = 1; i <= args.numOfSteps; i += 1) {\n steps.push(html`<kemet-tracker-step ?completed=${i < args.currentStep || args.currentStep > args.numOfSteps} ?current=${i === args.currentStep} ?hide-dot-content=${args.hideDotContent}>Step ${i}</kemet-tracker-step>`);\n }\n\n return html`\n <kemet-tracker breakpoint=${ifDefined(args.breakpoint)}>\n ${steps}\n </kemet-tracker>\n `;\n};\n\nexport const Standard: Story = {\n render: args => Template(args),\n};\n\nexport const HideDotContent: Story = {\n render: args => Template(args),\n args: {\n hideDotContent: true,\n }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-tracker-step.js","sourceRoot":"","sources":["../../../src/components/kemet-tracker/kemet-tracker-step.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { stylesStep } from './styles';\nimport { KemetTrackerInterface } from './types';\n\n/**\n *\n * @since 1.2.0\n * @status stable\n *\n * @tagname kemet-tracker-step\n * @summary A step in the Tracker\n *\n * @prop {number} step - The current step number\n * @prop {boolean} completed - Determines whether a step renders as complete\n * @prop {boolean} current - Determines whether a step renders as the current step\n * @prop {boolean} last - Is automatically added to the last step\n * @prop {boolean} mobile - Determines if a step should render as mobile\n * @prop {boolean} hideDotContent - Hides the label inside of a dot\n * @prop {number} completedSize - The icon size for the completed check mark\n *\n * @cssproperty --kemet-tracker-step-dot-font-size - The font size.\n * @cssproperty --kemet-tracker-step-dot-color - The text color.\n * @cssproperty --kemet-tracker-step-dot-border - Border around a dot.\n * @cssproperty --kemet-tracker-step-dot-size - Width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-size-mobile - Mobile width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-gap - Space between a dot and connector line.\n * @cssproperty --kemet-tracker-step-dot-transition - Transition of a dot.\n * @cssproperty --kemet-tracker-step-dot-fill-color - Fill color of a dot.\n * @cssproperty --kemet-tracker-step-dot-background-color - Color of the background a dot is on.\n * @cssproperty --kemet-tracker-step-current-color - Current dot text color.\n * @cssproperty --kemet-tracker-step-current-fill-color - Current dot fill color.\n * @cssproperty --kemet-tracker-step-completed-color - Text color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-fill-color - Background color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-line-color - Completed connector line color.\n * @cssproperty --kemet-tracker-step-completed-line-weight - Completed line weight.\n * @cssproperty --kemet-tracker-step-standard-line-weight - Standard line weight.\n *\n * @csspart dot - The container for the dot.\n * @csspart line - A connector line from dot to dot.\n * @csspart completed-line - A completed connector line.\n *\n */\n\n@customElement('kemet-tracker-step')\nexport default class KemetTrackerStep extends LitElement {\n static styles = [stylesStep];\n\n @property({ type: Number })\n step: number;\n\n @property({ type: Boolean, reflect: true })\n completed: boolean;\n\n @property({ type: Boolean, reflect: true })\n current: boolean;\n\n @property({ type: Boolean, reflect: true })\n last: boolean;\n\n @property({ type: Boolean, reflect: true })\n mobile: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-dot-content' })\n hideDotContent: boolean;\n\n @property({ type: Number })\n completedSize: number = 16;\n\n @state()\n tracker: KemetTrackerInterface;\n\n firstUpdated() {\n this.tracker = this.closest('kemet-tracker');\n }\n\n render() {\n return html`\n ${this.makeLine()}\n ${this.makeCompletedLine()}\n <div class=\"dot\" part=\"dot\">${this.makeDotContent()}</div>\n ${this.makeSlotContent()}\n `;\n }\n\n makeLine() {\n if (!this.last) {\n return html`<div class=\"line\" part=\"line\"></div>`;\n }\n\n return null;\n }\n\n makeCompletedLine() {\n if (this.completed && !this.last) {\n return html`<div class=\"line completed\" part=\"completed-line\" @animationend=${() => this.handleCompletedLineEnd()}></div>`;\n }\n\n return null;\n }\n\n makeDotContent() {\n if (this.completed && !this.mobile && !this.hideDotContent) {\n return html`\n <kemet-icon icon=\"check2\" size=${this.completedSize}></kemet-icon>\n `;\n }\n\n if (!this.mobile && !this.hideDotContent) {\n return html`\n <span>${this.step}/${this.tracker?.total}</span>\n `;\n }\n\n return null;\n }\n\n makeSlotContent() {\n if (!this.mobile) {\n return html`<slot></slot>`;\n }\n\n return null;\n }\n\n handleCompletedLineEnd() {\n const currentDot = this.tracker.querySelector('[current]').shadowRoot.querySelector('.dot');\n\n if (currentDot) {\n currentDot.classList.add('animate');\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker-step': KemetTrackerStep\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-tracker-step.js","sourceRoot":"","sources":["../../../src/components/kemet-tracker/kemet-tracker-step.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,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGY,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAsBb,kBAAa,GAAW,EAAE,CAAC;IAiE7B,CAAC;IA5DC,YAAY;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,iBAAiB,EAAE;oCACI,IAAI,CAAC,cAAc,EAAE;QACjD,IAAI,CAAC,eAAe,EAAE;KACzB,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,IAAI,CAAA,sCAAsC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO,IAAI,CAAA,mEAAmE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC;QAC7H,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;;QACZ,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAA;yCACwB,IAAI,CAAC,aAAa;OACpD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,OAAO,IAAI,CAAA;gBACD,IAAI,CAAC,IAAI,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK;OACzC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,CAAA,eAAe,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE5F,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;;AArFM,uBAAM,GAAG,CAAC,UAAU,CAAC,AAAf,CAAgB;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACd;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mDACxB;AAGnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iDAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CAC7B;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;wDAClD;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDACA;AAG3B;IADC,KAAK,EAAE;iDACuB;AAzBZ,gBAAgB;IADpC,aAAa,CAAC,oBAAoB,CAAC;GACf,gBAAgB,CAuFpC;eAvFoB,gBAAgB","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { stylesStep } from './styles';\nimport { KemetTrackerInterface } from './types';\n\n/**\n *\n * @since 1.2.0\n * @status stable\n *\n * @tagname kemet-tracker-step\n * @summary A step in the Tracker\n *\n * @prop {number} step - The current step number\n * @prop {boolean} completed - Determines whether a step renders as complete\n * @prop {boolean} current - Determines whether a step renders as the current step\n * @prop {boolean} last - Is automatically added to the last step\n * @prop {boolean} mobile - Determines if a step should render as mobile\n * @prop {boolean} hideDotContent - Hides the label inside of a dot\n * @prop {number} completedSize - The icon size for the completed check mark\n *\n * @cssproperty --kemet-tracker-step-dot-font-size - The font size.\n * @cssproperty --kemet-tracker-step-dot-color - The text color.\n * @cssproperty --kemet-tracker-step-dot-border - Border around a dot.\n * @cssproperty --kemet-tracker-step-dot-size - Width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-size-mobile - Mobile width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-gap - Space between a dot and connector line.\n * @cssproperty --kemet-tracker-step-dot-transition - Transition of a dot.\n * @cssproperty --kemet-tracker-step-dot-fill-color - Fill color of a dot.\n * @cssproperty --kemet-tracker-step-dot-background-color - Color of the background a dot is on.\n * @cssproperty --kemet-tracker-step-current-color - Current dot text color.\n * @cssproperty --kemet-tracker-step-current-fill-color - Current dot fill color.\n * @cssproperty --kemet-tracker-step-completed-color - Text color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-fill-color - Background color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-line-color - Completed connector line color.\n * @cssproperty --kemet-tracker-step-completed-line-weight - Completed line weight.\n * @cssproperty --kemet-tracker-step-standard-line-weight - Standard line weight.\n *\n * @csspart dot - The container for the dot.\n * @csspart line - A connector line from dot to dot.\n * @csspart completed-line - A completed connector line.\n *\n */\n\n@customElement('kemet-tracker-step')\nexport default class KemetTrackerStep extends LitElement {\n static styles = [stylesStep];\n\n @property({ type: Number })\n step: number;\n\n @property({ type: Boolean, reflect: true })\n completed: boolean;\n\n @property({ type: Boolean, reflect: true })\n current: boolean;\n\n @property({ type: Boolean, reflect: true })\n last: boolean;\n\n @property({ type: Boolean, reflect: true })\n mobile: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-dot-content' })\n hideDotContent: boolean;\n\n @property({ type: Number })\n completedSize: number = 16;\n\n @state()\n tracker: KemetTrackerInterface;\n\n firstUpdated() {\n this.tracker = this.closest('kemet-tracker');\n }\n\n render() {\n return html`\n ${this.makeLine()}\n ${this.makeCompletedLine()}\n <div class=\"dot\" part=\"dot\">${this.makeDotContent()}</div>\n ${this.makeSlotContent()}\n `;\n }\n\n makeLine() {\n if (!this.last) {\n return html`<div class=\"line\" part=\"line\"></div>`;\n }\n\n return null;\n }\n\n makeCompletedLine() {\n if (this.completed && !this.last) {\n return html`<div class=\"line completed\" part=\"completed-line\" @animationend=${() => this.handleCompletedLineEnd()}></div>`;\n }\n\n return null;\n }\n\n makeDotContent() {\n if (this.completed && !this.mobile && !this.hideDotContent) {\n return html`\n <kemet-icon icon=\"check2\" size=${this.completedSize}></kemet-icon>\n `;\n }\n\n if (!this.mobile && !this.hideDotContent) {\n return html`\n <span>${this.step}/${this.tracker?.total}</span>\n `;\n }\n\n return null;\n }\n\n makeSlotContent() {\n if (!this.mobile) {\n return html`<slot></slot>`;\n }\n\n return null;\n }\n\n handleCompletedLineEnd() {\n const currentDot = this.tracker.querySelector('[current]').shadowRoot.querySelector('.dot');\n\n if (currentDot) {\n currentDot.classList.add('animate');\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker-step': KemetTrackerStep\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-tracker.js","sourceRoot":"","sources":["../../../src/components/kemet-tracker/kemet-tracker.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGnE;;;;;;;;GAQG;AAGH,IAAqB,YAAY,GAAjC,MAAqB,YAAa,SAAQ,UAAU;IAqBlD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,YAAY;QACV,WAAW;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAEzD,cAAc;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,SAAS;QACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,qBAAqB,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAC1E,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;gBAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAExE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA5DQ,mBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;KAOF;CACF,CAAC;AAGF;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CACb;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACR;AAGnB;IADC,KAAK,EAAE;2CAC4B;AAnBjB,YAAY;IADhC,aAAa,CAAC,eAAe,CAAC;GACV,YAAY,CA6DhC;eA7DoB,YAAY","sourcesContent":["import { html, css, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport type KemetTrackerStep from './kemet-tracker-step';\n\n/**\n *\n * @since 1.2.0\n * @status stable\n *\n * @prop {number} total - The total number of steps\n * @prop {string} breakpoint - The point at which the tracker goes from mobile to standard\n *\n */\n\n@customElement('kemet-tracker')\nexport default class KemetTracker extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n }\n `,\n ];\n\n @property({ type: Number })\n total: number;\n\n @property({ type: String })\n breakpoint: string;\n\n @state()\n steps: NodeListOf<KemetTrackerStep>;\n\n constructor() {\n super();\n this.breakpoint = '767px';\n }\n\n firstUpdated() {\n // elements\n this.steps = this.querySelectorAll('kemet-tracker-step');\n\n // methods exe\n this.isMobile();\n\n // events\n window.addEventListener('resize', () => {\n this.isMobile();\n });\n }\n\n render() {\n return html`<slot @slotchange=${() => this.handleSlotChange()}></slot>`;\n }\n\n handleSlotChange() {\n this.total = this.steps.length;\n\n this.steps.forEach((step, index) => {\n step.step = index + 1;\n if (step.step === this.total) {\n step.last = true;\n }\n });\n }\n\n isMobile() {\n const mediaQuery = window.matchMedia(`(max-width: ${this.breakpoint})`);\n\n this.steps.forEach((step) => {\n step.mobile = mediaQuery.matches;\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker': KemetTracker\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-tracker.js","sourceRoot":"","sources":["../../../src/components/kemet-tracker/kemet-tracker.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGnE;;;;;;;;GAQG;AAGY,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAqBlD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,YAAY;QACV,WAAW;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAEzD,cAAc;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,SAAS;QACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,qBAAqB,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAC1E,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAExE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;;AA3DM,mBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;KAOF;CACF,AATY,CASX;AAGF;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CACb;AAGd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACR;AAGnB;IADC,KAAK,EAAE;2CAC4B;AAnBjB,YAAY;IADhC,aAAa,CAAC,eAAe,CAAC;GACV,YAAY,CA6DhC;eA7DoB,YAAY","sourcesContent":["import { html, css, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport type KemetTrackerStep from './kemet-tracker-step';\n\n/**\n *\n * @since 1.2.0\n * @status stable\n *\n * @prop {number} total - The total number of steps\n * @prop {string} breakpoint - The point at which the tracker goes from mobile to standard\n *\n */\n\n@customElement('kemet-tracker')\nexport default class KemetTracker extends LitElement {\n static styles = [\n css`\n :host {\n display: flex;\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n }\n `,\n ];\n\n @property({ type: Number })\n total: number;\n\n @property({ type: String })\n breakpoint: string;\n\n @state()\n steps: NodeListOf<KemetTrackerStep>;\n\n constructor() {\n super();\n this.breakpoint = '767px';\n }\n\n firstUpdated() {\n // elements\n this.steps = this.querySelectorAll('kemet-tracker-step');\n\n // methods exe\n this.isMobile();\n\n // events\n window.addEventListener('resize', () => {\n this.isMobile();\n });\n }\n\n render() {\n return html`<slot @slotchange=${() => this.handleSlotChange()}></slot>`;\n }\n\n handleSlotChange() {\n this.total = this.steps.length;\n\n this.steps.forEach((step, index) => {\n step.step = index + 1;\n if (step.step === this.total) {\n step.last = true;\n }\n });\n }\n\n isMobile() {\n const mediaQuery = window.matchMedia(`(max-width: ${this.breakpoint})`);\n\n this.steps.forEach((step) => {\n step.mobile = mediaQuery.matches;\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker': KemetTracker\n }\n}\n"]}
@@ -6,5 +6,5 @@ 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;