le-kit 0.0.3 → 0.1.1

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 (357) hide show
  1. package/LICENSE +1 -1
  2. package/dist/admin/index.d.ts +25 -0
  3. package/dist/admin/index.js +80 -0
  4. package/dist/cjs/index-CO4npcak.js +1796 -0
  5. package/dist/cjs/index-CO4npcak.js.map +1 -0
  6. package/dist/cjs/index.cjs.js +117 -0
  7. package/dist/cjs/index.cjs.js.map +1 -0
  8. package/dist/cjs/le-box.cjs.entry.js +184 -0
  9. package/dist/cjs/le-box.entry.cjs.js.map +1 -0
  10. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +1 -0
  11. package/dist/cjs/le-button_6.cjs.entry.js +1199 -0
  12. package/dist/cjs/le-card.cjs.entry.js +29 -0
  13. package/dist/cjs/le-card.entry.cjs.js.map +1 -0
  14. package/dist/cjs/le-kit.cjs.js +25 -0
  15. package/dist/cjs/le-kit.cjs.js.map +1 -0
  16. package/dist/cjs/le-number-input.cjs.entry.js +202 -0
  17. package/dist/cjs/le-number-input.entry.cjs.js.map +1 -0
  18. package/dist/cjs/le-popup.cjs.entry.js +212 -0
  19. package/dist/cjs/le-popup.entry.cjs.js.map +1 -0
  20. package/dist/cjs/le-round-progress.cjs.entry.js +106 -0
  21. package/dist/cjs/le-round-progress.entry.cjs.js.map +1 -0
  22. package/dist/cjs/le-stack.cjs.entry.js +135 -0
  23. package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
  24. package/dist/cjs/le-text.cjs.entry.js +335 -0
  25. package/dist/cjs/le-text.entry.cjs.js.map +1 -0
  26. package/dist/cjs/le-turntable.cjs.entry.js +139 -0
  27. package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
  28. package/dist/cjs/loader.cjs.js +13 -0
  29. package/dist/cjs/loader.cjs.js.map +1 -0
  30. package/dist/cjs/utils-BeT0iyCQ.js +152 -0
  31. package/dist/cjs/utils-BeT0iyCQ.js.map +1 -0
  32. package/dist/collection/collection-manifest.json +20 -102
  33. package/dist/collection/components/le-box/le-box.default.css +37 -0
  34. package/dist/collection/components/le-box/le-box.js +614 -0
  35. package/dist/collection/components/le-box/le-box.js.map +1 -0
  36. package/dist/collection/components/le-button/le-button.default.css +263 -0
  37. package/dist/collection/components/le-button/le-button.js +368 -0
  38. package/dist/collection/components/le-button/le-button.js.map +1 -0
  39. package/dist/collection/components/le-card/le-card.default.css +74 -0
  40. package/dist/collection/components/le-card/le-card.js +102 -0
  41. package/dist/collection/components/le-card/le-card.js.map +1 -0
  42. package/dist/collection/components/le-checkbox/le-checkbox.css +93 -0
  43. package/dist/collection/components/le-checkbox/le-checkbox.js +192 -0
  44. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  45. package/dist/collection/components/le-component/le-component.css +189 -0
  46. package/dist/collection/components/le-component/le-component.js +359 -0
  47. package/dist/collection/components/le-component/le-component.js.map +1 -0
  48. package/dist/collection/components/le-number-input/le-number-input.css +135 -0
  49. package/dist/collection/components/le-number-input/le-number-input.js +515 -0
  50. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
  51. package/dist/collection/components/le-popover/le-popover.css +143 -0
  52. package/dist/collection/components/le-popover/le-popover.js +693 -0
  53. package/dist/collection/components/le-popover/le-popover.js.map +1 -0
  54. package/dist/collection/components/le-popup/le-popup.api.js +101 -0
  55. package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
  56. package/dist/collection/components/le-popup/le-popup.css +222 -0
  57. package/dist/collection/components/le-popup/le-popup.js +596 -0
  58. package/dist/collection/components/le-popup/le-popup.js.map +1 -0
  59. package/dist/collection/components/le-round-progress/le-round-progress.js +184 -84
  60. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  61. package/dist/collection/components/le-slot/le-slot.default.css +222 -0
  62. package/dist/collection/components/le-slot/le-slot.js +636 -0
  63. package/dist/collection/components/le-slot/le-slot.js.map +1 -0
  64. package/dist/collection/components/le-stack/le-stack.default.css +37 -0
  65. package/dist/collection/components/le-stack/le-stack.js +389 -0
  66. package/dist/collection/components/le-stack/le-stack.js.map +1 -0
  67. package/dist/collection/components/le-string-input/le-string-input.css +83 -0
  68. package/dist/collection/components/le-string-input/le-string-input.js +359 -0
  69. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
  70. package/dist/collection/components/le-text/le-text.default.css +169 -0
  71. package/dist/collection/components/le-text/le-text.js +475 -0
  72. package/dist/collection/components/le-text/le-text.js.map +1 -0
  73. package/dist/collection/components/le-turntable/le-turntable.js +210 -102
  74. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
  75. package/dist/collection/global/app.js +130 -0
  76. package/dist/collection/global/app.js.map +1 -0
  77. package/dist/collection/index-admin.js +27 -0
  78. package/dist/collection/index-admin.js.map +1 -0
  79. package/dist/collection/index-core.js +25 -0
  80. package/dist/collection/index-core.js.map +1 -0
  81. package/dist/collection/index.js +15 -0
  82. package/dist/collection/index.js.map +1 -0
  83. package/dist/collection/types/blocks.js +115 -0
  84. package/dist/collection/types/blocks.js.map +1 -0
  85. package/dist/collection/types/options.js +2 -0
  86. package/dist/collection/types/options.js.map +1 -0
  87. package/dist/collection/utils/utils.js +141 -5
  88. package/dist/collection/utils/utils.js.map +1 -0
  89. package/dist/components/index.d.ts +64 -0
  90. package/dist/components/index.js +127 -0
  91. package/dist/components/index.js.map +1 -0
  92. package/dist/components/le-box.d.ts +11 -0
  93. package/dist/components/le-box.js +256 -0
  94. package/dist/components/le-box.js.map +1 -0
  95. package/dist/components/le-button.d.ts +11 -0
  96. package/dist/components/le-button.js +9 -0
  97. package/dist/components/le-button.js.map +1 -0
  98. package/dist/components/le-button2.js +1408 -0
  99. package/dist/components/le-button2.js.map +1 -0
  100. package/dist/components/le-card.d.ts +11 -0
  101. package/dist/components/le-card.js +83 -0
  102. package/dist/components/le-card.js.map +1 -0
  103. package/dist/components/le-checkbox.d.ts +11 -0
  104. package/dist/components/le-checkbox.js +9 -0
  105. package/dist/components/le-checkbox.js.map +1 -0
  106. package/dist/components/le-component.d.ts +11 -0
  107. package/dist/components/le-component.js +9 -0
  108. package/dist/components/le-component.js.map +1 -0
  109. package/dist/components/le-number-input.d.ts +11 -0
  110. package/dist/components/le-number-input.js +271 -0
  111. package/dist/components/le-number-input.js.map +1 -0
  112. package/dist/components/le-popover.d.ts +11 -0
  113. package/dist/components/le-popover.js +9 -0
  114. package/dist/components/le-popover.js.map +1 -0
  115. package/dist/components/le-popover2.js +382 -0
  116. package/dist/components/le-popover2.js.map +1 -0
  117. package/dist/components/le-popup.d.ts +11 -0
  118. package/dist/components/le-popup.js +279 -0
  119. package/dist/components/le-popup.js.map +1 -0
  120. package/dist/components/le-round-progress.d.ts +11 -0
  121. package/dist/components/le-round-progress.js +135 -0
  122. package/dist/components/le-round-progress.js.map +1 -0
  123. package/dist/components/le-slot.d.ts +11 -0
  124. package/dist/components/le-slot.js +9 -0
  125. package/dist/components/le-slot.js.map +1 -0
  126. package/dist/components/le-stack.d.ts +11 -0
  127. package/dist/components/le-stack.js +198 -0
  128. package/dist/components/le-stack.js.map +1 -0
  129. package/dist/components/le-string-input.d.ts +11 -0
  130. package/dist/components/le-string-input.js +9 -0
  131. package/dist/components/le-string-input.js.map +1 -0
  132. package/dist/components/le-text.d.ts +11 -0
  133. package/dist/components/le-text.js +398 -0
  134. package/dist/components/le-text.js.map +1 -0
  135. package/dist/components/le-turntable.d.ts +11 -0
  136. package/dist/components/le-turntable.js +164 -0
  137. package/dist/components/le-turntable.js.map +1 -0
  138. package/dist/core/components/index.d.ts +64 -0
  139. package/dist/core/components/index.js +127 -0
  140. package/dist/core/components/index.js.map +1 -0
  141. package/dist/core/components/le-box.d.ts +11 -0
  142. package/dist/core/components/le-box.js +246 -0
  143. package/dist/core/components/le-box.js.map +1 -0
  144. package/dist/core/components/le-button.d.ts +11 -0
  145. package/dist/core/components/le-button.js +9 -0
  146. package/dist/core/components/le-button.js.map +1 -0
  147. package/dist/core/components/le-button2.js +1358 -0
  148. package/dist/core/components/le-button2.js.map +1 -0
  149. package/dist/core/components/le-card.d.ts +11 -0
  150. package/dist/core/components/le-card.js +73 -0
  151. package/dist/core/components/le-card.js.map +1 -0
  152. package/dist/core/components/le-checkbox.d.ts +11 -0
  153. package/dist/core/components/le-checkbox.js +9 -0
  154. package/dist/core/components/le-checkbox.js.map +1 -0
  155. package/dist/core/components/le-component.js.map +1 -0
  156. package/dist/core/components/le-number-input.d.ts +11 -0
  157. package/dist/core/components/le-number-input.js +261 -0
  158. package/dist/core/components/le-number-input.js.map +1 -0
  159. package/dist/core/components/le-popover.d.ts +11 -0
  160. package/dist/core/components/le-popover.js +9 -0
  161. package/dist/core/components/le-popover.js.map +1 -0
  162. package/dist/core/components/le-popover2.js +382 -0
  163. package/dist/core/components/le-popover2.js.map +1 -0
  164. package/dist/core/components/le-popup.d.ts +11 -0
  165. package/dist/core/components/le-popup.js +269 -0
  166. package/dist/core/components/le-popup.js.map +1 -0
  167. package/dist/core/components/le-round-progress.d.ts +11 -0
  168. package/dist/core/components/le-round-progress.js +135 -0
  169. package/dist/core/components/le-round-progress.js.map +1 -0
  170. package/dist/core/components/le-slot.js.map +1 -0
  171. package/dist/core/components/le-stack.d.ts +11 -0
  172. package/dist/core/components/le-stack.js +188 -0
  173. package/dist/core/components/le-stack.js.map +1 -0
  174. package/dist/core/components/le-string-input.d.ts +11 -0
  175. package/dist/core/components/le-string-input.js +9 -0
  176. package/dist/core/components/le-string-input.js.map +1 -0
  177. package/dist/core/components/le-text.d.ts +11 -0
  178. package/dist/core/components/le-text.js +388 -0
  179. package/dist/core/components/le-text.js.map +1 -0
  180. package/dist/core/components/le-turntable.d.ts +11 -0
  181. package/dist/core/components/le-turntable.js +164 -0
  182. package/dist/core/components/le-turntable.js.map +1 -0
  183. package/dist/core/index.d.ts +23 -0
  184. package/dist/core/index.js +74 -0
  185. package/dist/core/stencil-runtime.js +1 -0
  186. package/dist/docs.d.ts +443 -0
  187. package/dist/docs.json +5185 -0
  188. package/dist/esm/index-D71TXvJa.js +1781 -0
  189. package/dist/esm/index-D71TXvJa.js.map +1 -0
  190. package/dist/esm/index.js +105 -5
  191. package/dist/esm/index.js.map +1 -0
  192. package/dist/esm/le-box.entry.js +182 -0
  193. package/dist/esm/le-box.entry.js.map +1 -0
  194. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +1 -0
  195. package/dist/esm/le-button_6.entry.js +1192 -0
  196. package/dist/esm/le-card.entry.js +27 -0
  197. package/dist/esm/le-card.entry.js.map +1 -0
  198. package/dist/esm/le-kit.js +21 -0
  199. package/dist/esm/le-kit.js.map +1 -0
  200. package/dist/esm/le-number-input.entry.js +200 -0
  201. package/dist/esm/le-number-input.entry.js.map +1 -0
  202. package/dist/esm/le-popup.entry.js +210 -0
  203. package/dist/esm/le-popup.entry.js.map +1 -0
  204. package/dist/esm/le-round-progress.entry.js +104 -0
  205. package/dist/esm/le-round-progress.entry.js.map +1 -0
  206. package/dist/esm/le-stack.entry.js +133 -0
  207. package/dist/esm/le-stack.entry.js.map +1 -0
  208. package/dist/esm/le-text.entry.js +333 -0
  209. package/dist/esm/le-text.entry.js.map +1 -0
  210. package/dist/esm/le-turntable.entry.js +137 -0
  211. package/dist/esm/le-turntable.entry.js.map +1 -0
  212. package/dist/esm/loader.js +11 -0
  213. package/dist/esm/loader.js.map +1 -0
  214. package/dist/esm/utils-CJLZrrdC.js +146 -0
  215. package/dist/esm/utils-CJLZrrdC.js.map +1 -0
  216. package/dist/index.cjs.js +1 -0
  217. package/dist/index.js +1 -2
  218. package/dist/le-kit/index-D21JjI31.js.map +1 -0
  219. package/dist/le-kit/index.esm.js +2 -0
  220. package/dist/le-kit/index.esm.js.map +1 -0
  221. package/dist/le-kit/le-box.entry.esm.js.map +1 -0
  222. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +1 -0
  223. package/dist/le-kit/le-card.entry.esm.js.map +1 -0
  224. package/dist/le-kit/le-kit.css +1 -0
  225. package/dist/le-kit/le-kit.esm.js +2 -0
  226. package/dist/le-kit/le-kit.esm.js.map +1 -0
  227. package/dist/le-kit/le-number-input.entry.esm.js.map +1 -0
  228. package/dist/le-kit/le-popup.entry.esm.js.map +1 -0
  229. package/dist/le-kit/le-round-progress.entry.esm.js.map +1 -0
  230. package/dist/le-kit/le-stack.entry.esm.js.map +1 -0
  231. package/dist/le-kit/le-text.entry.esm.js.map +1 -0
  232. package/dist/le-kit/le-turntable.entry.esm.js.map +1 -0
  233. package/dist/le-kit/loader.esm.js.map +1 -0
  234. package/dist/le-kit/p-024a764e.entry.js +2 -0
  235. package/dist/le-kit/p-024a764e.entry.js.map +1 -0
  236. package/dist/le-kit/p-073cf0b9.entry.js +2 -0
  237. package/dist/le-kit/p-073cf0b9.entry.js.map +1 -0
  238. package/dist/le-kit/p-0955b105.entry.js +2 -0
  239. package/dist/le-kit/p-0955b105.entry.js.map +1 -0
  240. package/dist/le-kit/p-18d79ee2.entry.js +2 -0
  241. package/dist/le-kit/p-18d79ee2.entry.js.map +1 -0
  242. package/dist/le-kit/p-4b1d3b6d.entry.js +2 -0
  243. package/dist/le-kit/p-4b1d3b6d.entry.js.map +1 -0
  244. package/dist/le-kit/p-79d179bd.entry.js +2 -0
  245. package/dist/le-kit/p-79d179bd.entry.js.map +1 -0
  246. package/dist/le-kit/p-D71TXvJa.js +3 -0
  247. package/dist/le-kit/p-D71TXvJa.js.map +1 -0
  248. package/dist/le-kit/p-c8a9288e.entry.js +2 -0
  249. package/dist/le-kit/p-c8a9288e.entry.js.map +1 -0
  250. package/dist/le-kit/p-cfc35bd3.entry.js +2 -0
  251. package/dist/le-kit/p-cfc35bd3.entry.js.map +1 -0
  252. package/dist/le-kit/p-d04da1f5.entry.js +2 -0
  253. package/dist/le-kit/p-d04da1f5.entry.js.map +1 -0
  254. package/dist/le-kit/p-qIai5-eB.js +2 -0
  255. package/dist/le-kit/p-qIai5-eB.js.map +1 -0
  256. package/dist/le-kit/utils-apol-Xc_.js.map +1 -0
  257. package/dist/themes/base.css +89 -0
  258. package/dist/themes/dark.css +100 -0
  259. package/dist/themes/default.css +108 -0
  260. package/dist/themes/gradient.css +100 -0
  261. package/dist/themes/index.css +413 -0
  262. package/dist/themes/minimal.css +100 -0
  263. package/dist/themes/warm.css +100 -0
  264. package/dist/types/components/le-box/le-box.d.ts +111 -0
  265. package/dist/types/components/le-button/le-button.d.ts +78 -0
  266. package/dist/types/components/le-card/le-card.d.ts +37 -0
  267. package/dist/types/components/le-checkbox/le-checkbox.d.ts +46 -0
  268. package/dist/types/components/le-component/le-component.d.ts +115 -0
  269. package/dist/types/components/le-number-input/le-number-input.d.ts +106 -0
  270. package/dist/types/components/le-popover/le-popover.d.ts +109 -0
  271. package/dist/types/components/le-popup/le-popup.api.d.ts +73 -0
  272. package/dist/types/components/le-popup/le-popup.d.ts +122 -0
  273. package/dist/types/components/le-round-progress/le-round-progress.d.ts +2 -3
  274. package/dist/types/components/le-slot/le-slot.d.ts +149 -0
  275. package/dist/types/components/le-stack/le-stack.d.ts +73 -0
  276. package/dist/types/components/le-string-input/le-string-input.d.ts +83 -0
  277. package/dist/types/components/le-text/le-text.d.ts +141 -0
  278. package/dist/types/components/le-turntable/le-turntable.d.ts +1 -2
  279. package/dist/types/components.d.ts +2030 -62
  280. package/dist/types/global/app.d.ts +40 -0
  281. package/dist/types/index-admin.d.ts +29 -0
  282. package/dist/types/index-core.d.ts +27 -0
  283. package/dist/types/index.d.ts +15 -0
  284. package/dist/types/stencil-public-runtime.d.ts +1756 -0
  285. package/dist/types/types/blocks.d.ts +136 -0
  286. package/dist/types/types/options.d.ts +124 -0
  287. package/dist/types/utils/utils.d.ts +54 -1
  288. package/loader/cdn.js +1 -0
  289. package/loader/index.cjs.js +1 -0
  290. package/loader/index.d.ts +24 -0
  291. package/loader/index.es2017.js +1 -0
  292. package/loader/index.js +2 -0
  293. package/package.json +64 -13
  294. package/readme.md +180 -46
  295. package/dist/cjs/es5/build/jqoqzji9.entry.js +0 -6
  296. package/dist/cjs/es5/build/jqoqzji9.sc.entry.js +0 -6
  297. package/dist/cjs/es5/build/novg0vs0.entry.js +0 -9
  298. package/dist/cjs/es5/build/novg0vs0.sc.entry.js +0 -9
  299. package/dist/cjs/es5/index.js +0 -1
  300. package/dist/cjs/es5/le-kit.components.js +0 -4
  301. package/dist/cjs/es5/le-kit.core.js +0 -459
  302. package/dist/cjs/es5/le-kit.define.js +0 -9
  303. package/dist/cjs/es5/polyfills/array.js +0 -63
  304. package/dist/cjs/es5/polyfills/css-shim.js +0 -178
  305. package/dist/cjs/es5/polyfills/dom.js +0 -125
  306. package/dist/cjs/es5/polyfills/fetch.js +0 -186
  307. package/dist/cjs/es5/polyfills/map.js +0 -54
  308. package/dist/cjs/es5/polyfills/object.js +0 -27
  309. package/dist/cjs/es5/polyfills/promise.js +0 -80
  310. package/dist/cjs/es5/polyfills/string.js +0 -15
  311. package/dist/cjs/es5/polyfills/tslib.js +0 -244
  312. package/dist/cjs/es5/polyfills/url.js +0 -68
  313. package/dist/collection/interface.js +0 -0
  314. package/dist/esm/es2017/build/jqoqzji9.entry.js +0 -88
  315. package/dist/esm/es2017/build/jqoqzji9.sc.entry.js +0 -88
  316. package/dist/esm/es2017/build/novg0vs0.entry.js +0 -106
  317. package/dist/esm/es2017/build/novg0vs0.sc.entry.js +0 -106
  318. package/dist/esm/es2017/index.js +0 -1
  319. package/dist/esm/es2017/le-kit.components.js +0 -2
  320. package/dist/esm/es2017/le-kit.core.js +0 -5
  321. package/dist/esm/es2017/le-kit.define.js +0 -9
  322. package/dist/esm/es5/build/jqoqzji9.entry.js +0 -1
  323. package/dist/esm/es5/build/jqoqzji9.sc.entry.js +0 -1
  324. package/dist/esm/es5/build/novg0vs0.entry.js +0 -1
  325. package/dist/esm/es5/build/novg0vs0.sc.entry.js +0 -1
  326. package/dist/esm/es5/index.js +0 -1
  327. package/dist/esm/es5/le-kit.components.js +0 -2
  328. package/dist/esm/es5/le-kit.core.js +0 -5
  329. package/dist/esm/es5/le-kit.define.js +0 -9
  330. package/dist/esm/es5/polyfills/array.js +0 -23
  331. package/dist/esm/es5/polyfills/css-shim.js +0 -8
  332. package/dist/esm/es5/polyfills/dom.js +0 -22
  333. package/dist/esm/es5/polyfills/fetch.js +0 -20
  334. package/dist/esm/es5/polyfills/map.js +0 -7
  335. package/dist/esm/es5/polyfills/object.js +0 -20
  336. package/dist/esm/es5/polyfills/promise.js +0 -8
  337. package/dist/esm/es5/polyfills/string.js +0 -12
  338. package/dist/esm/es5/polyfills/tslib.js +0 -160
  339. package/dist/esm/es5/polyfills/url.js +0 -7
  340. package/dist/le-kit/jqoqzji9.entry.js +0 -1
  341. package/dist/le-kit/jqoqzji9.es5.entry.js +0 -1
  342. package/dist/le-kit/jqoqzji9.sc.entry.js +0 -1
  343. package/dist/le-kit/jqoqzji9.sc.es5.entry.js +0 -1
  344. package/dist/le-kit/le-kit.lfyfa4jd.js +0 -123
  345. package/dist/le-kit/le-kit.rzqb8hph.js +0 -4
  346. package/dist/le-kit/novg0vs0.entry.js +0 -1
  347. package/dist/le-kit/novg0vs0.es5.entry.js +0 -1
  348. package/dist/le-kit/novg0vs0.sc.entry.js +0 -1
  349. package/dist/le-kit/novg0vs0.sc.es5.entry.js +0 -1
  350. package/dist/le-kit.js +0 -1
  351. package/dist/loader/index.cjs.js +0 -1
  352. package/dist/loader/index.d.ts +0 -1
  353. package/dist/loader/index.es2017.js +0 -1
  354. package/dist/loader/index.js +0 -1
  355. package/dist/loader/package.json +0 -9
  356. package/dist/types/stencil.core.d.ts +0 -1203
  357. package/dist/web-components.json +0 -41
@@ -0,0 +1,515 @@
1
+ import { h } from "@stencil/core";
2
+ import { classnames } from "../../utils/utils";
3
+ /**
4
+ * A number input component with validation, keyboard controls, and custom spinners.
5
+ *
6
+ * @slot - The label text for the input
7
+ * @slot description - Additional description text displayed below the input
8
+ * @slot icon-start - Icon to display at the start of the input
9
+ *
10
+ * @cssprop --le-input-bg - Input background color
11
+ * @cssprop --le-input-color - Input text color
12
+ * @cssprop --le-input-border - Input border style
13
+ * @cssprop --le-input-border-focus - Input border style when focused
14
+ * @cssprop --le-input-border-error - Input border style when invalid
15
+ * @cssprop --le-input-radius - Input border radius
16
+ * @cssprop --le-input-padding - Input padding
17
+ */
18
+ export class LeNumberInput {
19
+ el;
20
+ /**
21
+ * The value of the input
22
+ */
23
+ value;
24
+ /**
25
+ * The name of the input
26
+ */
27
+ name;
28
+ /**
29
+ * Label for the input
30
+ */
31
+ label;
32
+ /**
33
+ * Placeholder text
34
+ */
35
+ placeholder;
36
+ /**
37
+ * Minimum allowed value
38
+ */
39
+ min;
40
+ /**
41
+ * Maximum allowed value
42
+ */
43
+ max;
44
+ /**
45
+ * Step value for increment/decrement
46
+ */
47
+ step = 1;
48
+ /**
49
+ * Whether the input is required
50
+ */
51
+ required = false;
52
+ /**
53
+ * Whether the input is disabled
54
+ */
55
+ disabled = false;
56
+ /**
57
+ * Whether the input is read-only
58
+ */
59
+ readonly = false;
60
+ /**
61
+ * Icon for the start icon
62
+ */
63
+ iconStart;
64
+ /**
65
+ * Whether to show the spinner controls
66
+ */
67
+ showSpinners = true;
68
+ /**
69
+ * External ID for linking with external systems
70
+ */
71
+ externalId;
72
+ /**
73
+ * Internal validation state
74
+ */
75
+ isValid = true;
76
+ validationMessage = '';
77
+ /**
78
+ * Emitted when the value changes (on blur or Enter)
79
+ */
80
+ leChange;
81
+ /**
82
+ * Emitted when the input value changes (on keystroke/spin)
83
+ */
84
+ leInput;
85
+ valueChanged() {
86
+ this.validate();
87
+ }
88
+ validate() {
89
+ if (this.required && (this.value === undefined || this.value === null || isNaN(this.value))) {
90
+ this.isValid = false;
91
+ this.validationMessage = 'This field is required';
92
+ return;
93
+ }
94
+ if (this.value !== undefined && this.value !== null && !isNaN(this.value)) {
95
+ if (this.min !== undefined && this.value < this.min) {
96
+ this.isValid = false;
97
+ this.validationMessage = `Value must be at least ${this.min}`;
98
+ return;
99
+ }
100
+ if (this.max !== undefined && this.value > this.max) {
101
+ this.isValid = false;
102
+ this.validationMessage = `Value must be at most ${this.max}`;
103
+ return;
104
+ }
105
+ }
106
+ this.isValid = true;
107
+ this.validationMessage = '';
108
+ }
109
+ emitChange() {
110
+ this.leChange.emit({
111
+ value: this.value,
112
+ name: this.name,
113
+ externalId: this.externalId,
114
+ isValid: this.isValid
115
+ });
116
+ }
117
+ emitInput() {
118
+ this.leInput.emit({
119
+ value: this.value,
120
+ name: this.name,
121
+ externalId: this.externalId,
122
+ isValid: this.isValid
123
+ });
124
+ }
125
+ updateValue(newValue) {
126
+ if (this.disabled || this.readonly)
127
+ return;
128
+ // Round to avoid floating point errors
129
+ const precision = this.step.toString().split('.')[1]?.length || 0;
130
+ const rounded = parseFloat(newValue.toFixed(precision));
131
+ this.value = rounded;
132
+ this.validate();
133
+ this.emitInput();
134
+ }
135
+ handleInput = (ev) => {
136
+ const input = ev.target;
137
+ const val = parseFloat(input.value);
138
+ if (input.value === '') {
139
+ this.value = undefined;
140
+ }
141
+ else if (!isNaN(val)) {
142
+ this.value = val;
143
+ }
144
+ this.validate();
145
+ this.emitInput();
146
+ };
147
+ handleChange = () => {
148
+ this.validate();
149
+ this.emitChange();
150
+ };
151
+ handleKeyDown = (ev) => {
152
+ if (this.disabled || this.readonly)
153
+ return;
154
+ let multiplier = 1;
155
+ if (ev.shiftKey)
156
+ multiplier = 10;
157
+ if (ev.altKey)
158
+ multiplier = 0.1;
159
+ const current = this.value || 0;
160
+ if (ev.key === 'ArrowUp') {
161
+ ev.preventDefault();
162
+ this.updateValue(current + (this.step * multiplier));
163
+ }
164
+ else if (ev.key === 'ArrowDown') {
165
+ ev.preventDefault();
166
+ this.updateValue(current - (this.step * multiplier));
167
+ }
168
+ };
169
+ handleWheel = (ev) => {
170
+ if (this.disabled || this.readonly)
171
+ return;
172
+ // Only handle if input is focused to prevent accidental scrolling
173
+ if (document.activeElement !== ev.target)
174
+ return;
175
+ ev.preventDefault();
176
+ const current = this.value || 0;
177
+ if (ev.deltaY < 0) {
178
+ this.updateValue(current + this.step);
179
+ }
180
+ else {
181
+ this.updateValue(current - this.step);
182
+ }
183
+ };
184
+ increment = (ev) => {
185
+ ev.preventDefault(); // Prevent focus loss
186
+ const current = this.value || 0;
187
+ this.updateValue(current + this.step);
188
+ // Trigger change event for buttons as they are "final" actions usually
189
+ this.emitChange();
190
+ };
191
+ decrement = (ev) => {
192
+ ev.preventDefault();
193
+ const current = this.value || 0;
194
+ this.updateValue(current - this.step);
195
+ this.emitChange();
196
+ };
197
+ render() {
198
+ return (h("le-component", { key: '6af8d1fd4c89597f7da3be391cabccbb9d1f9800', component: "le-number-input", hostClass: classnames({ 'disabled': this.disabled }) }, h("div", { key: 'e4e0ad02f89b2eb8dd7649d2f2e70bc821cb2774', class: "le-input-wrapper" }, this.label && (h("label", { key: '30ad120d5571018ea9891340b5406f6939a1fe0e', class: "le-input-label", htmlFor: this.name }, this.label)), h("div", { key: '27b835ad1559a1ea4366c4b7c2b31d412e8b8ef7', class: classnames('le-input-container', { 'has-error': !this.isValid }) }, this.iconStart && (h("span", { key: '0164cbb985b900b4b3136061a2609987a2c06e9f', class: "icon-start" }, this.iconStart)), h("input", { key: '6d68b764f45d61b7dd4ffe435bd9e9da04c4d87a', id: this.name, type: "number", name: this.name, placeholder: this.placeholder, min: this.min, max: this.max, step: this.step, value: this.value, disabled: this.disabled, readOnly: this.readonly, required: this.required, onInput: this.handleInput, onChange: this.handleChange, onKeyDown: this.handleKeyDown, onWheel: this.handleWheel }), this.showSpinners && (h("div", { key: '7ed04341c0c27a7d37afd4baf9698ea7776702f6', class: "le-input-controls" }, h("le-button", { key: '80c96f7cbee40efd2b79f33e8401a13f187092a6', mode: "default", variant: "clear", size: "small", "icon-only": true, class: "le-input-control-btn", onClick: this.increment, disabled: this.disabled || this.readonly || (this.max !== undefined && this.value >= this.max), tabindex: "-1" }, h("span", { key: 'd56b463073ce8174c668138179f1bbc16c700d9f', slot: "icon-only" }, "\u2191")), h("le-button", { key: '74e70e65d6668cc1cee7abfaf464a60a29efa3f9', mode: "default", variant: "clear", size: "small", "icon-only": true, class: "le-input-control-btn", onClick: this.decrement, disabled: this.disabled || this.readonly || (this.min !== undefined && this.value <= this.min), tabindex: "-1" }, h("span", { key: 'e2330cdf9f431b2c9f0953e42f71e897879d10fe', slot: "icon-only" }, "\u2193"))))), !this.isValid && h("div", { key: 'ba9bb8af8c4814b4316c1f0947c50a99fd24634c', class: "le-input-error" }, this.validationMessage), h("div", { key: '30e43ac088f995fe24ab47678ca70fe771b6f1ab', class: "le-input-description" }, h("le-slot", { key: '94f4bd21e32595470781eb6b004c9acbee72b81a', name: "description", type: "text", tag: "p", label: "Description" }, h("slot", { key: 'def94a79248d1887c5416ff95b2c625df85c68d0', name: "description" }))))));
199
+ }
200
+ static get is() { return "le-number-input"; }
201
+ static get encapsulation() { return "shadow"; }
202
+ static get originalStyleUrls() {
203
+ return {
204
+ "$": ["le-number-input.css"]
205
+ };
206
+ }
207
+ static get styleUrls() {
208
+ return {
209
+ "$": ["le-number-input.css"]
210
+ };
211
+ }
212
+ static get properties() {
213
+ return {
214
+ "value": {
215
+ "type": "number",
216
+ "mutable": true,
217
+ "complexType": {
218
+ "original": "number",
219
+ "resolved": "number",
220
+ "references": {}
221
+ },
222
+ "required": false,
223
+ "optional": false,
224
+ "docs": {
225
+ "tags": [],
226
+ "text": "The value of the input"
227
+ },
228
+ "getter": false,
229
+ "setter": false,
230
+ "reflect": true,
231
+ "attribute": "value"
232
+ },
233
+ "name": {
234
+ "type": "string",
235
+ "mutable": false,
236
+ "complexType": {
237
+ "original": "string",
238
+ "resolved": "string",
239
+ "references": {}
240
+ },
241
+ "required": false,
242
+ "optional": false,
243
+ "docs": {
244
+ "tags": [],
245
+ "text": "The name of the input"
246
+ },
247
+ "getter": false,
248
+ "setter": false,
249
+ "reflect": false,
250
+ "attribute": "name"
251
+ },
252
+ "label": {
253
+ "type": "string",
254
+ "mutable": false,
255
+ "complexType": {
256
+ "original": "string",
257
+ "resolved": "string",
258
+ "references": {}
259
+ },
260
+ "required": false,
261
+ "optional": false,
262
+ "docs": {
263
+ "tags": [],
264
+ "text": "Label for the input"
265
+ },
266
+ "getter": false,
267
+ "setter": false,
268
+ "reflect": false,
269
+ "attribute": "label"
270
+ },
271
+ "placeholder": {
272
+ "type": "string",
273
+ "mutable": false,
274
+ "complexType": {
275
+ "original": "string",
276
+ "resolved": "string",
277
+ "references": {}
278
+ },
279
+ "required": false,
280
+ "optional": false,
281
+ "docs": {
282
+ "tags": [],
283
+ "text": "Placeholder text"
284
+ },
285
+ "getter": false,
286
+ "setter": false,
287
+ "reflect": false,
288
+ "attribute": "placeholder"
289
+ },
290
+ "min": {
291
+ "type": "number",
292
+ "mutable": false,
293
+ "complexType": {
294
+ "original": "number",
295
+ "resolved": "number",
296
+ "references": {}
297
+ },
298
+ "required": false,
299
+ "optional": true,
300
+ "docs": {
301
+ "tags": [],
302
+ "text": "Minimum allowed value"
303
+ },
304
+ "getter": false,
305
+ "setter": false,
306
+ "reflect": false,
307
+ "attribute": "min"
308
+ },
309
+ "max": {
310
+ "type": "number",
311
+ "mutable": false,
312
+ "complexType": {
313
+ "original": "number",
314
+ "resolved": "number",
315
+ "references": {}
316
+ },
317
+ "required": false,
318
+ "optional": true,
319
+ "docs": {
320
+ "tags": [],
321
+ "text": "Maximum allowed value"
322
+ },
323
+ "getter": false,
324
+ "setter": false,
325
+ "reflect": false,
326
+ "attribute": "max"
327
+ },
328
+ "step": {
329
+ "type": "number",
330
+ "mutable": false,
331
+ "complexType": {
332
+ "original": "number",
333
+ "resolved": "number",
334
+ "references": {}
335
+ },
336
+ "required": false,
337
+ "optional": false,
338
+ "docs": {
339
+ "tags": [],
340
+ "text": "Step value for increment/decrement"
341
+ },
342
+ "getter": false,
343
+ "setter": false,
344
+ "reflect": false,
345
+ "attribute": "step",
346
+ "defaultValue": "1"
347
+ },
348
+ "required": {
349
+ "type": "boolean",
350
+ "mutable": false,
351
+ "complexType": {
352
+ "original": "boolean",
353
+ "resolved": "boolean",
354
+ "references": {}
355
+ },
356
+ "required": false,
357
+ "optional": false,
358
+ "docs": {
359
+ "tags": [],
360
+ "text": "Whether the input is required"
361
+ },
362
+ "getter": false,
363
+ "setter": false,
364
+ "reflect": false,
365
+ "attribute": "required",
366
+ "defaultValue": "false"
367
+ },
368
+ "disabled": {
369
+ "type": "boolean",
370
+ "mutable": false,
371
+ "complexType": {
372
+ "original": "boolean",
373
+ "resolved": "boolean",
374
+ "references": {}
375
+ },
376
+ "required": false,
377
+ "optional": false,
378
+ "docs": {
379
+ "tags": [],
380
+ "text": "Whether the input is disabled"
381
+ },
382
+ "getter": false,
383
+ "setter": false,
384
+ "reflect": false,
385
+ "attribute": "disabled",
386
+ "defaultValue": "false"
387
+ },
388
+ "readonly": {
389
+ "type": "boolean",
390
+ "mutable": false,
391
+ "complexType": {
392
+ "original": "boolean",
393
+ "resolved": "boolean",
394
+ "references": {}
395
+ },
396
+ "required": false,
397
+ "optional": false,
398
+ "docs": {
399
+ "tags": [],
400
+ "text": "Whether the input is read-only"
401
+ },
402
+ "getter": false,
403
+ "setter": false,
404
+ "reflect": false,
405
+ "attribute": "readonly",
406
+ "defaultValue": "false"
407
+ },
408
+ "iconStart": {
409
+ "type": "string",
410
+ "mutable": false,
411
+ "complexType": {
412
+ "original": "string",
413
+ "resolved": "string",
414
+ "references": {}
415
+ },
416
+ "required": false,
417
+ "optional": true,
418
+ "docs": {
419
+ "tags": [],
420
+ "text": "Icon for the start icon"
421
+ },
422
+ "getter": false,
423
+ "setter": false,
424
+ "reflect": false,
425
+ "attribute": "icon-start"
426
+ },
427
+ "showSpinners": {
428
+ "type": "boolean",
429
+ "mutable": false,
430
+ "complexType": {
431
+ "original": "boolean",
432
+ "resolved": "boolean",
433
+ "references": {}
434
+ },
435
+ "required": false,
436
+ "optional": false,
437
+ "docs": {
438
+ "tags": [],
439
+ "text": "Whether to show the spinner controls"
440
+ },
441
+ "getter": false,
442
+ "setter": false,
443
+ "reflect": false,
444
+ "attribute": "show-spinners",
445
+ "defaultValue": "true"
446
+ },
447
+ "externalId": {
448
+ "type": "string",
449
+ "mutable": false,
450
+ "complexType": {
451
+ "original": "string",
452
+ "resolved": "string",
453
+ "references": {}
454
+ },
455
+ "required": false,
456
+ "optional": false,
457
+ "docs": {
458
+ "tags": [],
459
+ "text": "External ID for linking with external systems"
460
+ },
461
+ "getter": false,
462
+ "setter": false,
463
+ "reflect": false,
464
+ "attribute": "external-id"
465
+ }
466
+ };
467
+ }
468
+ static get states() {
469
+ return {
470
+ "isValid": {},
471
+ "validationMessage": {}
472
+ };
473
+ }
474
+ static get events() {
475
+ return [{
476
+ "method": "leChange",
477
+ "name": "leChange",
478
+ "bubbles": true,
479
+ "cancelable": true,
480
+ "composed": true,
481
+ "docs": {
482
+ "tags": [],
483
+ "text": "Emitted when the value changes (on blur or Enter)"
484
+ },
485
+ "complexType": {
486
+ "original": "{ value: number; name: string; externalId: string; isValid: boolean }",
487
+ "resolved": "{ value: number; name: string; externalId: string; isValid: boolean; }",
488
+ "references": {}
489
+ }
490
+ }, {
491
+ "method": "leInput",
492
+ "name": "leInput",
493
+ "bubbles": true,
494
+ "cancelable": true,
495
+ "composed": true,
496
+ "docs": {
497
+ "tags": [],
498
+ "text": "Emitted when the input value changes (on keystroke/spin)"
499
+ },
500
+ "complexType": {
501
+ "original": "{ value: number; name: string; externalId: string; isValid: boolean }",
502
+ "resolved": "{ value: number; name: string; externalId: string; isValid: boolean; }",
503
+ "references": {}
504
+ }
505
+ }];
506
+ }
507
+ static get elementRef() { return "el"; }
508
+ static get watchers() {
509
+ return [{
510
+ "propName": "value",
511
+ "methodName": "valueChanged"
512
+ }];
513
+ }
514
+ }
515
+ //# sourceMappingURL=le-number-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"le-number-input.js","sourceRoot":"","sources":["../../../src/components/le-number-input/le-number-input.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, Event, EventEmitter, State, h, Element, Watch } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A number input component with validation, keyboard controls, and custom spinners.\n *\n * @slot - The label text for the input\n * @slot description - Additional description text displayed below the input\n * @slot icon-start - Icon to display at the start of the input\n *\n * @cssprop --le-input-bg - Input background color\n * @cssprop --le-input-color - Input text color\n * @cssprop --le-input-border - Input border style\n * @cssprop --le-input-border-focus - Input border style when focused\n * @cssprop --le-input-border-error - Input border style when invalid\n * @cssprop --le-input-radius - Input border radius\n * @cssprop --le-input-padding - Input padding\n */\n@Component({\n tag: 'le-number-input',\n styleUrl: 'le-number-input.css',\n shadow: true,\n})\nexport class LeNumberInput {\n @Element() el: HTMLElement;\n\n /**\n * The value of the input\n */\n @Prop({ mutable: true, reflect: true }) value: number;\n\n /**\n * The name of the input\n */\n @Prop() name: string;\n\n /**\n * Label for the input\n */\n @Prop() label: string;\n\n /**\n * Placeholder text\n */\n @Prop() placeholder: string;\n\n /**\n * Minimum allowed value\n */\n @Prop() min?: number;\n\n /**\n * Maximum allowed value\n */\n @Prop() max?: number;\n\n /**\n * Step value for increment/decrement\n */\n @Prop() step: number = 1;\n\n /**\n * Whether the input is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the input is read-only\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Icon for the start icon\n */\n @Prop() iconStart?: string;\n\n /**\n * Whether to show the spinner controls\n */\n @Prop() showSpinners: boolean = true;\n\n /**\n * External ID for linking with external systems\n */\n @Prop() externalId: string;\n\n /**\n * Internal validation state\n */\n @State() private isValid: boolean = true;\n @State() private validationMessage: string = '';\n\n /**\n * Emitted when the value changes (on blur or Enter)\n */\n @Event() leChange: EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>;\n\n /**\n * Emitted when the input value changes (on keystroke/spin)\n */\n @Event() leInput: EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>;\n\n @Watch('value')\n valueChanged() {\n this.validate();\n }\n\n private validate() {\n if (this.required && (this.value === undefined || this.value === null || isNaN(this.value))) {\n this.isValid = false;\n this.validationMessage = 'This field is required';\n return;\n }\n\n if (this.value !== undefined && this.value !== null && !isNaN(this.value)) {\n if (this.min !== undefined && this.value < this.min) {\n this.isValid = false;\n this.validationMessage = `Value must be at least ${this.min}`;\n return;\n }\n if (this.max !== undefined && this.value > this.max) {\n this.isValid = false;\n this.validationMessage = `Value must be at most ${this.max}`;\n return;\n }\n }\n\n this.isValid = true;\n this.validationMessage = '';\n }\n\n private emitChange() {\n this.leChange.emit({\n value: this.value,\n name: this.name,\n externalId: this.externalId,\n isValid: this.isValid\n });\n }\n\n private emitInput() {\n this.leInput.emit({\n value: this.value,\n name: this.name,\n externalId: this.externalId,\n isValid: this.isValid\n });\n }\n\n private updateValue(newValue: number) {\n if (this.disabled || this.readonly) return;\n \n // Round to avoid floating point errors\n const precision = this.step.toString().split('.')[1]?.length || 0;\n const rounded = parseFloat(newValue.toFixed(precision));\n \n this.value = rounded;\n this.validate();\n this.emitInput();\n }\n\n private handleInput = (ev: Event) => {\n const input = ev.target as HTMLInputElement;\n const val = parseFloat(input.value);\n \n if (input.value === '') {\n this.value = undefined;\n } else if (!isNaN(val)) {\n this.value = val;\n }\n \n this.validate();\n this.emitInput();\n };\n\n private handleChange = () => {\n this.validate();\n this.emitChange();\n };\n\n private handleKeyDown = (ev: KeyboardEvent) => {\n if (this.disabled || this.readonly) return;\n\n let multiplier = 1;\n if (ev.shiftKey) multiplier = 10;\n if (ev.altKey) multiplier = 0.1;\n\n const current = this.value || 0;\n\n if (ev.key === 'ArrowUp') {\n ev.preventDefault();\n this.updateValue(current + (this.step * multiplier));\n } else if (ev.key === 'ArrowDown') {\n ev.preventDefault();\n this.updateValue(current - (this.step * multiplier));\n }\n };\n\n private handleWheel = (ev: WheelEvent) => {\n if (this.disabled || this.readonly) return;\n // Only handle if input is focused to prevent accidental scrolling\n if (document.activeElement !== ev.target) return;\n\n ev.preventDefault();\n const current = this.value || 0;\n \n if (ev.deltaY < 0) {\n this.updateValue(current + this.step);\n } else {\n this.updateValue(current - this.step);\n }\n };\n\n private increment = (ev: Event) => {\n ev.preventDefault(); // Prevent focus loss\n const current = this.value || 0;\n this.updateValue(current + this.step);\n // Trigger change event for buttons as they are \"final\" actions usually\n this.emitChange();\n };\n\n private decrement = (ev: Event) => {\n ev.preventDefault();\n const current = this.value || 0;\n this.updateValue(current - this.step);\n this.emitChange();\n };\n\n render() {\n return (\n <le-component component=\"le-number-input\" hostClass={classnames({ 'disabled': this.disabled })}>\n <div class=\"le-input-wrapper\">\n {this.label && (\n <label class=\"le-input-label\" htmlFor={this.name}>{this.label}</label>\n )}\n \n <div class={classnames('le-input-container', { 'has-error': !this.isValid })}>\n {this.iconStart && (\n <span class=\"icon-start\">{this.iconStart}</span>\n )}\n \n <input\n id={this.name}\n type=\"number\"\n name={this.name}\n placeholder={this.placeholder}\n min={this.min}\n max={this.max}\n step={this.step}\n value={this.value}\n disabled={this.disabled}\n readOnly={this.readonly}\n required={this.required}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onWheel={this.handleWheel}\n />\n \n {this.showSpinners && (\n <div class=\"le-input-controls\">\n <le-button\n mode=\"default\"\n variant=\"clear\" \n size=\"small\"\n icon-only\n class=\"le-input-control-btn\" \n onClick={this.increment}\n disabled={this.disabled || this.readonly || (this.max !== undefined && this.value >= this.max)}\n tabindex=\"-1\"\n >\n <span slot=\"icon-only\">↑</span>\n </le-button>\n <le-button\n mode=\"default\"\n variant=\"clear\" \n size=\"small\" \n icon-only \n class=\"le-input-control-btn\" \n onClick={this.decrement}\n disabled={this.disabled || this.readonly || (this.min !== undefined && this.value <= this.min)}\n tabindex=\"-1\"\n >\n <span slot=\"icon-only\">↓</span>\n </le-button>\n </div>\n )}\n </div>\n\n {!this.isValid && <div class=\"le-input-error\">{this.validationMessage}</div>}\n\n <div class=\"le-input-description\">\n <le-slot name=\"description\" type=\"text\" tag=\"p\" label=\"Description\">\n <slot name=\"description\"></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n );\n }\n}\n"]}