kemet-ui 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/custom-elements.json +1588 -871
  2. package/dist/components/kemet-accordion/docs/stories.d.ts +12 -0
  3. package/dist/components/kemet-accordion/docs/stories.js +99 -0
  4. package/dist/components/kemet-accordion/docs/stories.js.map +1 -0
  5. package/dist/components/kemet-accordion/kemet-accordion-panel.d.ts +2 -2
  6. package/dist/components/kemet-accordion/kemet-accordion-panel.js +1 -1
  7. package/dist/components/kemet-accordion/kemet-accordion-panel.js.map +1 -1
  8. package/dist/components/kemet-accordion/kemet-accordion.d.ts +3 -3
  9. package/dist/components/kemet-accordion/kemet-accordion.js +2 -1
  10. package/dist/components/kemet-accordion/kemet-accordion.js.map +1 -1
  11. package/dist/components/kemet-accordion/spec.d.ts +2 -0
  12. package/dist/components/kemet-accordion/spec.js +132 -0
  13. package/dist/components/kemet-accordion/spec.js.map +1 -0
  14. package/dist/components/kemet-alert/docs/stories.d.ts +1 -1
  15. package/dist/components/kemet-alert/docs/stories.js +20 -19
  16. package/dist/components/kemet-alert/docs/stories.js.map +1 -1
  17. package/dist/components/kemet-alert/kemet-alert.d.ts +2 -2
  18. package/dist/components/kemet-alert/kemet-alert.js.map +1 -1
  19. package/dist/components/kemet-alert/spec.d.ts +1 -0
  20. package/dist/components/kemet-alert/spec.js +35 -0
  21. package/dist/components/kemet-alert/spec.js.map +1 -0
  22. package/dist/components/kemet-alert/types.d.ts +1 -1
  23. package/dist/components/kemet-avatar/docs/stories.d.ts +1 -1
  24. package/dist/components/kemet-avatar/docs/stories.js.map +1 -1
  25. package/dist/components/kemet-avatar/kemet-avatar.js.map +1 -1
  26. package/dist/components/kemet-avatar/kemet-avatars.js.map +1 -1
  27. package/dist/components/kemet-avatar/spec.d.ts +1 -0
  28. package/dist/components/kemet-avatar/spec.js +26 -0
  29. package/dist/components/kemet-avatar/spec.js.map +1 -0
  30. package/dist/components/kemet-badge/docs/stories.d.ts +1 -1
  31. package/dist/components/kemet-badge/kemet-badge.js.map +1 -1
  32. package/dist/components/kemet-badge/spec.d.ts +1 -0
  33. package/dist/components/kemet-badge/spec.js +21 -0
  34. package/dist/components/kemet-badge/spec.js.map +1 -0
  35. package/dist/components/kemet-badge/types.d.ts +1 -1
  36. package/dist/components/kemet-button/docs/stories.d.ts +1 -1
  37. package/dist/components/kemet-button/kemet-button.d.ts +2 -2
  38. package/dist/components/kemet-button/kemet-button.js +10 -8
  39. package/dist/components/kemet-button/kemet-button.js.map +1 -1
  40. package/dist/components/kemet-button/spec.d.ts +1 -0
  41. package/dist/components/kemet-button/spec.js +49 -0
  42. package/dist/components/kemet-button/spec.js.map +1 -0
  43. package/dist/components/kemet-button/types.d.ts +1 -1
  44. package/dist/components/kemet-card/docs/stories.d.ts +1 -1
  45. package/dist/components/kemet-card/docs/stories.js.map +1 -1
  46. package/dist/components/kemet-card/kemet-card.d.ts +1 -1
  47. package/dist/components/kemet-card/kemet-card.js +1 -1
  48. package/dist/components/kemet-card/kemet-card.js.map +1 -1
  49. package/dist/components/kemet-card/spec.d.ts +1 -0
  50. package/dist/components/kemet-card/spec.js +31 -0
  51. package/dist/components/kemet-card/spec.js.map +1 -0
  52. package/dist/components/kemet-carousel/docs/stories.d.ts +1 -1
  53. package/dist/components/kemet-carousel/docs/stories.js.map +1 -1
  54. package/dist/components/kemet-carousel/kemet-carousel-current.d.ts +1 -1
  55. package/dist/components/kemet-carousel/kemet-carousel-current.js.map +1 -1
  56. package/dist/components/kemet-carousel/kemet-carousel-first.d.ts +1 -0
  57. package/dist/components/kemet-carousel/kemet-carousel-first.js +11 -4
  58. package/dist/components/kemet-carousel/kemet-carousel-first.js.map +1 -1
  59. package/dist/components/kemet-carousel/kemet-carousel-last.d.ts +2 -1
  60. package/dist/components/kemet-carousel/kemet-carousel-last.js +12 -5
  61. package/dist/components/kemet-carousel/kemet-carousel-last.js.map +1 -1
  62. package/dist/components/kemet-carousel/kemet-carousel-link.d.ts +1 -0
  63. package/dist/components/kemet-carousel/kemet-carousel-link.js +14 -4
  64. package/dist/components/kemet-carousel/kemet-carousel-link.js.map +1 -1
  65. package/dist/components/kemet-carousel/kemet-carousel-next.d.ts +1 -0
  66. package/dist/components/kemet-carousel/kemet-carousel-next.js +11 -4
  67. package/dist/components/kemet-carousel/kemet-carousel-next.js.map +1 -1
  68. package/dist/components/kemet-carousel/kemet-carousel-prev.d.ts +1 -0
  69. package/dist/components/kemet-carousel/kemet-carousel-prev.js +11 -4
  70. package/dist/components/kemet-carousel/kemet-carousel-prev.js.map +1 -1
  71. package/dist/components/kemet-carousel/kemet-carousel-slide.js +5 -5
  72. package/dist/components/kemet-carousel/kemet-carousel-slide.js.map +1 -1
  73. package/dist/components/kemet-carousel/kemet-carousel-total.js.map +1 -1
  74. package/dist/components/kemet-carousel/kemet-carousel.d.ts +18 -14
  75. package/dist/components/kemet-carousel/kemet-carousel.js +32 -13
  76. package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
  77. package/dist/components/kemet-carousel/spec.d.ts +10 -0
  78. package/dist/components/kemet-carousel/spec.js +168 -0
  79. package/dist/components/kemet-carousel/spec.js.map +1 -0
  80. package/dist/components/kemet-checkbox/docs/stories.d.ts +1 -1
  81. package/dist/components/kemet-checkbox/kemet-checkbox.d.ts +4 -4
  82. package/dist/components/kemet-checkbox/kemet-checkbox.js +4 -4
  83. package/dist/components/kemet-checkbox/kemet-checkbox.js.map +1 -1
  84. package/dist/components/kemet-checkbox/spec.d.ts +1 -0
  85. package/dist/components/kemet-checkbox/spec.js +33 -0
  86. package/dist/components/kemet-checkbox/spec.js.map +1 -0
  87. package/dist/components/kemet-checkbox/types.d.ts +1 -1
  88. package/dist/components/kemet-combo/docs/stories.d.ts +1 -1
  89. package/dist/components/kemet-combo/kemet-combo.d.ts +9 -8
  90. package/dist/components/kemet-combo/kemet-combo.js +18 -17
  91. package/dist/components/kemet-combo/kemet-combo.js.map +1 -1
  92. package/dist/components/kemet-combo/spec.d.ts +3 -0
  93. package/dist/components/kemet-combo/spec.js +46 -0
  94. package/dist/components/kemet-combo/spec.js.map +1 -0
  95. package/dist/components/kemet-count/docs/stories.d.ts +1 -1
  96. package/dist/components/kemet-count/kemet-count.d.ts +1 -1
  97. package/dist/components/kemet-count/kemet-count.js +1 -1
  98. package/dist/components/kemet-count/kemet-count.js.map +1 -1
  99. package/dist/components/kemet-count/spec.d.ts +4 -0
  100. package/dist/components/kemet-count/spec.js +45 -0
  101. package/dist/components/kemet-count/spec.js.map +1 -0
  102. package/dist/components/kemet-draggable/docs/stories.d.ts +1 -1
  103. package/dist/components/kemet-draggable/kemet-draggable.d.ts +3 -3
  104. package/dist/components/kemet-draggable/kemet-draggable.js +6 -5
  105. package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
  106. package/dist/components/kemet-draggable/spec.d.ts +1 -0
  107. package/dist/components/kemet-draggable/spec.js +30 -0
  108. package/dist/components/kemet-draggable/spec.js.map +1 -0
  109. package/dist/components/kemet-drawer/docs/stories.d.ts +1 -1
  110. package/dist/components/kemet-drawer/kemet-drawer.d.ts +2 -2
  111. package/dist/components/kemet-drawer/kemet-drawer.js +2 -2
  112. package/dist/components/kemet-drawer/kemet-drawer.js.map +1 -1
  113. package/dist/components/kemet-drawer/spec.d.ts +1 -0
  114. package/dist/components/kemet-drawer/spec.js +21 -0
  115. package/dist/components/kemet-drawer/spec.js.map +1 -0
  116. package/dist/components/kemet-drawer/styles.js +1 -0
  117. package/dist/components/kemet-drawer/styles.js.map +1 -1
  118. package/dist/components/kemet-drawer/types.d.ts +2 -2
  119. package/dist/components/kemet-fab/docs/stories.d.ts +1 -1
  120. package/dist/components/kemet-fab/kemet-fab.d.ts +1 -1
  121. package/dist/components/kemet-fab/kemet-fab.js +4 -10
  122. package/dist/components/kemet-fab/kemet-fab.js.map +1 -1
  123. package/dist/components/kemet-fab/spec.d.ts +2 -0
  124. package/dist/components/kemet-fab/spec.js +43 -0
  125. package/dist/components/kemet-fab/spec.js.map +1 -0
  126. package/dist/components/kemet-field/docs/stories.d.ts +1 -1
  127. package/dist/components/kemet-field/kemet-field.d.ts +7 -7
  128. package/dist/components/kemet-field/kemet-field.js +9 -14
  129. package/dist/components/kemet-field/kemet-field.js.map +1 -1
  130. package/dist/components/kemet-field/spec.d.ts +2 -0
  131. package/dist/components/kemet-field/spec.js +38 -0
  132. package/dist/components/kemet-field/spec.js.map +1 -0
  133. package/dist/components/kemet-field/types.d.ts +1 -1
  134. package/dist/components/kemet-flipcard/docs/stories.d.ts +1 -1
  135. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.d.ts +1 -1
  136. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js +2 -3
  137. package/dist/components/kemet-flipcard/kemet-flipcard-trigger.js.map +1 -1
  138. package/dist/components/kemet-flipcard/kemet-flipcard.d.ts +2 -2
  139. package/dist/components/kemet-flipcard/kemet-flipcard.js +3 -5
  140. package/dist/components/kemet-flipcard/kemet-flipcard.js.map +1 -1
  141. package/dist/components/kemet-flipcard/spec.d.ts +3 -0
  142. package/dist/components/kemet-flipcard/spec.js +38 -0
  143. package/dist/components/kemet-flipcard/spec.js.map +1 -0
  144. package/dist/components/kemet-icon/docs/stories.d.ts +1 -1
  145. package/dist/components/kemet-icon/kemet-icon.js +1 -1
  146. package/dist/components/kemet-icon/kemet-icon.js.map +1 -1
  147. package/dist/components/kemet-icon/spec.d.ts +1 -0
  148. package/dist/components/kemet-icon/spec.js +69 -0
  149. package/dist/components/kemet-icon/spec.js.map +1 -0
  150. package/dist/components/kemet-input/docs/stories.d.ts +1 -1
  151. package/dist/components/kemet-input/kemet-input.d.ts +3 -22
  152. package/dist/components/kemet-input/kemet-input.js +3 -23
  153. package/dist/components/kemet-input/kemet-input.js.map +1 -1
  154. package/dist/components/kemet-input/spec.d.ts +1 -0
  155. package/dist/components/kemet-input/spec.js +83 -0
  156. package/dist/components/kemet-input/spec.js.map +1 -0
  157. package/dist/components/kemet-input/types.d.ts +3 -3
  158. package/dist/components/kemet-modal/docs/stories.d.ts +1 -1
  159. package/dist/components/kemet-modal/docs/stories.js.map +1 -1
  160. package/dist/components/kemet-modal/kemet-modal-close.js.map +1 -1
  161. package/dist/components/kemet-modal/kemet-modal.d.ts +4 -4
  162. package/dist/components/kemet-modal/kemet-modal.js +3 -3
  163. package/dist/components/kemet-modal/kemet-modal.js.map +1 -1
  164. package/dist/components/kemet-modal/types.d.ts +1 -1
  165. package/dist/components/kemet-multi-input/docs/stories.d.ts +8 -0
  166. package/dist/components/kemet-multi-input/docs/stories.js +33 -0
  167. package/dist/components/kemet-multi-input/docs/stories.js.map +1 -0
  168. package/dist/components/kemet-multi-input/kemet-multi-input.d.ts +116 -0
  169. package/dist/components/kemet-multi-input/kemet-multi-input.js +193 -0
  170. package/dist/components/kemet-multi-input/kemet-multi-input.js.map +1 -0
  171. package/dist/components/kemet-multi-input/styles.d.ts +1 -0
  172. package/dist/components/kemet-multi-input/styles.js +87 -0
  173. package/dist/components/kemet-multi-input/styles.js.map +1 -0
  174. package/dist/components/kemet-multi-input/types.d.ts +5 -0
  175. package/dist/components/kemet-multi-input/types.js +2 -0
  176. package/dist/components/kemet-multi-input/types.js.map +1 -0
  177. package/dist/components/kemet-password/docs/stories.d.ts +1 -1
  178. package/dist/components/kemet-password/kemet-password.d.ts +14 -8
  179. package/dist/components/kemet-password/kemet-password.js +4 -33
  180. package/dist/components/kemet-password/kemet-password.js.map +1 -1
  181. package/dist/components/kemet-password/types.d.ts +1 -1
  182. package/dist/components/kemet-popper/docs/stories.d.ts +1 -1
  183. package/dist/components/kemet-popper/kemet-popper-close.d.ts +1 -1
  184. package/dist/components/kemet-popper/kemet-popper-close.js +2 -3
  185. package/dist/components/kemet-popper/kemet-popper-close.js.map +1 -1
  186. package/dist/components/kemet-popper/kemet-popper.d.ts +18 -7
  187. package/dist/components/kemet-popper/kemet-popper.js +21 -25
  188. package/dist/components/kemet-popper/kemet-popper.js.map +1 -1
  189. package/dist/components/kemet-popper/types.d.ts +3 -3
  190. package/dist/components/kemet-radio/docs/stories.d.ts +1 -1
  191. package/dist/components/kemet-radio/kemet-radio.js.map +1 -1
  192. package/dist/components/kemet-radio/kemet-radios.d.ts +5 -4
  193. package/dist/components/kemet-radio/kemet-radios.js +10 -4
  194. package/dist/components/kemet-radio/kemet-radios.js.map +1 -1
  195. package/dist/components/kemet-radio/spec.d.ts +3 -0
  196. package/dist/components/kemet-radio/spec.js +67 -0
  197. package/dist/components/kemet-radio/spec.js.map +1 -0
  198. package/dist/components/kemet-radio/types.d.ts +2 -2
  199. package/dist/components/kemet-rotator/docs/stories.d.ts +1 -1
  200. package/dist/components/kemet-rotator/kemet-rotator.d.ts +1 -1
  201. package/dist/components/kemet-rotator/kemet-rotator.js +1 -2
  202. package/dist/components/kemet-rotator/kemet-rotator.js.map +1 -1
  203. package/dist/components/kemet-rotator/types.d.ts +1 -1
  204. package/dist/components/kemet-scroll-link/docs/stories.d.ts +1 -1
  205. package/dist/components/kemet-scroll-link/kemet-scroll-link.d.ts +2 -2
  206. package/dist/components/kemet-scroll-link/kemet-scroll-link.js +11 -10
  207. package/dist/components/kemet-scroll-link/kemet-scroll-link.js.map +1 -1
  208. package/dist/components/kemet-scroll-nav/docs/stories.d.ts +1 -1
  209. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.d.ts +2 -2
  210. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js +2 -7
  211. package/dist/components/kemet-scroll-nav/kemet-scroll-nav.js.map +1 -1
  212. package/dist/components/kemet-scroll-nav/types.d.ts +1 -1
  213. package/dist/components/kemet-scroll-snap/docs/stories.d.ts +1 -1
  214. package/dist/components/kemet-scroll-snap/docs/stories.js.map +1 -1
  215. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.d.ts +5 -4
  216. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js +1 -1
  217. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js.map +1 -1
  218. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.d.ts +1 -1
  219. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js +1 -1
  220. package/dist/components/kemet-scroll-snap/kemet-scroll-snap-slide.js.map +1 -1
  221. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.d.ts +3 -2
  222. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js +2 -7
  223. package/dist/components/kemet-scroll-snap/kemet-scroll-snap.js.map +1 -1
  224. package/dist/components/kemet-scroll-snap/types.d.ts +2 -2
  225. package/dist/components/kemet-select/docs/stories.d.ts +1 -1
  226. package/dist/components/kemet-select/kemet-option.d.ts +1 -1
  227. package/dist/components/kemet-select/kemet-option.js +1 -1
  228. package/dist/components/kemet-select/kemet-option.js.map +1 -1
  229. package/dist/components/kemet-select/kemet-select.d.ts +19 -10
  230. package/dist/components/kemet-select/kemet-select.js +3 -44
  231. package/dist/components/kemet-select/kemet-select.js.map +1 -1
  232. package/dist/components/kemet-select/spec.d.ts +3 -0
  233. package/dist/components/kemet-select/spec.js +53 -0
  234. package/dist/components/kemet-select/spec.js.map +1 -0
  235. package/dist/components/kemet-sortable/docs/stories.d.ts +1 -1
  236. package/dist/components/kemet-sortable/docs/stories.js.map +1 -1
  237. package/dist/components/kemet-sortable/kemet-sortable-item.js.map +1 -1
  238. package/dist/components/kemet-sortable/kemet-sortable.d.ts +5 -5
  239. package/dist/components/kemet-sortable/kemet-sortable.js +5 -5
  240. package/dist/components/kemet-sortable/kemet-sortable.js.map +1 -1
  241. package/dist/components/kemet-svgs/docs/stories.d.ts +1 -1
  242. package/dist/components/kemet-svgs/docs/stories.js.map +1 -1
  243. package/dist/components/kemet-svgs/kemet-svg.js.map +1 -1
  244. package/dist/components/kemet-svgs/kemet-svgs.d.ts +1 -1
  245. package/dist/components/kemet-svgs/kemet-svgs.js +1 -1
  246. package/dist/components/kemet-svgs/kemet-svgs.js.map +1 -1
  247. package/dist/components/kemet-tabs/docs/stories.d.ts +1 -1
  248. package/dist/components/kemet-tabs/docs/stories.js.map +1 -1
  249. package/dist/components/kemet-tabs/kemet-tab-panel.d.ts +1 -0
  250. package/dist/components/kemet-tabs/kemet-tab-panel.js +3 -0
  251. package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
  252. package/dist/components/kemet-tabs/kemet-tab.d.ts +1 -0
  253. package/dist/components/kemet-tabs/kemet-tab.js +4 -1
  254. package/dist/components/kemet-tabs/kemet-tab.js.map +1 -1
  255. package/dist/components/kemet-tabs/kemet-tabs.d.ts +23 -14
  256. package/dist/components/kemet-tabs/kemet-tabs.js +3 -47
  257. package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
  258. package/dist/components/kemet-tabs/types.d.ts +3 -3
  259. package/dist/components/kemet-textarea/docs/stories.d.ts +1 -1
  260. package/dist/components/kemet-textarea/kemet-textarea.js.map +1 -1
  261. package/dist/components/kemet-textarea/spec.d.ts +3 -0
  262. package/dist/components/kemet-textarea/spec.js +69 -0
  263. package/dist/components/kemet-textarea/spec.js.map +1 -0
  264. package/dist/components/kemet-textarea/types.d.ts +1 -1
  265. package/dist/components/kemet-timer/docs/stories.d.ts +10 -0
  266. package/dist/components/kemet-timer/docs/stories.js +40 -0
  267. package/dist/components/kemet-timer/docs/stories.js.map +1 -0
  268. package/dist/components/kemet-timer/kemet-timer-display.d.ts +25 -0
  269. package/dist/components/kemet-timer/kemet-timer-display.js +65 -0
  270. package/dist/components/kemet-timer/kemet-timer-display.js.map +1 -0
  271. package/dist/components/kemet-timer/kemet-timer.d.ts +36 -0
  272. package/dist/components/kemet-timer/kemet-timer.js +103 -0
  273. package/dist/components/kemet-timer/kemet-timer.js.map +1 -0
  274. package/dist/components/kemet-timer/styles.d.ts +2 -0
  275. package/dist/components/kemet-timer/styles.js +12 -0
  276. package/dist/components/kemet-timer/styles.js.map +1 -0
  277. package/dist/components/kemet-timer/types.d.ts +1 -0
  278. package/dist/components/kemet-timer/types.js +2 -0
  279. package/dist/components/kemet-timer/types.js.map +1 -0
  280. package/dist/components/kemet-toggle/docs/stories.d.ts +1 -1
  281. package/dist/components/kemet-toggle/kemet-toggle.d.ts +3 -3
  282. package/dist/components/kemet-toggle/kemet-toggle.js +3 -3
  283. package/dist/components/kemet-toggle/kemet-toggle.js.map +1 -1
  284. package/dist/components/kemet-toggle/spec.d.ts +1 -0
  285. package/dist/components/kemet-toggle/spec.js +46 -0
  286. package/dist/components/kemet-toggle/spec.js.map +1 -0
  287. package/dist/components/kemet-tooltip/docs/stories.d.ts +1 -1
  288. package/dist/components/kemet-tooltip/kemet-tooltip.d.ts +2 -2
  289. package/dist/components/kemet-tooltip/kemet-tooltip.js +13 -12
  290. package/dist/components/kemet-tooltip/kemet-tooltip.js.map +1 -1
  291. package/dist/components/kemet-tooltip/types.d.ts +3 -3
  292. package/dist/components/kemet-tracker/docs/stories.d.ts +1 -1
  293. package/dist/components/kemet-tracker/docs/stories.js.map +1 -1
  294. package/dist/components/kemet-tracker/kemet-tracker-step.d.ts +2 -2
  295. package/dist/components/kemet-tracker/kemet-tracker-step.js +2 -2
  296. package/dist/components/kemet-tracker/kemet-tracker-step.js.map +1 -1
  297. package/dist/components/kemet-tracker/kemet-tracker.d.ts +2 -1
  298. package/dist/components/kemet-tracker/kemet-tracker.js.map +1 -1
  299. package/dist/components/kemet-upload/docs/stories.d.ts +1 -1
  300. package/dist/components/kemet-upload/kemet-upload-file.js +1 -2
  301. package/dist/components/kemet-upload/kemet-upload-file.js.map +1 -1
  302. package/dist/components/kemet-upload/kemet-upload.d.ts +3 -3
  303. package/dist/components/kemet-upload/kemet-upload.js +3 -8
  304. package/dist/components/kemet-upload/kemet-upload.js.map +1 -1
  305. package/dist/kemet-components.bundle.js +82 -86
  306. package/dist/kemet-components.bundle.js.map +1 -1
  307. package/dist/kemet-components.cjs +3320 -2985
  308. package/dist/kemet-components.js +3320 -2985
  309. package/dist/styles/kemet.base.css +24 -2
  310. package/dist/styles/kemet.base.css.map +1 -1
  311. package/dist/styles/kemet.core.css +266 -562
  312. package/dist/styles/kemet.core.css.map +1 -1
  313. package/dist/styles/shared/_config.scss +25 -1
  314. package/dist/tsconfig.tsbuildinfo +1 -1
  315. package/dist/utilities/controllers/forms.js +16 -18
  316. package/dist/utilities/controllers/forms.js.map +1 -1
  317. package/dist/utilities/controllers/forms.spec.d.ts +2 -0
  318. package/dist/utilities/controllers/forms.spec.js +36 -0
  319. package/dist/utilities/controllers/forms.spec.js.map +1 -0
  320. package/dist/utilities/misc/drag.d.ts +6 -0
  321. package/dist/utilities/misc/drag.js +63 -0
  322. package/dist/utilities/misc/drag.js.map +1 -0
  323. package/package.json +50 -35
  324. package/dist/components/kemet-accordion/stories.d.ts +0 -12
  325. package/dist/components/kemet-accordion/stories.js +0 -47
  326. package/dist/components/kemet-accordion/stories.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"kemet-modal.js","sourceRoot":"","sources":["../../../src/components/kemet-modal/kemet-modal.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,IAAqB,UAAU,GAA/B,MAAqB,UAAW,SAAQ,UAAU;IAiChD;QACE,KAAK,EAAE,CAAC;QA9BV,WAAM,GAAY,KAAK,CAAC;QAMxB,iBAAY,GAAY,KAAK,CAAC;QAG9B,eAAU,GAAW,OAAO,CAAC;QAuB3B,WAAW;QACX,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,YAAY;QACV,sBAAsB;QACtB,gBAAgB;QAChB,IAAI,CAAC,iBAAiB,GAAG,oLAAoL,CAAC;QAC9M,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEvE,SAAS;QACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;gBAC7F,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,SAAS;QACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACpD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;qCACsB,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;;;;KAIxD,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,UAAU;;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,SAAS;YAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAClE,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,KAAK;YAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC1D,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,KAAK;QACvB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEhF,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACvB,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,cAAc,EAAE;gBAC/D,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,aAAa,CAAC,KAAK,EAAE,CAAC;aACvB;iBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,aAAa,EAAE;gBACtE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,cAAc,CAAC,KAAK,EAAE,CAAC;aACxB;SACF;IACH,CAAC;CACF,CAAA;AAxHQ,iBAAM,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAG5C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACnB;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACvB;AAGnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;gDAC3B;AAG9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACE;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAC1B;AAIjB;IADC,KAAK,CAAC,QAAQ,CAAC;iDACiB;AAIjC;IADC,KAAK,EAAE;qDACkB;AAI1B;IADC,KAAK,EAAE;qDACe;AA/BJ,UAAU;IAD9B,aAAa,CAAC,aAAa,CAAC;GACR,UAAU,CAyH9B;eAzHoB,UAAU","sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { stylesBase, stylesEffects } from './styles';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { TypeEffect } from './types';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-modal\n * @summary A dialog that has many built in effects and flexible styles.\n *\n * @prop {boolean} opened\n * @prop {string} effect\n * @prop {boolean} closeOnClick\n * @prop {string} breakpoint\n * @prop {boolean} mobile\n *\n * @csspart dialog - The main contents of the modal.\n * @csspart overlay - The surrounding scrim of the modal.\n *\n * @cssproperty --kemet-modal-radius - The mount of rounding for rounded corners\n * @cssproperty --kemet-modal-dialog-min-width - The minimum width of the dialog.\n * @cssproperty --kemet-modal-dialog-max-width - The maximum width of the dialog.\n * @cssproperty --kemet-modal-dialog-background-color - The background color of the dialog.\n * @cssproperty --kemet-modal-dialog-mobile-width - The width of the mobile dialog.\n * @cssproperty --kemet-modal-dialog-mobile-margin - The margins of the mobile dialog.\n * @cssproperty --kemet-modal-dialog-mobile-padding - The padding of the mobile dialog.\n * @cssproperty --kemet-modal-overlay-background-color - The color of the backdrop overlay.\n *\n * @event kemet-modal-opened - Fires when the modal opens\n * @event kemet-modal-closed - Fires when the modal closes\n *\n */\n\n@customElement('kemet-modal')\nexport default class KemetModal extends LitElement {\n static styles = [stylesBase, stylesEffects];\n\n @property({ type: Boolean, reflect: true })\n opened: boolean = false;\n\n @property({ type: String, reflect: true })\n effect: TypeEffect;\n\n @property({ type: Boolean, attribute: 'close-on-click' })\n closeOnClick: boolean = false;\n\n @property({ type: String })\n breakpoint: string = '600px';\n\n @property({ type: Boolean, reflect: true })\n mobile: boolean;\n\n @property({ type: Boolean, reflect: true })\n rounded: boolean;\n\n /** @internal */\n @query('dialog')\n dialogElement: HTMLDialogElement;\n\n /** @internal */\n @state()\n focusableSelector: string;\n\n /** @internal */\n @state()\n focusableElements: any;\n\n constructor() {\n super();\n\n // bindings\n this.addEventListener('kemet-modal-close-pressed', () => { this.handleClose() });\n }\n\n firstUpdated() {\n // standard properties\n /** @internal */\n this.focusableSelector = 'body, a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]';\n this.focusableElements = this.querySelectorAll(this.focusableSelector);\n\n // events\n this.addEventListener('keyup', (event) => {\n if (event.key === 'Escape') {\n this.handleClose();\n }\n });\n\n this.addEventListener('click', (event) => {\n const targetElement = event.target as HTMLElement;\n if (this.opened && this.closeOnClick && targetElement.tagName.toLowerCase() === 'kemet-modal') {\n this.handleClose();\n }\n });\n\n window.addEventListener('resize', () => {\n this.isMobile();\n });\n\n this.focusableElements.forEach((element) => {\n element.addEventListener('keydown', event => this.handleFocusableDown(event));\n });\n }\n\n updated(prevProps) {\n if (!prevProps.get('opened') && this.opened === true) {\n this.handleOpen();\n }\n\n if (prevProps.get('opened') && this.opened === false) {\n this.handleClose();\n }\n\n this.isMobile();\n }\n\n render() {\n return html`\n <dialog part=\"dialog\" @close=${() => this.handleClose()}>\n <slot></slot>\n </dialog>\n <div class=\"overlay\" part=\"overlay\"></div>\n `;\n }\n\n isMobile() {\n const mediaQuery = window.matchMedia(`(max-width: ${this.breakpoint})`);\n this.mobile = mediaQuery.matches;\n }\n\n handleOpen() {\n this.opened = true;\n if (this.dialogElement?.showModal) this.dialogElement.showModal();\n emitEvent(this, 'kemet-modal-opened', this);\n }\n\n handleClose() {\n this.opened = false;\n if (this.dialogElement?.close) this.dialogElement.close();\n emitEvent(this, 'kemet-modal-closed', this);\n }\n\n handleFocusableDown(event) {\n const firstFocusable = this.focusableElements[0];\n const lastFocusable = this.focusableElements[this.focusableElements.length - 1];\n\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n } else if (!event.shiftKey && document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-modal': KemetModal\n }\n}\n"]}
1
+ {"version":3,"file":"kemet-modal.js","sourceRoot":"","sources":["../../../src/components/kemet-modal/kemet-modal.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EACL,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GACtC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGY,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAiChD;QACE,KAAK,EAAE,CAAC;QA9BV,WAAM,GAAY,KAAK,CAAC;QAMxB,iBAAY,GAAY,KAAK,CAAC;QAG9B,eAAU,GAAW,OAAO,CAAC;QAuB3B,WAAW;QACX,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,YAAY;QACV,sBAAsB;QACtB,gBAAgB;QAChB,IAAI,CAAC,iBAAiB,GAAG,oLAAoL,CAAC;QAC9M,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEvE,SAAS;QACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE,CAAC;gBAC9F,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,SAA6B;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACrD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;qCACsB,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;;;;KAIxD,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,UAAU;;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,SAAS;YAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAClE,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,KAAK;YAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC1D,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,KAAoB;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAgB,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAgB,CAAC;QAE/F,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,cAAc,EAAE,CAAC;gBAChE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,aAAa,EAAE,CAAC;gBACvE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,cAAc,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;;AAvHM,iBAAM,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,AAA9B,CAA+B;AAG5C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACnB;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CACvB;AAGnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;gDAC3B;AAG9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACE;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAC1B;AAIjB;IADC,KAAK,CAAC,QAAQ,CAAC;iDACiB;AAIjC;IADC,KAAK,EAAE;qDACkB;AAI1B;IADC,KAAK,EAAE;qDAC+B;AA/BpB,UAAU;IAD9B,aAAa,CAAC,aAAa,CAAC;GACR,UAAU,CAyH9B;eAzHoB,UAAU","sourcesContent":["import { html, LitElement } from 'lit';\nimport {\n customElement, property, query, state,\n} from 'lit/decorators.js';\nimport { stylesBase, stylesEffects } from './styles';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { TypeEffect } from './types';\n\n/**\n * @since 1.0.0\n * @status stable\n *\n * @tagname kemet-modal\n * @summary A dialog that has many built-in effects and flexible styles.\n *\n * @prop {boolean} opened\n * @prop {string} effect\n * @prop {boolean} closeOnClick\n * @prop {string} breakpoint\n * @prop {boolean} mobile\n *\n * @csspart dialog - The main contents of the modal.\n * @csspart overlay - The surrounding scrim of the modal.\n *\n * @cssproperty --kemet-modal-radius - The mount of rounding for rounded corners\n * @cssproperty --kemet-modal-dialog-min-width - The minimum width of the dialog.\n * @cssproperty --kemet-modal-dialog-max-width - The maximum width of the dialog.\n * @cssproperty --kemet-modal-dialog-background-color - The background color of the dialog.\n * @cssproperty --kemet-modal-dialog-mobile-width - The width of the mobile dialog.\n * @cssproperty --kemet-modal-dialog-mobile-margin - The margins of the mobile dialog.\n * @cssproperty --kemet-modal-dialog-mobile-padding - The padding of the mobile dialog.\n * @cssproperty --kemet-modal-overlay-background-color - The color of the backdrop overlay.\n *\n * @event kemet-modal-opened - Fires when the modal opens\n * @event kemet-modal-closed - Fires when the modal closes\n *\n */\n\n@customElement('kemet-modal')\nexport default class KemetModal extends LitElement {\n static styles = [stylesBase, stylesEffects];\n\n @property({ type: Boolean, reflect: true })\n opened: boolean = false;\n\n @property({ type: String, reflect: true })\n effect: TypeEffect;\n\n @property({ type: Boolean, attribute: 'close-on-click' })\n closeOnClick: boolean = false;\n\n @property({ type: String })\n breakpoint: string = '600px';\n\n @property({ type: Boolean, reflect: true })\n mobile: boolean;\n\n @property({ type: Boolean, reflect: true })\n rounded: boolean;\n\n /** @internal */\n @query('dialog')\n dialogElement: HTMLDialogElement;\n\n /** @internal */\n @state()\n focusableSelector: string;\n\n /** @internal */\n @state()\n focusableElements: NodeListOf<Element>;\n\n constructor() {\n super();\n\n // bindings\n this.addEventListener('kemet-modal-close-pressed', () => { this.handleClose(); });\n }\n\n firstUpdated() {\n // standard properties\n /** @internal */\n this.focusableSelector = 'body, a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]';\n this.focusableElements = this.querySelectorAll(this.focusableSelector);\n\n // events\n this.addEventListener('keyup', (event) => {\n if (event.key === 'Escape') {\n this.handleClose();\n }\n });\n\n this.addEventListener('click', (event) => {\n const targetElement = event.target as HTMLElement;\n if (this.opened && this.closeOnClick && targetElement.tagName.toLowerCase() === 'kemet-modal') {\n this.handleClose();\n }\n });\n\n window.addEventListener('resize', () => {\n this.isMobile();\n });\n\n this.focusableElements.forEach((element) => {\n element.addEventListener('keydown', (event: KeyboardEvent) => this.handleFocusableDown(event));\n });\n }\n\n updated(prevProps: Map<string, never>) {\n if (!prevProps.get('opened') && this.opened === true) {\n this.handleOpen();\n }\n\n if (prevProps.get('opened') && this.opened === false) {\n this.handleClose();\n }\n\n this.isMobile();\n }\n\n render() {\n return html`\n <dialog part=\"dialog\" @close=${() => this.handleClose()}>\n <slot></slot>\n </dialog>\n <div class=\"overlay\" part=\"overlay\"></div>\n `;\n }\n\n isMobile() {\n const mediaQuery = window.matchMedia(`(max-width: ${this.breakpoint})`);\n this.mobile = mediaQuery.matches;\n }\n\n handleOpen() {\n this.opened = true;\n if (this.dialogElement?.showModal) this.dialogElement.showModal();\n emitEvent(this, 'kemet-modal-opened', this);\n }\n\n handleClose() {\n this.opened = false;\n if (this.dialogElement?.close) this.dialogElement.close();\n emitEvent(this, 'kemet-modal-closed', this);\n }\n\n handleFocusableDown(event: KeyboardEvent) {\n const firstFocusable = this.focusableElements[0] as HTMLElement;\n const lastFocusable = this.focusableElements[this.focusableElements.length - 1] as HTMLElement;\n\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n } else if (!event.shiftKey && document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-modal': KemetModal\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- export declare type TypeEffect = 'fadein-scaleup' | 'slide-right' | 'slide-bottom' | 'newspaper' | 'fall' | 'side-fall' | 'flip-horizontal' | 'flip-vertical' | 'sign-3d' | 'super-scaled' | 'slit' | 'rotate-bottom' | 'rotate-left';
1
+ export type TypeEffect = 'fadein-scaleup' | 'slide-right' | 'slide-bottom' | 'newspaper' | 'fall' | 'side-fall' | 'flip-horizontal' | 'flip-vertical' | 'sign-3d' | 'super-scaled' | 'slit' | 'rotate-bottom' | 'rotate-left';
2
2
  export interface KemetModalInterface extends HTMLElement {
3
3
  opened?: boolean;
4
4
  effect?: TypeEffect;
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/web-components';
2
+ import '../kemet-multi-input';
3
+ import '../../kemet-field/kemet-field';
4
+ import '../../kemet-combo/kemet-combo';
5
+ declare const meta: Meta;
6
+ export default meta;
7
+ type Story = StoryObj;
8
+ export declare const Standard: Story;
@@ -0,0 +1,33 @@
1
+ import { html } from 'lit';
2
+ import '../kemet-multi-input';
3
+ import '../../kemet-field/kemet-field';
4
+ import '../../kemet-combo/kemet-combo';
5
+ const meta = {
6
+ title: 'Components / Multi Input',
7
+ component: 'kemet-multi-input',
8
+ args: {
9
+ options: [
10
+ 'Art',
11
+ 'Automotive',
12
+ 'Bar',
13
+ 'Beauty',
14
+ 'Contractor',
15
+ 'Finance',
16
+ 'Market',
17
+ 'Medical',
18
+ 'Restaurant',
19
+ 'Technology',
20
+ ],
21
+ },
22
+ };
23
+ export default meta;
24
+ const Template = args => html `
25
+ <kemet-field slug="categories" label="Categories">
26
+ <kemet-multi-input slot="input" name="categories" rounded></kemet-multi-input>
27
+ <kemet-combo slot="component" .options=${args.options}></kemet-combo>
28
+ </kemet-field>
29
+ `;
30
+ export const Standard = {
31
+ render: args => Template(args),
32
+ };
33
+ //# sourceMappingURL=stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../../src/components/kemet-multi-input/docs/stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AAEvC,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,mBAAmB;IAC9B,IAAI,EAAE;QACJ,OAAO,EAAE;YACP,KAAK;YACL,YAAY;YACZ,KAAK;YACL,QAAQ;YACR,YAAY;YACZ,SAAS;YACT,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,YAAY;SACb;KACF;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA;;;6CAGgB,IAAI,CAAC,OAAO;;CAExD,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;CAC/B,CAAC","sourcesContent":["import { html } from 'lit';\nimport type { Meta, StoryObj } from '@storybook/web-components';\n\nimport '../kemet-multi-input';\nimport '../../kemet-field/kemet-field';\nimport '../../kemet-combo/kemet-combo';\n\nconst meta: Meta = {\n title: 'Components / Multi Input',\n component: 'kemet-multi-input',\n args: {\n options: [\n 'Art',\n 'Automotive',\n 'Bar',\n 'Beauty',\n 'Contractor',\n 'Finance',\n 'Market',\n 'Medical',\n 'Restaurant',\n 'Technology',\n ],\n },\n};\nexport default meta;\n\ntype Story = StoryObj;\n\nconst Template = args => html`\n <kemet-field slug=\"categories\" label=\"Categories\">\n <kemet-multi-input slot=\"input\" name=\"categories\" rounded></kemet-multi-input>\n <kemet-combo slot=\"component\" .options=${args.options}></kemet-combo>\n </kemet-field>\n`;\n\nexport const Standard: Story = {\n render: args => Template(args),\n};\n"]}
@@ -0,0 +1,116 @@
1
+ import { LitElement } from 'lit';
2
+ import { IComboSelection } from './types';
3
+ /**
4
+ * @since 3.1.0
5
+ * @status stable
6
+ *
7
+ * @tagname kemet-multi-input
8
+ * @summary An input element that accepts multiple items from a combo.
9
+ *
10
+ * @prop {string} slug - Used for the id of the input. Should match the slug used in a control if applicable.
11
+ * @prop {string} name - The name of the input
12
+ * @prop {string} placeholder - The placeholder attribute
13
+ * @prop {string} minlength - The minlength attribute
14
+ * @prop {string} maxlength - The maxlength attribute
15
+ * @prop {string} min - The min attribute
16
+ * @prop {string} max - The max attribute
17
+ * @prop {string} step - The step attribute
18
+ * @prop {string} autocomplete - The autocomplete attribute
19
+ * @prop {string} pattern - The pattern attribute
20
+ * @prop {string} inputmode - The input mode attribute
21
+ * @prop {boolean} autofocus - The autofocus attribute
22
+ * @prop {boolean} disabled - The disable attribute
23
+ * @prop {boolean} readonly - The readonly attribute
24
+ * @prop {boolean} required - The required attribute
25
+ * @prop {string} type - The type of input
26
+ * @prop {string} value - The input's value
27
+ * @prop {boolean} invalid - States whether the input is invalid
28
+ * @prop {string} status - The status of the input
29
+ * @prop {boolean} validateOnBlur - Activates validation on blur
30
+ * @prop {string} ariaAutoComplete - Aria Autocomplete
31
+ * @prop {string} ariaControls - Aria Controls
32
+ * @prop {string} ariaActiveDescendant - Aria Active Descendant
33
+ * @prop {boolean} rounded - Displays rounded corners
34
+ * @prop {boolean} filled - Displays a filled input box
35
+ * @prop {string} iconRight - Custom Icon to the right of the input
36
+ * @prop {string} iconLeft - Custom Icon to the left of the input
37
+ * @prop {number} iconSize - Size of the icons
38
+ * @prop {object} validity - The HTML5 validity object.
39
+ * @prop {boolean} isPasswordVisible - Manages password visibility
40
+ * @prop {string} inputType - Input Type of keypress handled through handleInput(e)
41
+ * @prop {boolean} focused - Determines if the input is focused
42
+ *
43
+ * @csspart input
44
+ *
45
+ * @cssproperty --kemet-input-height - The height of the input.
46
+ * @cssproperty --kemet-input-padding - The padding on the input.
47
+ * @cssproperty --kemet-input-border - The border of the input.
48
+ * @cssproperty --kemet-input-border-color-error - The border of the error state.
49
+ * @cssproperty --kemet-input-border-color-success - The border of the success state.
50
+ * @cssproperty --kemet-input-border-color-warning - The border of the warning state.
51
+ * @cssproperty --kemet-input-icon-left-padding - The icon-left padding.
52
+ * @cssproperty --kemet-input-icon-right-padding - The icon-right padding.
53
+ * @cssproperty --kemet-input-border-radius-rounded - The border radius on rounded.
54
+ * @cssproperty --kemet-input-border-filled - The border on filled.
55
+ * @cssproperty --kemet-input-color-filled - The color on filled.
56
+ * @cssproperty --kemet-input-background-color-filled - The background-color on filled.
57
+ * @cssproperty --kemet-input-background-color-error - The error state background color.
58
+ * @cssproperty --kemet-input-background-color-success - The success state background color.
59
+ * @cssproperty --kemet-input-background-color-warning - The warning state background color.
60
+ *
61
+ * @event kemet-input-focused - Fires when the input receives and loses focus
62
+ * @event kemet-input-status Fires when there's a change in status. This event includes an object that reports: 1) the status. 2) HTML5 validity object. 3) the component element.
63
+ * Use the validity object to support custom validation messages.
64
+ * @event kemet-input-input - Fires when the input receives input
65
+ *
66
+ */
67
+ export default class KemetMultiInput extends LitElement {
68
+ /** @internal */
69
+ static styles: import("lit").CSSResult[];
70
+ rounded: boolean;
71
+ name: string;
72
+ value: string;
73
+ selections: IComboSelection[];
74
+ paddingLeft: number;
75
+ field: any;
76
+ combo: any;
77
+ chips: any;
78
+ firstUpdated(): void;
79
+ updated(): void;
80
+ render(): import("lit-html").TemplateResult<1>;
81
+ /**
82
+ * Handles when a selection is made from a combo
83
+ * @private
84
+ * @param event
85
+ */
86
+ addComboItem(event: CustomEvent): void;
87
+ /**
88
+ * Handles when the input receives input
89
+ * @private
90
+ */
91
+ handleInput(event: any): void;
92
+ /**
93
+ * Handles when the input is focused
94
+ */
95
+ handleFocus(event: any): void;
96
+ /**
97
+ * Renders the chips from the selections of the combo
98
+ * @private
99
+ */
100
+ makeSelections(): import("lit-html").TemplateResult<1>;
101
+ /**
102
+ * calculates padding to properly place the cursor of the input
103
+ * @private
104
+ */
105
+ calculatePadding(): void;
106
+ /**
107
+ * handle removing a chip from the selections
108
+ * @private
109
+ */
110
+ handleRemoveChip(event: any): void;
111
+ }
112
+ declare global {
113
+ interface HTMLElementTagNameMap {
114
+ 'kemet-multi-input': KemetMultiInput;
115
+ }
116
+ }
@@ -0,0 +1,193 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from 'lit';
3
+ import { customElement, property, query, state, } from 'lit/decorators.js';
4
+ import { live } from 'lit/directives/live.js';
5
+ import { stylesBase } from './styles';
6
+ import { emitEvent } from '../../utilities/misc/events';
7
+ /**
8
+ * @since 3.1.0
9
+ * @status stable
10
+ *
11
+ * @tagname kemet-multi-input
12
+ * @summary An input element that accepts multiple items from a combo.
13
+ *
14
+ * @prop {string} slug - Used for the id of the input. Should match the slug used in a control if applicable.
15
+ * @prop {string} name - The name of the input
16
+ * @prop {string} placeholder - The placeholder attribute
17
+ * @prop {string} minlength - The minlength attribute
18
+ * @prop {string} maxlength - The maxlength attribute
19
+ * @prop {string} min - The min attribute
20
+ * @prop {string} max - The max attribute
21
+ * @prop {string} step - The step attribute
22
+ * @prop {string} autocomplete - The autocomplete attribute
23
+ * @prop {string} pattern - The pattern attribute
24
+ * @prop {string} inputmode - The input mode attribute
25
+ * @prop {boolean} autofocus - The autofocus attribute
26
+ * @prop {boolean} disabled - The disable attribute
27
+ * @prop {boolean} readonly - The readonly attribute
28
+ * @prop {boolean} required - The required attribute
29
+ * @prop {string} type - The type of input
30
+ * @prop {string} value - The input's value
31
+ * @prop {boolean} invalid - States whether the input is invalid
32
+ * @prop {string} status - The status of the input
33
+ * @prop {boolean} validateOnBlur - Activates validation on blur
34
+ * @prop {string} ariaAutoComplete - Aria Autocomplete
35
+ * @prop {string} ariaControls - Aria Controls
36
+ * @prop {string} ariaActiveDescendant - Aria Active Descendant
37
+ * @prop {boolean} rounded - Displays rounded corners
38
+ * @prop {boolean} filled - Displays a filled input box
39
+ * @prop {string} iconRight - Custom Icon to the right of the input
40
+ * @prop {string} iconLeft - Custom Icon to the left of the input
41
+ * @prop {number} iconSize - Size of the icons
42
+ * @prop {object} validity - The HTML5 validity object.
43
+ * @prop {boolean} isPasswordVisible - Manages password visibility
44
+ * @prop {string} inputType - Input Type of keypress handled through handleInput(e)
45
+ * @prop {boolean} focused - Determines if the input is focused
46
+ *
47
+ * @csspart input
48
+ *
49
+ * @cssproperty --kemet-input-height - The height of the input.
50
+ * @cssproperty --kemet-input-padding - The padding on the input.
51
+ * @cssproperty --kemet-input-border - The border of the input.
52
+ * @cssproperty --kemet-input-border-color-error - The border of the error state.
53
+ * @cssproperty --kemet-input-border-color-success - The border of the success state.
54
+ * @cssproperty --kemet-input-border-color-warning - The border of the warning state.
55
+ * @cssproperty --kemet-input-icon-left-padding - The icon-left padding.
56
+ * @cssproperty --kemet-input-icon-right-padding - The icon-right padding.
57
+ * @cssproperty --kemet-input-border-radius-rounded - The border radius on rounded.
58
+ * @cssproperty --kemet-input-border-filled - The border on filled.
59
+ * @cssproperty --kemet-input-color-filled - The color on filled.
60
+ * @cssproperty --kemet-input-background-color-filled - The background-color on filled.
61
+ * @cssproperty --kemet-input-background-color-error - The error state background color.
62
+ * @cssproperty --kemet-input-background-color-success - The success state background color.
63
+ * @cssproperty --kemet-input-background-color-warning - The warning state background color.
64
+ *
65
+ * @event kemet-input-focused - Fires when the input receives and loses focus
66
+ * @event kemet-input-status Fires when there's a change in status. This event includes an object that reports: 1) the status. 2) HTML5 validity object. 3) the component element.
67
+ * Use the validity object to support custom validation messages.
68
+ * @event kemet-input-input - Fires when the input receives input
69
+ *
70
+ */
71
+ let KemetMultiInput = class KemetMultiInput extends LitElement {
72
+ constructor() {
73
+ /** @internal */
74
+ // formSubmitController: FormSubmitController;
75
+ super(...arguments);
76
+ this.rounded = false;
77
+ this.name = 'input';
78
+ this.value = '';
79
+ this.selections = [];
80
+ }
81
+ firstUpdated() {
82
+ // elements
83
+ this.field = this.closest('kemet-field');
84
+ this.combo = this.field.querySelector('kemet-combo');
85
+ if (this.combo) {
86
+ this.combo.addEventListener('kemet-combo-selection', (event) => this.addComboItem(event));
87
+ }
88
+ }
89
+ updated() {
90
+ if (this.chips)
91
+ this.calculatePadding();
92
+ }
93
+ render() {
94
+ return html `
95
+ <div>
96
+ <input
97
+ part="input"
98
+ id="input"
99
+ name=${this.name}
100
+ @input=${this.handleInput}
101
+ @focus=${this.handleFocus}
102
+ .value=${live(this.value)}
103
+ />
104
+ ${this.makeSelections()}
105
+ </div>
106
+ `;
107
+ }
108
+ /**
109
+ * Handles when a selection is made from a combo
110
+ * @private
111
+ * @param event
112
+ */
113
+ addComboItem(event) {
114
+ this.value = '';
115
+ const isPresent = this.selections.find(selection => selection.id === event.detail.id);
116
+ if (!isPresent)
117
+ this.selections = [...this.selections, event.detail];
118
+ }
119
+ /**
120
+ * Handles when the input receives input
121
+ * @private
122
+ */
123
+ handleInput(event) {
124
+ emitEvent(this, 'kemet-input-input', event.target.value);
125
+ }
126
+ /**
127
+ * Handles when the input is focused
128
+ */
129
+ handleFocus(event) {
130
+ emitEvent(this, 'kemet-multi-input-focus', event.target.value);
131
+ }
132
+ /**
133
+ * Renders the chips from the selections of the combo
134
+ * @private
135
+ */
136
+ makeSelections() {
137
+ const selections = this.selections.map(selection => html `
138
+ <li part="chip">
139
+ <span>${selection.text}</span>
140
+ <button @click=${this.handleRemoveChip}>&times;</button>
141
+ </li>
142
+ `);
143
+ if (this.selections) {
144
+ return html `<ul part="chips">${selections}</ul>`;
145
+ }
146
+ return null;
147
+ }
148
+ /**
149
+ * calculates padding to properly place the cursor of the input
150
+ * @private
151
+ */
152
+ calculatePadding() {
153
+ this.paddingLeft = this.chips.offsetWidth + 16;
154
+ }
155
+ /**
156
+ * handle removing a chip from the selections
157
+ * @private
158
+ */
159
+ handleRemoveChip(event) {
160
+ const text = event.target.closest('[part=chip]').querySelector('span').innerText;
161
+ this.selections = this.selections.filter(selection => selection.text !== text);
162
+ }
163
+ };
164
+ KemetMultiInput.styles = [stylesBase];
165
+ __decorate([
166
+ property({ type: Boolean })
167
+ ], KemetMultiInput.prototype, "rounded", void 0);
168
+ __decorate([
169
+ property({ type: String })
170
+ ], KemetMultiInput.prototype, "name", void 0);
171
+ __decorate([
172
+ state()
173
+ ], KemetMultiInput.prototype, "value", void 0);
174
+ __decorate([
175
+ state()
176
+ ], KemetMultiInput.prototype, "selections", void 0);
177
+ __decorate([
178
+ state()
179
+ ], KemetMultiInput.prototype, "paddingLeft", void 0);
180
+ __decorate([
181
+ state()
182
+ ], KemetMultiInput.prototype, "field", void 0);
183
+ __decorate([
184
+ state()
185
+ ], KemetMultiInput.prototype, "combo", void 0);
186
+ __decorate([
187
+ query('[part=chips]')
188
+ ], KemetMultiInput.prototype, "chips", void 0);
189
+ KemetMultiInput = __decorate([
190
+ customElement('kemet-multi-input')
191
+ ], KemetMultiInput);
192
+ export default KemetMultiInput;
193
+ //# sourceMappingURL=kemet-multi-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kemet-multi-input.js","sourceRoot":"","sources":["../../../src/components/kemet-multi-input/kemet-multi-input.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EACN,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GACrC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAGY,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAAxC;QACb,gBAAgB;QAChB,8CAA8C;;QAK9C,YAAO,GAAY,KAAK,CAAC;QAGzB,SAAI,GAAW,OAAO,CAAC;QAGvB,UAAK,GAAW,EAAE,CAAC;QAGnB,eAAU,GAAsB,EAAE,CAAC;IA0GrC,CAAC;IA5FC,YAAY;QACV,WAAW;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,KAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;iBAKE,IAAI,CAAC,IAAI;mBACP,IAAI,CAAC,WAAW;mBAChB,IAAI,CAAC,WAAW;mBAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;WAExB,IAAI,CAAC,cAAc,EAAE;;KAE3B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IAEH,YAAY,CAAC,KAAkB;QAC7B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,KAAK;QACf,SAAS,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAK;QACf,SAAS,CAAC,IAAI,EAAE,yBAAyB,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAA;;gBAE5C,SAAS,CAAC,IAAI;yBACL,IAAI,CAAC,gBAAgB;;KAEzC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAA,oBAAoB,UAAU,OAAO,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAK;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;QACjF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACjF,CAAC;;AArHM,sBAAM,GAAG,CAAC,UAAU,CAAC,AAAf,CAAgB;AAG7B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDACH;AAGzB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CACJ;AAGvB;IADC,KAAK,EAAE;8CACW;AAGnB;IADC,KAAK,EAAE;mDAC2B;AAGnC;IADC,KAAK,EAAE;oDACY;AAGpB;IADC,KAAK,EAAE;8CACF;AAGN;IADC,KAAK,EAAE;8CACF;AAGN;IADC,KAAK,CAAC,cAAc,CAAC;8CAChB;AA5Ba,eAAe;IADnC,aAAa,CAAC,mBAAmB,CAAC;GACd,eAAe,CA0HnC;eA1HoB,eAAe","sourcesContent":["import { html, LitElement } from 'lit';\nimport {\n customElement, property, query, state,\n} from 'lit/decorators.js';\nimport { live } from 'lit/directives/live.js';\nimport { stylesBase } from './styles';\nimport { emitEvent } from '../../utilities/misc/events';\nimport { IComboSelection } from './types';\n\n/**\n * @since 3.1.0\n * @status stable\n *\n * @tagname kemet-multi-input\n * @summary An input element that accepts multiple items from a combo.\n *\n * @prop {string} slug - Used for the id of the input. Should match the slug used in a control if applicable.\n * @prop {string} name - The name of the input\n * @prop {string} placeholder - The placeholder attribute\n * @prop {string} minlength - The minlength attribute\n * @prop {string} maxlength - The maxlength attribute\n * @prop {string} min - The min attribute\n * @prop {string} max - The max attribute\n * @prop {string} step - The step attribute\n * @prop {string} autocomplete - The autocomplete attribute\n * @prop {string} pattern - The pattern attribute\n * @prop {string} inputmode - The input mode attribute\n * @prop {boolean} autofocus - The autofocus attribute\n * @prop {boolean} disabled - The disable attribute\n * @prop {boolean} readonly - The readonly attribute\n * @prop {boolean} required - The required attribute\n * @prop {string} type - The type of input\n * @prop {string} value - The input's value\n * @prop {boolean} invalid - States whether the input is invalid\n * @prop {string} status - The status of the input\n * @prop {boolean} validateOnBlur - Activates validation on blur\n * @prop {string} ariaAutoComplete - Aria Autocomplete\n * @prop {string} ariaControls - Aria Controls\n * @prop {string} ariaActiveDescendant - Aria Active Descendant\n * @prop {boolean} rounded - Displays rounded corners\n * @prop {boolean} filled - Displays a filled input box\n * @prop {string} iconRight - Custom Icon to the right of the input\n * @prop {string} iconLeft - Custom Icon to the left of the input\n * @prop {number} iconSize - Size of the icons\n * @prop {object} validity - The HTML5 validity object.\n * @prop {boolean} isPasswordVisible - Manages password visibility\n * @prop {string} inputType - Input Type of keypress handled through handleInput(e)\n * @prop {boolean} focused - Determines if the input is focused\n *\n * @csspart input\n *\n * @cssproperty --kemet-input-height - The height of the input.\n * @cssproperty --kemet-input-padding - The padding on the input.\n * @cssproperty --kemet-input-border - The border of the input.\n * @cssproperty --kemet-input-border-color-error - The border of the error state.\n * @cssproperty --kemet-input-border-color-success - The border of the success state.\n * @cssproperty --kemet-input-border-color-warning - The border of the warning state.\n * @cssproperty --kemet-input-icon-left-padding - The icon-left padding.\n * @cssproperty --kemet-input-icon-right-padding - The icon-right padding.\n * @cssproperty --kemet-input-border-radius-rounded - The border radius on rounded.\n * @cssproperty --kemet-input-border-filled - The border on filled.\n * @cssproperty --kemet-input-color-filled - The color on filled.\n * @cssproperty --kemet-input-background-color-filled - The background-color on filled.\n * @cssproperty --kemet-input-background-color-error - The error state background color.\n * @cssproperty --kemet-input-background-color-success - The success state background color.\n * @cssproperty --kemet-input-background-color-warning - The warning state background color.\n *\n * @event kemet-input-focused - Fires when the input receives and loses focus\n * @event kemet-input-status Fires when there's a change in status. This event includes an object that reports: 1) the status. 2) HTML5 validity object. 3) the component element.\n * Use the validity object to support custom validation messages.\n * @event kemet-input-input - Fires when the input receives input\n *\n */\n\n@customElement('kemet-multi-input')\nexport default class KemetMultiInput extends LitElement {\n /** @internal */\n // formSubmitController: FormSubmitController;\n\n static styles = [stylesBase];\n\n @property({ type: Boolean })\n rounded: boolean = false;\n\n @property({ type: String })\n name: string = 'input';\n\n @state()\n value: string = '';\n\n @state()\n selections: IComboSelection[] = [];\n\n @state()\n paddingLeft: number;\n\n @state()\n field;\n\n @state()\n combo;\n\n @query('[part=chips]')\n chips;\n\n firstUpdated() {\n // elements\n this.field = this.closest('kemet-field');\n this.combo = this.field.querySelector('kemet-combo');\n\n if (this.combo) {\n this.combo.addEventListener('kemet-combo-selection', (event: CustomEvent) => this.addComboItem(event));\n }\n }\n\n updated() {\n if (this.chips) this.calculatePadding();\n }\n\n render() {\n return html`\n <div>\n <input\n part=\"input\"\n id=\"input\"\n name=${this.name}\n @input=${this.handleInput}\n @focus=${this.handleFocus}\n .value=${live(this.value)}\n />\n ${this.makeSelections()}\n </div>\n `;\n }\n\n /**\n * Handles when a selection is made from a combo\n * @private\n * @param event\n */\n\n addComboItem(event: CustomEvent) {\n this.value = '';\n const isPresent = this.selections.find(selection => selection.id === event.detail.id);\n if (!isPresent) this.selections = [...this.selections, event.detail];\n }\n\n /**\n * Handles when the input receives input\n * @private\n */\n handleInput(event) {\n emitEvent(this, 'kemet-input-input', event.target.value);\n }\n\n /**\n * Handles when the input is focused\n */\n handleFocus(event) {\n emitEvent(this, 'kemet-multi-input-focus', event.target.value);\n }\n\n /**\n * Renders the chips from the selections of the combo\n * @private\n */\n makeSelections() {\n const selections = this.selections.map(selection => html`\n <li part=\"chip\">\n <span>${selection.text}</span>\n <button @click=${this.handleRemoveChip}>&times;</button>\n </li>\n `);\n\n if (this.selections) {\n return html`<ul part=\"chips\">${selections}</ul>`;\n }\n\n return null;\n }\n\n /**\n * calculates padding to properly place the cursor of the input\n * @private\n */\n calculatePadding() {\n this.paddingLeft = this.chips.offsetWidth + 16;\n }\n\n /**\n * handle removing a chip from the selections\n * @private\n */\n handleRemoveChip(event) {\n const text = event.target.closest('[part=chip]').querySelector('span').innerText;\n this.selections = this.selections.filter(selection => selection.text !== text);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-multi-input': KemetMultiInput\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const stylesBase: import("lit").CSSResult;
@@ -0,0 +1,87 @@
1
+ import { css } from 'lit';
2
+ export const stylesBase = css `
3
+ :host {
4
+ --kemet-input-height: 50px;
5
+ --kemet-input-padding: 0.5rem 1rem;
6
+ --kemet-input-border: 1px solid rgb(var(--kemet-color-foreground));
7
+ --kemet-input-border-radius-rounded: var(--kemet-border-radius-lg);
8
+ --kemet-input-border-filled: none;
9
+ --kemet-input-color-filled: rgb(var(--kemet-color-white));
10
+ --kemet-input-background-color-filled: rgb(var(--kemet-color-primary));
11
+ --kemet-input-color-filled: rgb(var(--kemet-color-white));
12
+ --kemet-input-background-color-error: rgb(var(--kemet-color-error));
13
+ --kemet-input-background-color-success: rgb(var(--kemet-color-success));
14
+ --kemet-input-background-color-warning: rgb(var(--kemet-color-warning));
15
+
16
+ --kemet-multi-input-chip-color: rgb(var(--kemet-color-background));
17
+ --kemet-multi-input-chip-background: rgb(var(--kemet-color-foreground));
18
+
19
+ position: relative;
20
+ display: block;
21
+ }
22
+
23
+ input {
24
+ color: rgb(var(--kemet-color-text));
25
+ display: block;
26
+ font-size: 1rem;
27
+ width: 100%;
28
+ height: var(--kemet-input-height);
29
+ padding: var(--kemet-input-padding);
30
+ border: var(--kemet-input-border);
31
+ appearance: none;
32
+ box-sizing: border-box;
33
+ background-color: transparent;
34
+ }
35
+
36
+ :host([disabled]) input {
37
+ opacity: 0.5;
38
+ }
39
+
40
+ :host([rounded]) input {
41
+ border-radius: var(--kemet-input-border-radius-rounded);
42
+ }
43
+
44
+ :host([filled]) input {
45
+ border: var(--kemet-input-border-filled);
46
+ color: var(--kemet-input-color-filled);
47
+ background-color: var(--kemet-input-background-color-filled);
48
+ }
49
+
50
+ div {
51
+ display: flex;
52
+ gap: 1rem;
53
+ flex-direction: column;
54
+ }
55
+
56
+ ul {
57
+ display: flex;
58
+ gap: 0.5rem;
59
+ margin: 0;
60
+ padding: 0;
61
+ list-style: none;
62
+ flex-wrap: wrap;
63
+ }
64
+
65
+ li {
66
+ display: flex;
67
+ gap: 0.5rem;
68
+ align-items: center;
69
+ padding: 0.25rem 0.5rem;
70
+ color: var(--kemet-multi-input-chip-color);
71
+ background-color: var(--kemet-multi-input-chip-background);
72
+ }
73
+
74
+ :host([rounded]) li {
75
+ border-radius: var(--kemet-input-border-radius-rounded);
76
+ }
77
+
78
+ button {
79
+ color: inherit;
80
+ cursor: pointer;
81
+ font-size: 1.25rem;
82
+ padding: 0;
83
+ border: 0;
84
+ background-color: transparent
85
+ }
86
+ `;
87
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/components/kemet-multi-input/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoF5B,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const stylesBase = css`\n :host {\n --kemet-input-height: 50px;\n --kemet-input-padding: 0.5rem 1rem;\n --kemet-input-border: 1px solid rgb(var(--kemet-color-foreground));\n --kemet-input-border-radius-rounded: var(--kemet-border-radius-lg);\n --kemet-input-border-filled: none;\n --kemet-input-color-filled: rgb(var(--kemet-color-white));\n --kemet-input-background-color-filled: rgb(var(--kemet-color-primary));\n --kemet-input-color-filled: rgb(var(--kemet-color-white));\n --kemet-input-background-color-error: rgb(var(--kemet-color-error));\n --kemet-input-background-color-success: rgb(var(--kemet-color-success));\n --kemet-input-background-color-warning: rgb(var(--kemet-color-warning));\n\n --kemet-multi-input-chip-color: rgb(var(--kemet-color-background));\n --kemet-multi-input-chip-background: rgb(var(--kemet-color-foreground));\n\n position: relative;\n display: block;\n }\n\n input {\n color: rgb(var(--kemet-color-text));\n display: block;\n font-size: 1rem;\n width: 100%;\n height: var(--kemet-input-height);\n padding: var(--kemet-input-padding);\n border: var(--kemet-input-border);\n appearance: none;\n box-sizing: border-box;\n background-color: transparent;\n }\n\n :host([disabled]) input {\n opacity: 0.5;\n }\n\n :host([rounded]) input {\n border-radius: var(--kemet-input-border-radius-rounded);\n }\n\n :host([filled]) input {\n border: var(--kemet-input-border-filled);\n color: var(--kemet-input-color-filled);\n background-color: var(--kemet-input-background-color-filled);\n }\n\n div {\n display: flex;\n gap: 1rem;\n flex-direction: column;\n }\n\n ul {\n display: flex;\n gap: 0.5rem;\n margin: 0;\n padding: 0;\n list-style: none;\n flex-wrap: wrap;\n }\n\n li {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n padding: 0.25rem 0.5rem;\n color: var(--kemet-multi-input-chip-color);\n background-color: var(--kemet-multi-input-chip-background);\n }\n\n :host([rounded]) li {\n border-radius: var(--kemet-input-border-radius-rounded);\n }\n\n button {\n color: inherit;\n cursor: pointer;\n font-size: 1.25rem;\n padding: 0;\n border: 0;\n background-color: transparent\n }\n`;\n"]}
@@ -0,0 +1,5 @@
1
+ export interface IComboSelection {
2
+ element: HTMLUListElement;
3
+ text: string;
4
+ id: string;
5
+ }
@@ -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-multi-input/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface IComboSelection {\n element: HTMLUListElement;\n text: string;\n id: string;\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;
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, TemplateResult } from 'lit';
2
2
  import { KemetFieldInterface } from '../kemet-field/types';
3
3
  import { KemetInputInterface } from '../kemet-input/types';
4
4
  import { KemetTextareaInterface } from '../kemet-textarea/types';
@@ -26,9 +26,14 @@ import { TypeStatus } from './types';
26
26
  * @csspart rules - A description of rules to follow.
27
27
  *
28
28
  */
29
+ interface IOptions {
30
+ pattern: string;
31
+ message: string;
32
+ meetsCriteria?: boolean;
33
+ }
29
34
  export default class KemetPassword extends LitElement {
30
35
  static styles: import("lit").CSSResult[];
31
- rules: any[];
36
+ rules: IOptions[];
32
37
  show: boolean;
33
38
  value: string;
34
39
  message: string;
@@ -39,26 +44,26 @@ export default class KemetPassword extends LitElement {
39
44
  field: KemetFieldInterface;
40
45
  input: KemetInputInterface | KemetTextareaInterface;
41
46
  firstUpdated(): void;
42
- render(): import("lit-html").TemplateResult<1>;
47
+ render(): TemplateResult<1>;
43
48
  /**
44
49
  * Makes the list of rules
45
50
  * @private
46
- * @returns {templateResults} the criteria rules
51
+ * @returns {TemplateResult<1>[]} the criteria rules
47
52
  */
48
- makeRules(): import("lit-html").TemplateResult<1>[];
53
+ makeRules(): TemplateResult<1>[];
49
54
  /**
50
55
  * Makes the check icon if the criteria has been met
51
56
  * @param {boolean} meetsCriteria
52
57
  * @private
53
- * @returns {templateResults} an icon component
58
+ * @returns {TemplateResult} an icon component
54
59
  */
55
- makeCheckIcon(meetsCriteria: any): import("lit-html").TemplateResult<1>;
60
+ makeCheckIcon(meetsCriteria: boolean): TemplateResult;
56
61
  /**
57
62
  * Handles the kemet-input-input event
58
63
  * @param {*} event
59
64
  * @private
60
65
  */
61
- handleInput(event: any): void;
66
+ handleInput(event: CustomEvent): void;
62
67
  /**
63
68
  * Determines the strength of the password
64
69
  * @private
@@ -75,3 +80,4 @@ declare global {
75
80
  'kemet-password': KemetPassword;
76
81
  }
77
82
  }
83
+ export {};