le-kit 0.1.12 → 0.1.14

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 (313) hide show
  1. package/dist/components/index.d.ts +33 -0
  2. package/dist/components/le-box.d.ts +11 -0
  3. package/dist/components/le-button.d.ts +11 -0
  4. package/dist/components/le-card.d.ts +11 -0
  5. package/dist/components/le-checkbox.d.ts +11 -0
  6. package/dist/components/le-component.d.ts +11 -0
  7. package/dist/components/le-number-input.d.ts +11 -0
  8. package/dist/components/le-popover.d.ts +11 -0
  9. package/dist/components/le-popup.d.ts +11 -0
  10. package/dist/components/le-round-progress.d.ts +11 -0
  11. package/dist/components/le-slot.d.ts +11 -0
  12. package/dist/components/le-stack.d.ts +11 -0
  13. package/dist/components/le-string-input.d.ts +11 -0
  14. package/dist/components/le-text.d.ts +11 -0
  15. package/dist/components/le-turntable.d.ts +11 -0
  16. package/dist/core/cjs/{index-BsRb_UTe.js → index-B0mg71He.js} +6 -6
  17. package/dist/core/cjs/index-B0mg71He.js.map +1 -0
  18. package/dist/core/cjs/index.cjs.js +2 -2
  19. package/dist/core/cjs/le-box.cjs.entry.js +2 -2
  20. package/dist/core/cjs/le-button.cjs.entry.js +2 -2
  21. package/dist/core/cjs/le-card.cjs.entry.js +2 -2
  22. package/dist/core/cjs/le-checkbox.cjs.entry.js +2 -2
  23. package/dist/core/cjs/le-kit.cjs.js +1 -1
  24. package/dist/core/cjs/le-number-input.cjs.entry.js +2 -2
  25. package/dist/core/cjs/le-popover.cjs.entry.js +1 -1
  26. package/dist/core/cjs/le-popup.cjs.entry.js +1 -1
  27. package/dist/core/cjs/le-round-progress.cjs.entry.js +1 -1
  28. package/dist/core/cjs/le-stack.cjs.entry.js +2 -2
  29. package/dist/core/cjs/le-string-input.cjs.entry.js +2 -2
  30. package/dist/core/cjs/le-text.cjs.entry.js +2 -2
  31. package/dist/core/cjs/le-turntable.cjs.entry.js +1 -1
  32. package/dist/core/cjs/loader.cjs.js +1 -1
  33. package/dist/{cjs/utils-DqhadIxH.js → core/cjs/utils-jdqP71LP.js} +3 -3
  34. package/dist/core/cjs/{utils-nsP8_w8_.js.map → utils-jdqP71LP.js.map} +1 -1
  35. package/dist/core/collection/global/app.js +4 -4
  36. package/dist/core/collection/global/app.js.map +1 -1
  37. package/dist/core/components/index.d.ts +33 -0
  38. package/dist/{esm → core/components}/index.js +9 -2
  39. package/dist/core/components/index.js.map +1 -0
  40. package/dist/core/components/le-box.d.ts +11 -0
  41. package/dist/{cjs/le-box.cjs.entry.js → core/components/le-box.js} +87 -14
  42. package/dist/core/components/le-box.js.map +1 -0
  43. package/dist/core/components/le-button.d.ts +11 -0
  44. package/dist/core/components/le-button.js +9 -0
  45. package/dist/core/components/le-button.js.map +1 -0
  46. package/dist/{esm/le-button_6.entry.js → core/components/le-button2.js} +919 -972
  47. package/dist/core/components/le-button2.js.map +1 -0
  48. package/dist/core/components/le-card.d.ts +11 -0
  49. package/dist/core/components/le-card.js +84 -0
  50. package/dist/core/components/le-card.js.map +1 -0
  51. package/dist/core/components/le-checkbox.d.ts +11 -0
  52. package/dist/core/components/le-checkbox.js +9 -0
  53. package/dist/core/components/le-checkbox.js.map +1 -0
  54. package/dist/core/components/le-component.d.ts +11 -0
  55. package/dist/core/components/le-component.js +9 -0
  56. package/dist/core/components/le-component.js.map +1 -0
  57. package/dist/core/components/le-number-input.d.ts +11 -0
  58. package/dist/{cjs/le-number-input.cjs.entry.js → core/components/le-number-input.js} +85 -15
  59. package/dist/core/components/le-number-input.js.map +1 -0
  60. package/dist/core/components/le-popover.d.ts +11 -0
  61. package/dist/core/components/le-popover.js +9 -0
  62. package/dist/core/components/le-popover.js.map +1 -0
  63. package/dist/{collection/components/le-popover/le-popover.js → core/components/le-popover2.js} +49 -360
  64. package/dist/core/components/le-popover2.js.map +1 -0
  65. package/dist/core/components/le-popup.d.ts +11 -0
  66. package/dist/{cjs/le-popup.cjs.entry.js → core/components/le-popup.js} +88 -21
  67. package/dist/core/components/le-popup.js.map +1 -0
  68. package/dist/core/components/le-round-progress.d.ts +11 -0
  69. package/dist/{cjs/le-round-progress.cjs.entry.js → core/components/le-round-progress.js} +43 -14
  70. package/dist/core/components/le-round-progress.js.map +1 -0
  71. package/dist/core/components/le-slot.d.ts +11 -0
  72. package/dist/core/components/le-slot.js +9 -0
  73. package/dist/core/components/le-slot.js.map +1 -0
  74. package/dist/core/components/le-stack.d.ts +11 -0
  75. package/dist/{cjs/le-stack.cjs.entry.js → core/components/le-stack.js} +78 -14
  76. package/dist/core/components/le-stack.js.map +1 -0
  77. package/dist/core/components/le-string-input.d.ts +11 -0
  78. package/dist/core/components/le-string-input.js +9 -0
  79. package/dist/core/components/le-string-input.js.map +1 -0
  80. package/dist/core/components/le-text.d.ts +11 -0
  81. package/dist/{cjs/le-text.cjs.entry.js → core/components/le-text.js} +80 -16
  82. package/dist/core/components/le-text.js.map +1 -0
  83. package/dist/core/components/le-turntable.d.ts +11 -0
  84. package/dist/{cjs/le-turntable.cjs.entry.js → core/components/le-turntable.js} +37 -12
  85. package/dist/core/components/le-turntable.js.map +1 -0
  86. package/dist/core/components/utils.js +310 -0
  87. package/dist/core/components/utils.js.map +1 -0
  88. package/dist/core/esm/{index-CJ-z5Zj1.js → index-SKsXnjWI.js} +6 -6
  89. package/dist/core/{le-kit/p-CJ-z5Zj1.js.map → esm/index-SKsXnjWI.js.map} +1 -1
  90. package/dist/core/esm/index.js +2 -2
  91. package/dist/core/esm/le-box.entry.js +2 -2
  92. package/dist/core/esm/le-button.entry.js +2 -2
  93. package/dist/core/esm/le-card.entry.js +2 -2
  94. package/dist/core/esm/le-checkbox.entry.js +2 -2
  95. package/dist/core/esm/le-kit.js +2 -2
  96. package/dist/core/esm/le-number-input.entry.js +2 -2
  97. package/dist/core/esm/le-popover.entry.js +1 -1
  98. package/dist/core/esm/le-popup.entry.js +1 -1
  99. package/dist/core/esm/le-round-progress.entry.js +1 -1
  100. package/dist/core/esm/le-stack.entry.js +2 -2
  101. package/dist/core/esm/le-string-input.entry.js +2 -2
  102. package/dist/core/esm/le-text.entry.js +2 -2
  103. package/dist/core/esm/le-turntable.entry.js +1 -1
  104. package/dist/core/esm/loader.js +2 -2
  105. package/dist/{esm/utils-Cf7fMI0j.js → core/esm/utils-DZdP1JiG.js} +3 -3
  106. package/dist/core/esm/{utils-Bxmld82M.js.map → utils-DZdP1JiG.js.map} +1 -1
  107. package/dist/core/le-kit/index.esm.js +1 -1
  108. package/dist/core/le-kit/le-kit.esm.js +1 -1
  109. package/dist/core/le-kit/p--VxUdzYV.js +2 -0
  110. package/dist/core/le-kit/{p-Drz36PDp.js.map → p--VxUdzYV.js.map} +1 -1
  111. package/dist/core/le-kit/{p-2ac4789a.entry.js → p-189cb775.entry.js} +2 -2
  112. package/dist/core/le-kit/{p-556086ca.entry.js → p-35c1d413.entry.js} +2 -2
  113. package/dist/core/le-kit/{p-aa6e906f.entry.js → p-4f133e72.entry.js} +2 -2
  114. package/dist/core/le-kit/{p-df552906.entry.js → p-55f70091.entry.js} +2 -2
  115. package/dist/core/le-kit/{p-e0861e82.entry.js → p-5fd7b23a.entry.js} +2 -2
  116. package/dist/core/le-kit/{p-5ef81068.entry.js → p-6e414a5c.entry.js} +2 -2
  117. package/dist/core/le-kit/{p-d75214f9.entry.js → p-7b121ca7.entry.js} +2 -2
  118. package/dist/core/le-kit/{p-45eace7c.entry.js → p-8c81fa95.entry.js} +2 -2
  119. package/dist/core/le-kit/{p-257495cc.entry.js → p-9aa81442.entry.js} +2 -2
  120. package/dist/core/le-kit/p-SKsXnjWI.js +3 -0
  121. package/dist/core/le-kit/p-SKsXnjWI.js.map +1 -0
  122. package/dist/core/le-kit/{p-66d35f48.entry.js → p-a9d05ef6.entry.js} +2 -2
  123. package/dist/core/le-kit/{p-73682c5e.entry.js → p-b2bd2a80.entry.js} +2 -2
  124. package/dist/core/le-kit/{p-0308bd1f.entry.js → p-ccac9611.entry.js} +2 -2
  125. package/dist/core/types/global/app.d.ts +4 -4
  126. package/dist/le-kit/assets/custom-elements.json +1230 -1230
  127. package/dist/le-kit/index-CAY3Hk_i.js +4559 -0
  128. package/dist/le-kit/index-CAY3Hk_i.js.map +1 -0
  129. package/dist/le-kit/index.esm.js +116 -2
  130. package/dist/le-kit/index.esm.js.map +1 -1
  131. package/dist/{esm → le-kit}/le-box.entry.js +3 -3
  132. package/dist/le-kit/le-button.entry.esm.js.map +1 -0
  133. package/dist/le-kit/le-button.entry.js +90 -0
  134. package/dist/{esm → le-kit}/le-card.entry.js +3 -3
  135. package/dist/le-kit/le-checkbox.entry.esm.js.map +1 -0
  136. package/dist/le-kit/le-checkbox.entry.js +59 -0
  137. package/dist/le-kit/le-component.entry.esm.js.map +1 -0
  138. package/dist/{collection/components/le-component/le-component.js → le-kit/le-component.entry.js} +19 -138
  139. package/dist/le-kit/le-kit.css +1010 -1
  140. package/dist/le-kit/le-kit.esm.js +48 -2
  141. package/dist/le-kit/le-kit.esm.js.map +1 -1
  142. package/dist/{esm → le-kit}/le-number-input.entry.js +5 -5
  143. package/dist/le-kit/le-popover.entry.esm.js.map +1 -0
  144. package/dist/le-kit/le-popover.entry.js +346 -0
  145. package/dist/{esm → le-kit}/le-popup.entry.js +6 -6
  146. package/dist/{esm → le-kit}/le-round-progress.entry.js +2 -2
  147. package/dist/le-kit/le-slot.entry.esm.js.map +1 -0
  148. package/dist/{collection/components/le-slot/le-slot.js → le-kit/le-slot.entry.js} +20 -273
  149. package/dist/{esm → le-kit}/le-stack.entry.js +3 -3
  150. package/dist/le-kit/le-string-input.entry.esm.js.map +1 -0
  151. package/dist/le-kit/le-string-input.entry.js +93 -0
  152. package/dist/{esm → le-kit}/le-text.entry.js +3 -3
  153. package/dist/{esm → le-kit}/le-turntable.entry.js +2 -2
  154. package/dist/{core/esm/utils-Bxmld82M.js → le-kit/utils-cwSNy7ZS.js} +3 -3
  155. package/dist/{esm/utils-Cf7fMI0j.js.map → le-kit/utils-cwSNy7ZS.js.map} +1 -1
  156. package/dist/types/global/app.d.ts +4 -4
  157. package/package.json +4 -5
  158. package/readme.md +2 -2
  159. package/custom-elements.json +0 -4305
  160. package/dist/cjs/index-o1DRKw1g.js +0 -1842
  161. package/dist/cjs/index-o1DRKw1g.js.map +0 -1
  162. package/dist/cjs/index.cjs.js +0 -119
  163. package/dist/cjs/index.cjs.js.map +0 -1
  164. package/dist/cjs/le-box.entry.cjs.js.map +0 -1
  165. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +0 -1
  166. package/dist/cjs/le-button_6.cjs.entry.js +0 -1206
  167. package/dist/cjs/le-card.cjs.entry.js +0 -29
  168. package/dist/cjs/le-card.entry.cjs.js.map +0 -1
  169. package/dist/cjs/le-kit.cjs.js +0 -25
  170. package/dist/cjs/le-kit.cjs.js.map +0 -1
  171. package/dist/cjs/le-number-input.entry.cjs.js.map +0 -1
  172. package/dist/cjs/le-popup.entry.cjs.js.map +0 -1
  173. package/dist/cjs/le-round-progress.entry.cjs.js.map +0 -1
  174. package/dist/cjs/le-stack.entry.cjs.js.map +0 -1
  175. package/dist/cjs/le-text.entry.cjs.js.map +0 -1
  176. package/dist/cjs/le-turntable.entry.cjs.js.map +0 -1
  177. package/dist/cjs/loader.cjs.js +0 -13
  178. package/dist/cjs/loader.cjs.js.map +0 -1
  179. package/dist/cjs/utils-DqhadIxH.js.map +0 -1
  180. package/dist/collection/assets/custom-elements.json +0 -4305
  181. package/dist/collection/collection-manifest.json +0 -26
  182. package/dist/collection/components/le-box/le-box.default.css +0 -37
  183. package/dist/collection/components/le-box/le-box.js +0 -614
  184. package/dist/collection/components/le-box/le-box.js.map +0 -1
  185. package/dist/collection/components/le-button/le-button.default.css +0 -263
  186. package/dist/collection/components/le-button/le-button.js +0 -368
  187. package/dist/collection/components/le-button/le-button.js.map +0 -1
  188. package/dist/collection/components/le-card/le-card.default.css +0 -74
  189. package/dist/collection/components/le-card/le-card.js +0 -102
  190. package/dist/collection/components/le-card/le-card.js.map +0 -1
  191. package/dist/collection/components/le-checkbox/le-checkbox.css +0 -93
  192. package/dist/collection/components/le-checkbox/le-checkbox.js +0 -192
  193. package/dist/collection/components/le-checkbox/le-checkbox.js.map +0 -1
  194. package/dist/collection/components/le-component/le-component.css +0 -189
  195. package/dist/collection/components/le-component/le-component.js.map +0 -1
  196. package/dist/collection/components/le-number-input/le-number-input.css +0 -135
  197. package/dist/collection/components/le-number-input/le-number-input.js +0 -515
  198. package/dist/collection/components/le-number-input/le-number-input.js.map +0 -1
  199. package/dist/collection/components/le-popover/le-popover.css +0 -143
  200. package/dist/collection/components/le-popover/le-popover.js.map +0 -1
  201. package/dist/collection/components/le-popup/le-popup.api.js +0 -101
  202. package/dist/collection/components/le-popup/le-popup.api.js.map +0 -1
  203. package/dist/collection/components/le-popup/le-popup.css +0 -222
  204. package/dist/collection/components/le-popup/le-popup.js +0 -596
  205. package/dist/collection/components/le-popup/le-popup.js.map +0 -1
  206. package/dist/collection/components/le-round-progress/le-round-progress.css +0 -34
  207. package/dist/collection/components/le-round-progress/le-round-progress.js +0 -184
  208. package/dist/collection/components/le-round-progress/le-round-progress.js.map +0 -1
  209. package/dist/collection/components/le-slot/le-slot.default.css +0 -222
  210. package/dist/collection/components/le-slot/le-slot.js.map +0 -1
  211. package/dist/collection/components/le-stack/le-stack.default.css +0 -37
  212. package/dist/collection/components/le-stack/le-stack.js +0 -389
  213. package/dist/collection/components/le-stack/le-stack.js.map +0 -1
  214. package/dist/collection/components/le-string-input/le-string-input.css +0 -83
  215. package/dist/collection/components/le-string-input/le-string-input.js +0 -359
  216. package/dist/collection/components/le-string-input/le-string-input.js.map +0 -1
  217. package/dist/collection/components/le-text/le-text.default.css +0 -169
  218. package/dist/collection/components/le-text/le-text.js +0 -475
  219. package/dist/collection/components/le-text/le-text.js.map +0 -1
  220. package/dist/collection/components/le-turntable/le-turntable.css +0 -10
  221. package/dist/collection/components/le-turntable/le-turntable.js +0 -210
  222. package/dist/collection/components/le-turntable/le-turntable.js.map +0 -1
  223. package/dist/collection/global/app.js +0 -167
  224. package/dist/collection/global/app.js.map +0 -1
  225. package/dist/collection/index.js +0 -15
  226. package/dist/collection/index.js.map +0 -1
  227. package/dist/collection/types/blocks.js +0 -115
  228. package/dist/collection/types/blocks.js.map +0 -1
  229. package/dist/collection/types/options.js +0 -2
  230. package/dist/collection/types/options.js.map +0 -1
  231. package/dist/collection/utils/utils.js +0 -141
  232. package/dist/collection/utils/utils.js.map +0 -1
  233. package/dist/core/cjs/index-BsRb_UTe.js.map +0 -1
  234. package/dist/core/cjs/utils-nsP8_w8_.js +0 -152
  235. package/dist/core/esm/index-CJ-z5Zj1.js.map +0 -1
  236. package/dist/core/le-kit/p-CJ-z5Zj1.js +0 -3
  237. package/dist/core/le-kit/p-Drz36PDp.js +0 -2
  238. package/dist/docs.d.ts +0 -443
  239. package/dist/docs.json +0 -5185
  240. package/dist/esm/index-CwNQ1GTa.js +0 -1824
  241. package/dist/esm/index-CwNQ1GTa.js.map +0 -1
  242. package/dist/esm/index.js.map +0 -1
  243. package/dist/esm/le-box.entry.js.map +0 -1
  244. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +0 -1
  245. package/dist/esm/le-card.entry.js.map +0 -1
  246. package/dist/esm/le-kit.js +0 -21
  247. package/dist/esm/le-kit.js.map +0 -1
  248. package/dist/esm/le-number-input.entry.js.map +0 -1
  249. package/dist/esm/le-popup.entry.js.map +0 -1
  250. package/dist/esm/le-round-progress.entry.js.map +0 -1
  251. package/dist/esm/le-stack.entry.js.map +0 -1
  252. package/dist/esm/le-text.entry.js.map +0 -1
  253. package/dist/esm/le-turntable.entry.js.map +0 -1
  254. package/dist/esm/loader.js +0 -11
  255. package/dist/esm/loader.js.map +0 -1
  256. package/dist/index.cjs.js +0 -1
  257. package/dist/index.js +0 -1
  258. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +0 -1
  259. package/dist/le-kit/p-08dbcc25.entry.js +0 -2
  260. package/dist/le-kit/p-08dbcc25.entry.js.map +0 -1
  261. package/dist/le-kit/p-5dc35729.entry.js +0 -2
  262. package/dist/le-kit/p-5dc35729.entry.js.map +0 -1
  263. package/dist/le-kit/p-64374730.entry.js +0 -2
  264. package/dist/le-kit/p-64374730.entry.js.map +0 -1
  265. package/dist/le-kit/p-79ec6f7c.entry.js +0 -2
  266. package/dist/le-kit/p-79ec6f7c.entry.js.map +0 -1
  267. package/dist/le-kit/p-8daf3c7f.entry.js +0 -2
  268. package/dist/le-kit/p-8daf3c7f.entry.js.map +0 -1
  269. package/dist/le-kit/p-9c69235d.entry.js +0 -2
  270. package/dist/le-kit/p-9c69235d.entry.js.map +0 -1
  271. package/dist/le-kit/p-CwNQ1GTa.js +0 -3
  272. package/dist/le-kit/p-CwNQ1GTa.js.map +0 -1
  273. package/dist/le-kit/p-ad398acd.entry.js +0 -2
  274. package/dist/le-kit/p-ad398acd.entry.js.map +0 -1
  275. package/dist/le-kit/p-b8122ad6.entry.js +0 -2
  276. package/dist/le-kit/p-b8122ad6.entry.js.map +0 -1
  277. package/dist/le-kit/p-f9008505.entry.js +0 -2
  278. package/dist/le-kit/p-f9008505.entry.js.map +0 -1
  279. package/dist/le-kit/p-y3FECAx9.js +0 -2
  280. package/dist/le-kit/p-y3FECAx9.js.map +0 -1
  281. package/dist/themes/base.css +0 -89
  282. package/dist/themes/dark.css +0 -100
  283. package/dist/themes/default.css +0 -108
  284. package/dist/themes/gradient.css +0 -100
  285. package/dist/themes/index.css +0 -413
  286. package/dist/themes/minimal.css +0 -100
  287. package/dist/themes/warm.css +0 -100
  288. /package/dist/{collection → components}/themes/base.css +0 -0
  289. /package/dist/{collection → components}/themes/dark.css +0 -0
  290. /package/dist/{collection → components}/themes/default.css +0 -0
  291. /package/dist/{collection → components}/themes/gradient.css +0 -0
  292. /package/dist/{collection → components}/themes/index.css +0 -0
  293. /package/dist/{collection → components}/themes/minimal.css +0 -0
  294. /package/dist/{collection → components}/themes/warm.css +0 -0
  295. /package/dist/core/le-kit/{p-2ac4789a.entry.js.map → p-189cb775.entry.js.map} +0 -0
  296. /package/dist/core/le-kit/{p-556086ca.entry.js.map → p-35c1d413.entry.js.map} +0 -0
  297. /package/dist/core/le-kit/{p-aa6e906f.entry.js.map → p-4f133e72.entry.js.map} +0 -0
  298. /package/dist/core/le-kit/{p-df552906.entry.js.map → p-55f70091.entry.js.map} +0 -0
  299. /package/dist/core/le-kit/{p-e0861e82.entry.js.map → p-5fd7b23a.entry.js.map} +0 -0
  300. /package/dist/core/le-kit/{p-5ef81068.entry.js.map → p-6e414a5c.entry.js.map} +0 -0
  301. /package/dist/core/le-kit/{p-d75214f9.entry.js.map → p-7b121ca7.entry.js.map} +0 -0
  302. /package/dist/core/le-kit/{p-45eace7c.entry.js.map → p-8c81fa95.entry.js.map} +0 -0
  303. /package/dist/core/le-kit/{p-257495cc.entry.js.map → p-9aa81442.entry.js.map} +0 -0
  304. /package/dist/core/le-kit/{p-66d35f48.entry.js.map → p-a9d05ef6.entry.js.map} +0 -0
  305. /package/dist/core/le-kit/{p-73682c5e.entry.js.map → p-b2bd2a80.entry.js.map} +0 -0
  306. /package/dist/core/le-kit/{p-0308bd1f.entry.js.map → p-ccac9611.entry.js.map} +0 -0
  307. /package/dist/le-kit/{themes → dist/components/themes}/base.css +0 -0
  308. /package/dist/le-kit/{themes → dist/components/themes}/dark.css +0 -0
  309. /package/dist/le-kit/{themes → dist/components/themes}/default.css +0 -0
  310. /package/dist/le-kit/{themes → dist/components/themes}/gradient.css +0 -0
  311. /package/dist/le-kit/{themes → dist/components/themes}/index.css +0 -0
  312. /package/dist/le-kit/{themes → dist/components/themes}/minimal.css +0 -0
  313. /package/dist/le-kit/{themes → dist/components/themes}/warm.css +0 -0
@@ -1,184 +0,0 @@
1
- import { h } from "@stencil/core";
2
- export class LeRoundProgress {
3
- // host element
4
- el;
5
- // progress value coming from an attribute
6
- value = 0;
7
- updateValue(newValue) {
8
- this.value = parseFloat(newValue);
9
- }
10
- // padding value coming from an attribute
11
- padding = 0;
12
- updatePadding(newValue) {
13
- this.padding = parseFloat(newValue);
14
- this.calcParams();
15
- }
16
- // the progress backgrounds can be as many as needed
17
- // but it should be JSON format: double quotes and strict commas
18
- paths;
19
- updateProgressBackgrounds(newValue) {
20
- this.progressPaths = JSON.parse(newValue);
21
- }
22
- progressPaths;
23
- params;
24
- /**
25
- * Component lifecycles
26
- *
27
- * Before the component is loaded, we need to calculate and update params
28
- * using the component size (width of the round progress)
29
- * and progress width (max of )
30
- */
31
- componentWillLoad() {
32
- if (typeof this.paths === 'string') {
33
- this.updateProgressBackgrounds(this.paths);
34
- }
35
- this.calcParams();
36
- }
37
- calcParams() {
38
- // get element width
39
- const width = this.el.getBoundingClientRect().width;
40
- const diameter = width - this.padding;
41
- // calc circumference — we'll need it later to calc the stroke paths
42
- const circumference = Math.PI * diameter;
43
- this.params = { width, diameter, circumference };
44
- }
45
- /**
46
- * Returns the viewPath attribute value for the SVG
47
- * based on the width of the parent element
48
- */
49
- getViewBox() {
50
- return '0 0 ' + this.params.width + ' ' + this.params.width;
51
- }
52
- /**
53
- * Returns the circular path for the progress stroke
54
- * and additional paths in the background
55
- */
56
- getPath() {
57
- return ('M' +
58
- this.params.width / 2 +
59
- ' ' +
60
- (this.params.width - this.params.diameter) / 2 +
61
- ' a ' +
62
- this.params.diameter / 2 +
63
- ' ' +
64
- this.params.diameter / 2 +
65
- ' 0 0 1 0 ' +
66
- this.params.diameter +
67
- ' a ' +
68
- this.params.diameter / 2 +
69
- ' ' +
70
- this.params.diameter / 2 +
71
- ' 0 0 1 0 -' +
72
- this.params.diameter);
73
- }
74
- getStrokeDashArray() {
75
- return (this.value / 100) * this.params.circumference + ', ' + this.params.circumference;
76
- }
77
- getPaths() {
78
- if (!this.progressPaths || !this.progressPaths.length) {
79
- return null;
80
- }
81
- let paths = [];
82
- this.progressPaths.forEach(bg => {
83
- paths.push(h("path", { class: "round-progress--path", d: this.getPath(), stroke: bg.color, "stroke-width": bg.width, "stroke-dasharray": bg.dasharray, "stroke-linecap": bg.linecap }));
84
- });
85
- return (h("svg", { viewBox: this.getViewBox(), class: "round-progress" }, paths));
86
- }
87
- render() {
88
- return (h("div", { key: '1ffc36704bee5d0822623ac4559ad2d4690095a4', class: "round-progress--container" }, this.getPaths(), h("svg", { key: '12e4dfe5fe2df0cb672d4c001459b8dcc8253591', viewBox: this.getViewBox(), class: "round-progress round-progress--progress" }, h("path", { key: 'd8ce69610687fb578ce2104bd3eccba24951dd96', class: "round-progress--circle", "stroke-dasharray": this.getStrokeDashArray(), d: this.getPath() })), h("slot", { key: '3976b08a7e838579d6af34a778a8756255d98e57' })));
89
- }
90
- static get is() { return "le-round-progress"; }
91
- static get encapsulation() { return "shadow"; }
92
- static get originalStyleUrls() {
93
- return {
94
- "$": ["le-round-progress.css"]
95
- };
96
- }
97
- static get styleUrls() {
98
- return {
99
- "$": ["le-round-progress.css"]
100
- };
101
- }
102
- static get properties() {
103
- return {
104
- "value": {
105
- "type": "number",
106
- "mutable": false,
107
- "complexType": {
108
- "original": "number",
109
- "resolved": "number",
110
- "references": {}
111
- },
112
- "required": false,
113
- "optional": false,
114
- "docs": {
115
- "tags": [],
116
- "text": ""
117
- },
118
- "getter": false,
119
- "setter": false,
120
- "reflect": false,
121
- "attribute": "value",
122
- "defaultValue": "0"
123
- },
124
- "padding": {
125
- "type": "number",
126
- "mutable": false,
127
- "complexType": {
128
- "original": "number",
129
- "resolved": "number",
130
- "references": {}
131
- },
132
- "required": false,
133
- "optional": false,
134
- "docs": {
135
- "tags": [],
136
- "text": ""
137
- },
138
- "getter": false,
139
- "setter": false,
140
- "reflect": false,
141
- "attribute": "padding",
142
- "defaultValue": "0"
143
- },
144
- "paths": {
145
- "type": "string",
146
- "mutable": false,
147
- "complexType": {
148
- "original": "string",
149
- "resolved": "string",
150
- "references": {}
151
- },
152
- "required": false,
153
- "optional": false,
154
- "docs": {
155
- "tags": [],
156
- "text": ""
157
- },
158
- "getter": false,
159
- "setter": false,
160
- "reflect": false,
161
- "attribute": "paths"
162
- }
163
- };
164
- }
165
- static get states() {
166
- return {
167
- "params": {}
168
- };
169
- }
170
- static get elementRef() { return "el"; }
171
- static get watchers() {
172
- return [{
173
- "propName": "value",
174
- "methodName": "updateValue"
175
- }, {
176
- "propName": "padding",
177
- "methodName": "updatePadding"
178
- }, {
179
- "propName": "paths",
180
- "methodName": "updateProgressBackgrounds"
181
- }];
182
- }
183
- }
184
- //# sourceMappingURL=le-round-progress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"le-round-progress.js","sourceRoot":"","sources":["../../../src/components/le-round-progress/le-round-progress.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Prop, State, Watch } from '@stencil/core';\n\n@Component({\n tag: 'le-round-progress',\n styleUrl: 'le-round-progress.css',\n shadow: true,\n})\nexport class LeRoundProgress {\n // host element\n @Element() el: HTMLElement;\n\n // progress value coming from an attribute\n @Prop() value: number = 0;\n @Watch('value')\n updateValue(newValue: string) {\n this.value = parseFloat(newValue);\n }\n\n // padding value coming from an attribute\n @Prop() padding: number = 0;\n @Watch('padding')\n updatePadding(newValue: string) {\n this.padding = parseFloat(newValue);\n this.calcParams();\n }\n\n // the progress backgrounds can be as many as needed\n // but it should be JSON format: double quotes and strict commas\n @Prop() paths: string;\n @Watch('paths')\n updateProgressBackgrounds(newValue: string) {\n this.progressPaths = JSON.parse(newValue);\n }\n progressPaths: any[];\n\n @State() params: {\n width: number;\n diameter: number;\n circumference: number;\n };\n\n /**\n * Component lifecycles\n *\n * Before the component is loaded, we need to calculate and update params\n * using the component size (width of the round progress)\n * and progress width (max of )\n */\n componentWillLoad() {\n if (typeof this.paths === 'string') {\n this.updateProgressBackgrounds(this.paths);\n }\n this.calcParams();\n }\n\n calcParams() {\n // get element width\n const width = this.el.getBoundingClientRect().width;\n const diameter = width - this.padding;\n // calc circumference — we'll need it later to calc the stroke paths\n const circumference = Math.PI * diameter;\n\n this.params = { width, diameter, circumference };\n }\n\n /**\n * Returns the viewPath attribute value for the SVG\n * based on the width of the parent element\n */\n getViewBox() {\n return '0 0 ' + this.params.width + ' ' + this.params.width;\n }\n\n /**\n * Returns the circular path for the progress stroke\n * and additional paths in the background\n */\n getPath() {\n return (\n 'M' +\n this.params.width / 2 +\n ' ' +\n (this.params.width - this.params.diameter) / 2 +\n ' a ' +\n this.params.diameter / 2 +\n ' ' +\n this.params.diameter / 2 +\n ' 0 0 1 0 ' +\n this.params.diameter +\n ' a ' +\n this.params.diameter / 2 +\n ' ' +\n this.params.diameter / 2 +\n ' 0 0 1 0 -' +\n this.params.diameter\n );\n }\n\n getStrokeDashArray() {\n return (this.value / 100) * this.params.circumference + ', ' + this.params.circumference;\n }\n\n getPaths() {\n if (!this.progressPaths || !this.progressPaths.length) {\n return null;\n }\n let paths = [];\n this.progressPaths.forEach(bg => {\n paths.push(<path class=\"round-progress--path\" d={this.getPath()} stroke={bg.color} stroke-width={bg.width} stroke-dasharray={bg.dasharray} stroke-linecap={bg.linecap} />);\n });\n return (\n <svg viewBox={this.getViewBox()} class=\"round-progress\">\n {paths}\n </svg>\n );\n }\n\n render() {\n return (\n <div class=\"round-progress--container\">\n {this.getPaths()}\n <svg viewBox={this.getViewBox()} class=\"round-progress round-progress--progress\">\n <path class=\"round-progress--circle\" stroke-dasharray={this.getStrokeDashArray()} d={this.getPath()} />\n </svg>\n <slot />\n </div>\n );\n }\n}\n"]}
@@ -1,222 +0,0 @@
1
- /**
2
- * Styles for le-slot component
3
- * Uses :host(.admin-mode) to toggle between default and admin styles
4
- */
5
-
6
- /* ============================================
7
- DEFAULT MODE - Invisible passthrough
8
- ============================================ */
9
- :host {
10
- display: contents;
11
- --le-slot-border-color: #0088ff;
12
- --le-slot-bg-color: rgba(0, 136, 255, 0.05);
13
- --le-slot-header-bg: rgb(218, 238, 255);
14
- --le-slot-label-color: #0066cc;
15
- --le-slot-description-color: #666;
16
- --le-slot-required-color: #e53935;
17
- --le-slot-dropzone-min-height: 20px;
18
- --le-slot-dropzone-border-color: #ccc;
19
- }
20
-
21
- .le-slot-container,
22
- .le-slot-header,
23
- .le-slot-description,
24
- .le-slot-dropzone,
25
- .le-slot-input {
26
- display: none;
27
- }
28
-
29
- /* Hidden slot wrapper - keeps slot in DOM but invisible */
30
- .hidden-slot {
31
- display: none;
32
- }
33
-
34
- /* ============================================
35
- ADMIN MODE - Visible placeholder UI
36
- ============================================ */
37
- :host(.admin-mode) {
38
- display: block;
39
- flex: 1;
40
- }
41
-
42
- :host(.admin-mode) .le-slot-container {
43
- position: relative;
44
- display: flex;
45
- flex-direction: column;
46
- border: 2px dashed var(--le-slot-border-color);
47
- border-radius: 4px;
48
- background: var(--le-slot-bg-color);
49
- margin: 4px 0;
50
- }
51
-
52
- :host(.admin-mode) .le-slot-header {
53
- display: flex;
54
- align-items: center;
55
- gap: 4px;
56
- padding: 0 0 0 var(--le-spacing-1, 4px);
57
- background: var(--le-slot-header-bg);
58
- border-bottom: 1px solid var(--le-slot-border-color);
59
- font-size: var(--le-font-size-xs, 11px);
60
- font-weight: 400;
61
- text-transform: capitalize;
62
- }
63
- :host(.admin-mode) .le-slot-header-no-label {
64
- justify-content: flex-end;
65
- height: 16px;
66
- border: none;
67
- background-color: transparent;
68
- }
69
-
70
- .le-slot-label {
71
- color: var(--le-slot-label-color);
72
- text-align: start;
73
- overflow: hidden;
74
- width: 0;
75
- flex: 1 1 0%;
76
- }
77
-
78
- .le-slot-required {
79
- color: var(--le-slot-required-color);
80
- font-weight: bold;
81
- }
82
-
83
- :host(.admin-mode) .le-slot-description {
84
- display: block;
85
- padding: 4px 8px;
86
- font-size: 12px;
87
- color: var(--le-slot-description-color);
88
- font-style: italic;
89
- }
90
- :host(.admin-mode) .le-slot-description-icon {
91
- display: inline-block;
92
- font-size: 9px;
93
- line-height: 1;
94
- cursor: pointer;
95
- color: var(--le-slot-description-color);
96
- }
97
-
98
- :host(.admin-mode) .le-slot-dropzone {
99
- display: block;
100
- min-height: var(--le-slot-dropzone-min-height);
101
- padding: var(--le-spacing-1, 4px);
102
- position: relative;
103
- }
104
-
105
- :host(.admin-mode) .le-slot-dropzone:empty::before {
106
- content: 'Drop content here';
107
- display: flex;
108
- align-items: center;
109
- justify-content: center;
110
- position: absolute;
111
- inset: 8px;
112
- border: 2px dashed var(--le-slot-dropzone-border-color);
113
- border-radius: 4px;
114
- color: #999;
115
- font-size: 12px;
116
- pointer-events: none;
117
- }
118
-
119
- /* Highlight when dragging over */
120
- :host(.admin-mode.drag-over) .le-slot-container {
121
- border-color: #00cc66;
122
- background: rgba(0, 204, 102, 0.1);
123
- }
124
-
125
- :host(.admin-mode.drag-over) .le-slot-dropzone:empty::before {
126
- border-color: #00cc66;
127
- color: #00cc66;
128
- content: 'Release to drop';
129
- }
130
-
131
- /* ============================================
132
- TEXT INPUT STYLES (Admin mode)
133
- ============================================ */
134
- :host(.admin-mode) .le-slot-input {
135
- display: block;
136
- padding: var(--le-spacing-1, 4px);
137
- }
138
-
139
- :host(.admin-mode) .le-slot-input input,
140
- :host(.admin-mode) .le-slot-input textarea {
141
- display: block;
142
- width: 100%;
143
- padding: 8px 10px;
144
- border: 1px solid var(--le-slot-dropzone-border-color);
145
- border-radius: 4px;
146
- font-family: inherit;
147
- font-size: 14px;
148
- line-height: 1.4;
149
- background: #fff;
150
- color: #333;
151
- box-sizing: border-box;
152
- transition: border-color 0.2s, box-shadow 0.2s;
153
- }
154
-
155
- :host(.admin-mode) .le-slot-input input:focus,
156
- :host(.admin-mode) .le-slot-input textarea:focus {
157
- outline: none;
158
- border-color: var(--le-slot-border-color);
159
- box-shadow: 0 0 0 3px rgba(0, 136, 255, 0.15);
160
- }
161
-
162
- :host(.admin-mode) .le-slot-input input::placeholder,
163
- :host(.admin-mode) .le-slot-input textarea::placeholder {
164
- color: #999;
165
- }
166
-
167
- :host(.admin-mode) .le-slot-input textarea {
168
- resize: vertical;
169
- min-height: 60px;
170
- }
171
-
172
- /* Hide the slot content in text/textarea mode - it's just for default value */
173
- :host(.admin-mode) .le-slot-input slot {
174
- display: none;
175
- }
176
-
177
- /* ============================================
178
- INVALID HTML STATE
179
- ============================================ */
180
- .le-slot-invalid {
181
- color: var(--le-slot-required-color);
182
- font-size: 10px;
183
- margin-left: auto;
184
- font-weight: normal;
185
- text-transform: none;
186
- }
187
-
188
- :host(.admin-mode) .le-slot-input.has-error input,
189
- :host(.admin-mode) .le-slot-input.has-error textarea {
190
- border-color: var(--le-slot-required-color);
191
- background: rgba(229, 57, 53, 0.05);
192
- }
193
-
194
- :host(.admin-mode) .le-slot-input.has-error input:focus,
195
- :host(.admin-mode) .le-slot-input.has-error textarea:focus {
196
- border-color: var(--le-slot-required-color);
197
- box-shadow: 0 0 0 3px rgba(229, 57, 53, 0.15);
198
- }
199
-
200
-
201
- /* ========================================
202
- Component Picker (Add Button & Popover)
203
- ======================================== */
204
- .le-slot-add-btn {
205
- font-size: 24px;
206
- line-height: 0px;
207
- width: 12px;
208
- height: 12px;
209
- }
210
-
211
- .le-slot-header-no-label .le-slot-add-btn {
212
- font-size: 16px;
213
- }
214
-
215
- .le-slot-button {
216
- width: 20px;
217
- height: 20px;
218
- }
219
-
220
- :host(.admin-mode) .le-slot-header-no-label.le-slot-header-text {
221
- height: 0;
222
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"le-slot.js","sourceRoot":"","sources":["../../../src/components/le-slot/le-slot.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, h, Host, Element, Event, EventEmitter, getAssetPath } from '@stencil/core';\nimport { classnames, observeModeChanges } from '../../utils/utils';\nimport { getLeKitConfig } from '../../global/app';\n\n/**\n * Slot placeholder component for admin/CMS mode.\n *\n * This component renders a visual placeholder for slots when in admin mode,\n * allowing CMS systems to show available drop zones for content or inline editing.\n *\n * In non-admin mode, this component renders nothing and acts as a passthrough.\n *\n * @slot - Default slot for placeholder content or drop zone UI\n *\n * @cmsInternal true\n * @cmsCategory System\n */\n@Component({\n tag: 'le-slot',\n styleUrl: 'le-slot.default.css',\n shadow: true,\n})\nexport class LeSlot {\n @Element() el: HTMLElement;\n\n /**\n * The type of slot content.\n * - `slot`: Default, shows a dropzone for components (default)\n * - `text`: Shows a single-line text input\n * - `textarea`: Shows a multi-line text area\n */\n @Prop() type: 'slot' | 'text' | 'textarea' = 'slot';\n\n /**\n * The name of the slot this placeholder represents.\n * Should match the slot name in the parent component.\n */\n @Prop() name: string = '';\n\n /**\n * Label to display in admin mode.\n * If not provided, the slot name will be used.\n */\n @Prop() label?: string;\n\n /**\n * Description of what content this slot accepts.\n * Shown in admin mode to guide content editors.\n */\n @Prop() description?: string;\n\n /**\n * Comma-separated list of allowed component tags for this slot.\n * Used by CMS to filter available components.\n *\n * @example \"le-card,le-button,le-text\"\n */\n @Prop() allowedComponents?: string;\n\n /**\n * Whether multiple components can be dropped in this slot.\n */\n @Prop() multiple: boolean = true;\n\n /**\n * Whether this slot is required to have content.\n */\n @Prop() required: boolean = false;\n\n /**\n * Placeholder text for text/textarea inputs in admin mode.\n */\n @Prop() placeholder?: string;\n\n /**\n * The HTML tag to create when there's no slotted element.\n * Used with type=\"text\" or type=\"textarea\" to auto-create elements.\n *\n * @example \"h3\" - creates <h3 slot=\"header\">content</h3>\n * @example \"p\" - creates <p slot=\"content\">content</p>\n */\n @Prop() tag?: string;\n\n /**\n * CSS styles for the slot dropzone container.\n * Useful for layouts - e.g., \"flex-direction: row\" for horizontal stacks.\n * Only applies in admin mode for type=\"slot\".\n */\n @Prop() slotStyle?: string;\n\n /**\n * Internal state to track admin mode\n */\n @State() private adminMode: boolean = false;\n\n /**\n * Internal state for text input value (synced from slot content)\n */\n @State() private textValue: string = '';\n\n /**\n * Whether the current textValue contains valid HTML\n */\n @State() private isValidHtml: boolean = true;\n\n /**\n * Available components loaded from Custom Elements Manifest\n */\n @State() private availableComponents: ComponentInfo[] = [];\n\n /**\n * Whether the component picker popover is open\n */\n @State() private pickerOpen: boolean = false;\n\n /**\n * Reference to the slot element to access assignedNodes\n */\n private slotRef?: HTMLSlotElement;\n\n /**\n * The original slotted element (e.g., <h3 slot=\"header\">)\n */\n private slottedElement?: Element;\n\n /**\n * Emitted when text content changes in admin mode.\n * The event detail contains the new text value and validity.\n */\n @Event() leSlotChange: EventEmitter<{ name: string; value: string; isValid: boolean }>;\n\n private disconnectModeObserver?: () => void;\n\n connectedCallback() {\n this.disconnectModeObserver = observeModeChanges(this.el, mode => {\n const wasAdmin = this.adminMode;\n this.adminMode = mode === 'admin';\n\n // When entering admin mode, read content from slotted elements\n if (this.adminMode && !wasAdmin) {\n // Need to wait for render to access slot ref\n requestAnimationFrame(() => this.readSlottedContent());\n\n // Load available components for the component picker\n if (this.type === 'slot') {\n this.loadAvailableComponents();\n }\n }\n });\n }\n\n disconnectedCallback() {\n this.disconnectModeObserver?.();\n }\n\n /**\n * Flag to prevent re-reading content right after we updated it\n */\n private isUpdating: boolean = false;\n\n /**\n * Read content from slotted elements via assignedNodes()\n */\n private readSlottedContent() {\n if (!this.slotRef) return;\n\n // Skip if we just updated the content ourselves\n if (this.isUpdating) {\n this.isUpdating = false;\n return;\n }\n\n const assignedNodes = this.slotRef.assignedNodes({ flatten: true });\n\n // For text/textarea types, we want to edit the innerHTML of slotted elements\n if (this.type === 'text' || this.type === 'textarea') {\n // Find the first element node (skip text nodes that are just whitespace)\n const elementNode = assignedNodes.find(node => node.nodeType === Node.ELEMENT_NODE) as Element | undefined;\n\n if (elementNode) {\n // Only update textValue if slotted element changed or we don't have one yet\n if (this.slottedElement !== elementNode) {\n this.slottedElement = elementNode;\n this.textValue = elementNode.innerHTML?.trim() || '';\n // console.log(`[le-slot \"${this.name}\"] Read slotted content:`, this.textValue);\n }\n } else {\n // No element, check for direct text content\n const textContent = assignedNodes\n .filter(node => node.nodeType === Node.TEXT_NODE)\n .map(node => node.textContent)\n .join('')\n .trim();\n\n if (textContent && !this.textValue) {\n this.textValue = textContent;\n // console.log(`[le-slot \"${this.name}\"] Read text content:`, this.textValue);\n }\n }\n }\n }\n\n /**\n * Validates if a string contains valid HTML\n */\n private validateHtml(html: string): boolean {\n // Empty string is valid\n if (!html.trim()) return true;\n\n // Create a template element to parse the HTML\n const template = document.createElement('template');\n template.innerHTML = html;\n\n // Check that we don't have obviously broken HTML\n // Count opening and closing tags for common elements\n const openTags = (html.match(/<[a-z][^>]*(?<!\\/)>/gi) || []).length;\n const closeTags = (html.match(/<\\/[a-z][^>]*>/gi) || []).length;\n const selfClosing = (html.match(/<[a-z][^>]*\\/>/gi) || []).length;\n\n // Simple validation: opening tags (minus self-closing) should roughly match closing tags\n // Allow some tolerance for void elements like <br>, <img>, etc.\n const voidElements = (html.match(/<(br|hr|img|input|meta|link|area|base|col|embed|param|source|track|wbr)[^>]*>/gi) || []).length;\n\n const effectiveOpenTags = openTags - selfClosing - voidElements;\n\n // If difference is too large, HTML is likely broken\n if (Math.abs(effectiveOpenTags - closeTags) > 1) {\n return false;\n }\n\n return true;\n }\n\n private handleTextInput = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n this.textValue = target.value;\n this.isValidHtml = this.validateHtml(this.textValue);\n\n if (this.isValidHtml) {\n // Set flag to prevent slotchange from re-reading what we just wrote\n this.isUpdating = true;\n\n console.log('Updating text value:', this.textValue, 'slottedElement:', this.slottedElement);\n\n if (this.slottedElement) {\n // Update existing slotted element's innerHTML\n this.slottedElement.innerHTML = this.textValue;\n } else if (this.tag && this.textValue) {\n // No slotted element exists\n // If the slot doesn't have a name, then it's the default slot\n // remove the existing non-slotted content (text nodes and elements without slot attribute)\n const rootNode = this.el.getRootNode();\n if (!this.name && rootNode instanceof ShadowRoot) {\n const hostComponent = rootNode.host;\n Array.from(hostComponent.childNodes).forEach(node => {\n if (node.nodeType === Node.TEXT_NODE || (node.nodeType === Node.ELEMENT_NODE && !(node as Element).hasAttribute('slot'))) {\n node.remove();\n }\n });\n }\n // create one using the specified tag\n this.createSlottedElement();\n } else if (this.textValue) {\n // no tag specified - just replace everything in the host component\n const rootNode = this.el.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n const hostComponent = rootNode.host;\n hostComponent.innerHTML = this.textValue;\n }\n }\n }\n\n this.leSlotChange.emit({\n name: this.name,\n value: this.textValue,\n isValid: this.isValidHtml,\n });\n };\n\n /**\n * Create a new slotted element when none exists.\n * The element is appended to the host component's light DOM.\n */\n private createSlottedElement() {\n if (!this.tag) return;\n\n // Find the host component (le-card, etc.) by traversing up through shadow DOM\n // le-slot is inside le-card's shadow DOM, so we need to find le-card's host\n const rootNode = this.el.getRootNode();\n if (!(rootNode instanceof ShadowRoot)) return;\n\n const hostComponent = rootNode.host;\n if (!hostComponent) return;\n\n // Create the new element\n const newElement = document.createElement(this.tag);\n newElement.innerHTML = this.textValue;\n\n // Set the slot attribute if this is a named slot\n if (this.name) {\n newElement.setAttribute('slot', this.name);\n }\n\n // Append to the host component's light DOM\n hostComponent.appendChild(newElement);\n\n // Store reference to the new element\n this.slottedElement = newElement;\n\n // console.log(`[le-slot \"${this.name}\"] Created new <${this.tag}> element`);\n }\n\n /**\n * Load available components from Custom Elements Manifest\n */\n private async loadAvailableComponents() {\n try {\n const { manifestUrl } = getLeKitConfig();\n const manifestUrlResolved = manifestUrl.startsWith('/')\n ? getAssetPath(`./assets${manifestUrl}`)\n : manifestUrl;\n const response = await fetch(manifestUrlResolved);\n const manifest = await response.json();\n\n const components: ComponentInfo[] = [];\n const allowedList = this.allowedComponents?.split(',').map(s => s.trim()) || [];\n\n for (const module of manifest.modules) {\n for (const declaration of module.declarations || []) {\n if (declaration.tagName && declaration.customElement) {\n // Skip internal components (le-slot, le-component, le-popover)\n const isInternal = ['le-slot', 'le-component', 'le-popover'].includes(declaration.tagName);\n if (isInternal) continue;\n\n // If allowedComponents is specified, filter by it\n if (allowedList.length > 0 && !allowedList.includes(declaration.tagName)) {\n continue;\n }\n\n components.push({\n tagName: declaration.tagName,\n name: this.formatComponentName(declaration.tagName),\n description: declaration.description || '',\n });\n }\n }\n }\n\n this.availableComponents = components || [];\n } catch (error) {\n console.warn('[le-slot] Failed to load component manifest:', error);\n }\n }\n\n /**\n * Format a tag name into a display name\n * e.g., 'le-card' -> 'Card'\n */\n private formatComponentName(tagName: string): string {\n return tagName\n .replace(/^le-/, '')\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n\n /**\n * Add a new component to the slot\n */\n private addComponent(tagName: string) {\n // Find the host component by traversing up through shadow DOM\n const rootNode = this.el.getRootNode();\n if (!(rootNode instanceof ShadowRoot)) return;\n\n const hostComponent = rootNode.host;\n if (!hostComponent) return;\n\n // Create the new component element\n const newElement = document.createElement(tagName);\n\n // Set the slot attribute if this is a named slot\n if (this.name) {\n newElement.setAttribute('slot', this.name);\n }\n\n // Append to the host component's light DOM\n hostComponent.appendChild(newElement);\n\n // Emit change event so the page can save\n this.leSlotChange.emit({\n name: this.name,\n value: hostComponent.innerHTML,\n isValid: true,\n });\n }\n\n /**\n * Handle slot change event to re-read content when nodes are assigned\n */\n private handleSlotChange = () => {\n this.readSlottedContent();\n };\n\n render() {\n const displayLabel = this.label || this.name;\n\n // Always render the same structure, CSS handles visibility via .admin-mode class\n return (\n <Host\n class={{\n 'admin-mode': this.adminMode,\n 'invalid-html': !this.isValidHtml,\n }}\n role={this.adminMode ? 'region' : undefined}\n aria-label={this.adminMode ? `Slot: ${displayLabel}` : undefined}\n data-slot-name={this.name}\n data-slot-type={this.type}\n data-allowed={this.allowedComponents}\n data-multiple={this.multiple}\n data-required={this.required}\n >\n {this.adminMode ? (\n <div class=\"le-slot-container\">\n <div\n class={classnames('le-slot-header', {\n 'le-slot-header-no-label': !displayLabel,\n 'le-slot-header-text': this.type === 'text',\n 'le-slot-header-error': !this.isValidHtml,\n })}\n >\n {displayLabel && (\n <span class=\"le-slot-label\">\n {displayLabel}\n {this.required && <span class=\"le-slot-required\">*</span>}\n </span>\n )}\n {/* {this.description && <le-popover mode=\"default\" showClose={false} align=\"end\" position=\"bottom\">\n <span slot=\"trigger\" class=\"le-slot-description-icon\">ℹ️</span>\n {this.description}\n </le-popover>} */}\n {!this.isValidHtml && <span class=\"le-slot-invalid\">⚠ Invalid HTML</span>}\n {this.type === 'slot' && this.adminMode && (\n <le-popover\n mode=\"default\"\n showClose={true}\n align=\"start\"\n position=\"right\"\n popoverTitle=\"Add Component\"\n open={this.pickerOpen}\n onLePopoverOpen={() => (this.pickerOpen = true)}\n onLePopoverClose={() => (this.pickerOpen = false)}\n >\n <le-button type=\"button\" class=\"le-slot-button\" slot=\"trigger\" variant=\"clear\" size=\"small\" aria-label=\"Add component\" icon-only>\n <span class=\"le-slot-add-btn\" slot=\"icon-only\">\n +\n </span>\n </le-button>\n <div class=\"le-slot-picker\">\n {this.availableComponents.length > 0 ? (\n <ul class=\"le-slot-picker-list\">\n {this.availableComponents.map(component => (\n <li key={component.tagName}>\n <button\n class=\"le-slot-picker-item\"\n onClick={() => {\n this.addComponent(component.tagName);\n this.pickerOpen = false;\n }}\n >\n <span class=\"le-slot-picker-name\">{component.name}</span>\n {component.description && <span class=\"le-slot-picker-desc\">{component.description}</span>}\n </button>\n </li>\n ))}\n </ul>\n ) : (\n <div class=\"le-slot-picker-empty\">No components available</div>\n )}\n </div>\n </le-popover>\n )}\n </div>\n {this.renderContent()}\n </div>\n ) : (\n // In default mode, just pass through the slot - slotted content renders naturally\n // Note: We use unnamed slot here because named slots from parent component\n // are passed as le-slot's light DOM children\n <slot\n // ref={(el) => this.slotRef = el as HTMLSlotElement}\n // onSlotchange={this.handleSlotChange}\n ></slot>\n )}\n </Host>\n );\n }\n\n private renderContent() {\n // Create the slot element with ref for reading assignedNodes\n // Wrap in a hidden div since slot elements can't have style prop in Stencil\n // Note: We use unnamed slot here because named slots from parent component\n // are passed as le-slot's light DOM children\n const slotElement = (\n <div class=\"hidden-slot\">\n <slot ref={el => (this.slotRef = el as HTMLSlotElement)} onSlotchange={this.handleSlotChange}></slot>\n </div>\n );\n\n switch (this.type) {\n case 'text':\n return (\n <div class={{ 'le-slot-input': true, 'has-error': !this.isValidHtml }}>\n <le-string-input\n mode=\"default\"\n value={this.textValue}\n placeholder={this.placeholder || `Enter ${this.label || this.name || 'text'}...`}\n onChange={this.handleTextInput}\n // required={this.required}\n ></le-string-input>\n {slotElement}\n </div>\n );\n\n case 'textarea':\n return (\n <div class={{ 'le-slot-input': true, 'has-error': !this.isValidHtml }}>\n <textarea\n value={this.textValue}\n placeholder={this.placeholder || `Enter ${this.label || this.name || 'text'}...`}\n onInput={this.handleTextInput}\n required={this.required}\n rows={3}\n ></textarea>\n {slotElement}\n </div>\n );\n\n case 'slot':\n default:\n // Parse slotStyle string into style object if provided\n const dropzoneStyle: { [key: string]: string } = {};\n if (this.slotStyle) {\n this.slotStyle.split(';').forEach(rule => {\n const [prop, value] = rule.split(':').map(s => s.trim());\n if (prop && value) {\n // Convert kebab-case to camelCase for style object\n const camelProp = prop.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n dropzoneStyle[camelProp] = value;\n }\n });\n }\n return (\n <div class=\"le-slot-dropzone\" style={dropzoneStyle}>\n <slot ref={el => (this.slotRef = el as HTMLSlotElement)} onSlotchange={this.handleSlotChange}></slot>\n </div>\n );\n }\n }\n}\n\n/**\n * Component info from the manifest\n */\ninterface ComponentInfo {\n tagName: string;\n name: string;\n description: string;\n}\n"]}
@@ -1,37 +0,0 @@
1
- /**
2
- * le-stack default styles
3
- *
4
- * The component uses inline styles for flex properties to allow
5
- * dynamic prop-based configuration. This CSS handles theming.
6
- */
7
-
8
- :host {
9
- display: block;
10
- }
11
-
12
- :host([hidden]) {
13
- display: none;
14
- }
15
-
16
- /* Base stack container */
17
- .stack {
18
- gap: var(--le-stack-gap, var(--le-space-md));
19
- }
20
-
21
- /* Full width/height variants */
22
- :host(.full-width) {
23
- width: 100%;
24
- }
25
-
26
- :host(.full-height) {
27
- height: 100%;
28
- }
29
-
30
- /* Direction-specific defaults */
31
- :host(.direction-horizontal) .stack {
32
- min-height: 0;
33
- }
34
-
35
- :host(.direction-vertical) .stack {
36
- min-width: 0;
37
- }