le-kit 0.5.1 → 0.5.3

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 (317) hide show
  1. package/LLM_CONTEXT.md +22 -0
  2. package/dist/cjs/le-bar_16.cjs.entry.js +945 -1257
  3. package/dist/cjs/le-box.cjs.entry.js +40 -88
  4. package/dist/cjs/le-breadcrumbs.cjs.entry.js +223 -0
  5. package/dist/cjs/le-card.cjs.entry.js +11 -11
  6. package/dist/cjs/le-code-input.cjs.entry.js +76 -110
  7. package/dist/cjs/le-combobox.cjs.entry.js +126 -153
  8. package/dist/cjs/le-header-placeholder.cjs.entry.js +1 -1
  9. package/dist/cjs/le-kit.cjs.js +1 -1
  10. package/dist/cjs/le-multiselect.cjs.entry.js +149 -171
  11. package/dist/cjs/le-number-input.cjs.entry.js +89 -129
  12. package/dist/cjs/le-round-progress.cjs.entry.js +6 -11
  13. package/dist/cjs/le-segmented-control.cjs.entry.js +77 -87
  14. package/dist/cjs/le-side-panel-toggle.cjs.entry.js +59 -75
  15. package/dist/cjs/le-side-panel.cjs.entry.js +130 -137
  16. package/dist/cjs/le-stack.cjs.entry.js +38 -51
  17. package/dist/cjs/le-tab-bar.cjs.entry.js +80 -89
  18. package/dist/cjs/le-tab-panel.cjs.entry.js +21 -39
  19. package/dist/cjs/le-tab.cjs.entry.js +53 -91
  20. package/dist/cjs/le-tabs.cjs.entry.js +112 -122
  21. package/dist/cjs/le-tag.cjs.entry.js +23 -40
  22. package/dist/cjs/le-text.cjs.entry.js +131 -148
  23. package/dist/cjs/le-turntable.cjs.entry.js +17 -25
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/collection/collection-manifest.json +1 -0
  26. package/dist/collection/components/le-bar/le-bar.js +132 -139
  27. package/dist/collection/components/le-bar/le-bar.js.map +1 -1
  28. package/dist/collection/components/le-box/le-box.js +41 -88
  29. package/dist/collection/components/le-box/le-box.js.map +1 -1
  30. package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.css +72 -0
  31. package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js +372 -0
  32. package/dist/collection/components/le-breadcrumbs/le-breadcrumbs.js.map +1 -0
  33. package/dist/collection/components/le-button/le-button.js +50 -79
  34. package/dist/collection/components/le-button/le-button.js.map +1 -1
  35. package/dist/collection/components/le-card/le-card.js +12 -11
  36. package/dist/collection/components/le-card/le-card.js.map +1 -1
  37. package/dist/collection/components/le-checkbox/le-checkbox.js +27 -42
  38. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -1
  39. package/dist/collection/components/le-code-input/le-code-input.js +77 -110
  40. package/dist/collection/components/le-code-input/le-code-input.js.map +1 -1
  41. package/dist/collection/components/le-collapse/le-collapse.js +15 -14
  42. package/dist/collection/components/le-collapse/le-collapse.js.map +1 -1
  43. package/dist/collection/components/le-combobox/le-combobox.js +127 -153
  44. package/dist/collection/components/le-combobox/le-combobox.js.map +1 -1
  45. package/dist/collection/components/le-component/le-component.js +14 -38
  46. package/dist/collection/components/le-component/le-component.js.map +1 -1
  47. package/dist/collection/components/le-current-heading/le-current-heading.js +6 -5
  48. package/dist/collection/components/le-current-heading/le-current-heading.js.map +1 -1
  49. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js +139 -165
  50. package/dist/collection/components/le-dropdown-base/le-dropdown-base.js.map +1 -1
  51. package/dist/collection/components/le-header/le-header.js +22 -45
  52. package/dist/collection/components/le-header/le-header.js.map +1 -1
  53. package/dist/collection/components/le-header-placeholder/le-header-placeholder.js +1 -1
  54. package/dist/collection/components/le-icon/le-icon.js +14 -14
  55. package/dist/collection/components/le-icon/le-icon.js.map +1 -1
  56. package/dist/collection/components/le-multiselect/le-multiselect.js +150 -171
  57. package/dist/collection/components/le-multiselect/le-multiselect.js.map +1 -1
  58. package/dist/collection/components/le-navigation/le-navigation.js +118 -128
  59. package/dist/collection/components/le-navigation/le-navigation.js.map +1 -1
  60. package/dist/collection/components/le-number-input/le-number-input.js +90 -129
  61. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -1
  62. package/dist/collection/components/le-popover/le-popover.css +2 -1
  63. package/dist/collection/components/le-popover/le-popover.js +101 -126
  64. package/dist/collection/components/le-popover/le-popover.js.map +1 -1
  65. package/dist/collection/components/le-popup/le-popup.js +89 -115
  66. package/dist/collection/components/le-popup/le-popup.js.map +1 -1
  67. package/dist/collection/components/le-round-progress/le-round-progress.js +7 -12
  68. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -1
  69. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js +6 -7
  70. package/dist/collection/components/le-scroll-progress/le-scroll-progress.js.map +1 -1
  71. package/dist/collection/components/le-segmented-control/le-segmented-control.js +78 -87
  72. package/dist/collection/components/le-segmented-control/le-segmented-control.js.map +1 -1
  73. package/dist/collection/components/le-select/le-select.js +88 -110
  74. package/dist/collection/components/le-select/le-select.js.map +1 -1
  75. package/dist/collection/components/le-side-panel/le-side-panel.css +10 -1
  76. package/dist/collection/components/le-side-panel/le-side-panel.js +131 -136
  77. package/dist/collection/components/le-side-panel/le-side-panel.js.map +1 -1
  78. package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js +60 -75
  79. package/dist/collection/components/le-side-panel-toggle/le-side-panel-toggle.js.map +1 -1
  80. package/dist/collection/components/le-slot/le-slot.js +96 -144
  81. package/dist/collection/components/le-slot/le-slot.js.map +1 -1
  82. package/dist/collection/components/le-stack/le-stack.js +39 -51
  83. package/dist/collection/components/le-stack/le-stack.js.map +1 -1
  84. package/dist/collection/components/le-string-input/le-string-input.js +41 -84
  85. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -1
  86. package/dist/collection/components/le-tab/le-tab.js +54 -91
  87. package/dist/collection/components/le-tab/le-tab.js.map +1 -1
  88. package/dist/collection/components/le-tab-bar/le-tab-bar.js +81 -89
  89. package/dist/collection/components/le-tab-bar/le-tab-bar.js.map +1 -1
  90. package/dist/collection/components/le-tab-panel/le-tab-panel.js +22 -39
  91. package/dist/collection/components/le-tab-panel/le-tab-panel.js.map +1 -1
  92. package/dist/collection/components/le-tabs/le-tabs.js +113 -122
  93. package/dist/collection/components/le-tabs/le-tabs.js.map +1 -1
  94. package/dist/collection/components/le-tag/le-tag.js +25 -40
  95. package/dist/collection/components/le-tag/le-tag.js.map +1 -1
  96. package/dist/collection/components/le-text/le-text.js +132 -148
  97. package/dist/collection/components/le-text/le-text.js.map +1 -1
  98. package/dist/collection/components/le-turntable/le-turntable.js +18 -26
  99. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -1
  100. package/dist/collection/dist/components/assets/custom-elements.json +1371 -1043
  101. package/dist/collection/dist/components/assets/icons/arrow-left.json +21 -0
  102. package/dist/collection/dist/components/assets/icons/arrow-right.json +21 -0
  103. package/dist/collection/dist/components/assets/icons/check.json +12 -0
  104. package/dist/collection/dist/components/assets/icons/chevron-down.json +1 -2
  105. package/dist/collection/dist/components/assets/icons/chevron-left.json +12 -0
  106. package/dist/collection/dist/components/assets/icons/chevron-right.json +12 -0
  107. package/dist/collection/dist/components/assets/icons/chevron-up.json +12 -0
  108. package/dist/components/assets/custom-elements.json +1371 -1043
  109. package/dist/components/assets/icons/arrow-left.json +21 -0
  110. package/dist/components/assets/icons/arrow-right.json +21 -0
  111. package/dist/components/assets/icons/check.json +12 -0
  112. package/dist/components/assets/icons/chevron-down.json +1 -2
  113. package/dist/components/assets/icons/chevron-left.json +12 -0
  114. package/dist/components/assets/icons/chevron-right.json +12 -0
  115. package/dist/components/assets/icons/chevron-up.json +12 -0
  116. package/dist/components/le-bar2.js +132 -140
  117. package/dist/components/le-bar2.js.map +1 -1
  118. package/dist/components/le-box.js +41 -89
  119. package/dist/components/le-box.js.map +1 -1
  120. package/dist/components/le-breadcrumbs.d.ts +11 -0
  121. package/dist/components/le-breadcrumbs.js +327 -0
  122. package/dist/components/le-breadcrumbs.js.map +1 -0
  123. package/dist/components/le-button2.js +405 -619
  124. package/dist/components/le-button2.js.map +1 -1
  125. package/dist/components/le-card.js +12 -12
  126. package/dist/components/le-card.js.map +1 -1
  127. package/dist/components/le-code-input.js +77 -111
  128. package/dist/components/le-code-input.js.map +1 -1
  129. package/dist/components/le-collapse2.js +15 -15
  130. package/dist/components/le-collapse2.js.map +1 -1
  131. package/dist/components/le-combobox.js +127 -154
  132. package/dist/components/le-combobox.js.map +1 -1
  133. package/dist/components/le-current-heading.js +6 -6
  134. package/dist/components/le-current-heading.js.map +1 -1
  135. package/dist/components/le-dropdown-base2.js +139 -166
  136. package/dist/components/le-dropdown-base2.js.map +1 -1
  137. package/dist/components/le-header-placeholder.js +1 -1
  138. package/dist/components/le-header.js +22 -46
  139. package/dist/components/le-header.js.map +1 -1
  140. package/dist/components/le-icon2.js +14 -15
  141. package/dist/components/le-icon2.js.map +1 -1
  142. package/dist/components/le-multiselect.js +150 -172
  143. package/dist/components/le-multiselect.js.map +1 -1
  144. package/dist/components/le-navigation.js +1 -494
  145. package/dist/components/le-navigation.js.map +1 -1
  146. package/dist/components/le-navigation2.js +488 -0
  147. package/dist/components/le-navigation2.js.map +1 -0
  148. package/dist/components/le-number-input.js +90 -130
  149. package/dist/components/le-number-input.js.map +1 -1
  150. package/dist/components/le-popover2.js +103 -128
  151. package/dist/components/le-popover2.js.map +1 -1
  152. package/dist/components/le-round-progress.js +7 -12
  153. package/dist/components/le-round-progress.js.map +1 -1
  154. package/dist/components/le-scroll-progress.js +6 -8
  155. package/dist/components/le-scroll-progress.js.map +1 -1
  156. package/dist/components/le-segmented-control.js +78 -88
  157. package/dist/components/le-segmented-control.js.map +1 -1
  158. package/dist/components/le-side-panel-toggle2.js +60 -76
  159. package/dist/components/le-side-panel-toggle2.js.map +1 -1
  160. package/dist/components/le-side-panel.js +133 -139
  161. package/dist/components/le-side-panel.js.map +1 -1
  162. package/dist/components/le-stack.js +39 -52
  163. package/dist/components/le-stack.js.map +1 -1
  164. package/dist/components/le-tab-bar.js +81 -90
  165. package/dist/components/le-tab-bar.js.map +1 -1
  166. package/dist/components/le-tab-panel.js +22 -40
  167. package/dist/components/le-tab-panel.js.map +1 -1
  168. package/dist/components/le-tab2.js +54 -92
  169. package/dist/components/le-tab2.js.map +1 -1
  170. package/dist/components/le-tabs.js +113 -123
  171. package/dist/components/le-tabs.js.map +1 -1
  172. package/dist/components/le-tag2.js +24 -41
  173. package/dist/components/le-tag2.js.map +1 -1
  174. package/dist/components/le-text.js +132 -149
  175. package/dist/components/le-text.js.map +1 -1
  176. package/dist/components/le-turntable.js +18 -26
  177. package/dist/components/le-turntable.js.map +1 -1
  178. package/dist/docs.json +294 -2
  179. package/dist/esm/le-bar_16.entry.js +946 -1258
  180. package/dist/esm/le-box.entry.js +41 -89
  181. package/dist/esm/le-box.entry.js.map +1 -1
  182. package/dist/esm/le-breadcrumbs.entry.js +221 -0
  183. package/dist/esm/le-breadcrumbs.entry.js.map +1 -0
  184. package/dist/esm/le-card.entry.js +12 -12
  185. package/dist/esm/le-card.entry.js.map +1 -1
  186. package/dist/esm/le-code-input.entry.js +77 -111
  187. package/dist/esm/le-code-input.entry.js.map +1 -1
  188. package/dist/esm/le-combobox.entry.js +127 -154
  189. package/dist/esm/le-combobox.entry.js.map +1 -1
  190. package/dist/esm/le-header-placeholder.entry.js +1 -1
  191. package/dist/esm/le-kit.js +1 -1
  192. package/dist/esm/le-multiselect.entry.js +150 -172
  193. package/dist/esm/le-multiselect.entry.js.map +1 -1
  194. package/dist/esm/le-number-input.entry.js +90 -130
  195. package/dist/esm/le-number-input.entry.js.map +1 -1
  196. package/dist/esm/le-round-progress.entry.js +7 -12
  197. package/dist/esm/le-round-progress.entry.js.map +1 -1
  198. package/dist/esm/le-segmented-control.entry.js +78 -88
  199. package/dist/esm/le-segmented-control.entry.js.map +1 -1
  200. package/dist/esm/le-side-panel-toggle.entry.js +60 -76
  201. package/dist/esm/le-side-panel-toggle.entry.js.map +1 -1
  202. package/dist/esm/le-side-panel.entry.js +131 -138
  203. package/dist/esm/le-side-panel.entry.js.map +1 -1
  204. package/dist/esm/le-stack.entry.js +39 -52
  205. package/dist/esm/le-stack.entry.js.map +1 -1
  206. package/dist/esm/le-tab-bar.entry.js +81 -90
  207. package/dist/esm/le-tab-bar.entry.js.map +1 -1
  208. package/dist/esm/le-tab-panel.entry.js +22 -40
  209. package/dist/esm/le-tab-panel.entry.js.map +1 -1
  210. package/dist/esm/le-tab.entry.js +54 -92
  211. package/dist/esm/le-tab.entry.js.map +1 -1
  212. package/dist/esm/le-tabs.entry.js +113 -123
  213. package/dist/esm/le-tabs.entry.js.map +1 -1
  214. package/dist/esm/le-tag.entry.js +23 -40
  215. package/dist/esm/le-tag.entry.js.map +1 -1
  216. package/dist/esm/le-text.entry.js +132 -149
  217. package/dist/esm/le-text.entry.js.map +1 -1
  218. package/dist/esm/le-turntable.entry.js +18 -26
  219. package/dist/esm/le-turntable.entry.js.map +1 -1
  220. package/dist/esm/loader.js +1 -1
  221. package/dist/le-kit/dist/components/assets/custom-elements.json +1371 -1043
  222. package/dist/le-kit/dist/components/assets/icons/arrow-left.json +21 -0
  223. package/dist/le-kit/dist/components/assets/icons/arrow-right.json +21 -0
  224. package/dist/le-kit/dist/components/assets/icons/check.json +12 -0
  225. package/dist/le-kit/dist/components/assets/icons/chevron-down.json +1 -2
  226. package/dist/le-kit/dist/components/assets/icons/chevron-left.json +12 -0
  227. package/dist/le-kit/dist/components/assets/icons/chevron-right.json +12 -0
  228. package/dist/le-kit/dist/components/assets/icons/chevron-up.json +12 -0
  229. package/dist/le-kit/le-kit.esm.js +1 -1
  230. package/dist/le-kit/p-3067b18f.entry.js +2 -0
  231. package/dist/le-kit/p-3067b18f.entry.js.map +1 -0
  232. package/dist/le-kit/p-34c4d97d.entry.js +2 -0
  233. package/dist/le-kit/p-34c4d97d.entry.js.map +1 -0
  234. package/dist/le-kit/p-45182541.entry.js +2 -0
  235. package/dist/le-kit/p-45182541.entry.js.map +1 -0
  236. package/dist/le-kit/p-52a41c96.entry.js +2 -0
  237. package/dist/le-kit/p-52a41c96.entry.js.map +1 -0
  238. package/dist/le-kit/p-55fb5dd2.entry.js +2 -0
  239. package/dist/le-kit/p-55fb5dd2.entry.js.map +1 -0
  240. package/dist/le-kit/{p-ab6c1def.entry.js → p-649025f4.entry.js} +2 -2
  241. package/dist/le-kit/p-649025f4.entry.js.map +1 -0
  242. package/dist/le-kit/p-67930309.entry.js +2 -0
  243. package/dist/le-kit/p-67930309.entry.js.map +1 -0
  244. package/dist/le-kit/p-6d222705.entry.js +2 -0
  245. package/dist/le-kit/p-6d222705.entry.js.map +1 -0
  246. package/dist/le-kit/p-8049e0c2.entry.js +2 -0
  247. package/dist/le-kit/p-8049e0c2.entry.js.map +1 -0
  248. package/dist/le-kit/p-884f57bd.entry.js +2 -0
  249. package/dist/le-kit/p-88c70f9d.entry.js +2 -0
  250. package/dist/le-kit/p-88c70f9d.entry.js.map +1 -0
  251. package/dist/le-kit/p-96610729.entry.js +2 -0
  252. package/dist/le-kit/p-96610729.entry.js.map +1 -0
  253. package/dist/le-kit/p-a34054e0.entry.js +2 -0
  254. package/dist/le-kit/p-a34054e0.entry.js.map +1 -0
  255. package/dist/le-kit/p-a388e46a.entry.js +2 -0
  256. package/dist/le-kit/p-a388e46a.entry.js.map +1 -0
  257. package/dist/le-kit/p-c0c53650.entry.js +2 -0
  258. package/dist/le-kit/p-c0c53650.entry.js.map +1 -0
  259. package/dist/le-kit/p-cbf17514.entry.js +2 -0
  260. package/dist/le-kit/p-cbf17514.entry.js.map +1 -0
  261. package/dist/le-kit/p-d934de74.entry.js +2 -0
  262. package/dist/le-kit/p-d934de74.entry.js.map +1 -0
  263. package/dist/le-kit/p-de72c8b5.entry.js +2 -0
  264. package/dist/le-kit/p-de72c8b5.entry.js.map +1 -0
  265. package/dist/le-kit/p-e3dd0f2a.entry.js +2 -0
  266. package/dist/le-kit/p-e3dd0f2a.entry.js.map +1 -0
  267. package/dist/le-kit/p-ee170967.entry.js +2 -0
  268. package/dist/le-kit/p-ee170967.entry.js.map +1 -0
  269. package/dist/le-kit/p-eedb2f75.entry.js +2 -0
  270. package/dist/le-kit/p-eedb2f75.entry.js.map +1 -0
  271. package/dist/types/components/le-breadcrumbs/le-breadcrumbs.d.ts +57 -0
  272. package/dist/types/components/le-side-panel/le-side-panel.d.ts +2 -0
  273. package/dist/types/components.d.ts +84 -0
  274. package/package.json +1 -1
  275. package/dist/collection/assets/icons/chevron-down.svg +0 -3
  276. package/dist/collection/dist/components/assets/icons/chevron-down.svg +0 -3
  277. package/dist/components/assets/icons/chevron-down.svg +0 -3
  278. package/dist/le-kit/dist/components/assets/icons/chevron-down.svg +0 -3
  279. package/dist/le-kit/p-221d379a.entry.js +0 -2
  280. package/dist/le-kit/p-221d379a.entry.js.map +0 -1
  281. package/dist/le-kit/p-24112ca3.entry.js +0 -2
  282. package/dist/le-kit/p-24112ca3.entry.js.map +0 -1
  283. package/dist/le-kit/p-2c6d080d.entry.js +0 -2
  284. package/dist/le-kit/p-2c6d080d.entry.js.map +0 -1
  285. package/dist/le-kit/p-46276e77.entry.js +0 -2
  286. package/dist/le-kit/p-46276e77.entry.js.map +0 -1
  287. package/dist/le-kit/p-516c8531.entry.js +0 -2
  288. package/dist/le-kit/p-6b69f9a2.entry.js +0 -2
  289. package/dist/le-kit/p-6b69f9a2.entry.js.map +0 -1
  290. package/dist/le-kit/p-6d14306f.entry.js +0 -2
  291. package/dist/le-kit/p-6d14306f.entry.js.map +0 -1
  292. package/dist/le-kit/p-7bcdf2d4.entry.js +0 -2
  293. package/dist/le-kit/p-7bcdf2d4.entry.js.map +0 -1
  294. package/dist/le-kit/p-7cf1e23c.entry.js +0 -2
  295. package/dist/le-kit/p-7cf1e23c.entry.js.map +0 -1
  296. package/dist/le-kit/p-85f2fd4d.entry.js +0 -2
  297. package/dist/le-kit/p-85f2fd4d.entry.js.map +0 -1
  298. package/dist/le-kit/p-98242429.entry.js +0 -2
  299. package/dist/le-kit/p-98242429.entry.js.map +0 -1
  300. package/dist/le-kit/p-ab6c1def.entry.js.map +0 -1
  301. package/dist/le-kit/p-ae4ead64.entry.js +0 -2
  302. package/dist/le-kit/p-ae4ead64.entry.js.map +0 -1
  303. package/dist/le-kit/p-b05d4511.entry.js +0 -2
  304. package/dist/le-kit/p-b05d4511.entry.js.map +0 -1
  305. package/dist/le-kit/p-b6ac02ff.entry.js +0 -2
  306. package/dist/le-kit/p-b6ac02ff.entry.js.map +0 -1
  307. package/dist/le-kit/p-c24769e2.entry.js +0 -2
  308. package/dist/le-kit/p-c24769e2.entry.js.map +0 -1
  309. package/dist/le-kit/p-dc0445ad.entry.js +0 -2
  310. package/dist/le-kit/p-dc0445ad.entry.js.map +0 -1
  311. package/dist/le-kit/p-eb5286f2.entry.js +0 -2
  312. package/dist/le-kit/p-eb5286f2.entry.js.map +0 -1
  313. package/dist/le-kit/p-eb710c8e.entry.js +0 -2
  314. package/dist/le-kit/p-eb710c8e.entry.js.map +0 -1
  315. package/dist/le-kit/p-f78b1ee6.entry.js +0 -2
  316. package/dist/le-kit/p-f78b1ee6.entry.js.map +0 -1
  317. /package/dist/le-kit/{p-516c8531.entry.js.map → p-884f57bd.entry.js.map} +0 -0
@@ -8,94 +8,45 @@ const leBoxCss = () => `:host{display:block;box-sizing:border-box}:host([hidden]
8
8
  const LeBox = class {
9
9
  constructor(hostRef) {
10
10
  index.registerInstance(this, hostRef);
11
+ /**
12
+ * Flex grow factor - how much the item should grow relative to siblings
13
+ * @min 0
14
+ */
15
+ this.grow = 0;
16
+ /**
17
+ * Flex shrink factor - how much the item should shrink relative to siblings
18
+ * @min 0
19
+ */
20
+ this.shrink = 1;
21
+ /**
22
+ * Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')
23
+ */
24
+ this.basis = 'auto';
25
+ /**
26
+ * Self-alignment override for this item on the cross axis
27
+ * @allowedValues auto | start | center | end | stretch | baseline
28
+ */
29
+ this.alignSelf = 'auto';
30
+ /**
31
+ * Internal horizontal alignment of content
32
+ * @allowedValues start | center | end | stretch
33
+ */
34
+ this.alignContent = 'stretch';
35
+ /**
36
+ * Internal vertical alignment of content
37
+ * @allowedValues start | center | end | stretch
38
+ */
39
+ this.justifyContent = 'start';
40
+ /**
41
+ * Whether to display box content as flex (for internal alignment)
42
+ */
43
+ this.displayFlex = false;
44
+ /**
45
+ * Direction of internal flex layout when displayFlex is true
46
+ * @allowedValues horizontal | vertical
47
+ */
48
+ this.innerDirection = 'vertical';
11
49
  }
12
- get el() { return index.getElement(this); }
13
- /**
14
- * Flex grow factor - how much the item should grow relative to siblings
15
- * @min 0
16
- */
17
- grow = 0;
18
- /**
19
- * Flex shrink factor - how much the item should shrink relative to siblings
20
- * @min 0
21
- */
22
- shrink = 1;
23
- /**
24
- * Flex basis - initial size before growing/shrinking (e.g., '200px', '25%', 'auto')
25
- */
26
- basis = 'auto';
27
- /**
28
- * Width of the box (CSS value like '100px', '50%', 'auto')
29
- */
30
- width;
31
- /**
32
- * Height of the box (CSS value)
33
- */
34
- height;
35
- /**
36
- * Minimum width constraint
37
- */
38
- minWidth;
39
- /**
40
- * Maximum width constraint
41
- */
42
- maxWidth;
43
- /**
44
- * Minimum height constraint
45
- */
46
- minHeight;
47
- /**
48
- * Maximum height constraint
49
- */
50
- maxHeight;
51
- /**
52
- * Background color or CSS value (e.g., '#f0f0f0', 'var(--le-color-primary-light)')
53
- */
54
- background;
55
- /**
56
- * Border radius (e.g., '8px', 'var(--le-radius-md)')
57
- */
58
- borderRadius;
59
- /**
60
- * Border style (e.g., '1px solid #ccc', '2px dashed var(--le-color-border)')
61
- */
62
- border;
63
- /**
64
- * Self-alignment override for this item on the cross axis
65
- * @allowedValues auto | start | center | end | stretch | baseline
66
- */
67
- alignSelf = 'auto';
68
- /**
69
- * Internal horizontal alignment of content
70
- * @allowedValues start | center | end | stretch
71
- */
72
- alignContent = 'stretch';
73
- /**
74
- * Internal vertical alignment of content
75
- * @allowedValues start | center | end | stretch
76
- */
77
- justifyContent = 'start';
78
- /**
79
- * Padding inside the box (CSS value like '8px', '1rem')
80
- */
81
- padding;
82
- /**
83
- * Order in the flex container (lower values come first)
84
- */
85
- order;
86
- /**
87
- * Whether to display box content as flex (for internal alignment)
88
- */
89
- displayFlex = false;
90
- /**
91
- * Direction of internal flex layout when displayFlex is true
92
- * @allowedValues horizontal | vertical
93
- */
94
- innerDirection = 'vertical';
95
- /**
96
- * Gap between internal flex items when displayFlex is true
97
- */
98
- innerGap;
99
50
  getAlignSelf() {
100
51
  const alignMap = {
101
52
  auto: 'auto',
@@ -175,8 +126,9 @@ const LeBox = class {
175
126
  'display-flex': this.displayFlex,
176
127
  [`inner-${this.innerDirection}`]: this.displayFlex,
177
128
  });
178
- return (index.h(index.Host, { key: '01fad47e9fdff2931a8f0a26d540bb1a5da6a626', style: hostStyle, class: hostClass }, index.h("le-component", { key: '2d6b2588889925835e91ecbf6be811d21b47b015', component: "le-box" }, index.h("div", { key: 'd43fd71f7f9e1211bb2dfaaf577c6c9bef78b794', class: "box", part: "box" }, index.h("div", { key: '1b8b1680dfeb7e6f31ac627d55ae05796bef4f02', class: "content", part: "content", style: contentStyle }, index.h("le-slot", { key: '8af26e1c5047b9d5ab9f4ae0464c34bf3e931805', name: "", description: "Content inside this flex item", type: "slot", "allowed-components": "le-text,le-card,le-button,le-stack,le-box" }, index.h("slot", { key: 'db95a80650aa9846eb27ccd75ee074a86a9ef47c' })))))));
129
+ return (index.h(index.Host, { key: '7ff795b1c7e8947ec3c807d387d1bfd6eaec0e78', style: hostStyle, class: hostClass }, index.h("le-component", { key: 'f9d95344461ac913dcf2cbd653541f0f2ce961ea', component: "le-box" }, index.h("div", { key: '9c772c7fcca7f1401601eb8f730acd2edced6de2', class: "box", part: "box" }, index.h("div", { key: '62d77dadf5966a6bd73ef839281c20574460716d', class: "content", part: "content", style: contentStyle }, index.h("le-slot", { key: 'f4a02189f884db240cfc7070a600983e905aedfb', name: "", description: "Content inside this flex item", type: "slot", "allowed-components": "le-text,le-card,le-button,le-stack,le-box" }, index.h("slot", { key: '57857570d54c3c1144dff8989733e5ba07c5407e' })))))));
179
130
  }
131
+ get el() { return index.getElement(this); }
180
132
  };
181
133
  LeBox.style = leBoxCss();
182
134
 
@@ -0,0 +1,223 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-BzadfLTc.js');
4
+ var utils = require('./utils-Dxx9WhWK.js');
5
+
6
+ const leBreadcrumbsCss = () => `:host{display:block}.breadcrumbs{display:flex;align-items:center;gap:var(--le-space-xs);min-width:0}.list{display:flex;align-items:center;gap:var(--le-space-xs);min-width:0;flex:1}.list.wrap{flex-wrap:wrap}.list.scroll{overflow-x:auto;white-space:nowrap;scrollbar-width:none}.list.scroll::-webkit-scrollbar{display:none}.item{--le-button-padding-x:var(--le-spacing-2);--le-button-padding-y:var(--le-spacing-1)}.item.current{color:var(--le-color-text);font-weight:var(--le-font-weight-medium)}.item-popover{--le-popover-padding:var(--le-space-xs)}.separator{display:inline-flex;align-items:center;color:var(--le-color-text-tertiary, var(--le-color-text-secondary))}.separator ::slotted(*){display:inline-flex;align-items:center}.more-trigger{display:inline-flex;align-items:center;appearance:none;border:0;background:none;padding:0;color:inherit;cursor:pointer}.hidden-slot{display:none}`;
7
+
8
+ const LeBreadcrumbs = class {
9
+ constructor(hostRef) {
10
+ index.registerInstance(this, hostRef);
11
+ this.leBreadcrumbSelect = index.createEvent(this, "leBreadcrumbSelect");
12
+ /**
13
+ * Breadcrumb items (supports JSON string).
14
+ */
15
+ this.items = [];
16
+ /**
17
+ * Accessible label for the breadcrumbs navigation.
18
+ */
19
+ this.label = 'Breadcrumbs';
20
+ /**
21
+ * Separator icon name (used if no separator slot is provided).
22
+ */
23
+ this.separatorIcon = 'chevron-right';
24
+ /**
25
+ * Overflow behavior: collapse (default), wrap, or scroll.
26
+ */
27
+ this.overflowMode = 'collapse';
28
+ /**
29
+ * Minimum visible items before collapsing.
30
+ */
31
+ this.minVisibleItems = 2;
32
+ this.hiddenIndices = [];
33
+ this.separatorTemplate = '';
34
+ this.instanceId = utils.generateId('le-breadcrumbs');
35
+ this.recomputeQueued = false;
36
+ this.handleSeparatorSlotChange = (ev) => {
37
+ const slot = ev.target;
38
+ const nodes = slot.assignedNodes({ flatten: true });
39
+ const html = nodes
40
+ .map(node => {
41
+ if (node.nodeType === Node.TEXT_NODE) {
42
+ return node.textContent || '';
43
+ }
44
+ if (node.nodeType === Node.ELEMENT_NODE) {
45
+ return node.outerHTML || '';
46
+ }
47
+ return '';
48
+ })
49
+ .join('')
50
+ .trim();
51
+ this.separatorTemplate = html;
52
+ this.scheduleOverflowRecompute();
53
+ };
54
+ this.handleItemClick = (item, id, ev) => {
55
+ const href = item.href || item.url;
56
+ this.leBreadcrumbSelect.emit({ item, id, href, originalEvent: ev });
57
+ };
58
+ this.handleKeyDown = (ev) => {
59
+ if (ev.key !== 'ArrowRight' && ev.key !== 'ArrowLeft')
60
+ return;
61
+ const focusables = Array.from(this.el.shadowRoot?.querySelectorAll('a,button,[tabindex="0"]') || []);
62
+ if (focusables.length === 0)
63
+ return;
64
+ const current = document.activeElement;
65
+ const idx = focusables.findIndex(el => el === current);
66
+ if (idx === -1)
67
+ return;
68
+ ev.preventDefault();
69
+ const nextIdx = ev.key === 'ArrowRight' ? idx + 1 : idx - 1;
70
+ const target = focusables[(nextIdx + focusables.length) % focusables.length];
71
+ target?.focus();
72
+ };
73
+ }
74
+ componentDidLoad() {
75
+ this.setupResizeObserver();
76
+ this.scheduleOverflowRecompute();
77
+ }
78
+ disconnectedCallback() {
79
+ this.resizeObserver?.disconnect();
80
+ }
81
+ handleInputsChange() {
82
+ this.scheduleOverflowRecompute();
83
+ }
84
+ setupResizeObserver() {
85
+ if (typeof window === 'undefined' || !('ResizeObserver' in window))
86
+ return;
87
+ this.resizeObserver = new ResizeObserver(() => this.scheduleOverflowRecompute());
88
+ this.resizeObserver.observe(this.el);
89
+ }
90
+ get parsedItems() {
91
+ if (typeof this.items === 'string') {
92
+ try {
93
+ return JSON.parse(this.items);
94
+ }
95
+ catch {
96
+ return [];
97
+ }
98
+ }
99
+ return this.items;
100
+ }
101
+ getItemId(item, index) {
102
+ return item.id ?? `${this.instanceId}:${index}`;
103
+ }
104
+ scheduleOverflowRecompute() {
105
+ if (this.overflowMode !== 'collapse') {
106
+ if (this.hiddenIndices.length) {
107
+ this.hiddenIndices = [];
108
+ }
109
+ return;
110
+ }
111
+ if (this.recomputeQueued)
112
+ return;
113
+ this.recomputeQueued = true;
114
+ requestAnimationFrame(() => this.recomputeOverflow());
115
+ }
116
+ nextFrame() {
117
+ return new Promise(resolve => requestAnimationFrame(() => resolve()));
118
+ }
119
+ async recomputeOverflow() {
120
+ this.recomputeQueued = false;
121
+ if (this.overflowMode !== 'collapse') {
122
+ return;
123
+ }
124
+ const items = this.parsedItems;
125
+ if (!this.listEl || items.length <= Math.max(2, this.minVisibleItems)) {
126
+ if (this.hiddenIndices.length) {
127
+ this.hiddenIndices = [];
128
+ }
129
+ return;
130
+ }
131
+ // Reset hidden items first
132
+ if (this.hiddenIndices.length) {
133
+ this.hiddenIndices = [];
134
+ await this.nextFrame();
135
+ }
136
+ const containerWidth = this.listEl.clientWidth;
137
+ if (!containerWidth)
138
+ return;
139
+ const candidates = items.map((_, idx) => idx).slice(1, -1);
140
+ const hidden = [];
141
+ let attempts = 0;
142
+ while (this.listEl.scrollWidth > containerWidth &&
143
+ attempts < candidates.length &&
144
+ items.length - hidden.length > this.minVisibleItems) {
145
+ const next = candidates.shift();
146
+ if (next === undefined)
147
+ break;
148
+ hidden.push(next);
149
+ this.hiddenIndices = [...hidden];
150
+ await this.nextFrame();
151
+ attempts += 1;
152
+ }
153
+ // If still overflowing, hide first then last as a last resort
154
+ if (this.listEl.scrollWidth > containerWidth &&
155
+ items.length - hidden.length > this.minVisibleItems) {
156
+ if (!hidden.includes(0)) {
157
+ hidden.unshift(0);
158
+ this.hiddenIndices = [...hidden];
159
+ await this.nextFrame();
160
+ }
161
+ }
162
+ if (this.listEl.scrollWidth > containerWidth &&
163
+ items.length - hidden.length > this.minVisibleItems) {
164
+ const lastIndex = items.length - 1;
165
+ if (!hidden.includes(lastIndex)) {
166
+ hidden.push(lastIndex);
167
+ this.hiddenIndices = [...hidden];
168
+ await this.nextFrame();
169
+ }
170
+ }
171
+ }
172
+ renderSeparator() {
173
+ console.log('separatorTemplate', this.separatorTemplate || 'no-template', this.separatorIcon);
174
+ if (this.separatorTemplate) {
175
+ return index.h("span", { class: "separator", "aria-hidden": "true", innerHTML: this.separatorTemplate });
176
+ }
177
+ return (index.h("span", { class: "separator", "aria-hidden": "true" }, index.h("le-icon", { name: this.separatorIcon })));
178
+ }
179
+ renderItem(item, index$1) {
180
+ const id = this.getItemId(item, index$1);
181
+ const hasChildren = Array.isArray(item.children) && item.children.length > 0;
182
+ const isCurrent = !!item.selected;
183
+ const itemClass = utils.classnames('item', { current: isCurrent });
184
+ const icontent = item.icon || item.iconStart;
185
+ const content = (index.h("le-button", { slot: hasChildren ? 'trigger' : undefined, variant: "clear", color: "secondary", class: itemClass, onClick: ev => this.handleItemClick(item, id, ev), "aria-haspopup": "menu", "aria-current": isCurrent ? 'page' : null, part: item.part, iconStart: icontent }, index.h("span", { class: "item-label" }, item.label)));
186
+ if (hasChildren) {
187
+ return (index.h("le-popover", { position: "bottom", align: "start", "show-close": "false", class: "item-popover" }, content, index.h("le-navigation", { orientation: "vertical", items: item.children, style: { minWidth: '200px' } })));
188
+ }
189
+ return content;
190
+ }
191
+ renderMore(hiddenItems) {
192
+ if (hiddenItems.length === 0)
193
+ return null;
194
+ return (index.h("le-popover", { position: "bottom", align: "start", "show-close": "false" }, index.h("button", { slot: "trigger", class: "more-trigger", type: "button", "aria-haspopup": "menu" }, index.h("slot", { name: "more-trigger" }, index.h("le-icon", { name: "ellipsis-horizontal" }))), index.h("le-navigation", { orientation: "vertical", items: hiddenItems, style: { minWidth: '200px' } })));
195
+ }
196
+ render() {
197
+ const items = this.parsedItems;
198
+ const indexedItems = items.map((item, index) => ({ item, index }));
199
+ const hiddenSet = new Set(this.hiddenIndices);
200
+ const hiddenItems = indexedItems.filter(({ index }) => hiddenSet.has(index));
201
+ const visibleItems = indexedItems.filter(({ index }) => !hiddenSet.has(index));
202
+ const shouldCollapse = this.overflowMode === 'collapse' && hiddenItems.length > 0;
203
+ const firstVisible = visibleItems[0];
204
+ const remainingVisible = visibleItems.slice(1);
205
+ const firstHidden = hiddenSet.has(0);
206
+ return (index.h(index.Host, { key: '6da8c091e08c97f903d6e840d02bca6a321ed0ba', onKeyDown: this.handleKeyDown }, index.h("nav", { key: 'ddc78c68de5a49d59a3d7cfa446ce7a4dea02366', class: "breadcrumbs", "aria-label": this.label }, index.h("slot", { key: 'c76c6164b589bdad8715a8adbe94d39dab261e71', name: "start" }), index.h("div", { key: '80fecb4159d873e7d5994299229f80610f0ca1ed', class: utils.classnames('list', {
207
+ wrap: this.overflowMode === 'wrap',
208
+ scroll: this.overflowMode === 'scroll',
209
+ }), ref: el => (this.listEl = el) }, !firstHidden && firstVisible
210
+ ? this.renderItem(firstVisible.item, firstVisible.index)
211
+ : null, shouldCollapse && !firstHidden && firstVisible ? this.renderSeparator() : null, shouldCollapse ? this.renderMore(hiddenItems.map(h => h.item)) : null, (firstHidden ? visibleItems : remainingVisible).map(({ item, index: index$1 }, i) => (index.h(index.Fragment, null, this.renderSeparator(), index.h("span", { class: "crumb", key: `${item.label}-${index$1}-${i}` }, this.renderItem(item, index$1)))))), index.h("slot", { key: 'cd9f1f1200554f43cd144f07870aa3063de9a843', name: "end" })), index.h("span", { key: '3bd953f8c8a4bae9d2e1b3bbe61977d92b1f0f50', class: "hidden-slot", "aria-hidden": "true" }, index.h("slot", { key: '5deeddaba836a0ac6c698d25ed799670231c3acd', name: "separator", onSlotchange: this.handleSeparatorSlotChange }))));
212
+ }
213
+ get el() { return index.getElement(this); }
214
+ static get watchers() { return {
215
+ "items": ["handleInputsChange"],
216
+ "overflowMode": ["handleInputsChange"],
217
+ "minVisibleItems": ["handleInputsChange"]
218
+ }; }
219
+ };
220
+ LeBreadcrumbs.style = leBreadcrumbsCss();
221
+
222
+ exports.le_breadcrumbs = LeBreadcrumbs;
223
+ //# sourceMappingURL=le-breadcrumbs.entry.cjs.js.map
@@ -8,20 +8,20 @@ const leCardCss = () => `:host{display:block;--le-card-bg:var(--le-color-surface
8
8
  const LeCard = class {
9
9
  constructor(hostRef) {
10
10
  index.registerInstance(this, hostRef);
11
+ /**
12
+ * Card variant style
13
+ * @allowedValues default | outlined | elevated
14
+ */
15
+ this.variant = 'default';
16
+ /**
17
+ * Whether the card is interactive (clickable)
18
+ */
19
+ this.interactive = false;
11
20
  }
12
- get el() { return index.getElement(this); }
13
- /**
14
- * Card variant style
15
- * @allowedValues default | outlined | elevated
16
- */
17
- variant = 'default';
18
- /**
19
- * Whether the card is interactive (clickable)
20
- */
21
- interactive = false;
22
21
  render() {
23
- return (index.h("le-component", { key: 'b4203e8775f711c1ce4d8b9a4270815f122271f2', component: "le-card", hostClass: utils.classnames(`variant-${this.variant}`, { 'interactive': this.interactive }) }, index.h("div", { key: '0dc9231529fc6d2eb29bc5cde2c1dbf18b332a43', class: "card", part: "card" }, index.h("div", { key: '511fcec73b51b0931d92e0fee4d17b108c827e74', class: "card-header", part: "header" }, index.h("le-slot", { key: 'e50dbadbe53ce6fa343ac7cfccb5a5d8f58fbd01', name: "header", label: "Header", description: "Card title", type: "text", tag: "h3" }, index.h("slot", { key: '36e1f7c3c5c1c5a9d49261d1b1406efe4004389b', name: "header" }))), index.h("div", { key: 'f9da55c0661d7906161b77aa22edc1c6bb7fb8d4', class: "card-content", part: "content" }, index.h("le-slot", { key: '01670058d67851f1bd70b21fc4111b4bf2509f25', name: "", label: "Content", description: "Card content", type: "textarea", tag: "p", required: true }, index.h("slot", { key: 'e6eff48970eca2b3971f0ea7bfda3ca12bd1a3a1' }))), index.h("div", { key: 'ccd29257bc339a0d26c4750823fc635a182123cc', class: "card-footer", part: "footer" }, index.h("le-slot", { key: '198499afcbb9b0e82cac6cf976ab407697263c1f', name: "footer", label: "Footer", description: "Card footer with actions", "allowed-components": "le-button,le-link" }, index.h("slot", { key: '4d495b49f48ac142cdf739472b48d4bfb37933af', name: "footer" }))))));
22
+ return (index.h("le-component", { key: '50b722661132acca9396539021caebd0beb99c13', component: "le-card", hostClass: utils.classnames(`variant-${this.variant}`, { 'interactive': this.interactive }) }, index.h("div", { key: '4fa7de6abb9460281b1a98a158b76dcd0ee9fe8d', class: "card", part: "card" }, index.h("div", { key: '60b67d4d7416628fbd07aae2623aebeb10e78366', class: "card-header", part: "header" }, index.h("le-slot", { key: '1ef59c336f43b1292eae242b00e92d1b90ec1fd1', name: "header", label: "Header", description: "Card title", type: "text", tag: "h3" }, index.h("slot", { key: 'cdbf9d8ee5b832a7c7314443e974b6f3fe0d6ffd', name: "header" }))), index.h("div", { key: '11290af7a2fc3f927e825e06f5ae51797013592e', class: "card-content", part: "content" }, index.h("le-slot", { key: '29d5890f7b841138910c84bf9017462edb90a851', name: "", label: "Content", description: "Card content", type: "textarea", tag: "p", required: true }, index.h("slot", { key: '6e30f0ca8881825cf474e9d28ca7f16cc9e2feb6' }))), index.h("div", { key: '6e4824adaafef5e440e7d9e26d29048841e3cdba', class: "card-footer", part: "footer" }, index.h("le-slot", { key: 'aa734bdb5f1166bae0868949225bfc50cdb6e898', name: "footer", label: "Footer", description: "Card footer with actions", "allowed-components": "le-button,le-link" }, index.h("slot", { key: '6d3bf34e9585b38ce19aaeacf8259543560856a4', name: "footer" }))))));
24
23
  }
24
+ get el() { return index.getElement(this); }
25
25
  };
26
26
  LeCard.style = leCardCss();
27
27
 
@@ -12,70 +12,80 @@ const LeCodeInput = class {
12
12
  this.leInput = index.createEvent(this, "leInput");
13
13
  this.leFocus = index.createEvent(this, "leFocus");
14
14
  this.leBlur = index.createEvent(this, "leBlur");
15
+ /**
16
+ * The value of the input
17
+ */
18
+ this.value = '';
19
+ /**
20
+ * Length of the code (number of characters)
21
+ */
22
+ this.length = 6;
23
+ /**
24
+ * The type of code (numeric or alphanumeric)
25
+ * This affects the keyboard layout on mobile devices.
26
+ */
27
+ this.type = 'text';
28
+ /**
29
+ * Whether the input is disabled
30
+ */
31
+ this.disabled = false;
32
+ /**
33
+ * Whether the input is read-only
34
+ */
35
+ this.readonly = false;
36
+ /**
37
+ * Internal validation state (can be set externally manually or via simple check)
38
+ */
39
+ this.error = false;
40
+ this.isFocused = false;
41
+ this.selectionStart = 0;
42
+ this.selectionEnd = 0;
43
+ this.handleInput = (ev) => {
44
+ const input = ev.target;
45
+ let val = input.value;
46
+ // Enforce length limit
47
+ if (val.length > this.length) {
48
+ val = val.slice(0, this.length);
49
+ // We need to force update the input value if it exceeded length
50
+ // because Stencil prop update might not happen if value is same as prop but input is different
51
+ input.value = val;
52
+ }
53
+ this.value = val;
54
+ this.updateSelection(input);
55
+ this.leInput.emit({
56
+ value: this.value,
57
+ name: this.name,
58
+ externalId: this.externalId,
59
+ });
60
+ };
61
+ this.handleChange = () => {
62
+ this.leChange.emit({
63
+ value: this.value,
64
+ name: this.name,
65
+ externalId: this.externalId,
66
+ });
67
+ };
68
+ this.handleFocus = (ev) => {
69
+ this.isFocused = true;
70
+ const input = ev.target;
71
+ // Move cursor to the end on focus so typing appends to current value
72
+ window.requestAnimationFrame(() => {
73
+ const len = input.value.length;
74
+ input.setSelectionRange(len, len);
75
+ this.updateSelection(input);
76
+ });
77
+ this.leFocus.emit();
78
+ };
79
+ this.handleBlur = () => {
80
+ this.isFocused = false;
81
+ this.leBlur.emit();
82
+ // Trigger change on blur
83
+ this.handleChange();
84
+ };
85
+ this.handleSelect = (ev) => {
86
+ this.updateSelection(ev.target);
87
+ };
15
88
  }
16
- get el() { return index.getElement(this); }
17
- /**
18
- * The value of the input
19
- */
20
- value = '';
21
- /**
22
- * The name of the input
23
- */
24
- name;
25
- /**
26
- * Label for the input
27
- */
28
- label;
29
- /**
30
- * Length of the code (number of characters)
31
- */
32
- length = 6;
33
- /**
34
- * Description text displayed below the input
35
- * in case there is a more complex markup,
36
- * it can be provided via slot as well
37
- */
38
- description;
39
- /**
40
- * The type of code (numeric or alphanumeric)
41
- * This affects the keyboard layout on mobile devices.
42
- */
43
- type = 'text';
44
- /**
45
- * Whether the input is disabled
46
- */
47
- disabled = false;
48
- /**
49
- * Whether the input is read-only
50
- */
51
- readonly = false;
52
- /**
53
- * External ID for linking with external systems
54
- */
55
- externalId;
56
- /**
57
- * Internal validation state (can be set externally manually or via simple check)
58
- */
59
- error = false;
60
- /**
61
- * Emitted when the value changes (on blur or Enter)
62
- */
63
- leChange;
64
- /**
65
- * Emitted when the input value changes (on keystroke)
66
- */
67
- leInput;
68
- /**
69
- * Emitted when the input is focused
70
- */
71
- leFocus;
72
- /**
73
- * Emitted when the input is blurred
74
- */
75
- leBlur;
76
- isFocused = false;
77
- selectionStart = 0;
78
- selectionEnd = 0;
79
89
  valueChanged(newValue) {
80
90
  if (newValue && newValue.length > this.length) {
81
91
  this.value = newValue.slice(0, this.length);
@@ -86,51 +96,6 @@ const LeCodeInput = class {
86
96
  this.value = this.value.slice(0, this.length);
87
97
  }
88
98
  }
89
- handleInput = (ev) => {
90
- const input = ev.target;
91
- let val = input.value;
92
- // Enforce length limit
93
- if (val.length > this.length) {
94
- val = val.slice(0, this.length);
95
- // We need to force update the input value if it exceeded length
96
- // because Stencil prop update might not happen if value is same as prop but input is different
97
- input.value = val;
98
- }
99
- this.value = val;
100
- this.updateSelection(input);
101
- this.leInput.emit({
102
- value: this.value,
103
- name: this.name,
104
- externalId: this.externalId,
105
- });
106
- };
107
- handleChange = () => {
108
- this.leChange.emit({
109
- value: this.value,
110
- name: this.name,
111
- externalId: this.externalId,
112
- });
113
- };
114
- handleFocus = (ev) => {
115
- this.isFocused = true;
116
- const input = ev.target;
117
- // Move cursor to the end on focus so typing appends to current value
118
- window.requestAnimationFrame(() => {
119
- const len = input.value.length;
120
- input.setSelectionRange(len, len);
121
- this.updateSelection(input);
122
- });
123
- this.leFocus.emit();
124
- };
125
- handleBlur = () => {
126
- this.isFocused = false;
127
- this.leBlur.emit();
128
- // Trigger change on blur
129
- this.handleChange();
130
- };
131
- handleSelect = (ev) => {
132
- this.updateSelection(ev.target);
133
- };
134
99
  updateSelection(input) {
135
100
  this.selectionStart = input.selectionStart || 0;
136
101
  this.selectionEnd = input.selectionEnd || 0;
@@ -167,10 +132,11 @@ const LeCodeInput = class {
167
132
  return boxes;
168
133
  }
169
134
  render() {
170
- return (index.h("le-component", { key: '74615aa06971f7b2883e4a8e6f77b76918722e53', component: "le-code-input", hostClass: utils.classnames({ 'disabled': this.disabled, 'has-error': this.error }) }, index.h("div", { key: '423a974717f0676b266a362d0151540577ae8845', class: "le-code-input-wrapper" }, this.label && (index.h("label", { key: 'f2ba7d9c8a8a400ca31adc944919e4750785503d', class: "le-input-label", htmlFor: this.name }, this.label)), index.h("div", { key: 'f56b80ffc1362c164bdfe473877d934c252c9bd5', class: utils.classnames('input-group', { 'has-error': this.error }) }, index.h("input", { key: 'a94d422a0884c731ecfc6221133d725057fbb87c', class: "ghost-input", id: this.name, name: this.name, type: "text", inputMode: this.type === 'number' ? 'numeric' : 'text', pattern: this.type === 'number' ? '[0-9]*' : undefined, autocomplete: "one-time-code", value: this.value, maxLength: this.length, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, onSelect: this.handleSelect,
135
+ return (index.h("le-component", { key: 'c9a4a92342645c54aee90091cd860fc439de6334', component: "le-code-input", hostClass: utils.classnames({ 'disabled': this.disabled, 'has-error': this.error }) }, index.h("div", { key: '50480c7c827ba801421c260c4e6fef88f22dcbd0', class: "le-code-input-wrapper" }, this.label && (index.h("label", { key: '316653c42c51ea0a443d8401c5adaf3e4821d7c8', class: "le-input-label", htmlFor: this.name }, this.label)), index.h("div", { key: '803789d07d538e1576dbb0ff7536110ab620632b', class: utils.classnames('input-group', { 'has-error': this.error }) }, index.h("input", { key: '7bbf221d32aa9363066d799b5b2a4aac2e9ae77f', class: "ghost-input", id: this.name, name: this.name, type: "text", inputMode: this.type === 'number' ? 'numeric' : 'text', pattern: this.type === 'number' ? '[0-9]*' : undefined, autocomplete: "one-time-code", value: this.value, maxLength: this.length, disabled: this.disabled, readOnly: this.readonly, onInput: this.handleInput, onFocus: this.handleFocus, onBlur: this.handleBlur, onSelect: this.handleSelect,
171
136
  // Prevent browser autofill background from messing up visual
172
- spellcheck: false, autoCapitalize: "none", autoCorrect: "off" }), index.h("div", { key: '9436ca5298d83aae923e762748d634b9517a3b17', class: "visual-container" }, this.renderBoxes())), !this.error && (index.h("div", { key: '398a377af9c6c26f441e94b3598a1007c64e6ea0', class: "le-input-description" }, index.h("le-slot", { key: '3d9a8c248efc57ffa026f9ffdf889599b276f344', name: "description", type: "text", tag: "p", label: "Description" }, index.h("slot", { key: '6873dec4bea990f9fe6de013e8fa729fc385871c', name: "description" }, this.description)))))));
137
+ spellcheck: false, autoCapitalize: "none", autoCorrect: "off" }), index.h("div", { key: '0ff57ab380039c4bbbbf0e347331eb6885f8ce63', class: "visual-container" }, this.renderBoxes())), !this.error && (index.h("div", { key: '7da46dfc052457588969a1c9631eb310d80030c4', class: "le-input-description" }, index.h("le-slot", { key: '7bcfa46fd981286736ea7ec490d65c962ef998d5', name: "description", type: "text", tag: "p", label: "Description" }, index.h("slot", { key: 'ee810bf920acc45c48b3cbc4ebf9598ac5937923', name: "description" }, this.description)))))));
173
138
  }
139
+ get el() { return index.getElement(this); }
174
140
  static get watchers() { return {
175
141
  "value": ["valueChanged"]
176
142
  }; }