@done-coding/admin-core 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/README.md +77 -1
  2. package/es/_virtual/_plugin-vue_export-helper.mjs +7 -6
  3. package/es/bridge/config-hook.mjs +49 -37
  4. package/es/bridge/index.mjs +152 -109
  5. package/es/bridge/layout.mjs +45 -31
  6. package/es/bridge/plugin.mjs +22 -12
  7. package/es/bridge/route.mjs +59 -50
  8. package/es/bridge/state.mjs +54 -39
  9. package/es/bridge/storage.mjs +18 -8
  10. package/es/bridge/theme/index.mjs +200 -97
  11. package/es/bridge/theme/persist.mjs +11 -7
  12. package/es/bridge/theme/system-dark.mjs +13 -6
  13. package/es/components/app-layout/AppAside.vue.mjs +4 -4
  14. package/es/components/app-layout/AppAside.vue2.mjs +37 -30
  15. package/es/components/app-layout/AppBody.vue.mjs +4 -4
  16. package/es/components/app-layout/AppBody.vue2.mjs +97 -60
  17. package/es/components/app-layout/AppBreadcrumb.vue.mjs +4 -4
  18. package/es/components/app-layout/AppBreadcrumb.vue2.mjs +59 -38
  19. package/es/components/app-layout/AppCollapseToggle.vue.mjs +4 -4
  20. package/es/components/app-layout/AppCollapseToggle.vue2.mjs +51 -42
  21. package/es/components/app-layout/AppFooter.vue.mjs +4 -4
  22. package/es/components/app-layout/AppFooter.vue2.mjs +15 -12
  23. package/es/components/app-layout/AppHeader.vue.mjs +4 -4
  24. package/es/components/app-layout/AppHeader.vue2.mjs +81 -58
  25. package/es/components/app-layout/AppLayout.vue.mjs +4 -4
  26. package/es/components/app-layout/AppLayout.vue2.mjs +148 -112
  27. package/es/components/app-layout/AppPage.vue.mjs +4 -4
  28. package/es/components/app-layout/AppPage.vue2.mjs +254 -197
  29. package/es/components/app-layout/AppShell.vue.mjs +44 -42
  30. package/es/components/app-layout/AppShell.vue2.mjs +2 -2
  31. package/es/components/app-layout/AppSidebar.vue.mjs +4 -4
  32. package/es/components/app-layout/AppSidebar.vue2.mjs +76 -59
  33. package/es/components/app-layout/AppTheme.vue.mjs +4 -4
  34. package/es/components/app-layout/AppTheme.vue2.mjs +69 -57
  35. package/es/components/app-layout/app-page-geometry.mjs +44 -42
  36. package/es/components/app-layout/keep-alive.mjs +27 -19
  37. package/es/components/app-layout/viewport.mjs +4 -3
  38. package/es/components/data-view/DataListView.vue.mjs +4 -4
  39. package/es/components/data-view/DataListView.vue2.mjs +133 -93
  40. package/es/components/data-view/DataListViewItem.vue.mjs +4 -4
  41. package/es/components/data-view/DataListViewItem.vue2.mjs +11 -9
  42. package/es/components/data-view/utils.mjs +36 -34
  43. package/es/components/display/ActionBtn.vue.mjs +94 -71
  44. package/es/components/display/ActionBtn.vue2.mjs +2 -2
  45. package/es/components/display/ActionBtnGroup.vue.mjs +54 -48
  46. package/es/components/display/ActionBtnGroup.vue2.mjs +2 -2
  47. package/es/components/display/ActionConfirm.vue.mjs +4 -4
  48. package/es/components/display/ActionConfirm.vue2.mjs +116 -92
  49. package/es/components/display/BooleanTag.vue.mjs +24 -18
  50. package/es/components/display/BooleanTag.vue2.mjs +2 -2
  51. package/es/components/display/HeightProvider.vue.mjs +37 -27
  52. package/es/components/display/HeightProvider.vue2.mjs +2 -2
  53. package/es/components/display/TabsHeader.vue.mjs +4 -4
  54. package/es/components/display/TabsHeader.vue2.mjs +86 -57
  55. package/es/components/display/TabsMain.vue.mjs +156 -125
  56. package/es/components/display/TabsMain.vue2.mjs +2 -2
  57. package/es/components/display/TabsNaturalFlow.vue.mjs +15 -11
  58. package/es/components/display/TabsNaturalFlow.vue2.mjs +2 -2
  59. package/es/components/display/TabsRefineFlow.vue.mjs +55 -42
  60. package/es/components/display/TabsRefineFlow.vue2.mjs +2 -2
  61. package/es/components/display/TabsTile.vue.mjs +4 -4
  62. package/es/components/display/TabsTile.vue2.mjs +204 -146
  63. package/es/components/display/WatchSize.vue.mjs +50 -30
  64. package/es/components/display/WatchSize.vue2.mjs +2 -2
  65. package/es/components/display/use-tabs-query-sync.mjs +21 -17
  66. package/es/components/form/FormItem.vue.mjs +4 -4
  67. package/es/components/form/FormItem.vue2.mjs +183 -121
  68. package/es/components/form/FormItemNestForm.vue.mjs +4 -4
  69. package/es/components/form/FormItemNestForm.vue2.mjs +38 -34
  70. package/es/components/form/FormItemNestFormList.vue.mjs +4 -4
  71. package/es/components/form/FormItemNestFormList.vue2.mjs +135 -106
  72. package/es/components/form/FormMain.vue.mjs +4 -4
  73. package/es/components/form/FormMain.vue2.mjs +226 -139
  74. package/es/components/form/FormRadioGroup.vue.mjs +67 -52
  75. package/es/components/form/FormRadioGroup.vue2.mjs +2 -2
  76. package/es/components/form/FormSearch.vue.mjs +4 -4
  77. package/es/components/form/FormSearch.vue2.mjs +194 -156
  78. package/es/components/form/FormSelect.vue.mjs +69 -42
  79. package/es/components/form/FormSelect.vue2.mjs +2 -2
  80. package/es/components/form/FormSubmitBtn.vue.mjs +30 -25
  81. package/es/components/form/FormSubmitBtn.vue2.mjs +2 -2
  82. package/es/components/form/FormSubmitPanel.vue.mjs +4 -4
  83. package/es/components/form/FormSubmitPanel.vue2.mjs +129 -96
  84. package/es/components/form/FormTree.vue.mjs +19 -16
  85. package/es/components/form/FormTree.vue2.mjs +2 -2
  86. package/es/components/form/FormVerifyCode.vue.mjs +58 -41
  87. package/es/components/form/FormVerifyCode.vue2.mjs +2 -2
  88. package/es/components/form/FormVerifyImage.vue.mjs +4 -4
  89. package/es/components/form/FormVerifyImage.vue2.mjs +62 -40
  90. package/es/components/form/form-search-utils.mjs +83 -52
  91. package/es/components/form/nest-form-item-list.mjs +63 -55
  92. package/es/components/form/nest-form-item.mjs +30 -30
  93. package/es/components/form/nest-registry.mjs +4 -4
  94. package/es/components/form/use-form-submit.mjs +18 -15
  95. package/es/components/form/use-layout-by-container.mjs +23 -15
  96. package/es/components/form/use-nest-form-list.mjs +19 -16
  97. package/es/components/form/use-nest-form.mjs +37 -28
  98. package/es/components/form/use-nest-layout-scale.mjs +11 -10
  99. package/es/components/form/utils.mjs +233 -145
  100. package/es/components/list-page/ListPage.vue.mjs +4 -4
  101. package/es/components/list-page/ListPage.vue2.mjs +313 -207
  102. package/es/components/list-page/use-sticky.mjs +45 -33
  103. package/es/components/menu/MenuItemSub.vue.mjs +47 -43
  104. package/es/components/menu/MenuItemSub.vue2.mjs +2 -2
  105. package/es/components/menu/MenuTree.vue.mjs +84 -61
  106. package/es/components/menu/MenuTree.vue2.mjs +2 -2
  107. package/es/components/misc/AutoRefresh.vue.mjs +4 -4
  108. package/es/components/misc/AutoRefresh.vue2.mjs +78 -53
  109. package/es/components/misc/AutoRefreshGroup.vue.mjs +4 -4
  110. package/es/components/misc/AutoRefreshGroup.vue2.mjs +54 -51
  111. package/es/components/misc/SelectModule.vue.mjs +54 -45
  112. package/es/components/misc/SelectModule.vue2.mjs +2 -2
  113. package/es/components/misc/TriggerAutoImport.vue.mjs +7 -5
  114. package/es/components/misc/TriggerAutoImport.vue2.mjs +2 -2
  115. package/es/components/modal/ModalConfirm.vue.mjs +4 -4
  116. package/es/components/modal/ModalConfirm.vue2.mjs +160 -125
  117. package/es/components/modal/ModalDetail.vue.mjs +50 -39
  118. package/es/components/modal/ModalDetail.vue2.mjs +2 -2
  119. package/es/components/modal/ModalForm.vue.mjs +63 -52
  120. package/es/components/modal/ModalForm.vue2.mjs +2 -2
  121. package/es/components/modal/ModalPorter.vue.mjs +51 -36
  122. package/es/components/modal/ModalPorter.vue2.mjs +2 -2
  123. package/es/components/modal/ModalShelf.vue.mjs +38 -28
  124. package/es/components/modal/ModalShelf.vue2.mjs +2 -2
  125. package/es/components/modal/modal-shelf-core.mjs +52 -36
  126. package/es/components/modal/modal-shelf-hierarchy.mjs +11 -9
  127. package/es/components/panel/PanelEditSwitch.vue.mjs +4 -4
  128. package/es/components/panel/PanelEditSwitch.vue2.mjs +88 -66
  129. package/es/components/panel/PanelItem.vue.mjs +4 -4
  130. package/es/components/panel/PanelItem.vue2.mjs +103 -77
  131. package/es/components/panel/PanelItemNestForm.vue.mjs +4 -4
  132. package/es/components/panel/PanelItemNestForm.vue2.mjs +61 -52
  133. package/es/components/panel/PanelItemNestPanel.vue.mjs +22 -20
  134. package/es/components/panel/PanelItemNestPanel.vue2.mjs +2 -2
  135. package/es/components/panel/PanelMain.vue.mjs +4 -4
  136. package/es/components/panel/PanelMain.vue2.mjs +92 -74
  137. package/es/components/panel/nest-panel-form.mjs +44 -38
  138. package/es/components/panel/nest-panel-item.mjs +18 -17
  139. package/es/components/slot-layout/SlotLayoutFlowAside.vue.mjs +4 -4
  140. package/es/components/slot-layout/SlotLayoutFlowAside.vue2.mjs +55 -42
  141. package/es/components/slot-layout/SlotLayoutTemplate.vue.mjs +11 -9
  142. package/es/components/slot-layout/SlotLayoutTemplate.vue2.mjs +2 -2
  143. package/es/components/table/TableMain.vue.mjs +4 -4
  144. package/es/components/table/TableMain.vue2.mjs +378 -275
  145. package/es/components/table/TableSkeleton.vue.mjs +4 -4
  146. package/es/components/table/TableSkeleton.vue2.mjs +95 -74
  147. package/es/components/table/TableToolbar.vue.mjs +4 -4
  148. package/es/components/table/TableToolbar.vue2.mjs +170 -154
  149. package/es/components/table/ToolbarButtons.vue.mjs +12 -10
  150. package/es/components/table/ToolbarButtons.vue2.mjs +2 -2
  151. package/es/components/table/constants.mjs +4 -3
  152. package/es/components/table/use-fill-height.mjs +12 -10
  153. package/es/components/table/use-table-skeleton.mjs +19 -15
  154. package/es/config/list-model.mjs +2 -2
  155. package/es/config/route.mjs +4 -3
  156. package/es/helpers/form.mjs +35 -25
  157. package/es/helpers/list-helper.mjs +59 -44
  158. package/es/hooks/activated.mjs +49 -33
  159. package/es/hooks/feel-size.mjs +39 -23
  160. package/es/hooks/menus-dispatch.mjs +68 -35
  161. package/es/hooks/timeout.mjs +29 -14
  162. package/es/hooks/use-breakpoint.mjs +35 -23
  163. package/es/hooks/use-channel-viewport-height.mjs +30 -20
  164. package/es/hooks/use-custom-breakpoint.mjs +48 -31
  165. package/es/hooks/use-observe-size.mjs +37 -20
  166. package/es/hooks/use-theme-apply.mjs +175 -124
  167. package/es/hooks/use-viewport-apply.mjs +39 -27
  168. package/es/index.mjs +239 -239
  169. package/es/inject/key.mjs +52 -41
  170. package/es/injectInfo.json.mjs +2 -2
  171. package/es/router/group-redirect.mjs +22 -16
  172. package/es/router/guard/index.mjs +26 -21
  173. package/es/router/guard/login.mjs +4 -2
  174. package/es/router/guard/permission.mjs +4 -2
  175. package/es/store/app.mjs +163 -123
  176. package/es/store/router-permission.mjs +75 -46
  177. package/es/store/user.mjs +100 -71
  178. package/es/style.css +769 -1
  179. package/es/utils/dom.mjs +20 -16
  180. package/es/utils/export.mjs +34 -18
  181. package/es/utils/id.mjs +5 -3
  182. package/es/utils/router.mjs +21 -14
  183. package/es/utils/theme-scale.mjs +50 -35
  184. package/es/utils/time.mjs +20 -14
  185. package/package.json +4 -3
  186. package/src/bridge/README.md +5 -0
  187. package/src/bridge/docs/README.md +72 -0
  188. package/src/components/README.md +84 -0
  189. package/src/components/app-layout/README.md +46 -0
  190. package/src/components/app-layout/docs/README-AppAside.md +69 -0
  191. package/src/components/app-layout/docs/README-AppBody.md +81 -0
  192. package/src/components/app-layout/docs/README-AppBreadcrumb.md +71 -0
  193. package/src/components/app-layout/docs/README-AppFooter.md +41 -0
  194. package/src/components/app-layout/docs/README-AppHeader.md +73 -0
  195. package/src/components/app-layout/docs/README-AppLayout.md +83 -0
  196. package/src/components/app-layout/docs/README-AppPage.md +80 -0
  197. package/src/components/app-layout/docs/README-AppSidebar.md +70 -0
  198. package/src/components/app-layout/docs/README-AppTheme.md +66 -0
  199. package/src/components/data-view/README.md +19 -0
  200. package/src/components/data-view/docs/README-DataListView.md +114 -0
  201. package/src/components/display/README.md +23 -0
  202. package/src/components/display/docs/README-ActionBtn.md +84 -0
  203. package/src/components/display/docs/README-ActionBtnGroup.md +96 -0
  204. package/src/components/display/docs/README-ActionConfirm.md +77 -0
  205. package/src/components/display/docs/README-BooleanTag.md +76 -0
  206. package/src/components/display/docs/README-HeightProvider.md +74 -0
  207. package/src/components/display/docs/README-TabsMain.md +99 -0
  208. package/src/components/display/docs/README-WatchSize.md +70 -0
  209. package/src/components/form/README.md +24 -0
  210. package/src/components/form/docs/README-FormItemNestForm.md +86 -0
  211. package/src/components/form/docs/README-FormItemNestFormList.md +93 -0
  212. package/src/components/form/docs/README-FormMain.md +101 -0
  213. package/src/components/form/docs/README-FormSearch.md +89 -0
  214. package/src/components/form/docs/README-FormSubmitBtn.md +72 -0
  215. package/src/components/form/docs/README-FormSubmitPanel.md +97 -0
  216. package/src/components/list-page/README.md +16 -0
  217. package/src/components/list-page/docs/README-ListPage.md +136 -0
  218. package/src/components/menu/README.md +19 -0
  219. package/src/components/menu/docs/README-MenuItemSub.md +53 -0
  220. package/src/components/menu/docs/README-MenuTree.md +76 -0
  221. package/src/components/misc/README.md +21 -0
  222. package/src/components/misc/docs/README-AutoRefresh.md +74 -0
  223. package/src/components/misc/docs/README-AutoRefreshGroup.md +74 -0
  224. package/src/components/misc/docs/README-SelectModule.md +72 -0
  225. package/src/components/modal/README.md +21 -0
  226. package/src/components/modal/docs/README-ModalConfirm.md +105 -0
  227. package/src/components/modal/docs/README-ModalDetail.md +103 -0
  228. package/src/components/modal/docs/README-ModalForm.md +97 -0
  229. package/src/components/modal/docs/README-ModalPorter.md +92 -0
  230. package/src/components/modal/docs/README-ModalShelf.md +115 -0
  231. package/src/components/panel/README.md +19 -0
  232. package/src/components/panel/docs/README-PanelMain.md +149 -0
  233. package/src/components/slot-layout/README.md +17 -0
  234. package/src/components/slot-layout/docs/README-SlotLayoutFlowAside.md +83 -0
  235. package/src/components/slot-layout/docs/README-SlotLayoutTemplate.md +73 -0
  236. package/src/components/table/README.md +17 -0
  237. package/src/components/table/docs/README-TableMain.md +140 -0
  238. package/src/hooks/README.md +5 -0
  239. package/src/hooks/docs/README.md +49 -0
  240. package/types/bridge/config-hook.d.ts +68 -0
  241. package/types/bridge/index.d.ts +411 -0
  242. package/types/bridge/layout.d.ts +40 -0
  243. package/types/bridge/plugin.d.ts +18 -0
  244. package/types/bridge/route.d.ts +20 -1
  245. package/types/bridge/state.d.ts +14 -0
  246. package/types/bridge/storage.d.ts +9 -0
  247. package/types/bridge/theme/index.d.ts +7 -0
  248. package/types/bridge/theme/persist.d.ts +12 -0
  249. package/types/bridge/theme/system-dark.d.ts +12 -0
  250. package/types/bridge/theme/types.d.ts +238 -0
  251. package/types/components/app-layout/AppAside.vue.d.ts +1 -0
  252. package/types/components/app-layout/AppCollapseToggle.vue.d.ts +3 -0
  253. package/types/components/app-layout/AppHeader.vue.d.ts +3 -0
  254. package/types/components/app-layout/AppLayout.vue.d.ts +12 -0
  255. package/types/components/app-layout/AppPage.vue.d.ts +17 -0
  256. package/types/components/app-layout/AppSidebar.vue.d.ts +2 -0
  257. package/types/components/app-layout/app-page-geometry.d.ts +48 -0
  258. package/types/components/app-layout/keep-alive.d.ts +17 -0
  259. package/types/components/app-layout/types.d.ts +125 -0
  260. package/types/components/app-layout/viewport.d.ts +28 -0
  261. package/types/components/data-view/DataListViewItem.vue.d.ts +8 -0
  262. package/types/components/data-view/index.d.ts +4 -0
  263. package/types/components/data-view/types.d.ts +42 -0
  264. package/types/components/data-view/utils.d.ts +3 -0
  265. package/types/components/display/TabsHeader.vue.d.ts +2 -0
  266. package/types/components/display/TabsMain.vue.d.ts +2 -0
  267. package/types/components/display/TabsRefineFlow.vue.d.ts +1 -0
  268. package/types/components/display/TabsTile.vue.d.ts +247 -12
  269. package/types/components/display/WatchSize.vue.d.ts +9 -0
  270. package/types/components/display/index.d.ts +37 -1
  271. package/types/components/display/types.d.ts +163 -0
  272. package/types/components/display/use-tabs-query-sync.d.ts +29 -0
  273. package/types/components/form/FormItemNestForm.vue.d.ts +5 -0
  274. package/types/components/form/FormItemNestFormList.vue.d.ts +17 -0
  275. package/types/components/form/FormVerifyCode.vue.d.ts +9 -0
  276. package/types/components/form/FormVerifyImage.vue.d.ts +1 -0
  277. package/types/components/form/form-search-utils.d.ts +34 -0
  278. package/types/components/form/nest-form-item-list.d.ts +28 -0
  279. package/types/components/form/nest-form-item.d.ts +21 -0
  280. package/types/components/form/nest-registry.d.ts +14 -0
  281. package/types/components/form/types.d.ts +208 -8
  282. package/types/components/form/use-form-submit.d.ts +13 -0
  283. package/types/components/form/use-layout-by-container.d.ts +23 -0
  284. package/types/components/form/use-nest-form-list.d.ts +13 -0
  285. package/types/components/form/use-nest-form.d.ts +15 -0
  286. package/types/components/form/use-nest-layout-scale.d.ts +12 -0
  287. package/types/components/form/utils.d.ts +56 -1
  288. package/types/components/list-page/ListPage.vue.d.ts +6 -0
  289. package/types/components/list-page/types.d.ts +50 -2
  290. package/types/components/list-page/use-sticky.d.ts +23 -0
  291. package/types/components/misc/index.d.ts +6 -1
  292. package/types/components/misc/types.d.ts +7 -0
  293. package/types/components/modal/ModalConfirm.vue.d.ts +29 -0
  294. package/types/components/modal/index.d.ts +7 -1
  295. package/types/components/modal/modal-shelf-core.d.ts +3 -0
  296. package/types/components/modal/modal-shelf-hierarchy.d.ts +4 -0
  297. package/types/components/modal/modal-shelf-types.d.ts +34 -0
  298. package/types/components/modal/types.d.ts +63 -2
  299. package/types/components/panel/PanelItemNestForm.vue.d.ts +6 -0
  300. package/types/components/panel/PanelItemNestPanel.vue.d.ts +5 -0
  301. package/types/components/panel/nest-panel-form.d.ts +21 -0
  302. package/types/components/panel/nest-panel-item.d.ts +14 -0
  303. package/types/components/panel/types.d.ts +52 -1
  304. package/types/components/slot-layout/SlotLayoutTemplate.vue.d.ts +21 -0
  305. package/types/components/slot-layout/types.d.ts +4 -0
  306. package/types/components/table/constants.d.ts +8 -0
  307. package/types/components/table/types.d.ts +140 -9
  308. package/types/components/table/use-fill-height.d.ts +14 -0
  309. package/types/components/table/use-table-skeleton.d.ts +16 -0
  310. package/types/config/list-model.d.ts +29 -0
  311. package/types/config/route.d.ts +2 -0
  312. package/types/helpers/form.d.ts +5 -0
  313. package/types/helpers/list-helper.d.ts +26 -0
  314. package/types/helpers/types.d.ts +11 -0
  315. package/types/hooks/activated.d.ts +23 -0
  316. package/types/hooks/feel-size.d.ts +2 -0
  317. package/types/hooks/menus-dispatch.d.ts +4 -0
  318. package/types/hooks/timeout.d.ts +4 -0
  319. package/types/hooks/use-channel-viewport-height.d.ts +8 -0
  320. package/types/hooks/use-custom-breakpoint.d.ts +19 -0
  321. package/types/hooks/use-observe-size.d.ts +29 -0
  322. package/types/hooks/use-theme-apply.d.ts +23 -0
  323. package/types/hooks/use-viewport-apply.d.ts +12 -0
  324. package/types/inject/key.d.ts +163 -0
  325. package/types/injectInfo.json.d.ts +1 -1
  326. package/types/router/group-redirect.d.ts +9 -0
  327. package/types/router/guard/index.d.ts +13 -0
  328. package/types/router/guard/login.d.ts +1 -0
  329. package/types/router/guard/permission.d.ts +1 -0
  330. package/types/router/guard/types.d.ts +3 -0
  331. package/types/store/app.d.ts +27 -0
  332. package/types/store/router-permission.d.ts +53 -0
  333. package/types/store/user.d.ts +24 -0
  334. package/types/types/dot-path.d.ts +8 -0
  335. package/types/types/route.d.ts +45 -0
  336. package/types/types/utility-types.d.ts +7 -0
  337. package/types/utils/dom.d.ts +22 -0
  338. package/types/utils/export.d.ts +16 -1
  339. package/types/utils/id.d.ts +1 -0
  340. package/types/utils/router.d.ts +2 -0
  341. package/types/utils/theme-scale.d.ts +31 -0
  342. package/types/utils/time.d.ts +1 -0
@@ -1,63 +1,94 @@
1
- import { resolveFormLayout as p } from "./utils.mjs";
2
- const i = (t, e) => {
3
- const n = p(t), o = n[e];
4
- return typeof o == "number" ? o : n.span ?? 6;
5
- }, h = (t, e) => {
6
- if (typeof t == "number") return t;
7
- if (t && typeof t == "object") {
8
- const n = t;
9
- return (n.span ?? 24) + (n.offset ?? 0);
1
+ import { resolveFormLayout } from "./utils.mjs";
2
+ const getCurrentSpan = (layout, breakpoint) => {
3
+ const base = resolveFormLayout(layout);
4
+ const raw = base[breakpoint];
5
+ return typeof raw === "number" ? raw : base.span ?? 6;
6
+ };
7
+ const colOccupancy = (raw, fallback) => {
8
+ if (typeof raw === "number") return raw;
9
+ if (raw && typeof raw === "object") {
10
+ const o = raw;
11
+ return (o.span ?? 24) + (o.offset ?? 0);
10
12
  }
11
- return e;
12
- }, m = (t, e) => {
13
- const n = typeof t.span == "number" ? t.span : 24, o = h(
14
- t[e],
15
- n
13
+ return fallback;
14
+ };
15
+ const resolveSearchItemOccupancy = (merged, breakpoint) => {
16
+ const fallback = typeof merged.span === "number" ? merged.span : 24;
17
+ const occupancy = colOccupancy(
18
+ merged[breakpoint],
19
+ fallback
16
20
  );
17
- return Math.min(24, Math.max(1, o));
18
- }, f = (t) => {
19
- let e = 0, n = 0;
20
- for (const o of t)
21
- e === 0 || n + o > 24 ? (e += 1, n = o) : n += o;
22
- return { rows: e, lastRowUsed: n };
23
- }, l = (t, e) => {
24
- const { rows: n, lastRowUsed: o } = f(t), r = 24 - o;
25
- return n > 0 && r >= e ? { totalRows: n, buttonSpan: r } : { totalRows: n + 1, buttonSpan: 24 };
26
- }, b = ({
27
- spans: t,
28
- buttonMinSpan: e,
29
- maxRows: n,
30
- collapsed: o
21
+ return Math.min(24, Math.max(1, occupancy));
22
+ };
23
+ const simulateSearchRows = (spans) => {
24
+ let rows = 0;
25
+ let lastRowUsed = 0;
26
+ for (const span of spans) {
27
+ if (rows === 0 || lastRowUsed + span > 24) {
28
+ rows += 1;
29
+ lastRowUsed = span;
30
+ } else {
31
+ lastRowUsed += span;
32
+ }
33
+ }
34
+ return { rows, lastRowUsed };
35
+ };
36
+ const placeSearchButtons = (spans, buttonMinSpan) => {
37
+ const { rows, lastRowUsed } = simulateSearchRows(spans);
38
+ const remaining = 24 - lastRowUsed;
39
+ if (rows > 0 && remaining >= buttonMinSpan) {
40
+ return { totalRows: rows, buttonSpan: remaining };
41
+ }
42
+ return { totalRows: rows + 1, buttonSpan: 24 };
43
+ };
44
+ const computeSearchGeometry = ({
45
+ spans,
46
+ buttonMinSpan,
47
+ maxRows,
48
+ collapsed
31
49
  }) => {
32
- const r = Math.min(24, Math.max(1, e)), a = l(t, r);
33
- if (n <= 0)
50
+ const minSpan = Math.min(24, Math.max(1, buttonMinSpan));
51
+ const full = placeSearchButtons(spans, minSpan);
52
+ if (maxRows <= 0) {
34
53
  return {
35
- showCount: t.length,
36
- needsFold: !1,
37
- buttonSpan: a.buttonSpan
54
+ showCount: spans.length,
55
+ needsFold: false,
56
+ buttonSpan: full.buttonSpan
38
57
  };
39
- let c = t.length, s = a;
40
- for (; c > 0 && s.totalRows > n; )
41
- c -= 1, s = l(t.slice(0, c), r);
58
+ }
59
+ let count = spans.length;
60
+ let placed = full;
61
+ while (count > 0 && placed.totalRows > maxRows) {
62
+ count -= 1;
63
+ placed = placeSearchButtons(spans.slice(0, count), minSpan);
64
+ }
42
65
  return {
43
- showCount: o ? c : t.length,
44
- needsFold: c < t.length,
45
- buttonSpan: o ? s.buttonSpan : a.buttonSpan
66
+ showCount: collapsed ? count : spans.length,
67
+ needsFold: count < spans.length,
68
+ buttonSpan: collapsed ? placed.buttonSpan : full.buttonSpan
46
69
  };
47
- }, y = (t, e, n) => t ? { span: i(e, n) } : e, d = (t, e) => t ? "top" : e, w = (t, e) => {
48
- const { compact: n, itemLayout: o, collapsing: r, threshold: a } = e;
49
- if (!n && !r) return t;
50
- let c = 0;
51
- return t.map((s) => {
52
- let u = s;
53
- return n && (u = { ...u, layout: o }), s.hide !== !0 && (c += 1, r && c > a && (u = { ...u, hide: !0 })), u;
70
+ };
71
+ const resolveSearchLayout = (compact, layout, breakpoint) => compact ? { span: getCurrentSpan(layout, breakpoint) } : layout;
72
+ const resolveSearchLabelPosition = (compact, labelPosition) => compact ? "top" : labelPosition;
73
+ const packSearchFormList = (list, options) => {
74
+ const { compact, itemLayout, collapsing, threshold } = options;
75
+ if (!compact && !collapsing) return list;
76
+ let visibleSeen = 0;
77
+ return list.map((item) => {
78
+ let next = item;
79
+ if (compact) next = { ...next, layout: itemLayout };
80
+ if (item.hide !== true) {
81
+ visibleSeen += 1;
82
+ if (collapsing && visibleSeen > threshold) next = { ...next, hide: true };
83
+ }
84
+ return next;
54
85
  });
55
86
  };
56
87
  export {
57
- b as computeSearchGeometry,
58
- i as getCurrentSpan,
59
- w as packSearchFormList,
60
- m as resolveSearchItemOccupancy,
61
- d as resolveSearchLabelPosition,
62
- y as resolveSearchLayout
88
+ computeSearchGeometry,
89
+ getCurrentSpan,
90
+ packSearchFormList,
91
+ resolveSearchItemOccupancy,
92
+ resolveSearchLabelPosition,
93
+ resolveSearchLayout
63
94
  };
@@ -1,71 +1,79 @@
1
- import { markRaw as K } from "vue";
2
- import M from "./FormItemNestFormList.vue.mjs";
3
- import { resolveLayoutSpan as N, parseFormData as S, stringifyFormData as T } from "./utils.mjs";
4
- const v = K(M);
5
- function k(l) {
1
+ import { markRaw } from "vue";
2
+ import FormItemNestFormList from "./FormItemNestFormList.vue.mjs";
3
+ import { resolveLayoutSpan, parseFormData, stringifyFormData } from "./utils.mjs";
4
+ const RawFormItemNestFormList = markRaw(FormItemNestFormList);
5
+ function nestFormItemList(options) {
6
6
  const {
7
- key: m,
8
- label: n,
9
- list: o,
10
- rowKey: d,
11
- itemFactory: h,
12
- min: f,
13
- max: y,
14
- layout: p,
15
- rowGutter: c,
16
- addText: F,
17
- removeText: R,
18
- headerRender: w,
19
- footerRender: A,
20
- shadowColor: L,
21
- rules: t,
22
- init: x,
23
- stringify: I,
24
- parse: $,
25
- rebase: C,
26
- removeConfirm: D
27
- } = l, i = f ?? 0, s = y ?? 1 / 0, u = {
28
- validator: (r, e, a) => {
29
- const g = Array.isArray(e) ? e.length : 0;
30
- return g < i ? a(new Error(`${n}至少需要 ${i} 项`)) : g > s ? a(new Error(`${n}最多 ${s} 项`)) : a();
7
+ key,
8
+ label,
9
+ list,
10
+ rowKey,
11
+ itemFactory,
12
+ min,
13
+ max,
14
+ layout,
15
+ rowGutter,
16
+ addText,
17
+ removeText,
18
+ headerRender,
19
+ footerRender,
20
+ shadowColor,
21
+ rules,
22
+ init,
23
+ stringify,
24
+ parse,
25
+ rebase,
26
+ removeConfirm
27
+ } = options;
28
+ const effMin = min ?? 0;
29
+ const effMax = max ?? Infinity;
30
+ const lengthRule = {
31
+ validator: (_rule, value, callback) => {
32
+ const len = Array.isArray(value) ? value.length : 0;
33
+ if (len < effMin)
34
+ return callback(new Error(`${label}至少需要 ${effMin} 项`));
35
+ if (len > effMax) return callback(new Error(`${label}最多 ${effMax} 项`));
36
+ return callback();
31
37
  },
32
38
  trigger: "change"
33
- }, E = i > 0 || s !== 1 / 0 ? typeof t == "function" ? (r) => [u, ...t(r)] : [u, ...t ?? []] : t;
39
+ };
40
+ const hasLengthRule = effMin > 0 || effMax !== Infinity;
41
+ const mergedRules = !hasLengthRule ? rules : typeof rules === "function" ? (scope) => [lengthRule, ...rules(scope)] : [lengthRule, ...rules ?? []];
34
42
  return {
35
- key: m,
36
- label: n,
37
- layout: p,
38
- rules: E,
43
+ key,
44
+ label,
45
+ layout,
46
+ rules: mergedRules,
39
47
  // 自动 pack(可覆盖):父 generate/stringify/parse 对数组逐项递归。
40
48
  // init 缺省 = 空数组 []([MUST NOT] 补 min 行改初始值;min/max 由上方 rules 校验)
41
- init: x ?? (() => []),
42
- stringify: I ?? ((r) => (Array.isArray(r) ? r : []).map(
43
- (e) => T(e, o)
49
+ init: init ?? (() => []),
50
+ stringify: stringify ?? ((value) => (Array.isArray(value) ? value : []).map(
51
+ (t) => stringifyFormData(t, list)
44
52
  )),
45
- parse: $ ?? ((r) => (Array.isArray(r) ? r : []).map((e) => S(e, o))),
53
+ parse: parse ?? ((value) => (Array.isArray(value) ? value : []).map((t) => parseFormData(t, list))),
46
54
  // render 用【组件本体引用】(非包裹 fn):FormItem 经 vModel sugar 注入 modelValue/onUpdate,
47
55
  // 固定配置走 props。便于消费方按 `config.render === FormItemNestFormList` 判定"是联结组件"。
48
- render: v,
56
+ render: RawFormItemNestFormList,
49
57
  props: {
50
- nestKey: m,
51
- list: o,
52
- rowKey: d,
53
- itemFactory: h,
54
- min: f,
55
- max: y,
56
- rowGutter: c,
57
- addText: F,
58
- removeText: R,
59
- headerRender: w,
60
- footerRender: A,
61
- shadowColor: L,
58
+ nestKey: key,
59
+ list,
60
+ rowKey,
61
+ itemFactory,
62
+ min,
63
+ max,
64
+ rowGutter,
65
+ addText,
66
+ removeText,
67
+ headerRender,
68
+ footerRender,
69
+ shadowColor,
62
70
  // P3:把父 item 代表 span 传薄壳,供其叠 rebase 因子算每行子 FormMain 的 layoutScale
63
- parentSpan: N(p),
64
- rebase: C,
65
- removeConfirm: D
71
+ parentSpan: resolveLayoutSpan(layout),
72
+ rebase,
73
+ removeConfirm
66
74
  }
67
75
  };
68
76
  }
69
77
  export {
70
- k as nestFormItemList
78
+ nestFormItemList
71
79
  };
@@ -1,42 +1,42 @@
1
- import { markRaw as y } from "vue";
2
- import l from "./FormItemNestForm.vue.mjs";
3
- import { resolveLayoutSpan as u, parseFormData as g, stringifyFormData as w, generateFormData as c } from "./utils.mjs";
4
- const D = y(l);
5
- function k(a) {
1
+ import { markRaw } from "vue";
2
+ import FormItemNestForm from "./FormItemNestForm.vue.mjs";
3
+ import { resolveLayoutSpan, parseFormData, stringifyFormData, generateFormData } from "./utils.mjs";
4
+ const RawFormItemNestForm = markRaw(FormItemNestForm);
5
+ function nestFormItem(options) {
6
6
  const {
7
- key: e,
8
- label: m,
9
- list: r,
10
- layout: o,
11
- rowGutter: n,
12
- shadowColor: s,
13
- init: i,
14
- stringify: p,
15
- parse: F,
16
- rebase: f
17
- } = a;
7
+ key,
8
+ label,
9
+ list,
10
+ layout,
11
+ rowGutter,
12
+ shadowColor,
13
+ init,
14
+ stringify,
15
+ parse,
16
+ rebase
17
+ } = options;
18
18
  return {
19
- key: e,
20
- label: m,
21
- layout: o,
19
+ key,
20
+ label,
21
+ layout,
22
22
  // 自动 pack(可覆盖):父 generate/stringify/parse 递归进子 list
23
- init: i ?? (() => c(r)),
24
- stringify: p ?? ((t) => w(t ?? {}, r)),
25
- parse: F ?? ((t) => g(t ?? {}, r)),
23
+ init: init ?? (() => generateFormData(list)),
24
+ stringify: stringify ?? ((value) => stringifyFormData(value ?? {}, list)),
25
+ parse: parse ?? ((value) => parseFormData(value ?? {}, list)),
26
26
  // render 用【组件本体引用】(非包裹 fn):FormItem 经 vModel sugar 注入 modelValue/onUpdate,
27
27
  // 固定配置走 props。便于消费方按 `config.render === FormItemNestForm` 判定"是联结组件"。
28
- render: D,
28
+ render: RawFormItemNestForm,
29
29
  props: {
30
- nestKey: e,
31
- list: r,
32
- rowGutter: n,
33
- shadowColor: s,
30
+ nestKey: key,
31
+ list,
32
+ rowGutter,
33
+ shadowColor,
34
34
  // P3:把父 item 代表 span 传薄壳,供其叠 rebase 因子算子 FormMain 的 layoutScale
35
- parentSpan: u(o),
36
- rebase: f
35
+ parentSpan: resolveLayoutSpan(layout),
36
+ rebase
37
37
  }
38
38
  };
39
39
  }
40
40
  export {
41
- k as nestFormItem
41
+ nestFormItem
42
42
  };
@@ -1,7 +1,7 @@
1
- import { shallowReactive as e } from "vue";
2
- function r() {
3
- return e({});
1
+ import { shallowReactive } from "vue";
2
+ function createNestFormExposeMap() {
3
+ return shallowReactive({});
4
4
  }
5
5
  export {
6
- r as createNestFormExposeMap
6
+ createNestFormExposeMap
7
7
  };
@@ -1,21 +1,24 @@
1
- import { ref as f } from "vue";
2
- function n(a) {
3
- const e = f(!1);
4
- return { submitting: e, submit: async () => {
5
- var t, u, c;
6
- (t = a.onSubmitStart) == null || t.call(a), e.value = !0;
1
+ import { ref } from "vue";
2
+ function useFormSubmit(options) {
3
+ const submitting = ref(false);
4
+ const submit = async () => {
5
+ var _a, _b, _c;
6
+ (_a = options.onSubmitStart) == null ? void 0 : _a.call(options);
7
+ submitting.value = true;
7
8
  try {
8
- const r = a.getFormMainInstance();
9
- await r.validate();
10
- const m = r.stringify();
11
- await a.submitFn(m), (u = a.onSuccess) == null || u.call(a, m);
12
- } catch (r) {
13
- (c = a.onFail) == null || c.call(a, r);
9
+ const formMainInstance = options.getFormMainInstance();
10
+ await formMainInstance.validate();
11
+ const stringifyData = formMainInstance.stringify();
12
+ await options.submitFn(stringifyData);
13
+ (_b = options.onSuccess) == null ? void 0 : _b.call(options, stringifyData);
14
+ } catch (error) {
15
+ (_c = options.onFail) == null ? void 0 : _c.call(options, error);
14
16
  } finally {
15
- e.value = !1;
17
+ submitting.value = false;
16
18
  }
17
- } };
19
+ };
20
+ return { submitting, submit };
18
21
  }
19
22
  export {
20
- n as useFormSubmit
23
+ useFormSubmit
21
24
  };
@@ -1,20 +1,28 @@
1
- import { watch as m } from "vue";
2
- import { useCustomBreakpoint as l } from "../../hooks/use-custom-breakpoint.mjs";
3
- const c = (r, o) => {
4
- const { xs: n, sm: i, md: e, lg: a, xl: s, ...u } = r, t = { xs: n, sm: i, md: e, lg: a, xl: s }[o];
5
- return t === void 0 ? u : typeof t == "number" ? { ...u, span: t } : { ...u, ...t };
1
+ import { watch } from "vue";
2
+ import { useCustomBreakpoint } from "../../hooks/use-custom-breakpoint.mjs";
3
+ const resolveFormLayoutAtBreakpoint = (merged, breakpoint) => {
4
+ const { xs, sm, md, lg, xl, ...rest } = merged;
5
+ const raw = { xs, sm, md, lg, xl }[breakpoint];
6
+ if (raw === void 0) return rest;
7
+ if (typeof raw === "number") return { ...rest, span: raw };
8
+ return { ...rest, ...raw };
6
9
  };
7
- function y(r) {
8
- const { elRef: o, activeBreakpoint: n } = l();
9
- return m(
10
- () => [r.enabled(), r.getForm()],
11
- ([e, a]) => {
12
- o.value = e ? a : void 0;
10
+ function useFormLayoutByContainer(options) {
11
+ const { elRef, activeBreakpoint } = useCustomBreakpoint();
12
+ watch(
13
+ () => [options.enabled(), options.getForm()],
14
+ ([on, form]) => {
15
+ elRef.value = on ? form : void 0;
13
16
  },
14
- { immediate: !0 }
15
- ), { resolveLayoutByContainer: (e) => r.enabled() ? c(e, n.value) : e };
17
+ { immediate: true }
18
+ );
19
+ const resolveLayoutByContainer = (merged) => {
20
+ if (!options.enabled()) return merged;
21
+ return resolveFormLayoutAtBreakpoint(merged, activeBreakpoint.value);
22
+ };
23
+ return { resolveLayoutByContainer };
16
24
  }
17
25
  export {
18
- c as resolveFormLayoutAtBreakpoint,
19
- y as useFormLayoutByContainer
26
+ resolveFormLayoutAtBreakpoint,
27
+ useFormLayoutByContainer
20
28
  };
@@ -1,22 +1,25 @@
1
- import { inject as s, onMounted as l, toValue as a, onBeforeUnmount as c } from "vue";
2
- import { FORM_NEST_REGISTRY_KEY as d } from "../../inject/key.mjs";
3
- function u(n) {
4
- const { rowInstances: t, key: r } = n, o = s(d, null);
5
- if (!o) return;
6
- const i = {
7
- validate: () => Promise.all(t().map((e) => e.validate())).then(() => {
1
+ import { inject, onMounted, toValue, onBeforeUnmount } from "vue";
2
+ import { FORM_NEST_REGISTRY_KEY } from "../../inject/key.mjs";
3
+ function useNestFormList(options) {
4
+ const { rowInstances, key } = options;
5
+ const exposeMap = inject(FORM_NEST_REGISTRY_KEY, null);
6
+ if (!exposeMap) return;
7
+ const aggregate = {
8
+ validate: () => Promise.all(rowInstances().map((r) => r.validate())).then(() => {
8
9
  }),
9
- clearValidate: () => t().forEach((e) => e.clearValidate()),
10
- resetFields: () => t().forEach((e) => e.resetFields())
10
+ clearValidate: () => rowInstances().forEach((r) => r.clearValidate()),
11
+ resetFields: () => rowInstances().forEach((r) => r.resetFields())
11
12
  };
12
- l(() => {
13
- const e = a(r);
14
- e !== void 0 && (o[e] = i);
15
- }), c(() => {
16
- const e = a(r);
17
- e !== void 0 && delete o[e];
13
+ onMounted(() => {
14
+ const k = toValue(key);
15
+ if (k === void 0) return;
16
+ exposeMap[k] = aggregate;
17
+ });
18
+ onBeforeUnmount(() => {
19
+ const k = toValue(key);
20
+ if (k !== void 0) delete exposeMap[k];
18
21
  });
19
22
  }
20
23
  export {
21
- u as useNestFormList
24
+ useNestFormList
22
25
  };
@@ -1,34 +1,43 @@
1
- import { inject as d, onMounted as u, toValue as a, onBeforeUnmount as f } from "vue";
2
- import { FORM_NEST_REGISTRY_KEY as p } from "../../inject/key.mjs";
3
- function x(c) {
4
- const { childRef: s, key: i } = c, l = () => {
5
- var o;
6
- return ((o = s.value) == null ? void 0 : o.validate()) ?? Promise.resolve();
7
- }, r = (o) => {
8
- var e;
9
- return (e = s.value) == null ? void 0 : e.clearValidate(o);
10
- }, n = () => {
11
- var o;
12
- return (o = s.value) == null ? void 0 : o.resetFields();
13
- }, t = d(p, null);
14
- if (t) {
15
- const o = {
16
- validate: () => l(),
17
- clearValidate: (e) => r(e),
18
- resetFields: () => n()
1
+ import { inject, onMounted, toValue, onBeforeUnmount } from "vue";
2
+ import { FORM_NEST_REGISTRY_KEY } from "../../inject/key.mjs";
3
+ function useNestForm(options) {
4
+ const { childRef, key } = options;
5
+ const validateChild = () => {
6
+ var _a;
7
+ return ((_a = childRef.value) == null ? void 0 : _a.validate()) ?? Promise.resolve();
8
+ };
9
+ const clearChild = (k) => {
10
+ var _a;
11
+ return (_a = childRef.value) == null ? void 0 : _a.clearValidate(k);
12
+ };
13
+ const resetChild = () => {
14
+ var _a;
15
+ return (_a = childRef.value) == null ? void 0 : _a.resetFields();
16
+ };
17
+ const exposeMap = inject(FORM_NEST_REGISTRY_KEY, null);
18
+ if (exposeMap) {
19
+ const expose = {
20
+ validate: () => validateChild(),
21
+ clearValidate: (k) => clearChild(k),
22
+ resetFields: () => resetChild()
19
23
  };
20
- u(() => {
21
- const e = a(i);
22
- e !== void 0 && (e in t && t[e] === o && console.error(
23
- `[useNestForm] 嵌套 exposeMap 重复注册同一 expose(key="${e}"),疑似生命周期重复挂载;已继续挂载。`
24
- ), t[e] = o);
25
- }), f(() => {
26
- const e = a(i);
27
- e !== void 0 && delete t[e];
24
+ onMounted(() => {
25
+ const k = toValue(key);
26
+ if (k === void 0) return;
27
+ if (k in exposeMap && exposeMap[k] === expose) {
28
+ console.error(
29
+ `[useNestForm] 嵌套 exposeMap 重复注册同一 expose(key="${k}"),疑似生命周期重复挂载;已继续挂载。`
30
+ );
31
+ }
32
+ exposeMap[k] = expose;
33
+ });
34
+ onBeforeUnmount(() => {
35
+ const k = toValue(key);
36
+ if (k !== void 0) delete exposeMap[k];
28
37
  });
29
38
  }
30
- return { validateChild: l, clearChild: r, resetChild: n };
39
+ return { validateChild, clearChild, resetChild };
31
40
  }
32
41
  export {
33
- x as useNestForm
42
+ useNestForm
34
43
  };
@@ -1,14 +1,15 @@
1
- import { inject as u, computed as c, toValue as o } from "vue";
2
- import { NEST_LAYOUT_SCALE_KEY as f } from "../../inject/key.mjs";
3
- function m(t) {
4
- const r = u(f, void 0);
5
- return c(() => {
6
- const n = r ? r.value : 1;
7
- if (o(t.rebase) === !1) return n;
8
- const e = o(t.parentSpan), a = typeof e == "number" && e > 0 ? e : 24;
9
- return n * (24 / a);
1
+ import { inject, computed, toValue } from "vue";
2
+ import { NEST_LAYOUT_SCALE_KEY } from "../../inject/key.mjs";
3
+ function useNestLayoutScale(options) {
4
+ const parentScaleRef = inject(NEST_LAYOUT_SCALE_KEY, void 0);
5
+ return computed(() => {
6
+ const base = parentScaleRef ? parentScaleRef.value : 1;
7
+ if (toValue(options.rebase) === false) return base;
8
+ const span = toValue(options.parentSpan);
9
+ const eff = typeof span === "number" && span > 0 ? span : 24;
10
+ return base * (24 / eff);
10
11
  });
11
12
  }
12
13
  export {
13
- m as useNestLayoutScale
14
+ useNestLayoutScale
14
15
  };