@xlabs-store/core 0.0.1 → 0.0.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 (1097) hide show
  1. package/LICENSE +21 -21
  2. package/components/index.d.ts +0 -0
  3. package/components/index.js +1 -1
  4. package/components/p--BbMiBIf.js +1 -0
  5. package/components/p-4BROAJ-M.js +1 -0
  6. package/components/p-9T3IQVUX.js +1 -0
  7. package/components/p-B1Y8S28h.js +1 -0
  8. package/components/p-B5VsEsBC.js +1 -0
  9. package/components/p-B7SdFSQT.js +1 -0
  10. package/components/p-B97Hj_bs.js +1 -0
  11. package/components/p-BBTo0Tfc.js +1 -0
  12. package/components/p-BCuFZ3xx.js +1 -0
  13. package/components/p-BFPoQ179.js +1 -0
  14. package/components/p-BLqwG7xa.js +1 -0
  15. package/components/p-BPaLHj9P.js +1 -0
  16. package/components/p-BQtB82ld.js +1 -0
  17. package/components/p-BSLE4EQn.js +1 -0
  18. package/components/{p-DcRlYBIl.js → p-BUXxKr3t.js} +1 -1
  19. package/components/p-BYCebYZT.js +1 -0
  20. package/components/p-BZdNMS4e.js +1 -0
  21. package/components/p-BhWqNJhk.js +1 -0
  22. package/components/p-BnnNgLpE.js +1 -0
  23. package/components/p-BoPZ9Se8.js +1 -0
  24. package/components/p-BogEYBiK.js +1 -0
  25. package/components/p-Brr9Q7gj.js +1 -0
  26. package/components/p-BvOnPBRo.js +1 -0
  27. package/components/p-BzX-LA7W.js +1 -0
  28. package/components/p-C-KgrbKX.js +1 -0
  29. package/components/{p-CfhgoXyB.js → p-C-rau5Ex.js} +1 -1
  30. package/components/{p-B4R9Mtmk.js → p-C1PUbETy.js} +1 -1
  31. package/components/p-C1_JmoB8.js +1 -0
  32. package/components/{p-noTpj1Kh.js → p-C3Kx_-Wc.js} +1 -1
  33. package/components/p-CIOnWzKr.js +1 -0
  34. package/components/p-CQ2VND9-.js +1 -0
  35. package/components/p-CQQI-pRu.js +1 -0
  36. package/components/p-CXhCHTJf.js +1 -0
  37. package/components/p-CaJOfbTg.js +1 -0
  38. package/components/p-Cf_74fjT.js +1 -0
  39. package/components/{p-DVz50Dd3.js → p-CgLn4Y4c.js} +1 -1
  40. package/components/p-CgaLhv3u.js +1 -0
  41. package/components/{p-CGYOWZnh.js → p-CijqjTOk.js} +1 -1
  42. package/components/p-CkwLFDlS.js +1 -0
  43. package/components/p-CkyEMR2k.js +1 -0
  44. package/components/{p-Ce32Mo_Q.js → p-CmfyRJYt.js} +1 -1
  45. package/components/p-CnPsn8zN.js +1 -0
  46. package/components/p-Cp3SPBy3.js +1 -0
  47. package/components/p-CsYh9t-z.js +1 -0
  48. package/components/{p-BM-ap7lt.js → p-CtFbsd8j.js} +1 -1
  49. package/components/p-Cuf33Rgj.js +1 -0
  50. package/components/p-CwNmnRmr.js +1 -0
  51. package/components/p-CxMQkHjk.js +1 -0
  52. package/components/p-CzErFq8K.js +1 -0
  53. package/components/p-CzHtwC1k.js +1 -0
  54. package/components/p-CzjK_fJj.js +1 -0
  55. package/components/p-D4Joi-Km.js +1 -0
  56. package/components/p-D4am7l6X.js +1 -0
  57. package/components/p-D7kqIlVo.js +1 -0
  58. package/components/p-DFzUUEiS.js +1 -0
  59. package/components/p-DINdyuGa.js +1 -0
  60. package/components/p-DIZuWptV.js +1 -0
  61. package/components/p-DPo53FC8.js +1 -0
  62. package/components/p-DPt8hDp3.js +1 -0
  63. package/components/p-DSC5zsOB.js +1 -0
  64. package/components/{p-Co3Y9VjQ.js → p-DSa1uqPO.js} +1 -1
  65. package/components/p-DT7-VE44.js +1 -0
  66. package/components/p-DTPUsC3Q.js +1 -0
  67. package/components/p-DUjF0MeP.js +1 -0
  68. package/components/p-DXMO8s1V.js +1 -0
  69. package/components/p-DZtvVtvb.js +1 -0
  70. package/components/p-D_184xNl.js +1 -0
  71. package/components/p-D_hKBumm.js +1 -0
  72. package/components/p-Da7AZprv.js +1 -0
  73. package/components/p-DcqkhKqy.js +1 -0
  74. package/components/p-Dkga4pDL.js +1 -0
  75. package/components/p-Dn1c0e9W.js +1 -0
  76. package/components/p-DobuHW4v.js +1 -0
  77. package/components/p-DqayamUz.js +1 -0
  78. package/components/{p-Cd919NAP.js → p-DtIk7IPf.js} +1 -1
  79. package/components/p-DwySgZYx.js +1 -0
  80. package/components/p-DynL8Hj8.js +1 -0
  81. package/components/p-EYMvnfpO.js +1 -0
  82. package/components/p-K2tV3sog.js +1 -0
  83. package/components/p-LX68sH4m.js +1 -0
  84. package/components/{p-CKVSyuIH.js → p-MRcLOacJ.js} +1 -1
  85. package/components/p-N4_1eZ9k.js +1 -0
  86. package/components/p-PNU1f8B9.js +1 -0
  87. package/components/p-SFcKtdEL.js +1 -0
  88. package/components/p-VezrLuwj.js +1 -0
  89. package/components/p-eF_oZrS1.js +1 -0
  90. package/components/p-ez-wfqCC.js +1 -0
  91. package/components/p-gQbQhfDs.js +1 -0
  92. package/components/p-ibXnjCdF.js +1 -0
  93. package/components/p-jTIj1nFL.js +1 -0
  94. package/components/p-k2uLDFNn.js +1 -0
  95. package/components/p-pK9HRi91.js +1 -0
  96. package/components/p-sijpPVRP.js +1 -0
  97. package/components/p-tMIvQ4L0.js +1 -0
  98. package/components/p-yktKa2eA.js +1 -0
  99. package/components/x-address.js +1 -1
  100. package/components/x-affix.d.ts +0 -0
  101. package/components/x-affix.js +1 -1
  102. package/components/x-alert.d.ts +0 -0
  103. package/components/x-alert.js +1 -1
  104. package/components/x-anchor-link.d.ts +0 -0
  105. package/components/x-anchor-link.js +1 -1
  106. package/components/x-anchor.d.ts +0 -0
  107. package/components/x-anchor.js +1 -1
  108. package/components/x-app.d.ts +0 -0
  109. package/components/x-app.js +1 -1
  110. package/components/x-auto-complete-dropdown-content.d.ts +0 -0
  111. package/components/x-auto-complete-dropdown-content.js +1 -1
  112. package/components/x-auto-complete.d.ts +0 -0
  113. package/components/x-auto-complete.js +1 -1
  114. package/components/x-avatar.d.ts +0 -0
  115. package/components/x-avatar.js +1 -1
  116. package/components/x-back-top.js +1 -1
  117. package/components/x-badge.d.ts +0 -0
  118. package/components/x-badge.js +1 -1
  119. package/components/x-breadcrumb-item.d.ts +0 -0
  120. package/components/x-breadcrumb-item.js +1 -1
  121. package/components/x-breadcrumb.d.ts +0 -0
  122. package/components/x-breadcrumb.js +1 -1
  123. package/components/x-button.d.ts +0 -0
  124. package/components/x-button.js +1 -1
  125. package/components/x-captcha.js +1 -1
  126. package/components/x-card.d.ts +0 -0
  127. package/components/x-card.js +1 -1
  128. package/components/x-carousel.d.ts +0 -0
  129. package/components/x-carousel.js +1 -1
  130. package/components/x-cascader-dropdown-content.d.ts +0 -0
  131. package/components/x-cascader-dropdown-content.js +1 -1
  132. package/components/x-cascader.d.ts +0 -0
  133. package/components/x-cascader.js +1 -1
  134. package/components/x-checkbox.d.ts +0 -0
  135. package/components/x-checkbox.js +1 -1
  136. package/components/x-code-editor.d.ts +11 -0
  137. package/components/x-code-editor.js +1 -0
  138. package/components/x-col.d.ts +0 -0
  139. package/components/x-col.js +1 -1
  140. package/components/x-collapse-panel.d.ts +0 -0
  141. package/components/x-collapse-panel.js +1 -1
  142. package/components/x-collapse.d.ts +0 -0
  143. package/components/x-collapse.js +1 -1
  144. package/components/x-color-picker-panel.d.ts +0 -0
  145. package/components/x-color-picker-panel.js +1 -1
  146. package/components/x-color-picker.d.ts +0 -0
  147. package/components/x-color-picker.js +1 -1
  148. package/components/x-comment.d.ts +0 -0
  149. package/components/x-comment.js +1 -1
  150. package/components/x-content.d.ts +0 -0
  151. package/components/x-content.js +1 -1
  152. package/components/x-date-picker-dropdown-content.d.ts +0 -0
  153. package/components/x-date-picker-dropdown-content.js +1 -1
  154. package/components/x-date-picker.d.ts +0 -0
  155. package/components/x-date-picker.js +1 -1
  156. package/components/x-descriptions-item.d.ts +0 -0
  157. package/components/x-descriptions-item.js +1 -1
  158. package/components/x-descriptions.d.ts +0 -0
  159. package/components/x-descriptions.js +1 -1
  160. package/components/x-divider.d.ts +0 -0
  161. package/components/x-divider.js +1 -1
  162. package/components/x-drawer-content.d.ts +0 -0
  163. package/components/x-drawer-content.js +1 -1
  164. package/components/x-drawer.d.ts +0 -0
  165. package/components/x-drawer.js +1 -1
  166. package/components/x-dropdown-content.d.ts +0 -0
  167. package/components/x-dropdown-content.js +1 -1
  168. package/components/x-dropdown.d.ts +0 -0
  169. package/components/x-dropdown.js +1 -1
  170. package/components/x-editor.d.ts +0 -0
  171. package/components/x-editor.js +1 -1
  172. package/components/x-empty.d.ts +0 -0
  173. package/components/x-empty.js +1 -1
  174. package/components/x-finder.d.ts +0 -0
  175. package/components/x-finder.js +1 -1
  176. package/components/x-flex.d.ts +0 -0
  177. package/components/x-flex.js +1 -1
  178. package/components/x-float-button.d.ts +0 -0
  179. package/components/x-float-button.js +1 -1
  180. package/components/x-footer.d.ts +0 -0
  181. package/components/x-footer.js +1 -1
  182. package/components/x-form-builder.d.ts +0 -0
  183. package/components/x-form-builder.js +1 -1
  184. package/components/x-form-item.d.ts +0 -0
  185. package/components/x-form-item.js +1 -1
  186. package/components/x-form.d.ts +0 -0
  187. package/components/x-form.js +1 -1
  188. package/components/x-header.d.ts +0 -0
  189. package/components/x-header.js +1 -1
  190. package/components/x-icon-picker-dropdown-content.d.ts +11 -0
  191. package/components/x-icon-picker-dropdown-content.js +1 -0
  192. package/components/x-icon.d.ts +0 -0
  193. package/components/x-icon.js +1 -1
  194. package/components/x-image.d.ts +0 -0
  195. package/components/x-image.js +1 -1
  196. package/components/x-infinite-scroll.d.ts +0 -0
  197. package/components/x-infinite-scroll.js +1 -1
  198. package/components/x-input-icon.d.ts +11 -0
  199. package/components/x-input-icon.js +1 -0
  200. package/components/x-input-number.d.ts +0 -0
  201. package/components/x-input-number.js +1 -1
  202. package/components/x-input.d.ts +0 -0
  203. package/components/x-input.js +1 -1
  204. package/components/x-layout-admin.d.ts +11 -0
  205. package/components/x-layout-admin.js +1 -0
  206. package/components/x-layout-detail.d.ts +11 -0
  207. package/components/x-layout-detail.js +1 -0
  208. package/components/x-layout-list.d.ts +11 -0
  209. package/components/x-layout-list.js +1 -0
  210. package/components/x-layout.d.ts +0 -0
  211. package/components/x-layout.js +1 -1
  212. package/components/x-list-item.js +1 -1
  213. package/components/x-list.d.ts +0 -0
  214. package/components/x-list.js +1 -1
  215. package/components/x-login.d.ts +11 -0
  216. package/components/x-login.js +1 -0
  217. package/components/x-mentions.d.ts +0 -0
  218. package/components/x-mentions.js +1 -1
  219. package/components/x-menu-divider.d.ts +0 -0
  220. package/components/x-menu-divider.js +1 -1
  221. package/components/x-menu-item-group.d.ts +0 -0
  222. package/components/x-menu-item-group.js +1 -1
  223. package/components/x-menu-item.d.ts +0 -0
  224. package/components/x-menu-item.js +1 -1
  225. package/components/x-menu-submenu.d.ts +0 -0
  226. package/components/x-menu-submenu.js +1 -1
  227. package/components/x-menu.d.ts +0 -0
  228. package/components/x-menu.js +1 -1
  229. package/components/x-message.d.ts +0 -0
  230. package/components/x-message.js +1 -1
  231. package/components/x-modal-content.d.ts +0 -0
  232. package/components/x-modal-content.js +1 -1
  233. package/components/x-modal.d.ts +0 -0
  234. package/components/x-modal.js +1 -1
  235. package/components/x-notification.d.ts +0 -0
  236. package/components/x-notification.js +1 -1
  237. package/components/x-page-header.js +1 -1
  238. package/components/x-pagination.d.ts +0 -0
  239. package/components/x-pagination.js +1 -1
  240. package/components/x-popconfirm-content.d.ts +0 -0
  241. package/components/x-popconfirm-content.js +1 -1
  242. package/components/x-popconfirm.d.ts +0 -0
  243. package/components/x-popconfirm.js +1 -1
  244. package/components/x-popover-content.d.ts +0 -0
  245. package/components/x-popover-content.js +1 -1
  246. package/components/x-popover.d.ts +0 -0
  247. package/components/x-popover.js +1 -1
  248. package/components/x-progress.d.ts +0 -0
  249. package/components/x-progress.js +1 -1
  250. package/components/x-qr-code.d.ts +0 -0
  251. package/components/x-qr-code.js +1 -1
  252. package/components/x-radio-group.d.ts +0 -0
  253. package/components/x-radio-group.js +1 -1
  254. package/components/x-radio.d.ts +0 -0
  255. package/components/x-radio.js +1 -1
  256. package/components/x-range-picker-dropdown-content.d.ts +0 -0
  257. package/components/x-range-picker-dropdown-content.js +1 -1
  258. package/components/x-range-picker.d.ts +0 -0
  259. package/components/x-range-picker.js +1 -1
  260. package/components/x-rate.d.ts +0 -0
  261. package/components/x-rate.js +1 -1
  262. package/components/x-result.d.ts +0 -0
  263. package/components/x-result.js +1 -1
  264. package/components/x-row.d.ts +0 -0
  265. package/components/x-row.js +1 -1
  266. package/components/x-segmented.d.ts +0 -0
  267. package/components/x-segmented.js +1 -1
  268. package/components/x-select-dropdown-content.d.ts +0 -0
  269. package/components/x-select-dropdown-content.js +1 -1
  270. package/components/x-select-option.d.ts +0 -0
  271. package/components/x-select-option.js +1 -1
  272. package/components/x-select.d.ts +0 -0
  273. package/components/x-select.js +1 -1
  274. package/components/x-sider.d.ts +0 -0
  275. package/components/x-sider.js +1 -1
  276. package/components/x-skeleton.d.ts +0 -0
  277. package/components/x-skeleton.js +1 -1
  278. package/components/x-slider.d.ts +0 -0
  279. package/components/x-slider.js +1 -1
  280. package/components/x-space.d.ts +0 -0
  281. package/components/x-space.js +1 -1
  282. package/components/x-spin.d.ts +0 -0
  283. package/components/x-spin.js +1 -1
  284. package/components/x-splitter-panel.d.ts +0 -0
  285. package/components/x-splitter-panel.js +1 -1
  286. package/components/x-splitter.d.ts +0 -0
  287. package/components/x-splitter.js +1 -1
  288. package/components/x-statistic.d.ts +0 -0
  289. package/components/x-statistic.js +1 -1
  290. package/components/x-step.d.ts +0 -0
  291. package/components/x-step.js +1 -1
  292. package/components/x-steps.d.ts +0 -0
  293. package/components/x-steps.js +1 -1
  294. package/components/x-switch.d.ts +0 -0
  295. package/components/x-switch.js +1 -1
  296. package/components/x-tab-pane.js +1 -1
  297. package/components/x-table-cell.d.ts +0 -0
  298. package/components/x-table-cell.js +1 -1
  299. package/components/x-table-row.d.ts +0 -0
  300. package/components/x-table-row.js +1 -1
  301. package/components/x-table.d.ts +0 -0
  302. package/components/x-table.js +1 -1
  303. package/components/x-tabs.d.ts +0 -0
  304. package/components/x-tabs.js +1 -1
  305. package/components/x-tag.d.ts +0 -0
  306. package/components/x-tag.js +1 -1
  307. package/components/x-textarea.d.ts +0 -0
  308. package/components/x-textarea.js +1 -1
  309. package/components/x-time-picker-dropdown-content.d.ts +0 -0
  310. package/components/x-time-picker-dropdown-content.js +1 -1
  311. package/components/x-time-picker.d.ts +0 -0
  312. package/components/x-time-picker.js +1 -1
  313. package/components/x-timeline-item.d.ts +0 -0
  314. package/components/x-timeline-item.js +1 -1
  315. package/components/x-timeline.d.ts +0 -0
  316. package/components/x-timeline.js +1 -1
  317. package/components/x-tooltip-content.d.ts +0 -0
  318. package/components/x-tooltip-content.js +1 -1
  319. package/components/x-tooltip.d.ts +0 -0
  320. package/components/x-tooltip.js +1 -1
  321. package/components/x-tour-panel.d.ts +0 -0
  322. package/components/x-tour-panel.js +1 -1
  323. package/components/x-tour.d.ts +0 -0
  324. package/components/x-tour.js +1 -1
  325. package/components/x-transfer.d.ts +0 -0
  326. package/components/x-transfer.js +1 -1
  327. package/components/x-tree-select-dropdown-content.js +1 -1
  328. package/components/x-tree-select.d.ts +0 -0
  329. package/components/x-tree-select.js +1 -1
  330. package/components/x-tree.d.ts +0 -0
  331. package/components/x-tree.js +1 -1
  332. package/components/x-typography.d.ts +0 -0
  333. package/components/x-typography.js +1 -1
  334. package/components/x-upload.d.ts +0 -0
  335. package/components/x-upload.js +1 -1
  336. package/components/x-virtual-scroll.d.ts +0 -0
  337. package/components/x-virtual-scroll.js +1 -1
  338. package/components/x-workflow-builder.d.ts +0 -0
  339. package/components/x-workflow-builder.js +1 -1
  340. package/components/x-workflow.d.ts +0 -0
  341. package/components/x-workflow.js +1 -1
  342. package/dist/cjs/{abstract-control-C4D0eNCC.js → abstract-control-JI4_szTV.js} +40 -14
  343. package/dist/cjs/{config-BP9bROYD.js → config-BYR5qIIZ.js} +3 -3
  344. package/dist/cjs/icons-BfHE2jcr.js +19261 -0
  345. package/dist/cjs/{index-C7sKs9A2.js → index-Cy2P_ln3.js} +39 -12
  346. package/dist/cjs/index.cjs.js +7 -5
  347. package/dist/cjs/loader.cjs.js +2 -2
  348. package/dist/cjs/{locale.service-Cz-aZQnr.js → locale.service-DT6E8Rzd.js} +17 -9
  349. package/dist/cjs/{modal-service-BtAF0mFq.js → modal-service-FQpCPk_L.js} +34 -14
  350. package/dist/cjs/{notification-service-m6I5U9aG.js → notification-service-v7LRmTyh.js} +12 -13
  351. package/dist/cjs/{portal-controller-CtYVbhXL.js → portal-controller-DJft2QkA.js} +11 -16
  352. package/dist/cjs/{schema-builder-CYnX7lKi.js → schema-builder-DAwDwgIM.js} +385 -99
  353. package/dist/cjs/{tree.service-fxLOCSpD.js → tree.service-u0qqS1Qh.js} +22 -22
  354. package/dist/cjs/x-address_51.cjs.entry.js +26978 -0
  355. package/dist/cjs/x-affix.cjs.entry.js +5 -5
  356. package/dist/cjs/{x-alert_11.cjs.entry.js → x-alert_9.cjs.entry.js} +267 -646
  357. package/dist/cjs/x-anchor-link.cjs.entry.js +3 -3
  358. package/dist/cjs/x-anchor.cjs.entry.js +11 -9
  359. package/dist/cjs/x-app.cjs.entry.js +19 -19
  360. package/dist/cjs/x-back-top.cjs.entry.js +4 -4
  361. package/dist/cjs/x-breadcrumb_2.cjs.entry.js +124 -0
  362. package/dist/cjs/x-carousel.cjs.entry.js +7 -7
  363. package/dist/cjs/x-code-editor.cjs.entry.js +2365 -0
  364. package/dist/cjs/x-col_11.cjs.entry.js +1204 -0
  365. package/dist/cjs/x-collapse-panel.cjs.entry.js +4 -4
  366. package/dist/cjs/x-collapse.cjs.entry.js +4 -4
  367. package/dist/cjs/x-comment.cjs.entry.js +5 -5
  368. package/dist/cjs/x-descriptions-item.cjs.entry.js +6 -6
  369. package/dist/cjs/{x-breadcrumb_5.cjs.entry.js → x-descriptions_3.cjs.entry.js} +36 -157
  370. package/dist/cjs/x-drawer-content.cjs.entry.js +8 -8
  371. package/dist/cjs/x-drawer.cjs.entry.js +9 -7
  372. package/dist/cjs/x-finder.cjs.entry.js +39 -32
  373. package/dist/cjs/x-icon-picker-dropdown-content.cjs.entry.js +158 -0
  374. package/dist/cjs/x-infinite-scroll.cjs.entry.js +4 -4
  375. package/dist/cjs/x-input-icon.cjs.entry.js +361 -0
  376. package/dist/cjs/x-layout-admin.cjs.entry.js +45 -0
  377. package/dist/cjs/x-layout-detail.cjs.entry.js +145 -0
  378. package/dist/cjs/x-layout-list.cjs.entry.js +259 -0
  379. package/dist/cjs/x-list-item.cjs.entry.js +3 -3
  380. package/dist/cjs/{x-menu-submenu.cjs.entry.js → x-list_2.cjs.entry.js} +141 -7
  381. package/dist/cjs/x-mentions.cjs.entry.js +6 -6
  382. package/dist/cjs/x-menu-divider.cjs.entry.js +2 -2
  383. package/dist/cjs/x-menu-item-group.cjs.entry.js +2 -2
  384. package/dist/cjs/x-menu_2.cjs.entry.js +509 -0
  385. package/dist/cjs/x-message.cjs.entry.js +7 -7
  386. package/dist/cjs/x-notification.cjs.entry.js +7 -7
  387. package/dist/cjs/x-page-header.cjs.entry.js +3 -3
  388. package/dist/cjs/x-popconfirm-content.cjs.entry.js +4 -4
  389. package/dist/cjs/x-popconfirm.cjs.entry.js +5 -5
  390. package/dist/cjs/x-progress.cjs.entry.js +10 -10
  391. package/dist/cjs/x-qr-code.cjs.entry.js +11 -9
  392. package/dist/cjs/x-skeleton.cjs.entry.js +5 -5
  393. package/dist/cjs/x-splitter-panel.cjs.entry.js +2 -2
  394. package/dist/cjs/x-splitter.cjs.entry.js +11 -5
  395. package/dist/cjs/x-statistic.cjs.entry.js +3 -3
  396. package/dist/cjs/x-step.cjs.entry.js +7 -7
  397. package/dist/cjs/x-steps.cjs.entry.js +6 -8
  398. package/dist/cjs/x-table-cell.cjs.entry.js +4 -4
  399. package/dist/cjs/x-table-row.cjs.entry.js +13 -10
  400. package/dist/cjs/x-timeline-item.cjs.entry.js +4 -4
  401. package/dist/cjs/x-timeline.cjs.entry.js +4 -4
  402. package/dist/cjs/x-tour-panel.cjs.entry.js +3 -3
  403. package/dist/cjs/x-tour.cjs.entry.js +16 -16
  404. package/dist/cjs/x-virtual-scroll.cjs.entry.js +5 -5
  405. package/dist/cjs/x-workflow-builder.cjs.entry.js +8 -8
  406. package/dist/cjs/xlabs.cjs.js +24 -0
  407. package/dist/collection/collection-manifest.json +8 -1
  408. package/dist/collection/components/x-address/vietnam-data.js +3 -3
  409. package/dist/collection/components/x-address/x-address.css +5 -2
  410. package/dist/collection/components/x-address/x-address.js +8 -10
  411. package/dist/collection/components/x-affix/x-affix.js +4 -4
  412. package/dist/collection/components/x-alert/x-alert.css +5 -2
  413. package/dist/collection/components/x-alert/x-alert.js +1 -1
  414. package/dist/collection/components/x-anchor/x-anchor.js +16 -8
  415. package/dist/collection/components/x-anchor-link/x-anchor-link.js +2 -2
  416. package/dist/collection/components/x-app/x-app.js +15 -15
  417. package/dist/collection/components/x-auto-complete/auto-complete-dropdown-content/auto-complete-dropdown-content.css +5 -2
  418. package/dist/collection/components/x-auto-complete/auto-complete-dropdown-content/auto-complete-dropdown-content.js +1 -1
  419. package/dist/collection/components/x-auto-complete/types.js +2 -5
  420. package/dist/collection/components/x-auto-complete/x-auto-complete.css +5 -2
  421. package/dist/collection/components/x-auto-complete/x-auto-complete.js +52 -25
  422. package/dist/collection/components/x-avatar/x-avatar.js +23 -14
  423. package/dist/collection/components/x-back-top/x-back-top.js +3 -3
  424. package/dist/collection/components/x-badge/x-badge.js +3 -7
  425. package/dist/collection/components/x-breadcrumb/x-breadcrumb.js +3 -3
  426. package/dist/collection/components/x-breadcrumb-item/x-breadcrumb-item.js +1 -1
  427. package/dist/collection/components/x-button/x-button.js +7 -7
  428. package/dist/collection/components/x-captcha/x-captcha.js +28 -8
  429. package/dist/collection/components/x-card/x-card.css +9 -4
  430. package/dist/collection/components/x-card/x-card.js +1 -1
  431. package/dist/collection/components/x-carousel/x-carousel.css +5 -2
  432. package/dist/collection/components/x-carousel/x-carousel.js +5 -5
  433. package/dist/collection/components/x-cascader/cascader-dropdown-content/cascader-dropdown-content.css +5 -2
  434. package/dist/collection/components/x-cascader/cascader-dropdown-content/cascader-dropdown-content.js +9 -9
  435. package/dist/collection/components/x-cascader/x-cascader.css +5 -2
  436. package/dist/collection/components/x-cascader/x-cascader.js +17 -20
  437. package/dist/collection/components/x-checkbox/x-checkbox.css +5 -2
  438. package/dist/collection/components/x-checkbox/x-checkbox.js +9 -19
  439. package/dist/collection/components/x-code-editor/types.js +1 -0
  440. package/dist/collection/components/x-code-editor/x-code-editor.css +1274 -0
  441. package/dist/collection/components/x-code-editor/x-code-editor.js +1497 -0
  442. package/dist/collection/components/x-col/x-col.css +5 -2
  443. package/dist/collection/components/x-col/x-col.js +14 -14
  444. package/dist/collection/components/x-collapse/x-collapse.css +5 -2
  445. package/dist/collection/components/x-collapse/x-collapse.js +4 -4
  446. package/dist/collection/components/x-collapse-panel/x-collapse-panel.css +5 -2
  447. package/dist/collection/components/x-collapse-panel/x-collapse-panel.js +4 -4
  448. package/dist/collection/components/x-color-picker/x-color-picker-panel.js +6 -8
  449. package/dist/collection/components/x-color-picker/x-color-picker.css +5 -2
  450. package/dist/collection/components/x-color-picker/x-color-picker.js +72 -12
  451. package/dist/collection/components/x-comment/x-comment.css +5 -2
  452. package/dist/collection/components/x-comment/x-comment.js +3 -3
  453. package/dist/collection/components/x-content/x-content.css +5 -4
  454. package/dist/collection/components/x-content/x-content.js +3 -3
  455. package/dist/collection/components/x-date-picker/date-picker-dropdown-content/date-picker-dropdown-content.css +7 -3
  456. package/dist/collection/components/x-date-picker/date-picker-dropdown-content/date-picker-dropdown-content.js +5 -9
  457. package/dist/collection/components/x-date-picker/x-date-picker.css +5 -2
  458. package/dist/collection/components/x-date-picker/x-date-picker.js +65 -23
  459. package/dist/collection/components/x-descriptions/x-descriptions.css +5 -2
  460. package/dist/collection/components/x-descriptions/x-descriptions.js +3 -3
  461. package/dist/collection/components/x-descriptions-item/x-descriptions-item.css +5 -2
  462. package/dist/collection/components/x-descriptions-item/x-descriptions-item.js +4 -4
  463. package/dist/collection/components/x-divider/x-divider.css +5 -2
  464. package/dist/collection/components/x-divider/x-divider.js +3 -3
  465. package/dist/collection/components/x-drawer/x-drawer.css +5 -2
  466. package/dist/collection/components/x-drawer/x-drawer.js +6 -4
  467. package/dist/collection/components/x-drawer-content/x-drawer-content.css +5 -2
  468. package/dist/collection/components/x-drawer-content/x-drawer-content.js +4 -4
  469. package/dist/collection/components/x-dropdown/dropdown-content/dropdown-content.css +5 -2
  470. package/dist/collection/components/x-dropdown/dropdown-content/dropdown-content.js +1 -1
  471. package/dist/collection/components/x-dropdown/x-dropdown.css +5 -2
  472. package/dist/collection/components/x-dropdown/x-dropdown.js +34 -12
  473. package/dist/collection/components/x-editor/types.js +4 -6
  474. package/dist/collection/components/x-editor/x-editor.css +25 -10
  475. package/dist/collection/components/x-editor/x-editor.js +80 -74
  476. package/dist/collection/components/x-empty/x-empty.css +5 -2
  477. package/dist/collection/components/x-empty/x-empty.js +1 -1
  478. package/dist/collection/components/x-finder/services/finder-service.js +7 -9
  479. package/dist/collection/components/x-finder/x-finder.css +10 -4
  480. package/dist/collection/components/x-finder/x-finder.js +28 -19
  481. package/dist/collection/components/x-flex/x-flex.css +5 -2
  482. package/dist/collection/components/x-flex/x-flex.js +5 -7
  483. package/dist/collection/components/x-float-button/x-float-button.css +5 -2
  484. package/dist/collection/components/x-float-button/x-float-button.js +4 -4
  485. package/dist/collection/components/x-footer/x-footer.css +5 -2
  486. package/dist/collection/components/x-footer/x-footer.js +1 -1
  487. package/dist/collection/components/x-form/x-form.css +5 -2
  488. package/dist/collection/components/x-form/x-form.js +98 -3
  489. package/dist/collection/components/x-form-builder/services/apis/api-client.js +24 -15
  490. package/dist/collection/components/x-form-builder/services/forms/form-array.js +3 -5
  491. package/dist/collection/components/x-form-builder/services/forms/form-group.js +6 -6
  492. package/dist/collection/components/x-form-builder/services/forms/validators.js +20 -10
  493. package/dist/collection/components/x-form-builder/services/schema/condition-builder.js +73 -50
  494. package/dist/collection/components/x-form-builder/services/schema/default-registry.js +108 -87
  495. package/dist/collection/components/x-form-builder/services/schema/form-mapping.js +80 -5
  496. package/dist/collection/components/x-form-builder/services/schema/formula-builder.js +114 -0
  497. package/dist/collection/components/x-form-builder/services/schema/schema-builder.js +7 -2
  498. package/dist/collection/components/x-form-builder/services/schema/schema-validator.js +1 -1
  499. package/dist/collection/components/x-form-builder/types/common/index.js +1 -0
  500. package/dist/collection/components/x-form-builder/types/common/ui-types.js +1 -0
  501. package/dist/collection/components/x-form-builder/types/fields/selection-fields.js +1 -9
  502. package/dist/collection/components/x-form-builder/utils/condition-engine.js +56 -14
  503. package/dist/collection/components/x-form-builder/utils/utils.js +25 -6
  504. package/dist/collection/components/x-form-builder/x-form-builder.js +559 -206
  505. package/dist/collection/components/x-form-item/x-form-item.css +16 -10
  506. package/dist/collection/components/x-form-item/x-form-item.js +46 -28
  507. package/dist/collection/components/x-header/x-header.css +5 -2
  508. package/dist/collection/components/x-header/x-header.js +1 -1
  509. package/dist/collection/components/x-icon/icons.js +19257 -2716
  510. package/dist/collection/components/x-icon/x-icon.css +5 -2
  511. package/dist/collection/components/x-icon/x-icon.js +6 -6
  512. package/dist/collection/components/x-image/x-image.css +5 -2
  513. package/dist/collection/components/x-image/x-image.js +6 -6
  514. package/dist/collection/components/x-infinite-scroll/x-infinite-scroll.css +5 -2
  515. package/dist/collection/components/x-infinite-scroll/x-infinite-scroll.js +2 -2
  516. package/dist/collection/components/x-input/x-input.css +25 -2
  517. package/dist/collection/components/x-input/x-input.js +38 -9
  518. package/dist/collection/components/x-input-icon/icon-picker-dropdown-content/icon-picker-dropdown-content.css +453 -0
  519. package/dist/collection/components/x-input-icon/icon-picker-dropdown-content/icon-picker-dropdown-content.js +304 -0
  520. package/dist/collection/components/x-input-icon/types.js +1 -0
  521. package/dist/collection/components/x-input-icon/x-input-icon.css +404 -0
  522. package/dist/collection/components/x-input-icon/x-input-icon.js +917 -0
  523. package/dist/collection/components/x-input-number/x-input-number.css +5 -2
  524. package/dist/collection/components/x-input-number/x-input-number.js +108 -13
  525. package/dist/collection/components/x-layout/x-layout.css +5 -2
  526. package/dist/collection/components/x-layout/x-layout.js +11 -5
  527. package/dist/collection/components/x-layout-admin/x-layout-admin.css +403 -0
  528. package/dist/collection/components/x-layout-admin/x-layout-admin.js +127 -0
  529. package/dist/collection/components/x-layout-detail/x-layout-detail.css +479 -0
  530. package/dist/collection/components/x-layout-detail/x-layout-detail.js +300 -0
  531. package/dist/collection/components/x-layout-list/types.js +1 -0
  532. package/dist/collection/components/x-layout-list/x-layout-list.css +511 -0
  533. package/dist/collection/components/x-layout-list/x-layout-list.js +619 -0
  534. package/dist/collection/components/x-list/x-list.css +5 -2
  535. package/dist/collection/components/x-list/x-list.js +3 -3
  536. package/dist/collection/components/x-list-item/x-list-item.css +5 -2
  537. package/dist/collection/components/x-list-item/x-list-item.js +1 -1
  538. package/dist/collection/components/x-login/types.js +1 -0
  539. package/dist/collection/components/x-login/x-login.css +562 -0
  540. package/dist/collection/components/x-login/x-login.js +706 -0
  541. package/dist/collection/components/x-mentions/x-mentions.css +5 -2
  542. package/dist/collection/components/x-mentions/x-mentions.js +4 -4
  543. package/dist/collection/components/x-menu/x-menu.js +1 -1
  544. package/dist/collection/components/x-menu-divider/x-menu-divider.js +1 -1
  545. package/dist/collection/components/x-menu-item/x-menu-item.js +2 -2
  546. package/dist/collection/components/x-menu-item-group/x-menu-item-group.js +1 -1
  547. package/dist/collection/components/x-menu-submenu/x-menu-submenu.js +5 -5
  548. package/dist/collection/components/x-message/message-service.js +2 -2
  549. package/dist/collection/components/x-message/x-message.css +5 -2
  550. package/dist/collection/components/x-message/x-message.js +5 -5
  551. package/dist/collection/components/x-modal/modal-service.js +33 -13
  552. package/dist/collection/components/x-modal/x-modal.css +5 -2
  553. package/dist/collection/components/x-modal/x-modal.js +148 -47
  554. package/dist/collection/components/x-modal-content/x-modal-content.css +110 -18
  555. package/dist/collection/components/x-modal-content/x-modal-content.js +157 -12
  556. package/dist/collection/components/x-notification/notification-service.js +9 -10
  557. package/dist/collection/components/x-notification/x-notification.css +6 -2
  558. package/dist/collection/components/x-notification/x-notification.js +4 -4
  559. package/dist/collection/components/x-page-header/x-page-header.css +5 -2
  560. package/dist/collection/components/x-page-header/x-page-header.js +1 -1
  561. package/dist/collection/components/x-pagination/x-pagination.css +11 -2
  562. package/dist/collection/components/x-pagination/x-pagination.js +18 -14
  563. package/dist/collection/components/x-popconfirm/popconfirm-content/popconfirm-content.css +5 -2
  564. package/dist/collection/components/x-popconfirm/popconfirm-content/popconfirm-content.js +1 -1
  565. package/dist/collection/components/x-popconfirm/x-popconfirm.css +5 -2
  566. package/dist/collection/components/x-popconfirm/x-popconfirm.js +1 -1
  567. package/dist/collection/components/x-popover/popover-content/popover-content.css +5 -2
  568. package/dist/collection/components/x-popover/popover-content/popover-content.js +1 -1
  569. package/dist/collection/components/x-popover/x-popover.css +5 -2
  570. package/dist/collection/components/x-popover/x-popover.js +1 -1
  571. package/dist/collection/components/x-portal/positioning.js +11 -16
  572. package/dist/collection/components/x-progress/x-progress.css +5 -2
  573. package/dist/collection/components/x-progress/x-progress.js +8 -8
  574. package/dist/collection/components/x-qr-code/x-qr-code.css +2 -1
  575. package/dist/collection/components/x-qr-code/x-qr-code.js +23 -1
  576. package/dist/collection/components/x-radio/x-radio.css +5 -2
  577. package/dist/collection/components/x-radio/x-radio.js +5 -5
  578. package/dist/collection/components/x-radio-group/x-radio-group.css +5 -2
  579. package/dist/collection/components/x-radio-group/x-radio-group.js +6 -8
  580. package/dist/collection/components/x-range-picker/range-picker-dropdown-content/range-picker-dropdown-content.css +7 -3
  581. package/dist/collection/components/x-range-picker/range-picker-dropdown-content/range-picker-dropdown-content.js +13 -13
  582. package/dist/collection/components/x-range-picker/x-range-picker.css +5 -2
  583. package/dist/collection/components/x-range-picker/x-range-picker.js +9 -18
  584. package/dist/collection/components/x-rate/x-rate.css +5 -2
  585. package/dist/collection/components/x-rate/x-rate.js +3 -3
  586. package/dist/collection/components/x-result/x-result.css +5 -2
  587. package/dist/collection/components/x-result/x-result.js +11 -10
  588. package/dist/collection/components/x-row/x-row.css +5 -2
  589. package/dist/collection/components/x-row/x-row.js +4 -4
  590. package/dist/collection/components/x-segmented/x-segmented.css +5 -2
  591. package/dist/collection/components/x-segmented/x-segmented.js +8 -8
  592. package/dist/collection/components/x-select/select-dropdown-content/select-dropdown-content.css +11 -4
  593. package/dist/collection/components/x-select/select-dropdown-content/select-dropdown-content.js +1 -1
  594. package/dist/collection/components/x-select/x-select.css +11 -4
  595. package/dist/collection/components/x-select/x-select.js +33 -39
  596. package/dist/collection/components/x-select-option/x-select-option.css +5 -2
  597. package/dist/collection/components/x-select-option/x-select-option.js +3 -3
  598. package/dist/collection/components/x-sider/x-sider.css +7 -4
  599. package/dist/collection/components/x-sider/x-sider.js +7 -9
  600. package/dist/collection/components/x-skeleton/x-skeleton.css +5 -2
  601. package/dist/collection/components/x-skeleton/x-skeleton.js +3 -3
  602. package/dist/collection/components/x-slider/x-slider.css +5 -2
  603. package/dist/collection/components/x-slider/x-slider.js +11 -23
  604. package/dist/collection/components/x-space/x-space.css +5 -2
  605. package/dist/collection/components/x-space/x-space.js +4 -4
  606. package/dist/collection/components/x-spin/x-spin.css +5 -2
  607. package/dist/collection/components/x-spin/x-spin.js +1 -1
  608. package/dist/collection/components/x-splitter/x-splitter.js +14 -8
  609. package/dist/collection/components/x-splitter-panel/x-splitter-panel.js +1 -1
  610. package/dist/collection/components/x-statistic/x-statistic.css +5 -2
  611. package/dist/collection/components/x-statistic/x-statistic.js +1 -1
  612. package/dist/collection/components/x-step/x-step.css +5 -2
  613. package/dist/collection/components/x-step/x-step.js +5 -5
  614. package/dist/collection/components/x-steps/x-steps.css +5 -2
  615. package/dist/collection/components/x-steps/x-steps.js +4 -6
  616. package/dist/collection/components/x-switch/x-switch.css +5 -2
  617. package/dist/collection/components/x-switch/x-switch.js +7 -4
  618. package/dist/collection/components/x-tab-pane/x-tab-pane.css +5 -2
  619. package/dist/collection/components/x-tab-pane/x-tab-pane.js +58 -2
  620. package/dist/collection/components/x-table/x-table.css +187 -41
  621. package/dist/collection/components/x-table/x-table.js +257 -105
  622. package/dist/collection/components/x-table-cell/x-table-cell.css +5 -2
  623. package/dist/collection/components/x-table-cell/x-table-cell.js +2 -2
  624. package/dist/collection/components/x-table-row/x-table-row.css +5 -2
  625. package/dist/collection/components/x-table-row/x-table-row.js +11 -8
  626. package/dist/collection/components/x-tabs/x-tabs.css +17 -2
  627. package/dist/collection/components/x-tabs/x-tabs.js +130 -12
  628. package/dist/collection/components/x-tag/x-tag.css +6 -3
  629. package/dist/collection/components/x-tag/x-tag.js +1 -4
  630. package/dist/collection/components/x-textarea/x-textarea.css +5 -2
  631. package/dist/collection/components/x-textarea/x-textarea.js +5 -5
  632. package/dist/collection/components/x-time-picker/time-picker-dropdown-content/time-picker-dropdown-content.css +5 -2
  633. package/dist/collection/components/x-time-picker/time-picker-dropdown-content/time-picker-dropdown-content.js +1 -1
  634. package/dist/collection/components/x-time-picker/x-time-picker.css +5 -2
  635. package/dist/collection/components/x-time-picker/x-time-picker.js +4 -7
  636. package/dist/collection/components/x-timeline/x-timeline.css +5 -2
  637. package/dist/collection/components/x-timeline/x-timeline.js +2 -2
  638. package/dist/collection/components/x-timeline-item/x-timeline-item.css +5 -2
  639. package/dist/collection/components/x-timeline-item/x-timeline-item.js +2 -2
  640. package/dist/collection/components/x-tooltip/x-tooltip.css +5 -2
  641. package/dist/collection/components/x-tooltip/x-tooltip.js +6 -8
  642. package/dist/collection/components/x-tooltip-content/x-tooltip-content.js +2 -2
  643. package/dist/collection/components/x-tour/x-tour-panel.css +5 -2
  644. package/dist/collection/components/x-tour/x-tour-panel.js +1 -1
  645. package/dist/collection/components/x-tour/x-tour.css +5 -2
  646. package/dist/collection/components/x-tour/x-tour.js +15 -15
  647. package/dist/collection/components/x-transfer/x-transfer.css +5 -2
  648. package/dist/collection/components/x-transfer/x-transfer.js +8 -8
  649. package/dist/collection/components/x-tree/x-tree.css +5 -2
  650. package/dist/collection/components/x-tree/x-tree.js +25 -26
  651. package/dist/collection/components/x-tree-select/tree-select-dropdown-content/tree-select-dropdown-content.css +5 -2
  652. package/dist/collection/components/x-tree-select/tree-select-dropdown-content/tree-select-dropdown-content.js +6 -6
  653. package/dist/collection/components/x-tree-select/x-tree-select.css +5 -2
  654. package/dist/collection/components/x-tree-select/x-tree-select.js +21 -31
  655. package/dist/collection/components/x-typography/x-typography.css +10 -3
  656. package/dist/collection/components/x-typography/x-typography.js +12 -12
  657. package/dist/collection/components/x-upload/x-upload.css +5 -2
  658. package/dist/collection/components/x-upload/x-upload.js +342 -48
  659. package/dist/collection/components/x-virtual-scroll/x-virtual-scroll.js +5 -5
  660. package/dist/collection/components/x-workflow/x-workflow.css +3 -1
  661. package/dist/collection/components/x-workflow/x-workflow.js +81 -66
  662. package/dist/collection/components/x-workflow-builder/x-workflow-builder.css +5 -2
  663. package/dist/collection/components/x-workflow-builder/x-workflow-builder.js +6 -6
  664. package/dist/collection/index.js +2 -0
  665. package/dist/collection/locales/languages/mn_MN.js +14 -1
  666. package/dist/collection/locales/locale.service.js +4 -9
  667. package/dist/collection/utils/code-editor/ast-parser.js +378 -0
  668. package/dist/collection/utils/code-editor/autocomplete-db.js +590 -0
  669. package/dist/collection/utils/code-editor/history.js +56 -0
  670. package/dist/collection/utils/code-editor/index.js +4 -0
  671. package/dist/collection/utils/code-editor/plugin-system.js +54 -0
  672. package/dist/collection/utils/code-editor/tokenizer.js +300 -0
  673. package/dist/collection/utils/config.js +3 -3
  674. package/dist/collection/utils/form/core/abstract-control.js +40 -14
  675. package/dist/collection/utils/form/core/form-array.js +7 -5
  676. package/dist/collection/utils/form/core/form-group.js +8 -4
  677. package/dist/collection/utils/form/frameworks.js +7 -3
  678. package/dist/collection/utils/form/validators/validators.js +3 -9
  679. package/dist/collection/utils/qr-code/engine/qr.engine.js +3 -3
  680. package/dist/collection/utils/qr-code/engine/qr.mask.js +3 -3
  681. package/dist/collection/utils/qr-code/engine/qr.rs.js +1 -1
  682. package/dist/collection/utils/table.service.js +40 -14
  683. package/dist/collection/utils/tree.service.js +22 -22
  684. package/dist/collection/utils/workflow/flow.service.js +95 -30
  685. package/dist/esm/{abstract-control-XBF88YT_.js → abstract-control-BtYiIQqg.js} +40 -14
  686. package/dist/esm/{config-BPeosvTA.js → config-RKpMhZmc.js} +3 -3
  687. package/dist/esm/icons-CQ2VND9-.js +19259 -0
  688. package/dist/esm/{index-ig_mFsVk.js → index-BMTt8QT3.js} +39 -12
  689. package/dist/esm/index.js +6 -5
  690. package/dist/esm/loader.js +3 -3
  691. package/dist/esm/{locale.service-D66tF8_2.js → locale.service-DFADJBLL.js} +17 -9
  692. package/dist/esm/{modal-service-C_e0SaFZ.js → modal-service-ikfAY1gn.js} +34 -14
  693. package/dist/esm/{notification-service-DJTSPOq7.js → notification-service-CUyIF7K-.js} +12 -13
  694. package/dist/esm/{portal-controller-COpzIi1n.js → portal-controller-DM8AggMt.js} +11 -16
  695. package/dist/esm/{schema-builder-DBPGgJBx.js → schema-builder-CekbhOnD.js} +385 -99
  696. package/dist/esm/{tree.service-Dgxy93Bg.js → tree.service-iG9CbEpE.js} +22 -22
  697. package/dist/esm/x-address_51.entry.js +26926 -0
  698. package/dist/esm/x-affix.entry.js +5 -5
  699. package/dist/esm/{x-alert_11.entry.js → x-alert_9.entry.js} +268 -645
  700. package/dist/esm/x-anchor-link.entry.js +3 -3
  701. package/dist/esm/x-anchor.entry.js +11 -9
  702. package/dist/esm/x-app.entry.js +19 -19
  703. package/dist/esm/x-back-top.entry.js +4 -4
  704. package/dist/esm/x-breadcrumb_2.entry.js +121 -0
  705. package/dist/esm/x-carousel.entry.js +7 -7
  706. package/dist/esm/x-code-editor.entry.js +2363 -0
  707. package/dist/esm/x-col_11.entry.js +1192 -0
  708. package/dist/esm/x-collapse-panel.entry.js +4 -4
  709. package/dist/esm/x-collapse.entry.js +4 -4
  710. package/dist/esm/x-comment.entry.js +5 -5
  711. package/dist/esm/x-descriptions-item.entry.js +6 -6
  712. package/dist/esm/{x-breadcrumb_5.entry.js → x-descriptions_3.entry.js} +37 -156
  713. package/dist/esm/x-drawer-content.entry.js +8 -8
  714. package/dist/esm/x-drawer.entry.js +9 -7
  715. package/dist/esm/x-finder.entry.js +39 -32
  716. package/dist/esm/x-icon-picker-dropdown-content.entry.js +156 -0
  717. package/dist/esm/x-infinite-scroll.entry.js +4 -4
  718. package/dist/esm/x-input-icon.entry.js +359 -0
  719. package/dist/esm/x-layout-admin.entry.js +43 -0
  720. package/dist/esm/x-layout-detail.entry.js +143 -0
  721. package/dist/esm/x-layout-list.entry.js +257 -0
  722. package/dist/esm/x-list-item.entry.js +3 -3
  723. package/dist/esm/{x-menu-submenu.entry.js → x-list_2.entry.js} +141 -8
  724. package/dist/esm/x-mentions.entry.js +6 -6
  725. package/dist/esm/x-menu-divider.entry.js +2 -2
  726. package/dist/esm/x-menu-item-group.entry.js +2 -2
  727. package/dist/esm/x-menu_2.entry.js +506 -0
  728. package/dist/esm/x-message.entry.js +7 -7
  729. package/dist/esm/x-notification.entry.js +7 -7
  730. package/dist/esm/x-page-header.entry.js +3 -3
  731. package/dist/esm/x-popconfirm-content.entry.js +4 -4
  732. package/dist/esm/x-popconfirm.entry.js +5 -5
  733. package/dist/esm/x-progress.entry.js +10 -10
  734. package/dist/esm/x-qr-code.entry.js +11 -9
  735. package/dist/esm/x-skeleton.entry.js +5 -5
  736. package/dist/esm/x-splitter-panel.entry.js +2 -2
  737. package/dist/esm/x-splitter.entry.js +11 -5
  738. package/dist/esm/x-statistic.entry.js +3 -3
  739. package/dist/esm/x-step.entry.js +7 -7
  740. package/dist/esm/x-steps.entry.js +6 -8
  741. package/dist/esm/x-table-cell.entry.js +4 -4
  742. package/dist/esm/x-table-row.entry.js +13 -10
  743. package/dist/esm/x-timeline-item.entry.js +4 -4
  744. package/dist/esm/x-timeline.entry.js +4 -4
  745. package/dist/esm/x-tour-panel.entry.js +3 -3
  746. package/dist/esm/x-tour.entry.js +16 -16
  747. package/dist/esm/x-virtual-scroll.entry.js +5 -5
  748. package/dist/esm/x-workflow-builder.entry.js +8 -8
  749. package/dist/esm/xlabs.js +20 -0
  750. package/dist/types/components/x-app/x-app.d.ts +12 -12
  751. package/dist/types/components/x-auto-complete/auto-complete-dropdown-content/index.d.ts +1 -1
  752. package/dist/types/components/x-auto-complete/x-auto-complete.d.ts +6 -0
  753. package/dist/types/components/x-avatar/x-avatar.d.ts +3 -2
  754. package/dist/types/components/x-captcha/x-captcha.d.ts +4 -0
  755. package/dist/types/components/x-checkbox/x-checkbox.d.ts +0 -4
  756. package/dist/types/components/x-code-editor/types.d.ts +26 -0
  757. package/dist/types/components/x-code-editor/x-code-editor.d.ts +141 -0
  758. package/dist/types/components/x-color-picker/types.d.ts +4 -0
  759. package/dist/types/components/x-color-picker/x-color-picker.d.ts +8 -1
  760. package/dist/types/components/x-content/x-content.d.ts +1 -1
  761. package/dist/types/components/x-date-picker/x-date-picker.d.ts +4 -0
  762. package/dist/types/components/x-form/x-form.d.ts +12 -0
  763. package/dist/types/components/x-form-builder/services/forms/validators.d.ts +1 -0
  764. package/dist/types/components/x-form-builder/services/schema/form-mapping.d.ts +4 -0
  765. package/dist/types/components/x-form-builder/services/schema/formula-builder.d.ts +29 -0
  766. package/dist/types/components/x-form-builder/services/schema/schema-builder.d.ts +6 -1
  767. package/dist/types/components/x-form-builder/types/common/common-types.d.ts +5 -0
  768. package/dist/types/components/x-form-builder/types/common/field-types-enum.d.ts +1 -1
  769. package/dist/types/components/x-form-builder/types/common/index.d.ts +1 -0
  770. package/dist/types/components/x-form-builder/types/common/ui-types.d.ts +28 -0
  771. package/dist/types/components/x-form-builder/types/common/validation-types.d.ts +1 -1
  772. package/dist/types/components/x-form-builder/types/fields/advanced-fields.d.ts +1 -0
  773. package/dist/types/components/x-form-builder/types/fields/base-field.d.ts +4 -1
  774. package/dist/types/components/x-form-builder/types/fields/datetime-file-fields.d.ts +10 -3
  775. package/dist/types/components/x-form-builder/types/fields/display-fields.d.ts +3 -0
  776. package/dist/types/components/x-form-builder/types/fields/form-field-union.d.ts +5 -5
  777. package/dist/types/components/x-form-builder/types/fields/input-fields.d.ts +5 -0
  778. package/dist/types/components/x-form-builder/types/fields/layout-fields.d.ts +29 -2
  779. package/dist/types/components/x-form-builder/types/fields/selection-fields.d.ts +11 -4
  780. package/dist/types/components/x-form-builder/types/fields/special-input-fields.d.ts +3 -0
  781. package/dist/types/components/x-form-builder/types/form/schema-types.d.ts +7 -3
  782. package/dist/types/components/x-form-builder/utils/values.d.ts +1 -1
  783. package/dist/types/components/x-form-builder/x-form-builder.d.ts +11 -3
  784. package/dist/types/components/x-icon/icons.d.ts +12 -2716
  785. package/dist/types/components/x-icon/x-icon.d.ts +1 -1
  786. package/dist/types/components/x-input/types.d.ts +1 -1
  787. package/dist/types/components/x-input/x-input.d.ts +6 -0
  788. package/dist/types/components/x-input-icon/icon-picker-dropdown-content/icon-picker-dropdown-content.d.ts +39 -0
  789. package/dist/types/components/x-input-icon/types.d.ts +9 -0
  790. package/dist/types/components/x-input-icon/x-input-icon.d.ts +150 -0
  791. package/dist/types/components/x-input-number/x-input-number.d.ts +5 -0
  792. package/dist/types/components/x-layout/x-layout.d.ts +2 -1
  793. package/dist/types/components/x-layout-admin/x-layout-admin.d.ts +23 -0
  794. package/dist/types/components/x-layout-detail/x-layout-detail.d.ts +86 -0
  795. package/dist/types/components/x-layout-list/types.d.ts +100 -0
  796. package/dist/types/components/x-layout-list/x-layout-list.d.ts +107 -0
  797. package/dist/types/components/x-login/types.d.ts +113 -0
  798. package/dist/types/components/x-login/x-login.d.ts +126 -0
  799. package/dist/types/components/x-message/message-service.d.ts +1 -1
  800. package/dist/types/components/x-modal/x-modal.d.ts +31 -6
  801. package/dist/types/components/x-modal-content/x-modal-content.d.ts +24 -0
  802. package/dist/types/components/x-notification/notification-service.d.ts +1 -1
  803. package/dist/types/components/x-qr-code/x-qr-code.d.ts +2 -0
  804. package/dist/types/components/x-select/select-dropdown-content/index.d.ts +1 -1
  805. package/dist/types/components/x-tab-pane/x-tab-pane.d.ts +11 -0
  806. package/dist/types/components/x-table/types.d.ts +3 -0
  807. package/dist/types/components/x-table/x-table.d.ts +15 -4
  808. package/dist/types/components/x-tabs/types.d.ts +9 -0
  809. package/dist/types/components/x-tabs/x-tabs.d.ts +40 -1
  810. package/dist/types/components/x-time-picker/time-picker-dropdown-content/index.d.ts +1 -1
  811. package/dist/types/components/x-transfer/types.d.ts +3 -1
  812. package/dist/types/components/x-upload/types.d.ts +14 -0
  813. package/dist/types/components/x-upload/x-upload.d.ts +34 -7
  814. package/dist/types/components.d.ts +1304 -70
  815. package/dist/types/index.d.ts +2 -0
  816. package/dist/types/locales/locale.service.d.ts +3 -3
  817. package/dist/types/types.d.ts +2 -0
  818. package/dist/types/utils/code-editor/ast-parser.d.ts +5 -0
  819. package/dist/types/utils/code-editor/autocomplete-db.d.ts +10 -0
  820. package/dist/types/utils/code-editor/history.d.ts +19 -0
  821. package/dist/types/utils/code-editor/index.d.ts +4 -0
  822. package/dist/types/utils/code-editor/plugin-system.d.ts +31 -0
  823. package/dist/types/utils/code-editor/tokenizer.d.ts +2 -0
  824. package/dist/types/utils/form/types.d.ts +1 -1
  825. package/dist/types/utils/table.service.d.ts +2 -1
  826. package/dist/xlabs/index.esm.js +1 -0
  827. package/dist/xlabs/p-0139d27f.entry.js +1 -0
  828. package/dist/xlabs/p-04985e4d.entry.js +1 -0
  829. package/dist/xlabs/p-05a79f30.entry.js +1 -0
  830. package/dist/xlabs/p-0a08e0c8.entry.js +1 -0
  831. package/dist/xlabs/p-0d5fb8de.entry.js +1 -0
  832. package/dist/{xlabs-store/p-cd3c3374.entry.js → xlabs/p-121911e5.entry.js} +1 -1
  833. package/dist/xlabs/p-1260ad3b.entry.js +1 -0
  834. package/dist/xlabs/p-1c0ee15c.entry.js +1 -0
  835. package/dist/{xlabs-store/p-023259c9.entry.js → xlabs/p-1cd3b259.entry.js} +1 -1
  836. package/dist/xlabs/p-2451ab24.entry.js +1 -0
  837. package/dist/xlabs/p-2ab3bc58.entry.js +1 -0
  838. package/dist/xlabs/p-2f9d0da7.entry.js +1 -0
  839. package/dist/xlabs/p-302ab3b9.entry.js +1 -0
  840. package/dist/xlabs/p-31029063.entry.js +1 -0
  841. package/dist/xlabs/p-31c814c2.entry.js +1 -0
  842. package/dist/xlabs/p-3f5b28e5.entry.js +1 -0
  843. package/dist/xlabs/p-43d10a6e.entry.js +1 -0
  844. package/dist/xlabs/p-4bf9b6f7.entry.js +1 -0
  845. package/dist/xlabs/p-5ab9ce39.entry.js +1 -0
  846. package/dist/xlabs/p-5e495388.entry.js +1 -0
  847. package/dist/xlabs/p-6039e514.entry.js +1 -0
  848. package/dist/xlabs/p-674527b2.entry.js +1 -0
  849. package/dist/xlabs/p-68056c0e.entry.js +1 -0
  850. package/dist/xlabs/p-6d7480c0.entry.js +1 -0
  851. package/dist/xlabs/p-7697ef47.entry.js +1 -0
  852. package/dist/xlabs/p-7b8bdd79.entry.js +1 -0
  853. package/dist/xlabs/p-7f9a80e0.entry.js +1 -0
  854. package/dist/xlabs/p-948a032e.entry.js +1 -0
  855. package/dist/xlabs/p-99c568fd.entry.js +1 -0
  856. package/dist/{xlabs-store/p-7a8f11b4.entry.js → xlabs/p-9ae3501d.entry.js} +1 -1
  857. package/dist/xlabs/p-9b3a4aa6.entry.js +1 -0
  858. package/dist/xlabs/p-9c1cc5ff.entry.js +1 -0
  859. package/dist/xlabs/p-BMTt8QT3.js +2 -0
  860. package/dist/xlabs/p-CQ2VND9-.js +1 -0
  861. package/dist/xlabs/p-CkwLFDlS.js +1 -0
  862. package/dist/xlabs/p-D7kqIlVo.js +1 -0
  863. package/dist/{xlabs-store/p-Co3Y9VjQ.js → xlabs/p-DSa1uqPO.js} +1 -1
  864. package/dist/{xlabs-store/p-c0ca6f7d.entry.js → xlabs/p-a2d14538.entry.js} +1 -1
  865. package/dist/xlabs/p-a415c8c1.entry.js +1 -0
  866. package/dist/xlabs/p-a4995e36.entry.js +1 -0
  867. package/dist/{xlabs-store/p-fdec5d89.entry.js → xlabs/p-aba80f73.entry.js} +1 -1
  868. package/dist/xlabs/p-bc5969e0.entry.js +1 -0
  869. package/dist/xlabs/p-bef8def9.entry.js +1 -0
  870. package/dist/xlabs/p-cc57e705.entry.js +1 -0
  871. package/dist/xlabs/p-d11de492.entry.js +1 -0
  872. package/dist/xlabs/p-d4558f7b.entry.js +1 -0
  873. package/dist/xlabs/p-d921a2c7.entry.js +1 -0
  874. package/dist/xlabs/p-df10e5a1.entry.js +1 -0
  875. package/dist/xlabs/p-e1a1acbe.entry.js +1 -0
  876. package/dist/xlabs/p-eab901c4.entry.js +1 -0
  877. package/dist/xlabs/p-edcb4001.entry.js +1 -0
  878. package/dist/xlabs/p-f07d9ee7.entry.js +1 -0
  879. package/dist/xlabs/p-f280faed.entry.js +1 -0
  880. package/dist/xlabs/p-f5b96f2a.entry.js +1 -0
  881. package/dist/xlabs/p-f6950840.entry.js +1 -0
  882. package/dist/{xlabs-store/p-96b1939d.entry.js → xlabs/p-f69d2b16.entry.js} +1 -1
  883. package/dist/{xlabs-store/p-8bcbb4e3.entry.js → xlabs/p-fd003457.entry.js} +1 -1
  884. package/dist/xlabs/xlabs.css +2 -0
  885. package/dist/xlabs/xlabs.esm.js +1 -0
  886. package/loader/cdn.js +0 -0
  887. package/loader/index.cjs.js +0 -0
  888. package/loader/index.d.ts +0 -0
  889. package/loader/index.es2017.js +0 -0
  890. package/loader/index.js +0 -0
  891. package/package.json +65 -69
  892. package/readme.md +107 -50
  893. package/components/p-5c86X8JO.js +0 -1
  894. package/components/p-6KpqCGp9.js +0 -1
  895. package/components/p-ADwHM_jT.js +0 -1
  896. package/components/p-AgSyA7Ia.js +0 -1
  897. package/components/p-B-7Hwizp.js +0 -1
  898. package/components/p-B-ClGFfy.js +0 -1
  899. package/components/p-B4rO7Sgt.js +0 -1
  900. package/components/p-B5Syz0fw.js +0 -1
  901. package/components/p-B6p-mzW-.js +0 -1
  902. package/components/p-B8SZP5Xz.js +0 -1
  903. package/components/p-BBGHXZqR.js +0 -1
  904. package/components/p-BHLvuyOq.js +0 -1
  905. package/components/p-BOCR5Zk0.js +0 -1
  906. package/components/p-BRBrLtOz.js +0 -1
  907. package/components/p-BSRP2TGa.js +0 -1
  908. package/components/p-BUjRcJoK.js +0 -1
  909. package/components/p-BVeQ5W_G.js +0 -1
  910. package/components/p-BVnVlCcd.js +0 -1
  911. package/components/p-BZQcq9R_.js +0 -1
  912. package/components/p-BeIFU-wn.js +0 -1
  913. package/components/p-BkEgl31q.js +0 -1
  914. package/components/p-BkPJ1Whr.js +0 -1
  915. package/components/p-BkevSugc.js +0 -1
  916. package/components/p-BkiOFW3H.js +0 -1
  917. package/components/p-BskMfHyY.js +0 -1
  918. package/components/p-Bu2JqZs8.js +0 -1
  919. package/components/p-BvjR2Q5Q.js +0 -1
  920. package/components/p-Bz7MhZ4K.js +0 -1
  921. package/components/p-C3gvR6nN.js +0 -1
  922. package/components/p-C70KKm8p.js +0 -1
  923. package/components/p-C7csgUoA.js +0 -1
  924. package/components/p-CAPfC5Vn.js +0 -1
  925. package/components/p-CEBSDVyp.js +0 -1
  926. package/components/p-CFB6xkAX.js +0 -1
  927. package/components/p-CGIxdOEm.js +0 -1
  928. package/components/p-CHRrsVXB.js +0 -1
  929. package/components/p-CKUzvJue.js +0 -1
  930. package/components/p-CRBPzT4B.js +0 -1
  931. package/components/p-CSfrs76m.js +0 -1
  932. package/components/p-C_ZBjXFP.js +0 -1
  933. package/components/p-Ce5L9qbY.js +0 -1
  934. package/components/p-CeBfFEIa.js +0 -1
  935. package/components/p-Ck6SW8G3.js +0 -1
  936. package/components/p-D7ijqXRY.js +0 -1
  937. package/components/p-D7n-26Q5.js +0 -1
  938. package/components/p-D8ew7Rgv.js +0 -1
  939. package/components/p-DBk4T-b-.js +0 -1
  940. package/components/p-DD-W_fMF.js +0 -1
  941. package/components/p-DElCk9ta.js +0 -1
  942. package/components/p-DEumEVI3.js +0 -1
  943. package/components/p-DGqQ8PT4.js +0 -1
  944. package/components/p-DJ1WhSJ4.js +0 -1
  945. package/components/p-DOxXxhXb.js +0 -1
  946. package/components/p-DRa4o4c6.js +0 -1
  947. package/components/p-DTlSrH8_.js +0 -1
  948. package/components/p-DTvD0UO5.js +0 -1
  949. package/components/p-DZFphzg1.js +0 -1
  950. package/components/p-DZPUUptR.js +0 -1
  951. package/components/p-D_xaGiZU.js +0 -1
  952. package/components/p-DaL42JUi.js +0 -1
  953. package/components/p-DbRpEXwX.js +0 -1
  954. package/components/p-Dg0xgMke.js +0 -1
  955. package/components/p-Dky_8i8S.js +0 -1
  956. package/components/p-DlwlBBr4.js +0 -1
  957. package/components/p-DoTf8yXn.js +0 -1
  958. package/components/p-DphUq6Z5.js +0 -1
  959. package/components/p-DsgWQbJY.js +0 -1
  960. package/components/p-Dx3yBe39.js +0 -1
  961. package/components/p-DxKMnrS8.js +0 -1
  962. package/components/p-O88oQkR1.js +0 -1
  963. package/components/p-PlUkLT0A.js +0 -1
  964. package/components/p-QTSiPk0I.js +0 -1
  965. package/components/p-TC9DZAbC.js +0 -1
  966. package/components/p-bVsOg7S9.js +0 -1
  967. package/components/p-ccpcKv5U.js +0 -1
  968. package/components/p-en06CSUT.js +0 -1
  969. package/components/p-g6ZBqIze.js +0 -1
  970. package/dist/cjs/types-DQ-V76ZQ.js +0 -255
  971. package/dist/cjs/x-address_14.cjs.entry.js +0 -12577
  972. package/dist/cjs/x-auto-complete-dropdown-content.cjs.entry.js +0 -69
  973. package/dist/cjs/x-avatar.cjs.entry.js +0 -269
  974. package/dist/cjs/x-button.cjs.entry.js +0 -174
  975. package/dist/cjs/x-card_12.cjs.entry.js +0 -1386
  976. package/dist/cjs/x-cascader-dropdown-content.cjs.entry.js +0 -364
  977. package/dist/cjs/x-checkbox_5.cjs.entry.js +0 -1376
  978. package/dist/cjs/x-color-picker-panel_2.cjs.entry.js +0 -873
  979. package/dist/cjs/x-color-picker_9.cjs.entry.js +0 -3085
  980. package/dist/cjs/x-date-picker-dropdown-content.cjs.entry.js +0 -757
  981. package/dist/cjs/x-dropdown_2.cjs.entry.js +0 -735
  982. package/dist/cjs/x-empty.cjs.entry.js +0 -64
  983. package/dist/cjs/x-form-builder.cjs.entry.js +0 -807
  984. package/dist/cjs/x-icon.cjs.entry.js +0 -144
  985. package/dist/cjs/x-list.cjs.entry.js +0 -138
  986. package/dist/cjs/x-modal-content.cjs.entry.js +0 -217
  987. package/dist/cjs/x-range-picker-dropdown-content.cjs.entry.js +0 -821
  988. package/dist/cjs/x-select_2.cjs.entry.js +0 -1316
  989. package/dist/cjs/x-spin.cjs.entry.js +0 -62
  990. package/dist/cjs/x-tab-pane.cjs.entry.js +0 -73
  991. package/dist/cjs/x-tabs.cjs.entry.js +0 -609
  992. package/dist/cjs/x-time-picker-dropdown-content.cjs.entry.js +0 -389
  993. package/dist/cjs/x-tree-select-dropdown-content.cjs.entry.js +0 -439
  994. package/dist/cjs/xlabs-store.cjs.js +0 -24
  995. package/dist/esm/types-C_QdJRdB.js +0 -253
  996. package/dist/esm/x-address_14.entry.js +0 -12562
  997. package/dist/esm/x-auto-complete-dropdown-content.entry.js +0 -67
  998. package/dist/esm/x-avatar.entry.js +0 -267
  999. package/dist/esm/x-button.entry.js +0 -172
  1000. package/dist/esm/x-card_12.entry.js +0 -1373
  1001. package/dist/esm/x-cascader-dropdown-content.entry.js +0 -362
  1002. package/dist/esm/x-checkbox_5.entry.js +0 -1370
  1003. package/dist/esm/x-color-picker-panel_2.entry.js +0 -870
  1004. package/dist/esm/x-color-picker_9.entry.js +0 -3075
  1005. package/dist/esm/x-date-picker-dropdown-content.entry.js +0 -755
  1006. package/dist/esm/x-dropdown_2.entry.js +0 -732
  1007. package/dist/esm/x-empty.entry.js +0 -62
  1008. package/dist/esm/x-form-builder.entry.js +0 -805
  1009. package/dist/esm/x-icon.entry.js +0 -142
  1010. package/dist/esm/x-list.entry.js +0 -136
  1011. package/dist/esm/x-modal-content.entry.js +0 -215
  1012. package/dist/esm/x-range-picker-dropdown-content.entry.js +0 -819
  1013. package/dist/esm/x-select_2.entry.js +0 -1313
  1014. package/dist/esm/x-spin.entry.js +0 -60
  1015. package/dist/esm/x-tab-pane.entry.js +0 -71
  1016. package/dist/esm/x-tabs.entry.js +0 -607
  1017. package/dist/esm/x-time-picker-dropdown-content.entry.js +0 -387
  1018. package/dist/esm/x-tree-select-dropdown-content.entry.js +0 -437
  1019. package/dist/esm/xlabs-store.js +0 -20
  1020. package/dist/xlabs-store/index.esm.js +0 -1
  1021. package/dist/xlabs-store/p-016194dc.entry.js +0 -1
  1022. package/dist/xlabs-store/p-04a3721a.entry.js +0 -1
  1023. package/dist/xlabs-store/p-072445b7.entry.js +0 -1
  1024. package/dist/xlabs-store/p-0ec21454.entry.js +0 -1
  1025. package/dist/xlabs-store/p-12b6a843.entry.js +0 -1
  1026. package/dist/xlabs-store/p-1a81cf09.entry.js +0 -1
  1027. package/dist/xlabs-store/p-1b019aeb.entry.js +0 -1
  1028. package/dist/xlabs-store/p-262a0673.entry.js +0 -1
  1029. package/dist/xlabs-store/p-34cce823.entry.js +0 -1
  1030. package/dist/xlabs-store/p-3a9fdefe.entry.js +0 -1
  1031. package/dist/xlabs-store/p-40036100.entry.js +0 -1
  1032. package/dist/xlabs-store/p-45f04e8d.entry.js +0 -1
  1033. package/dist/xlabs-store/p-48ba7c34.entry.js +0 -1
  1034. package/dist/xlabs-store/p-48e2c26e.entry.js +0 -1
  1035. package/dist/xlabs-store/p-4ac2e915.entry.js +0 -1
  1036. package/dist/xlabs-store/p-4d7c2a35.entry.js +0 -1
  1037. package/dist/xlabs-store/p-4f67cb33.entry.js +0 -1
  1038. package/dist/xlabs-store/p-502b345e.entry.js +0 -1
  1039. package/dist/xlabs-store/p-555c5e48.entry.js +0 -1
  1040. package/dist/xlabs-store/p-5878525f.entry.js +0 -1
  1041. package/dist/xlabs-store/p-5abbdca7.entry.js +0 -1
  1042. package/dist/xlabs-store/p-6243ca69.entry.js +0 -1
  1043. package/dist/xlabs-store/p-64e7a057.entry.js +0 -1
  1044. package/dist/xlabs-store/p-6530d2ef.entry.js +0 -1
  1045. package/dist/xlabs-store/p-675a39e1.entry.js +0 -1
  1046. package/dist/xlabs-store/p-689c52ef.entry.js +0 -1
  1047. package/dist/xlabs-store/p-69b8cb7d.entry.js +0 -1
  1048. package/dist/xlabs-store/p-6b121c60.entry.js +0 -1
  1049. package/dist/xlabs-store/p-6c75fc39.entry.js +0 -1
  1050. package/dist/xlabs-store/p-6f705deb.entry.js +0 -1
  1051. package/dist/xlabs-store/p-723d362c.entry.js +0 -1
  1052. package/dist/xlabs-store/p-783545e3.entry.js +0 -1
  1053. package/dist/xlabs-store/p-81fb4caf.entry.js +0 -1
  1054. package/dist/xlabs-store/p-863dd67d.entry.js +0 -1
  1055. package/dist/xlabs-store/p-8bcc219a.entry.js +0 -1
  1056. package/dist/xlabs-store/p-914b0ae2.entry.js +0 -1
  1057. package/dist/xlabs-store/p-9ac291ea.entry.js +0 -1
  1058. package/dist/xlabs-store/p-9de03a07.entry.js +0 -1
  1059. package/dist/xlabs-store/p-C_QdJRdB.js +0 -1
  1060. package/dist/xlabs-store/p-Ce5L9qbY.js +0 -1
  1061. package/dist/xlabs-store/p-DElCk9ta.js +0 -1
  1062. package/dist/xlabs-store/p-a4223feb.entry.js +0 -1
  1063. package/dist/xlabs-store/p-a8c2eca7.entry.js +0 -1
  1064. package/dist/xlabs-store/p-ac9ba3aa.entry.js +0 -1
  1065. package/dist/xlabs-store/p-bd5084b8.entry.js +0 -1
  1066. package/dist/xlabs-store/p-bda322db.entry.js +0 -1
  1067. package/dist/xlabs-store/p-c4c8840c.entry.js +0 -1
  1068. package/dist/xlabs-store/p-c4d0ce0d.entry.js +0 -1
  1069. package/dist/xlabs-store/p-cf4697bc.entry.js +0 -1
  1070. package/dist/xlabs-store/p-d2ec3d4a.entry.js +0 -1
  1071. package/dist/xlabs-store/p-d4d00aff.entry.js +0 -1
  1072. package/dist/xlabs-store/p-d9d0147b.entry.js +0 -1
  1073. package/dist/xlabs-store/p-dd930f2a.entry.js +0 -1
  1074. package/dist/xlabs-store/p-e04836e8.entry.js +0 -1
  1075. package/dist/xlabs-store/p-e14b5f6d.entry.js +0 -1
  1076. package/dist/xlabs-store/p-eb1dd3c2.entry.js +0 -1
  1077. package/dist/xlabs-store/p-f02155e4.entry.js +0 -1
  1078. package/dist/xlabs-store/p-f1331938.entry.js +0 -1
  1079. package/dist/xlabs-store/p-fac0b689.entry.js +0 -1
  1080. package/dist/xlabs-store/p-fd2e1d9c.entry.js +0 -1
  1081. package/dist/xlabs-store/p-ffba56b2.entry.js +0 -1
  1082. package/dist/xlabs-store/p-ig_mFsVk.js +0 -2
  1083. package/dist/xlabs-store/xlabs-store.css +0 -1
  1084. package/dist/xlabs-store/xlabs-store.esm.js +0 -1
  1085. /package/components/{p-XBF88YT_.js → p-BtYiIQqg.js} +0 -0
  1086. /package/components/{p-D66tF8_2.js → p-DFADJBLL.js} +0 -0
  1087. /package/components/{p-COpzIi1n.js → p-DM8AggMt.js} +0 -0
  1088. /package/components/{p-BPeosvTA.js → p-RKpMhZmc.js} +0 -0
  1089. /package/components/{p-Dgxy93Bg.js → p-iG9CbEpE.js} +0 -0
  1090. /package/dist/{xlabs-store → xlabs}/fonts/xlabs-outlined.woff2 +0 -0
  1091. /package/dist/{xlabs-store → xlabs}/fonts/xlabs-rounded.woff2 +0 -0
  1092. /package/dist/{xlabs-store → xlabs}/fonts/xlabs-solided.woff2 +0 -0
  1093. /package/dist/{xlabs-store/p-XBF88YT_.js → xlabs/p-BtYiIQqg.js} +0 -0
  1094. /package/dist/{xlabs-store/p-D66tF8_2.js → xlabs/p-DFADJBLL.js} +0 -0
  1095. /package/dist/{xlabs-store/p-COpzIi1n.js → xlabs/p-DM8AggMt.js} +0 -0
  1096. /package/dist/{xlabs-store/p-BPeosvTA.js → xlabs/p-RKpMhZmc.js} +0 -0
  1097. /package/dist/{xlabs-store/p-Dgxy93Bg.js → xlabs/p-iG9CbEpE.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { h, } from "@stencil/core";
1
+ import { h } from "@stencil/core";
2
2
  import { Utils } from "./utils/utils";
3
3
  import { SchemaBuilder } from "./services/schema/schema-builder";
4
4
  import { translate } from "../../locales/locale.service";
@@ -31,9 +31,12 @@ export class XFormBuilder {
31
31
  const settingValidationMessages = this.schema?.setting?.validateMessages || {};
32
32
  const defaultValidationMessages = Utils.messageValidator();
33
33
  const messages = Object.entries(errors).map(([errKey, errValue]) => {
34
- const message = fieldValidationMessages[errKey] ||
34
+ let message = fieldValidationMessages[errKey] ||
35
35
  settingValidationMessages[errKey] ||
36
36
  defaultValidationMessages[errKey];
37
+ if (!message && errKey === 'captcha') {
38
+ message = field.message || field.error || 'Captcha is incorrect';
39
+ }
37
40
  return translate(message, {
38
41
  ...errValue,
39
42
  ...params,
@@ -43,14 +46,23 @@ export class XFormBuilder {
43
46
  }
44
47
  get mapping() {
45
48
  const InputCallback = (field) => {
46
- const { commonProps, onChange } = this.getcommonProps(field);
49
+ const { commonProps, onChange, onPressEnter } = this.getcommonProps(field);
47
50
  const rerenderKey = field.id || field.name;
48
- return (h("x-input", { key: rerenderKey, ...commonProps, type: field.type, value: field.control ? field.control.value : field.defaultValue || '', onXChange: onChange, onXBlur: () => field.control ? field.control.markAsTouched() : null }));
51
+ return (h("x-input", { key: rerenderKey, ...commonProps, type: field.type, value: field.control ? field.control.value : field.defaultValue || '', onXChange: onChange, onXPressEnter: onPressEnter, onXBlur: () => (field.control ? field.control.markAsTouched() : null) }));
49
52
  };
50
53
  const InputNumberCallback = (field) => {
51
- const { commonProps, onChange } = this.getcommonProps(field);
54
+ const { commonProps, onChange: originalOnChange, onPressEnter } = this.getcommonProps(field);
52
55
  const f = field;
53
- return (h("x-input-number", { ...commonProps, status: commonProps.status, min: f.min, max: f.max, step: f.step, precision: f.precision, controls: f.controls, stringMode: f.stringMode, onXChange: onChange }));
56
+ const maxLengthVal = f.maxLength ?? f.validators?.find(v => v.type === 'maxLength')?.value;
57
+ const onChange = (e) => {
58
+ const val = e.detail && typeof e.detail === 'object' && 'value' in e.detail ? e.detail.value : e.detail;
59
+ if (maxLengthVal !== undefined && val !== null && val !== undefined && String(val).length > maxLengthVal) {
60
+ return;
61
+ }
62
+ originalOnChange(e);
63
+ };
64
+ const { minLength: _ml, maxLength: _xl, ...restProps } = commonProps;
65
+ return (h("x-input-number", { ...restProps, value: field.control ? field.control.value : field.defaultValue, status: commonProps.status, min: f.min, max: f.max, step: f.step, precision: f.precision, controls: f.controls, stringMode: f.stringMode, currency: f.currency, addonAfter: f.addonAfter, addonBefore: f.addonBefore, onXChange: onChange, onXPressEnter: onPressEnter }));
54
66
  };
55
67
  // Simple non-input renderers for remaining cases
56
68
  const DividerCallback = (field) => {
@@ -98,16 +110,12 @@ export class XFormBuilder {
98
110
  const href = field.href || field.value || '#';
99
111
  const target = field.target || '_self';
100
112
  const rel = field.rel || '';
101
- const text = String(field.content ??
102
- field.label ??
103
- field.text ??
104
- field.value ??
105
- 'Link');
113
+ const text = String(field.content ?? field.label ?? field.text ?? field.value ?? 'Link');
106
114
  const style = {
107
115
  textAlign: align,
108
116
  textDecoration: underline === false ? 'none' : 'underline',
109
117
  };
110
- return (h("div", { style: style }, h("a", { href: href, target: target, rel: rel, "data-type": styleType, "data-ellipsis": ellipsis }, icon ? (h("i", { "data-icon": icon, style: { marginRight: '8px' } })) : null, h("span", null, text))));
118
+ return (h("div", { style: style }, h("a", { href: href, target: target, rel: rel, "data-type": styleType, "data-ellipsis": ellipsis }, icon ? h("i", { "data-icon": icon, style: { marginRight: '8px' } }) : null, h("span", null, text))));
111
119
  };
112
120
  const ImageCallback = (field) => {
113
121
  const align = field.align;
@@ -121,9 +129,7 @@ export class XFormBuilder {
121
129
  const align = field.align;
122
130
  const src = field.src || field.value || '';
123
131
  const size = field.size || 64;
124
- const circle = field.circle === undefined || field.circle
125
- ? '50%'
126
- : '0';
132
+ const circle = field.circle === undefined || field.circle ? '50%' : '0';
127
133
  const alt = field.alt || '';
128
134
  return (h("div", { style: { margin: '8px 0', textAlign: align } }, h("img", { src: src, alt: alt, style: {
129
135
  width: `${size}px`,
@@ -155,7 +161,7 @@ export class XFormBuilder {
155
161
  const fgColor = field.fgColor || '#000000';
156
162
  const includeMargin = !!field.includeMargin;
157
163
  const description = field.description;
158
- return (h("div", { style: { width: '100%', margin: '8px 0', textAlign: align } }, h("div", { style: { display: 'inline-block' } }, label ? (h("div", { style: { marginBottom: '8px', fontWeight: '500' } }, String(label))) : null, h("div", { style: {
164
+ return (h("div", { style: { width: '100%', margin: '8px 0', textAlign: align } }, h("div", { style: { display: 'inline-block' } }, label ? h("div", { style: { marginBottom: '8px', fontWeight: '500' } }, String(label)) : null, h("div", { style: {
159
165
  width: `${size}px`,
160
166
  height: `${size}px`,
161
167
  background: bgColor,
@@ -178,19 +184,22 @@ export class XFormBuilder {
178
184
  border: '1px solid var(--x-border, #e5e7eb)',
179
185
  borderRadius: '8px',
180
186
  margin: '8px 0',
181
- } }, 'elements' in field && field.elements
182
- ? this.bind(field.elements, field)
183
- : null));
184
- const ContainerCallback = (field) => (h("div", { style: { margin: '8px 0' } }, 'elements' in field && field.elements
185
- ? this.bind(field.elements, field)
186
- : null));
187
+ } }, 'elements' in field && field.elements ? this.bind(field.elements, field) : null));
188
+ const ContainerCallback = (field) => (h("div", { style: { margin: '8px 0' } }, 'elements' in field && field.elements ? this.bind(field.elements, field) : null));
187
189
  const GridCallback = (field) => (h("div", { style: {
188
190
  display: 'grid',
189
191
  gridTemplateColumns: `repeat(${field.columns || 12}, minmax(0, 1fr))`,
190
192
  gap: `${field.gap || 15}px`,
191
- } }, 'elements' in field && field.elements
192
- ? this.bind(field.elements, field)
193
- : null));
193
+ } }, 'elements' in field && field.elements ? this.bind(field.elements, field) : null));
194
+ const ColumnsCallback = (field) => {
195
+ const items = field.items || [];
196
+ return (h("div", { style: {
197
+ display: 'grid',
198
+ gridTemplateColumns: `repeat(12, minmax(0, 1fr))`,
199
+ gap: `${field.gap || 15}px`,
200
+ width: '100%',
201
+ } }, items.map((item) => (h("div", { style: { gridColumn: `span ${item.span || 12}` }, key: item.key }, item.elements ? this.bind(item.elements, field) : null)))));
202
+ };
194
203
  const MapsCallback = (field) => {
195
204
  const width = field.width || '100%';
196
205
  const height = field.height || 400;
@@ -212,13 +221,7 @@ export class XFormBuilder {
212
221
  alignItems: 'center',
213
222
  justifyContent: 'center',
214
223
  flexDirection: 'column',
215
- background: provider === 'google'
216
- ? '#e8f5e8'
217
- : provider === 'mapbox'
218
- ? '#f0f8ff'
219
- : provider === 'bing'
220
- ? '#fff7e6'
221
- : '#f0f0f0',
224
+ background: provider === 'google' ? '#e8f5e8' : provider === 'mapbox' ? '#f0f8ff' : provider === 'bing' ? '#fff7e6' : '#f0f0f0',
222
225
  } }, h("div", { style: { fontWeight: '500', marginBottom: '8px' } }, String(field.label || 'Interactive Map')), center ? (h("div", { style: {
223
226
  color: '#666',
224
227
  fontSize: '12px',
@@ -241,15 +244,13 @@ export class XFormBuilder {
241
244
  const RadioCallback = (field) => {
242
245
  const { commonProps, onChange } = this.getcommonProps(field);
243
246
  const f = field;
244
- return (h("x-radio-group", { ...commonProps, value: field.control ? field.control.value : field.defaultValue, options: f.options || [], direction: f.direction || f.orientation || 'horizontal', onXChange: onChange }));
247
+ return (h("x-radio-group", { ...commonProps, value: field.control ? field.control.value : field.defaultValue, options: f.options || [], direction: f.direction || f.orientation || 'horizontal', placement: f.placement || 'end', onXChange: onChange }));
245
248
  };
246
249
  const CheckboxCallback = (field) => {
247
250
  const { commonProps, onChange } = this.getcommonProps(field);
248
251
  const f = field;
249
252
  const options = f.options || [];
250
- const currentValue = field.control
251
- ? field.control.value
252
- : commonProps.defaultValue;
253
+ const currentValue = field.control ? field.control.value : commonProps.defaultValue;
253
254
  const isArray = Array.isArray(currentValue);
254
255
  const direction = f.direction || f.orientation || 'horizontal';
255
256
  const containerStyle = {
@@ -258,33 +259,26 @@ export class XFormBuilder {
258
259
  flexWrap: 'wrap',
259
260
  flexDirection: direction === 'vertical' ? 'column' : 'row',
260
261
  };
261
- return (h("div", { style: { margin: '4px 0' } }, h("div", { style: containerStyle }, options.length > 0 ? (options.map((opt, idx) => (h("x-checkbox", { key: `${field.name}-${idx}`, ...commonProps, value: opt.value, disabled: opt.disabled || commonProps.disabled, onXChange: onChange, checked: isArray
262
- ? (currentValue || []).includes(opt.value)
263
- : currentValue === opt.value }, String(opt.label))))) : (h("x-checkbox", { ...commonProps, onXChange: onChange, checked: !!currentValue }, String(field.label))))));
262
+ return (h("div", { style: { margin: '4px 0' } }, h("div", { style: containerStyle }, options.length > 0 ? (options.map((opt, idx) => (h("x-checkbox", { key: `${field.name}-${idx}`, ...commonProps, value: opt.value, disabled: opt.disabled || commonProps.disabled, onXChange: onChange, checked: isArray ? (currentValue || []).includes(opt.value) : currentValue === opt.value, placement: opt.placement || f.placement || 'end' }, String(opt.label))))) : (h("x-checkbox", { ...commonProps, onXChange: onChange, checked: !!currentValue, placement: f.placement || 'end' }, String(field.label))))));
264
263
  };
265
264
  const DateLocaleCallback = (field) => {
266
265
  let { commonProps, onChange } = this.getcommonProps(field);
267
- const minDate = field.min
268
- ? new Date(field.min)
269
- : undefined;
270
- const maxDate = field.max
271
- ? new Date(field.max)
272
- : undefined;
266
+ const minDate = field.min ? new Date(field.min) : undefined;
267
+ const maxDate = field.max ? new Date(field.max) : undefined;
273
268
  const rawValue = field.control ? field.control.value : field.defaultValue;
274
- return (h("x-date-picker", { ...commonProps, onXChange: onChange, picker: field.picker || 'date', format: field.format, placement: field.placement, minDate: minDate ? minDate.toISOString().split('T')[0] : undefined, maxDate: maxDate ? maxDate.toISOString().split('T')[0] : undefined, value: typeof rawValue === 'string'
269
+ const showTime = !!field.showTime;
270
+ return (h("x-date-picker", { ...commonProps, onXChange: onChange, picker: field.picker || 'date', format: field.format, placement: field.placement, showTime: showTime, minDate: minDate ? minDate.toISOString().split('T')[0] : undefined, maxDate: maxDate ? maxDate.toISOString().split('T')[0] : undefined, value: typeof rawValue === 'string'
275
271
  ? rawValue
276
272
  : rawValue instanceof Date
277
- ? rawValue.toISOString().split('T')[0]
273
+ ? showTime
274
+ ? rawValue.toISOString()
275
+ : rawValue.toISOString().split('T')[0]
278
276
  : '', size: commonProps.size }));
279
277
  };
280
278
  const DateTimeCallback = (field) => {
281
279
  let { commonProps, onChange } = this.getcommonProps(field);
282
- const minDate = field.min
283
- ? new Date(field.min)
284
- : undefined;
285
- const maxDate = field.max
286
- ? new Date(field.max)
287
- : undefined;
280
+ const minDate = field.min ? new Date(field.min) : undefined;
281
+ const maxDate = field.max ? new Date(field.max) : undefined;
288
282
  const rawValue = field.control ? field.control.value : field.defaultValue;
289
283
  return (h("x-date-picker", { ...commonProps, onXChange: onChange, picker: field.picker || 'date', format: field.format, placement: field.placement, showTime: true, minDate: minDate ? minDate.toISOString().split('T')[0] : undefined, maxDate: maxDate ? maxDate.toISOString().split('T')[0] : undefined, value: typeof rawValue === 'string' ? rawValue : rawValue instanceof Date ? rawValue.toISOString() : '', size: commonProps.size }));
290
284
  };
@@ -292,43 +286,64 @@ export class XFormBuilder {
292
286
  let { commonProps, onChange } = this.getcommonProps(field);
293
287
  // Ensure value is a string for x-time-picker
294
288
  const rawValue = field.control ? field.control.value : field.defaultValue;
295
- const timeValue = rawValue instanceof Date
296
- ? rawValue.toTimeString().split(' ')[0]
297
- : typeof rawValue === 'string'
298
- ? rawValue
299
- : '';
289
+ const timeValue = rawValue instanceof Date ? rawValue.toTimeString().split(' ')[0] : typeof rawValue === 'string' ? rawValue : '';
300
290
  const wrapperStyle = {
301
291
  margin: '8px 0',
302
- ...(commonProps.disabled
303
- ? { pointerEvents: 'none', opacity: '0.5' }
304
- : {}),
292
+ ...(commonProps.disabled ? { pointerEvents: 'none', opacity: '0.5' } : {}),
305
293
  };
306
294
  return (h("div", { style: wrapperStyle }, h("x-time-picker", { ...commonProps, value: timeValue, onXChange: (e) => {
307
295
  onChange(e);
308
296
  } })));
309
297
  };
310
298
  const DateRangeCallback = (field) => {
311
- let { commonProps, onChange } = this.getcommonProps(field);
312
- const minDate = field.min
313
- ? new Date(field.min)
314
- : undefined;
315
- const maxDate = field.max
316
- ? new Date(field.max)
317
- : undefined;
299
+ let { commonProps } = this.getcommonProps(field);
300
+ const f = field;
301
+ const minDate = f.min ? new Date(f.min) : undefined;
302
+ const maxDate = f.max ? new Date(f.max) : undefined;
318
303
  const rawValue = field.control ? field.control.value : field.defaultValue;
319
304
  let rangeValue = { start: null, end: null };
320
305
  if (Array.isArray(rawValue)) {
321
306
  rangeValue = {
322
307
  start: rawValue[0] instanceof Date ? rawValue[0].toISOString().split('T')[0] : rawValue[0],
323
- end: rawValue[1] instanceof Date ? rawValue[1].toISOString().split('T')[0] : rawValue[1]
308
+ end: rawValue[1] instanceof Date ? rawValue[1].toISOString().split('T')[0] : rawValue[1],
324
309
  };
325
310
  }
326
- return (h("x-range-picker", { ...commonProps, placeholder: [field.placeholder || 'Start', field.placeholder || 'End'], onXChange: onChange, picker: field.picker || 'date', format: field.format, placement: field.placement, minDate: minDate ? minDate.toISOString().split('T')[0] : undefined, maxDate: maxDate ? maxDate.toISOString().split('T')[0] : undefined, value: rangeValue, size: commonProps.size, showTime: field.showTime }));
311
+ else if (rawValue && typeof rawValue === 'object' && ('start' in rawValue || 'end' in rawValue)) {
312
+ // Already a RangePickerValue { start, end } (e.g. after user has selected a range)
313
+ rangeValue = { start: rawValue.start ?? null, end: rawValue.end ?? null };
314
+ }
315
+ // Resolve placeholder: support array ["Start", "End"] or a single string
316
+ const ph = field.placeholder;
317
+ const startPh = Array.isArray(ph) ? (ph[0] ?? 'Start') : ph || 'Start';
318
+ const endPh = Array.isArray(ph) ? (ph[1] ?? 'End') : ph || 'End';
319
+ // Build custom onChange that stores the RangePickerValue object
320
+ const onRangeChange = (e) => {
321
+ const detail = e?.detail;
322
+ let val;
323
+ if (detail && typeof detail === 'object' && 'value' in detail) {
324
+ // { value: { start, end }, dates, dateStrings }
325
+ val = detail.value;
326
+ }
327
+ else {
328
+ val = detail;
329
+ }
330
+ if (field.control) {
331
+ field.control.setValue(val);
332
+ }
333
+ else {
334
+ field.value = val;
335
+ }
336
+ this._tick++;
337
+ };
338
+ return (h("x-range-picker", { ...commonProps, placeholder: [startPh, endPh], onXChange: onRangeChange, picker: field.picker || 'date', format: field.format, placement: field.placement, minDate: minDate ? minDate.toISOString().split('T')[0] : undefined, maxDate: maxDate ? maxDate.toISOString().split('T')[0] : undefined, value: rangeValue, size: commonProps.size, showTime: field.showTime }));
327
339
  };
328
340
  const UploadCallback = (field) => {
329
341
  let { commonProps, onChange } = this.getcommonProps(field);
330
342
  const fieldData = field;
331
- return (h("x-upload", { ...commonProps, onXChange: onChange, listType: fieldData.listType, multiple: fieldData.multiple, maxCount: fieldData.maxCount, accept: fieldData.accept, action: fieldData.action }));
343
+ const isPictureCard = fieldData.listType === 'picture-card' || fieldData.listType === 'picture-circle';
344
+ const isDrag = !!fieldData.drag;
345
+ const val = field.control ? field.control.value : field.defaultValue || [];
346
+ return (h("x-upload", { ...commonProps, onXChange: onChange, listType: fieldData.listType, multiple: fieldData.multiple, maxCount: fieldData.maxCount, accept: fieldData.accept, action: fieldData.action, drag: fieldData.drag, showUploadList: fieldData.showUploadList ?? true, maxFileSize: fieldData.maxSize ? fieldData.maxSize * 1024 * 1024 : undefined, fileList: val }, !isPictureCard && !isDrag && (h("x-button", null, h("x-icon", { slot: "icon", name: "upload" }), h("span", null, "Click to Upload")))));
332
347
  };
333
348
  const SliderCallback = (field) => {
334
349
  let { commonProps, onChange } = this.getcommonProps(field);
@@ -338,21 +353,36 @@ export class XFormBuilder {
338
353
  const SwitchCallback = (field) => {
339
354
  let { commonProps, onChange } = this.getcommonProps(field);
340
355
  const f = field;
341
- return (h("x-switch", { ...commonProps, checked: field.control ? field.control.value : field.defaultValue, size: commonProps.size === 'middle' ? 'default' : commonProps.size, checkedChildren: f.checkedChildren, unCheckedChildren: f.unCheckedChildren, defaultChecked: f.defaultChecked, onXChange: onChange }));
356
+ return (h("x-switch", { ...commonProps, checked: field.control ? field.control.value : field.defaultValue, size: commonProps.size === 'middle' ? 'default' : commonProps.size, checkedChildren: f.checkedChildren, unCheckedChildren: f.unCheckedChildren, defaultChecked: f.defaultChecked, onXChange: onChange, onXClick: (e) => e.stopPropagation() }));
342
357
  };
343
358
  const CaptchaCallback = (field) => {
344
359
  let { commonProps, onChange } = this.getcommonProps(field);
345
360
  const f = field;
346
- return (h("x-captcha", { ...commonProps, value: field.control ? field.control.value : (field.defaultValue || ''), length: f.length, caseSensitive: f.caseSensitive, message: f.message, onXChange: onChange }));
361
+ return (h("x-captcha", { ...commonProps, value: field.control ? field.control.value : field.defaultValue || '', length: f.length, caseSensitive: f.caseSensitive, message: f.message, onXChange: onChange, ...{ hideError: true }, ref: el => {
362
+ if (field.control) {
363
+ field.control._captchaEl = el;
364
+ if (el && !field.control._captchaRegistered) {
365
+ field.control._captchaRegistered = true;
366
+ field.control.registerValidatorAsync(async () => {
367
+ const currentEl = field.control._captchaEl;
368
+ if (currentEl && currentEl.validate) {
369
+ const isValid = await currentEl.validate();
370
+ return isValid ? null : { captcha: true };
371
+ }
372
+ return null;
373
+ });
374
+ }
375
+ }
376
+ } }));
347
377
  };
348
378
  const AddressCallback = (field) => {
349
379
  let { commonProps, onChange } = this.getcommonProps(field);
350
380
  const f = field;
351
- return (h("x-address", { ...commonProps, value: field.control ? field.control.value : (field.defaultValue || EMPTY_OBJECT), onXChange: onChange, placeholderProvince: f.placeholderProvince, placeholderDistrict: f.placeholderDistrict, placeholderWard: f.placeholderWard, ...{
381
+ return (h("x-address", { ...commonProps, value: field.control ? field.control.value : field.defaultValue || EMPTY_OBJECT, onXChange: onChange, placeholderProvince: f.placeholderProvince, placeholderDistrict: f.placeholderDistrict, placeholderWard: f.placeholderWard, ...{
352
382
  provincesData: f.provincesData,
353
383
  districtsData: f.districtsData,
354
384
  wardsData: f.wardsData,
355
- }, ref: (el) => {
385
+ }, ref: el => {
356
386
  if (el && field.control) {
357
387
  field.control.registerValidatorAsync(async () => {
358
388
  const isValid = await el.validate();
@@ -364,7 +394,7 @@ export class XFormBuilder {
364
394
  const RateCallback = (field) => {
365
395
  let { commonProps, onChange } = this.getcommonProps(field);
366
396
  const f = field;
367
- return (h("x-rate", { ...commonProps, value: field.control ? field.control.value : (field.defaultValue || 0), count: f.count, allowHalf: f.allowHalf, allowClear: f.allowClear, character: f.character, onXChange: onChange }));
397
+ return (h("x-rate", { ...commonProps, value: field.control ? field.control.value : field.defaultValue || 0, count: f.count, allowHalf: f.allowHalf, allowClear: f.allowClear, character: f.character, onXChange: onChange }));
368
398
  };
369
399
  const TreeselectCallback = (field) => {
370
400
  const { commonProps, onChange } = this.getcommonProps(field);
@@ -374,17 +404,17 @@ export class XFormBuilder {
374
404
  const TransferCallback = (field) => {
375
405
  const { commonProps, onChange } = this.getcommonProps(field);
376
406
  const f = field;
377
- return (h("x-transfer", { ...commonProps, onXChange: onChange, dataSource: f.dataSource || [], targetKeys: field.control ? field.control.value : (f.targetKeys || []), selectedKeys: f.selectedKeys, titles: f.titles, operations: f.operations, showSearch: f.showSearch, searchPlaceholder: f.searchPlaceholder, notFoundContent: f.notFoundContent, oneWay: f.oneWay, showSelectAll: f.showSelectAll, listWidth: f.listWidth, listHeight: f.listHeight, pagination: f.pagination, pageSize: f.pageSize }));
407
+ return (h("x-transfer", { ...commonProps, onXChange: onChange, dataSource: f.dataSource || [], targetKeys: field.control ? field.control.value : f.targetKeys || [], selectedKeys: f.selectedKeys, titles: f.titles, operations: f.operations, showSearch: f.showSearch, searchPlaceholder: f.searchPlaceholder, notFoundContent: f.notFoundContent, oneWay: f.oneWay, showSelectAll: f.showSelectAll, listWidth: f.listWidth, listHeight: f.listHeight, pagination: f.pagination, pageSize: f.pageSize }));
378
408
  };
379
409
  const CascaderCallback = (field) => {
380
410
  const { commonProps, onChange } = this.getcommonProps(field);
381
411
  const f = field;
382
- return (h("x-cascader", { ...commonProps, onXChange: onChange, options: f.options || [], value: field.control ? field.control.value : (f.defaultValue || null), placeholder: f.placeholder || commonProps.placeholder, size: f.size || commonProps.size, variant: f.variant, placement: f.placement, status: commonProps.status || undefined, expandTrigger: f.expandTrigger, changeOnSelect: f.changeOnSelect, multiple: f.multiple, allowClear: f.allowClear ?? commonProps.allowClear, showSearch: f.showSearch, fieldNames: f.fieldNames, displaySeparator: f.displaySeparator, maxTagCount: f.maxTagCount, notFoundContent: f.notFoundContent, loading: f.loading }));
412
+ return (h("x-cascader", { ...commonProps, onXChange: onChange, options: f.options || [], value: field.control ? field.control.value : f.defaultValue || null, placeholder: f.placeholder || commonProps.placeholder, size: f.size || commonProps.size, variant: f.variant, placement: f.placement, status: commonProps.status || undefined, expandTrigger: f.expandTrigger, changeOnSelect: f.changeOnSelect, multiple: f.multiple, allowClear: f.allowClear ?? commonProps.allowClear, showSearch: f.showSearch, fieldNames: f.fieldNames, displaySeparator: f.displaySeparator, maxTagCount: f.maxTagCount, notFoundContent: f.notFoundContent, loading: f.loading }));
383
413
  };
384
414
  const AutoCompleteCallback = (field) => {
385
415
  const { commonProps, onChange } = this.getcommonProps(field);
386
416
  const f = field;
387
- return (h("x-auto-complete", { ...commonProps, onXChange: onChange, options: f.options || [], value: field.control ? field.control.value : (f.defaultValue || ''), placeholder: f.placeholder || commonProps.placeholder, size: f.size || commonProps.size, variant: f.variant, placement: f.placement, status: (commonProps.status || undefined), allowClear: f.allowClear ?? commonProps.allowClear, backfill: f.backfill, defaultOpen: f.defaultOpen, filterOption: f.filterOption, notFoundContent: f.notFoundContent }));
417
+ return (h("x-auto-complete", { ...commonProps, onXChange: onChange, options: f.options || [], value: field.control ? field.control.value : f.defaultValue || '', placeholder: f.placeholder || commonProps.placeholder, size: f.size || commonProps.size, variant: f.variant, placement: f.placement, status: (commonProps.status || undefined), allowClear: f.allowClear ?? commonProps.allowClear, backfill: f.backfill, defaultOpen: f.defaultOpen, openOnFocus: f.openOnFocus, filterOption: f.filterOption, notFoundContent: f.notFoundContent }));
388
418
  };
389
419
  const ColorPickerCallback = (field) => {
390
420
  let { commonProps, onChange } = this.getcommonProps(field);
@@ -408,43 +438,13 @@ export class XFormBuilder {
408
438
  const disabled = !!f.disabled;
409
439
  const label = f.content || field.label || '';
410
440
  const style = { textAlign: align, margin: '8px 0' };
411
- const htmlType = f.htmlType
412
- ? f.htmlType
413
- : (f.type === 'submit' || f.type === 'reset' ? f.type : 'button');
441
+ const htmlType = f.htmlType ? f.htmlType : f.type === 'submit' || f.type === 'reset' ? f.type : 'button';
414
442
  const onClick = async (event) => {
443
+ if (event && event.stopPropagation) {
444
+ event.stopPropagation();
445
+ }
415
446
  if (htmlType === 'submit') {
416
- // Validate all captcha components first
417
- let allCaptchaValid = true;
418
- const shadowRoot = this.el.shadowRoot;
419
- if (shadowRoot) {
420
- const captchas = shadowRoot.querySelectorAll('x-captcha');
421
- for (let i = 0; i < captchas.length; i++) {
422
- const captcha = captchas[i];
423
- if (captcha.validate) {
424
- const res = await captcha.validate();
425
- if (!res) {
426
- allCaptchaValid = false;
427
- }
428
- }
429
- }
430
- }
431
- if (this.builder.form.valid && allCaptchaValid) {
432
- this.formSubmit.emit({
433
- value: this.builder.form.value,
434
- builder: this.builder,
435
- event,
436
- field,
437
- });
438
- }
439
- else {
440
- this.builder.form.markAllAsTouched();
441
- this._tick++;
442
- this.formError.emit({
443
- builder: this.builder,
444
- event,
445
- errors: this.builder.form.errors,
446
- });
447
- }
447
+ await this.submit(event, field);
448
448
  }
449
449
  else if (htmlType === 'reset') {
450
450
  this.builder.form.reset();
@@ -454,7 +454,7 @@ export class XFormBuilder {
454
454
  this.xClick.emit({ field, builder: this.builder, event });
455
455
  }
456
456
  };
457
- return (h("div", { style: style }, h("x-button", { type: buttonType, shape: shape, size: size, block: block, danger: danger, ghost: ghost, loading: loading, disabled: disabled, htmlType: htmlType, onXClick: onClick }, icon && h("x-icon", { slot: 'icon', name: icon }), label)));
457
+ return (h("div", { style: style }, h("x-button", { type: buttonType, shape: shape, size: size, block: block, danger: danger, ghost: ghost, loading: loading, disabled: disabled, htmlType: htmlType, onXClick: onClick }, icon && h("x-icon", { slot: "icon", name: icon }), label)));
458
458
  };
459
459
  const TableCallback = (field) => {
460
460
  const { commonProps, onChange } = this.getcommonProps(field);
@@ -462,74 +462,250 @@ export class XFormBuilder {
462
462
  const columns = (f.columns || []).map(col => ({
463
463
  ...col,
464
464
  dataIndex: col.dataIndex || col.key,
465
- slot: col.actions ? (col.slot || col.key || 'action') : col.slot
465
+ slot: col.actions ? col.slot || col.key || 'action' : col.slot,
466
466
  }));
467
- return (h("x-table", { ...commonProps, columns: columns, dataSource: f.dataSource || [], rowKey: f.rowKey || 'id', tableTitle: f.tableTitle, pagination: f.pagination, tableScroll: f.tableScroll, rowSelection: f.rowSelection, size: f.size, bordered: f.bordered, loading: f.loading, showHeader: f.showHeader, emptyText: f.emptyText, resizableColumns: f.resizableColumns, draggableColumns: f.draggableColumns, draggableRows: f.draggableRows, sticky: f.sticky, onXSelectionChange: (ev) => {
467
+ const controlVal = field.control?.value;
468
+ const isValArrayOfObjects = Array.isArray(controlVal) && controlVal.length > 0 && typeof controlVal[0] === 'object';
469
+ const dataSource = isValArrayOfObjects ? controlVal : (f.dataSource || []);
470
+ const rowSelection = f.rowSelection
471
+ ? {
472
+ ...f.rowSelection,
473
+ selectedRowKeys: Array.isArray(controlVal) && !isValArrayOfObjects ? controlVal : [],
474
+ }
475
+ : undefined;
476
+ return (h("x-table", { ...commonProps, columns: columns, dataSource: dataSource, rowKey: f.rowKey || 'id', tableTitle: f.tableTitle, pagination: f.pagination, tableScroll: f.tableScroll, rowSelection: rowSelection, size: f.size, bordered: f.bordered, loading: f.loading, showHeader: f.showHeader, emptyText: f.emptyText, resizableColumns: f.resizableColumns, draggableColumns: f.draggableColumns, draggableRows: f.draggableRows, sticky: f.sticky, onXSelectionChange: ev => {
468
477
  if (f.rowSelection) {
469
478
  onChange(ev.detail.selectedRowKeys);
470
479
  }
471
- }, onXChange: (ev) => {
480
+ }, onXChange: ev => {
472
481
  console.log('x-form-builder: Table changed:', ev.detail);
473
- } }, columns.filter(col => col.actions).map(col => ((f.dataSource || []).map((record, index) => (h("div", { slot: `${col.slot}-${index}`, style: { display: 'flex', gap: '8px' } }, (col.actions || []).map(action => {
474
- const button = (h("x-button", { type: action.type === 'button' ? 'primary' : 'link', size: "small", danger: action.danger, onClick: (e) => {
482
+ } }, columns
483
+ .filter(col => col.actions)
484
+ .map(col => (dataSource || []).map((record, index) => (h("div", { slot: `${col.slot}-${index}`, style: { display: 'flex', gap: '8px' } }, (col.actions || []).map(action => {
485
+ const button = (h("x-button", { type: action.type === 'button' ? 'primary' : 'link', size: "small", danger: action.danger, onClick: e => {
475
486
  e.stopPropagation();
476
487
  this.xTableAction.emit({
477
488
  action: action.onClick || action.label,
478
489
  record,
479
- field: f
490
+ field: f,
480
491
  });
481
- } }, action.icon && h("x-icon", { slot: 'icon', name: action.icon }), action.label));
482
- return action.tooltip ? (h("x-tooltip", { tooltipTitle: action.tooltip }, button)) : (button);
483
- }))))))));
492
+ } }, action.icon && h("x-icon", { slot: "icon", name: action.icon }), action.label));
493
+ return action.tooltip ? h("x-tooltip", { tooltipTitle: action.tooltip }, button) : button;
494
+ })))))));
495
+ };
496
+ const TabsCallback = (field) => {
497
+ const f = field;
498
+ const items = f.items || [];
499
+ const activeKey = f.activeKey || f.defaultActiveKey || (items.length > 0 ? items[0].key : undefined);
500
+ const onRename = (e) => {
501
+ const { key, label } = e.detail;
502
+ const item = items.find(i => i.key === key);
503
+ if (item) {
504
+ item.label = label;
505
+ this._tick++;
506
+ }
507
+ };
508
+ const onEdit = (e) => {
509
+ const { action, targetKey } = e.detail;
510
+ if (action === 'add') {
511
+ const newKey = `tab-${Date.now()}`;
512
+ items.push({
513
+ key: newKey,
514
+ label: `New Tab ${items.length + 1}`,
515
+ elements: [],
516
+ });
517
+ this._tick++;
518
+ }
519
+ else if (action === 'remove') {
520
+ const index = items.findIndex(i => i.key === targetKey);
521
+ if (index !== -1) {
522
+ items.splice(index, 1);
523
+ this._tick++;
524
+ }
525
+ }
526
+ };
527
+ const isEditMode = this.context && this.context.mode === 'edit';
528
+ const allowAdd = f.allowAdd !== undefined ? f.allowAdd : isEditMode;
529
+ const allowRemove = f.allowRemove !== undefined ? f.allowRemove : isEditMode;
530
+ const allowRename = f.allowRename !== undefined ? f.allowRename : isEditMode;
531
+ // Determine tabs type: if allowAdd or allowRemove is true, use editable-card
532
+ let tabsType = f.tabsType || 'line';
533
+ if (allowAdd || allowRemove) {
534
+ tabsType = 'editable-card';
535
+ }
536
+ return (h("x-tabs", { activeKey: activeKey, tabPlacement: f.tabPlacement || 'top', type: tabsType, editable: allowRename, hideAdd: !allowAdd, onXTabRename: onRename, onXEdit: onEdit }, items.map(item => (h("x-tab-pane", { key: item.key, paneKey: item.key, tab: item.label, disabled: item.disabled, icon: item.icon, closable: allowRemove && item.closable !== false }, this.bind(item.elements, field))))));
537
+ };
538
+ const DynamicCallback = (field) => {
539
+ const slotName = field.meta?.slot || field.metadata?.slot || field.name;
540
+ return (h("div", { class: "x-dynamic-field-container", ...{
541
+ onXChange: (e) => {
542
+ if (field.control && e.detail && 'value' in e.detail) {
543
+ field.control.setValue(e.detail.value, { emitEvent: false });
544
+ }
545
+ }
546
+ } }, h("slot", { name: slotName }, h("div", { style: {
547
+ height: '300px',
548
+ width: '100%',
549
+ border: '1px dashed #d1d5db',
550
+ borderRadius: '8px',
551
+ backgroundColor: '#f9fafb',
552
+ display: 'flex',
553
+ flexDirection: 'column',
554
+ alignItems: 'center',
555
+ justifyContent: 'center',
556
+ color: '#9ca3af',
557
+ fontSize: '13px',
558
+ gap: '8px'
559
+ } }, h("span", { style: { fontSize: '24px' } }, "\uD83E\uDDE9"), h("span", null, "Dynamic slot \"", slotName, "\" is empty or not configured")))));
484
560
  };
485
561
  return {
486
- text: InputCallback,
487
- input: InputCallback,
488
- email: InputCallback,
489
- password: InputCallback,
490
- url: InputCallback,
491
- number: InputNumberCallback,
492
- textarea: InputCallback,
493
- select: SelectCallback,
494
- radio: RadioCallback,
495
- checkbox: CheckboxCallback,
496
- date: DateLocaleCallback,
497
- datetime: DateTimeCallback,
498
- time: TimeCallback,
499
- file: UploadCallback,
500
- slider: SliderCallback,
501
- switch: SwitchCallback,
502
- rate: RateCallback,
503
- color: ColorPickerCallback,
504
- tags: InputCallback,
505
- range: InputCallback,
506
- phone: InputCallback,
507
- location: InputCallback,
562
+ 'text': InputCallback,
563
+ 'input': InputCallback,
564
+ 'email': InputCallback,
565
+ 'password': InputCallback,
566
+ 'url': InputCallback,
567
+ 'number': InputNumberCallback,
568
+ 'textarea': InputCallback,
569
+ 'select': SelectCallback,
570
+ 'radio': RadioCallback,
571
+ 'checkbox': CheckboxCallback,
572
+ 'date': DateLocaleCallback,
573
+ 'datetime': DateTimeCallback,
574
+ 'time': TimeCallback,
575
+ 'file': UploadCallback,
576
+ 'slider': SliderCallback,
577
+ 'switch': SwitchCallback,
578
+ 'rate': RateCallback,
579
+ 'color': ColorPickerCallback,
580
+ 'tags': InputCallback,
581
+ 'range': InputCallback,
582
+ 'phone': InputCallback,
583
+ 'location': InputCallback,
508
584
  'tree-select': TreeselectCallback,
509
- transfer: TransferCallback,
510
- cascader: CascaderCallback,
585
+ 'transfer': TransferCallback,
586
+ 'cascader': CascaderCallback,
511
587
  'auto-complete': AutoCompleteCallback,
512
- daterange: DateRangeCallback,
513
- divider: DividerCallback,
514
- heading: HeadingCallback,
515
- paragraph: ParagraphCallback,
516
- image: ImageCallback,
517
- captcha: CaptchaCallback,
518
- address: AddressCallback,
519
- avatar: AvatarCallback,
520
- editor: EditorCallback,
521
- button: ButtonCallback,
522
- href: HrefCallback,
523
- grid: GridCallback,
524
- table: TableCallback,
525
- maps: MapsCallback,
526
- panel: PanelCallback,
527
- container: ContainerCallback,
528
- iframe: IframeCallback,
588
+ 'daterange': DateRangeCallback,
589
+ 'divider': DividerCallback,
590
+ 'heading': HeadingCallback,
591
+ 'paragraph': ParagraphCallback,
592
+ 'image': ImageCallback,
593
+ 'captcha': CaptchaCallback,
594
+ 'address': AddressCallback,
595
+ 'avatar': AvatarCallback,
596
+ 'editor': EditorCallback,
597
+ 'button': ButtonCallback,
598
+ 'href': HrefCallback,
599
+ 'grid': GridCallback,
600
+ 'columns': ColumnsCallback,
601
+ 'columns-3': ColumnsCallback,
602
+ 'columns-4': ColumnsCallback,
603
+ 'table': TableCallback,
604
+ 'maps': MapsCallback,
605
+ 'panel': PanelCallback,
606
+ 'container': ContainerCallback,
607
+ 'iframe': IframeCallback,
529
608
  'qr-code': QRCodeCallback,
609
+ 'tabs': TabsCallback,
610
+ 'range-picker': DateRangeCallback,
611
+ 'dynamic': DynamicCallback,
530
612
  };
531
613
  }
614
+ async submit(event, field) {
615
+ // Gather values from dynamic slots first
616
+ let dynamicValues = {};
617
+ let allDynamicValid = true;
618
+ let dynamicErrors = {};
619
+ if (this.builder && this.builder.form) {
620
+ const dynamicFields = Array.from(this.builder.form.mapping.values()).filter(f => f.type === 'dynamic');
621
+ for (const dField of dynamicFields) {
622
+ const slotName = dField.meta?.slot || dField.metadata?.slot || dField.name;
623
+ // Search for slotted elements in light DOM (children of this.el)
624
+ const slottedElement = Array.from(this.el.children).find(child => child.getAttribute('slot') === slotName);
625
+ if (slottedElement) {
626
+ let val = slottedElement.value;
627
+ if (val === undefined && dField.control) {
628
+ val = dField.control.value;
629
+ }
630
+ // Update internal control so built-in validators (like required) pass
631
+ if (dField.control && val !== undefined) {
632
+ dField.control.setValue(val, { emitEvent: false });
633
+ }
634
+ // Check if it has a validate method
635
+ if (typeof slottedElement.validate === 'function') {
636
+ const res = await slottedElement.validate(val);
637
+ if (res) {
638
+ allDynamicValid = false;
639
+ dynamicErrors[dField.name] = res;
640
+ slottedElement.validationState = {
641
+ status: 'invalid',
642
+ errorMessage: typeof res === 'object' ? Object.values(res)[0] : 'Invalid',
643
+ errors: res
644
+ };
645
+ }
646
+ else {
647
+ slottedElement.validationState = { status: 'valid', errors: null, errorMessage: '' };
648
+ }
649
+ }
650
+ // Merge value
651
+ dynamicValues[dField.name] = val;
652
+ }
653
+ }
654
+ }
655
+ // Validate all mapped controls (both sync and async) first to ensure errors are updated
656
+ if (this.builder && this.builder.form) {
657
+ for (const [_key, fld] of Array.from(this.builder.form.mapping.entries())) {
658
+ if (fld.control) {
659
+ await fld.control.updateValueAndValidity({ emitEvent: false });
660
+ }
661
+ }
662
+ await this.builder.form.updateValueAndValidity();
663
+ }
664
+ // Validate all captcha components first
665
+ let allCaptchaValid = true;
666
+ const shadowRoot = this.el.shadowRoot;
667
+ if (shadowRoot) {
668
+ const captchas = shadowRoot.querySelectorAll('x-captcha');
669
+ for (let i = 0; i < captchas.length; i++) {
670
+ const captcha = captchas[i];
671
+ if (captcha.validate) {
672
+ const res = await captcha.validate();
673
+ if (!res) {
674
+ allCaptchaValid = false;
675
+ }
676
+ }
677
+ }
678
+ }
679
+ if (this.builder.form.valid && allCaptchaValid && allDynamicValid) {
680
+ this.formSubmit.emit({
681
+ value: { ...this.builder.form.value, ...dynamicValues },
682
+ builder: this.builder,
683
+ event: event,
684
+ field,
685
+ });
686
+ }
687
+ else {
688
+ this.builder.form.markAllAsTouched();
689
+ this._tick++;
690
+ // Auto refresh captcha on submission failure
691
+ if (shadowRoot) {
692
+ const captchas = shadowRoot.querySelectorAll('x-captcha');
693
+ for (let i = 0; i < captchas.length; i++) {
694
+ const captcha = captchas[i];
695
+ if (captcha.refresh) {
696
+ captcha.refresh();
697
+ }
698
+ }
699
+ }
700
+ this.formError.emit({
701
+ builder: this.builder,
702
+ event: event,
703
+ errors: { ...this.builder.form.errors, ...dynamicErrors },
704
+ });
705
+ }
706
+ }
532
707
  schema;
708
+ showErrorCheckbox = false;
533
709
  getcommonProps(field) {
534
710
  const commonProps = {
535
711
  defaultValue: (field.defaultValue ?? field.defaultChecked ?? field.targetKeys),
@@ -546,7 +722,7 @@ export class XFormBuilder {
546
722
  disabled: field.disabled,
547
723
  readonly: field.readonly,
548
724
  size: (field.size || 'middle'),
549
- placeholder: field.placeholder || '',
725
+ placeholder: field.placeholder,
550
726
  errorMessage: '',
551
727
  pattern: field.pattern,
552
728
  };
@@ -566,60 +742,118 @@ export class XFormBuilder {
566
742
  commonProps.maxLength = field.maxLength;
567
743
  }
568
744
  const onChange = (e) => {
569
- const val = e.detail && typeof e.detail === 'object' && 'value' in e.detail
570
- ? e.detail.value
571
- : e.detail;
745
+ let val = e.detail && typeof e.detail === 'object' && 'value' in e.detail ? e.detail.value : e.detail;
746
+ if (val && typeof val === 'object' && 'fileList' in val) {
747
+ val = val.fileList;
748
+ }
572
749
  if (field.control) {
573
750
  field.control.setValue(val);
574
751
  }
575
752
  else {
576
753
  field.value = val;
577
754
  }
755
+ this.xChange.emit({
756
+ builder: this.builder,
757
+ event: e,
758
+ field: field,
759
+ value: this.builder ? this.builder.form.value : this.value,
760
+ });
578
761
  this._tick++;
579
762
  };
580
763
  const control = field.control;
581
764
  if (control && this.builder && control.touched) {
582
765
  commonProps.status = undefined;
583
- if (control.invalid) {
766
+ // Bỏ qua hiển thị lỗi nội bộ của x-form-builder cho các trường dynamic vì client tự quản lý
767
+ if (control.invalid && field.type !== 'dynamic') {
584
768
  commonProps.status = 'error';
585
769
  const errors = control.errors ?? {};
586
770
  const messages = this.getMessageValidator(field, errors);
587
- commonProps.errorMessage =
588
- messages.length > 0 ? messages[0] : 'Invalid value';
771
+ commonProps.errorMessage = messages.length > 0 ? messages[0] : 'Invalid value';
589
772
  }
590
773
  }
591
- return { commonProps, onChange };
774
+ const onPressEnter = (e) => {
775
+ if (this.schema?.setting?.enterSubmit) {
776
+ this.submit(e, field);
777
+ }
778
+ };
779
+ return { commonProps, onChange, onPressEnter };
780
+ }
781
+ getStylesFromUI(ui) {
782
+ if (!ui || !ui.style)
783
+ return {};
784
+ const { margin, padding, ...rest } = ui.style;
785
+ const styles = { ...rest };
786
+ if (margin) {
787
+ if (margin.top !== undefined)
788
+ styles.marginTop = typeof margin.top === 'number' ? `${margin.top}px` : margin.top;
789
+ if (margin.bottom !== undefined)
790
+ styles.marginBottom = typeof margin.bottom === 'number' ? `${margin.bottom}px` : margin.bottom;
791
+ if (margin.left !== undefined)
792
+ styles.marginLeft = typeof margin.left === 'number' ? `${margin.left}px` : margin.left;
793
+ if (margin.right !== undefined)
794
+ styles.marginRight = typeof margin.right === 'number' ? `${margin.right}px` : margin.right;
795
+ }
796
+ if (padding) {
797
+ if (padding.top !== undefined)
798
+ styles.paddingTop = typeof padding.top === 'number' ? `${padding.top}px` : padding.top;
799
+ if (padding.bottom !== undefined)
800
+ styles.paddingBottom = typeof padding.bottom === 'number' ? `${padding.bottom}px` : padding.bottom;
801
+ if (padding.left !== undefined)
802
+ styles.paddingLeft = typeof padding.left === 'number' ? `${padding.left}px` : padding.left;
803
+ if (padding.right !== undefined)
804
+ styles.paddingRight = typeof padding.right === 'number' ? `${padding.right}px` : padding.right;
805
+ }
806
+ return styles;
592
807
  }
593
808
  _tick = 0;
594
809
  value;
595
810
  context = {};
596
811
  builder;
812
+ _isInternalChange = false;
597
813
  componentWillLoad() {
598
- this.syncBuilder();
814
+ this.asyncBuilderForm(true);
599
815
  }
600
- syncBuilder() {
601
- this.asyncBuilderForm();
816
+ componentDidUpdate() {
817
+ }
818
+ disconnectedCallback() {
819
+ }
820
+ handleValueChange() {
821
+ if (this._isInternalChange)
822
+ return;
823
+ this.asyncBuilderForm(true);
824
+ }
825
+ handleSchemaChange() {
826
+ this.asyncBuilderForm(false);
602
827
  }
603
828
  isSyncing = false;
604
- asyncBuilderForm() {
829
+ asyncBuilderForm(forcePropValue = false) {
605
830
  if (this.isSyncing)
606
831
  return;
607
832
  this.isSyncing = true;
608
833
  try {
834
+ // Lưu lại giá trị hiện tại của form trước khi cập nhật/xây dựng lại builder
835
+ const currentInternalValue = this.builder ? this.builder.form.value : this.value;
609
836
  if (this.schema && (!this.builder || this.schema !== this.builder.schema)) {
610
- this.builder = new SchemaBuilder(this.schema);
837
+ this.builder = new SchemaBuilder(this.schema, { showErrorCheckbox: this.showErrorCheckbox });
611
838
  this.builder.subscribe((value) => {
839
+ this._isInternalChange = true;
612
840
  this.value = value;
841
+ this._isInternalChange = false;
613
842
  this.valueChange.emit(value);
614
843
  this.xChange.emit({
615
844
  builder: this.builder,
616
845
  event: null,
846
+ value: value,
617
847
  });
618
848
  this._tick++;
619
849
  });
620
850
  }
621
- if (this.builder && this.value) {
622
- this.builder.form.patchValue(this.value, { emitEvent: false });
851
+ // Luôn ưu tiên dùng giá trị mới nhất đang đúng context
852
+ // Nếu là forcePropValue (do @Watch('value') từ bên ngoài) thì lấy this.value
853
+ // Nếu là do schema/context change thì ưu tiên giữ lại giá trị đang nhập (currentInternalValue)
854
+ const effectiveValue = forcePropValue ? this.value : currentInternalValue || this.value;
855
+ if (this.builder && effectiveValue) {
856
+ this.builder.form.patchValue(effectiveValue, { emitEvent: false });
623
857
  }
624
858
  if (this.builder && this.context) {
625
859
  this.builder.context = this.context;
@@ -627,6 +861,9 @@ export class XFormBuilder {
627
861
  this.builder.conditions.checkAll();
628
862
  }
629
863
  }
864
+ if (this.builder) {
865
+ this.builder.showErrorCheckbox = this.showErrorCheckbox;
866
+ }
630
867
  this._tick++;
631
868
  }
632
869
  finally {
@@ -650,8 +887,16 @@ export class XFormBuilder {
650
887
  }
651
888
  if (layoutType === 'inline') {
652
889
  return {
653
- container: { display: 'flex', alignItems: 'center', gap: `${layout?.gap ?? gap}px` },
654
- item: { marginBottom: '0' },
890
+ container: {
891
+ display: 'flex',
892
+ alignItems: 'center',
893
+ gap: `${layout?.gap ?? gap}px`,
894
+ overflowX: 'auto',
895
+ flexWrap: 'nowrap',
896
+ maxWidth: '100%',
897
+ paddingBottom: '8px',
898
+ },
899
+ item: { marginBottom: '0', flexShrink: 0 },
655
900
  };
656
901
  }
657
902
  if (layoutType === 'grid') {
@@ -679,7 +924,7 @@ export class XFormBuilder {
679
924
  if (!elements || !Array.isArray(elements)) {
680
925
  return null;
681
926
  }
682
- return elements.map((element) => {
927
+ return elements.map(element => {
683
928
  if (element.hidden) {
684
929
  return null;
685
930
  }
@@ -688,21 +933,30 @@ export class XFormBuilder {
688
933
  const computedElement = {
689
934
  ...element,
690
935
  disabled: element.disabled || isParentDisabled,
691
- readonly: element.readonly || isParentReadonly
936
+ readonly: element.readonly || isParentReadonly,
692
937
  };
693
938
  const Component = this.mapping[element.type];
694
- const itemStyle = { marginBottom: '15px' };
939
+ const layoutConfig = this.schema.layout || this.schema.setting?.layout || 'vertical';
940
+ const layoutType = typeof layoutConfig === 'string' ? layoutConfig : layoutConfig?.type;
941
+ const uiStyle = this.getStylesFromUI(element.ui);
942
+ const itemStyle = { marginBottom: '15px', ...uiStyle };
695
943
  if (_parent?.type === 'grid') {
696
944
  const span = element.span || 1;
697
945
  itemStyle.gridColumn = `span ${span}`;
698
946
  }
947
+ else if (layoutType === 'horizontal' || layoutType === 'inline' || element.span) {
948
+ // Use 12-column grid for consistent spanning
949
+ const defaultSpan = layoutType === 'inline' ? 6 : 12;
950
+ const span = element.span || defaultSpan;
951
+ const widthPercent = (Number(span) / 12) * 100;
952
+ itemStyle.flex = `0 0 ${widthPercent}%`;
953
+ itemStyle.maxWidth = `${widthPercent}%`;
954
+ }
699
955
  if ('elements' in element) {
700
956
  return (h("div", { key: element.id || element.name, style: itemStyle }, h(Component, { ...computedElement })));
701
957
  }
702
958
  const { commonProps } = this.getcommonProps(computedElement);
703
- const layoutConfig = this.schema.layout || this.schema.setting?.layout || 'vertical';
704
- const layoutType = typeof layoutConfig === 'string' ? layoutConfig : layoutConfig?.type;
705
- const labelAlign = typeof layoutConfig === 'object' ? layoutConfig?.labelAlign : (this.schema.setting?.labelAlign || 'right');
959
+ const labelAlign = typeof layoutConfig === 'object' ? layoutConfig?.labelAlign || 'left' : this.schema.setting?.labelAlign || 'left';
706
960
  const labelCol = this.schema.setting?.labelCol;
707
961
  const wrapperCol = this.schema.setting?.wrapperCol;
708
962
  if (element.type === 'button') {
@@ -715,7 +969,31 @@ export class XFormBuilder {
715
969
  }
716
970
  return (h("div", { key: element.id || element.name, style: itemStyle }, h(Component, { ...buttonProps }, element.content)));
717
971
  }
718
- return (h("x-form-item", { key: element.id || element.name, label: element.label, colon: element.colon, required: element.required || (Array.isArray(element.validators) && element.validators.some(v => v.type === 'required')), validateStatus: commonProps.status, help: commonProps.errorMessage || element.note, layout: layoutType, labelAlign: labelAlign, labelCol: labelCol, wrapperCol: wrapperCol, style: itemStyle }, h(Component, { ...computedElement })));
972
+ const isDataField = !['divider', 'heading', 'paragraph', 'image', 'avatar', 'grid', 'panel', 'container', 'iframe', 'qr-code', 'tabs', 'button', 'href'].includes(element.type);
973
+ const isError = !!this.builder?.form?.get(`isError_${element.name}`)?.value;
974
+ return (h("x-form-item", { key: element.id || element.name, label: this.showErrorCheckbox && isDataField && element.name ? null : element.label, colon: element.colon, required: element.required || (Array.isArray(element.validators) && element.validators.some(v => v.type === 'required')), validateStatus: isError ? 'error' : commonProps.status, help: commonProps.errorMessage || element.note, layout: layoutType, labelAlign: labelAlign, labelCol: labelCol, wrapperCol: wrapperCol, style: itemStyle }, this.showErrorCheckbox && isDataField && element.name && (h("div", { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '8px' } }, h("span", { style: {
975
+ fontWeight: '600',
976
+ color: isError ? '#ff4d4f' : 'rgba(0, 0, 0, 0.88)',
977
+ fontSize: '14px'
978
+ } }, element.label, element.required && h("span", { style: { color: '#ff4d4f', marginLeft: '4px' } }, "*")), h("div", { style: { display: 'flex', alignItems: 'center', gap: '4px' } }, h("x-checkbox", { checked: isError, onXChange: (e) => {
979
+ const val = !!e.detail.checked;
980
+ const control = this.builder.form.get(`isError_${element.name}`);
981
+ if (control) {
982
+ control.setValue(val);
983
+ this.xChange.emit({
984
+ builder: this.builder,
985
+ event: e,
986
+ field: element,
987
+ value: this.builder.form.value,
988
+ });
989
+ }
990
+ this._tick++;
991
+ } }), h("span", { style: {
992
+ fontSize: '12px',
993
+ fontWeight: '700',
994
+ color: isError ? '#ff4d4f' : 'rgba(0, 0, 0, 0.65)',
995
+ textTransform: 'uppercase',
996
+ } }, "L\u1ED7i")))), h(Component, { ...computedElement, status: isError ? 'error' : computedElement.status })));
719
997
  });
720
998
  }
721
999
  render() {
@@ -728,9 +1006,7 @@ export class XFormBuilder {
728
1006
  if (this.builder.form.is_custom_submit)
729
1007
  return null;
730
1008
  const setting = this.schema.setting || {};
731
- let actions = Array.isArray(this.schema.actions)
732
- ? this.schema.actions
733
- : [];
1009
+ let actions = Array.isArray(this.schema.actions) ? this.schema.actions : [];
734
1010
  // Ensure at least one submit action is present
735
1011
  if (!actions || actions.length === 0) {
736
1012
  if (setting.showSubmitButton) {
@@ -756,7 +1032,11 @@ export class XFormBuilder {
756
1032
  textAlign: actionsAlign,
757
1033
  };
758
1034
  return (h("div", { style: containerStyle }, actions.map((action, idx) => {
759
- const { label, type, ...rest } = action;
1035
+ if (action.hidden) {
1036
+ return null;
1037
+ }
1038
+ const labelValue = action.content || action.label || '';
1039
+ const { type, ...rest } = action;
760
1040
  const buttonProps = { ...rest };
761
1041
  if (type === 'submit' || type === 'reset') {
762
1042
  buttonProps.htmlType = type;
@@ -764,15 +1044,21 @@ export class XFormBuilder {
764
1044
  else if (type) {
765
1045
  buttonProps.type = type;
766
1046
  }
767
- return (h("span", { style: { display: 'inline-block', marginLeft: idx ? '8px' : '0' }, key: action.id || `action-${idx}` }, h(ButtonComponent, { ...buttonProps }, label)));
1047
+ const isBlock = !!buttonProps.block;
1048
+ return (h("div", { style: {
1049
+ display: isBlock ? 'block' : 'inline-block',
1050
+ width: isBlock ? '100%' : 'auto',
1051
+ marginLeft: !isBlock && idx ? '8px' : '0',
1052
+ marginTop: isBlock && idx ? '8px' : '0',
1053
+ }, key: action.id || `action-${idx}` }, h(ButtonComponent, { ...buttonProps }, labelValue)));
768
1054
  })));
769
1055
  };
770
- const form_template = (h("form", { noValidate: true, onSubmit: (e) => {
1056
+ const form_template = (h("form", { noValidate: true, onSubmit: e => {
771
1057
  e.preventDefault();
772
1058
  e.stopPropagation();
773
1059
  } }, h("div", { style: styles.container }, this.bind(this.schema?.elements)), renderActions()));
774
1060
  if (this.schema.type === 'card') {
775
- return (h("x-card", null, h("slot", { name: "title" }, this.schema.title && (h("x-typography-title", { level: 3 }, this.schema.title)), this.schema.description && (h("x-typography-text", null, this.schema.description))), form_template));
1061
+ return (h("x-card", null, h("slot", { name: "title" }, this.schema.title && h("x-typography-title", { level: 3 }, this.schema.title), this.schema.description && h("x-typography-text", null, this.schema.description)), form_template));
776
1062
  }
777
1063
  return form_template;
778
1064
  }
@@ -814,6 +1100,26 @@ export class XFormBuilder {
814
1100
  "getter": false,
815
1101
  "setter": false
816
1102
  },
1103
+ "showErrorCheckbox": {
1104
+ "type": "boolean",
1105
+ "mutable": false,
1106
+ "complexType": {
1107
+ "original": "boolean",
1108
+ "resolved": "boolean",
1109
+ "references": {}
1110
+ },
1111
+ "required": false,
1112
+ "optional": false,
1113
+ "docs": {
1114
+ "tags": [],
1115
+ "text": ""
1116
+ },
1117
+ "getter": false,
1118
+ "setter": false,
1119
+ "reflect": false,
1120
+ "attribute": "show-error-checkbox",
1121
+ "defaultValue": "false"
1122
+ },
817
1123
  "value": {
818
1124
  "type": "unknown",
819
1125
  "mutable": true,
@@ -880,7 +1186,7 @@ export class XFormBuilder {
880
1186
  "references": {
881
1187
  "XFormBuilderChangeDetail": {
882
1188
  "location": "local",
883
- "path": "E:/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
1189
+ "path": "/run/media/cpanel/volumes/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
884
1190
  "id": "src/components/x-form-builder/x-form-builder.tsx::XFormBuilderChangeDetail"
885
1191
  }
886
1192
  }
@@ -901,7 +1207,7 @@ export class XFormBuilder {
901
1207
  "references": {
902
1208
  "XFormBuilderSubmitDetail": {
903
1209
  "location": "local",
904
- "path": "E:/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
1210
+ "path": "/run/media/cpanel/volumes/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
905
1211
  "id": "src/components/x-form-builder/x-form-builder.tsx::XFormBuilderSubmitDetail"
906
1212
  }
907
1213
  }
@@ -922,7 +1228,7 @@ export class XFormBuilder {
922
1228
  "references": {
923
1229
  "XTableActionDetail": {
924
1230
  "location": "local",
925
- "path": "E:/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
1231
+ "path": "/run/media/cpanel/volumes/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
926
1232
  "id": "src/components/x-form-builder/x-form-builder.tsx::XTableActionDetail"
927
1233
  }
928
1234
  }
@@ -943,7 +1249,7 @@ export class XFormBuilder {
943
1249
  "references": {
944
1250
  "XFormBuilderErrorDetail": {
945
1251
  "location": "local",
946
- "path": "E:/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
1252
+ "path": "/run/media/cpanel/volumes/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
947
1253
  "id": "src/components/x-form-builder/x-form-builder.tsx::XFormBuilderErrorDetail"
948
1254
  }
949
1255
  }
@@ -979,7 +1285,7 @@ export class XFormBuilder {
979
1285
  "references": {
980
1286
  "XFormBuilderClickDetail": {
981
1287
  "location": "local",
982
- "path": "E:/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
1288
+ "path": "/run/media/cpanel/volumes/projects/fintvn/labs/packages/core/src/components/x-form-builder/x-form-builder.tsx",
983
1289
  "id": "src/components/x-form-builder/x-form-builder.tsx::XFormBuilderClickDetail"
984
1290
  }
985
1291
  }
@@ -1001,17 +1307,64 @@ export class XFormBuilder {
1001
1307
  }
1002
1308
  }];
1003
1309
  }
1310
+ static get methods() {
1311
+ return {
1312
+ "submit": {
1313
+ "complexType": {
1314
+ "signature": "(event?: Event, field?: FormField | FormAction) => Promise<void>",
1315
+ "parameters": [{
1316
+ "name": "event",
1317
+ "type": "Event",
1318
+ "docs": ""
1319
+ }, {
1320
+ "name": "field",
1321
+ "type": "FormField | FormAction",
1322
+ "docs": ""
1323
+ }],
1324
+ "references": {
1325
+ "Promise": {
1326
+ "location": "global",
1327
+ "id": "global::Promise"
1328
+ },
1329
+ "Event": {
1330
+ "location": "import",
1331
+ "path": "@stencil/core",
1332
+ "id": "../../node_modules/@stencil/core/internal/stencil-core/index.d.ts::Event",
1333
+ "referenceLocation": "Event"
1334
+ },
1335
+ "FormField": {
1336
+ "location": "import",
1337
+ "path": "./types",
1338
+ "id": "src/components/x-form-builder/types/index.ts::FormField",
1339
+ "referenceLocation": "FormField"
1340
+ },
1341
+ "FormAction": {
1342
+ "location": "import",
1343
+ "path": "./types",
1344
+ "id": "src/components/x-form-builder/types/index.ts::FormAction",
1345
+ "referenceLocation": "FormAction"
1346
+ }
1347
+ },
1348
+ "return": "Promise<void>"
1349
+ },
1350
+ "docs": {
1351
+ "text": "",
1352
+ "tags": []
1353
+ }
1354
+ }
1355
+ };
1356
+ }
1004
1357
  static get elementRef() { return "el"; }
1005
1358
  static get watchers() {
1006
1359
  return [{
1007
- "propName": "schema",
1008
- "methodName": "syncBuilder"
1009
- }, {
1010
1360
  "propName": "value",
1011
- "methodName": "syncBuilder"
1361
+ "methodName": "handleValueChange"
1362
+ }, {
1363
+ "propName": "schema",
1364
+ "methodName": "handleSchemaChange"
1012
1365
  }, {
1013
1366
  "propName": "context",
1014
- "methodName": "syncBuilder"
1367
+ "methodName": "handleSchemaChange"
1015
1368
  }];
1016
1369
  }
1017
1370
  }