@done-coding/admin-core 0.27.0 → 0.27.1-alpha.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 (134) hide show
  1. package/es/bridge/index.mjs +11 -3
  2. package/es/components/app-layout/AppBody.vue.mjs +1 -1
  3. package/es/components/app-layout/AppBody.vue2.mjs +14 -5
  4. package/es/components/app-layout/AppHeader.vue.mjs +1 -1
  5. package/es/components/app-layout/AppHeader.vue2.mjs +7 -5
  6. package/es/components/app-layout/AppLayout.vue.mjs +1 -1
  7. package/es/components/app-layout/AppLayout.vue2.mjs +2 -1
  8. package/es/components/app-layout/AppPage.vue.mjs +1 -1
  9. package/es/components/app-layout/AppPage.vue2.mjs +35 -32
  10. package/es/components/app-layout/app-page-geometry.mjs +16 -16
  11. package/es/components/app-layout/app-page-recommended.mjs +10 -0
  12. package/es/components/data-view/DataGridView.vue.mjs +1 -1
  13. package/es/components/data-view/DataGridView.vue2.mjs +29 -17
  14. package/es/components/data-view/DataListView.vue.mjs +1 -1
  15. package/es/components/data-view/DataListView.vue2.mjs +10 -0
  16. package/es/components/data-view/InfiniteListView.vue.mjs +1 -1
  17. package/es/components/data-view/InfiniteListView.vue2.mjs +9 -3
  18. package/es/components/data-view/use-active-scroll.mjs +15 -0
  19. package/es/components/display/DragFloat.vue.mjs +7 -0
  20. package/es/components/display/DragFloat.vue2.mjs +109 -0
  21. package/es/components/display/TabsHeader.vue.mjs +1 -1
  22. package/es/components/display/TabsHeader.vue2.mjs +9 -10
  23. package/es/components/display/TabsMain.vue.mjs +22 -7
  24. package/es/components/display/tabs-variant.mjs +14 -0
  25. package/es/components/form/FormDivider.vue.mjs +7 -0
  26. package/es/components/form/FormDivider.vue2.mjs +14 -0
  27. package/es/components/form/FormGroupTitle.vue.mjs +7 -0
  28. package/es/components/form/FormGroupTitle.vue2.mjs +59 -0
  29. package/es/components/form/FormItemNestForm.vue.mjs +1 -1
  30. package/es/components/form/FormItemNestFormList.vue.mjs +1 -1
  31. package/es/components/form/FormMain.vue.mjs +1 -1
  32. package/es/components/form/FormMain.vue2.mjs +69 -9
  33. package/es/components/form/FormSearch.vue.mjs +1 -1
  34. package/es/components/form/FormSearch.vue2.mjs +15 -3
  35. package/es/components/form/FormSubmitPanel.vue.mjs +1 -1
  36. package/es/components/form/FormSubmitPanel.vue2.mjs +14 -1
  37. package/es/components/form/ai-schema.mjs +139 -0
  38. package/es/components/form/group.mjs +81 -0
  39. package/es/components/form/use-ai-fill.mjs +71 -0
  40. package/es/components/form/utils.mjs +15 -4
  41. package/es/components/list-layout/ListLayout.vue.mjs +1 -1
  42. package/es/components/list-layout/ListLayout.vue2.mjs +103 -62
  43. package/es/components/modal/ImagePreviewTrigger.vue.mjs +5 -1
  44. package/es/components/modal/ModalConfirm.vue.mjs +1 -1
  45. package/es/components/modal/ModalConfirm.vue2.mjs +8 -5
  46. package/es/components/modal/VideoPreviewTrigger.vue.mjs +1 -1
  47. package/es/components/modal/VideoPreviewTrigger.vue2.mjs +2 -1
  48. package/es/components/page-layout/AppPageDetail.vue.mjs +1 -1
  49. package/es/components/page-layout/AppPageDetail.vue2.mjs +17 -13
  50. package/es/components/page-layout/AppPageListDetailLayout.vue.mjs +7 -4
  51. package/es/components/page-layout/AppPageListDetailSheet.vue.mjs +12 -4
  52. package/es/components/page-layout/AppPageListDetailSplit.vue.mjs +1 -1
  53. package/es/components/page-layout/AppPageListDetailSplit.vue2.mjs +10 -3
  54. package/es/components/table/TableMain.vue.mjs +1 -1
  55. package/es/components/table/TableMain.vue2.mjs +45 -25
  56. package/es/components/view-layout/ViewLayout.vue.mjs +1 -1
  57. package/es/components/view-layout/ViewLayout.vue2.mjs +46 -15
  58. package/es/config/slot-region.mjs +1 -0
  59. package/es/hooks/use-active-record.mjs +5 -1
  60. package/es/hooks/use-surface.mjs +27 -0
  61. package/es/hooks/use-theme-apply.mjs +52 -18
  62. package/es/index.mjs +81 -59
  63. package/es/inject/key.mjs +4 -0
  64. package/es/store/app.mjs +51 -17
  65. package/es/style.css +361 -184
  66. package/es/utils/dom.mjs +7 -1
  67. package/es/utils/gap-scale.mjs +25 -0
  68. package/es/utils/theme-scale.mjs +27 -0
  69. package/package.json +2 -2
  70. package/src/bridge/docs/README.md +30 -0
  71. package/src/components/app-layout/docs/README-AppBody.md +21 -0
  72. package/src/components/app-layout/docs/README-AppPage.md +20 -3
  73. package/src/components/data-view/docs/README-DataGridView.md +15 -0
  74. package/src/components/data-view/docs/README-DataListView.md +13 -0
  75. package/src/components/data-view/docs/README-InfiniteListView.md +15 -0
  76. package/src/components/display/README.md +1 -0
  77. package/src/components/display/docs/README-DragFloat.md +68 -0
  78. package/src/components/form/README.md +4 -2
  79. package/src/components/form/docs/README-FormItemNestForm.md +5 -3
  80. package/src/components/form/docs/README-FormItemNestFormList.md +7 -1
  81. package/src/components/form/docs/README-FormMain.md +102 -1
  82. package/src/components/form/docs/README-FormSearch.md +5 -0
  83. package/src/components/list-layout/docs/README-ListLayout.md +61 -1
  84. package/src/components/modal/docs/README-ImagePreviewTrigger.md +2 -0
  85. package/src/components/modal/docs/README-VideoPreviewTrigger.md +4 -1
  86. package/src/components/page-layout/docs/README-AppPageDetail.md +11 -1
  87. package/src/components/page-layout/docs/README-AppPageListDetailLayout.md +64 -6
  88. package/src/components/table/docs/README-TableMain.md +22 -0
  89. package/src/components/view-layout/docs/README-ViewLayout.md +27 -2
  90. package/src/hooks/docs/README.md +30 -1
  91. package/types/bridge/index.d.ts +69 -10
  92. package/types/components/app-layout/AppPage.vue.d.ts +15 -7
  93. package/types/components/app-layout/app-page-geometry.d.ts +19 -10
  94. package/types/components/app-layout/app-page-recommended.d.ts +12 -0
  95. package/types/components/app-layout/index.d.ts +1 -0
  96. package/types/components/data-view/types.d.ts +18 -0
  97. package/types/components/data-view/use-active-scroll.d.ts +30 -0
  98. package/types/components/display/BadgeMark.vue.d.ts +2 -2
  99. package/types/components/display/DragFloat.vue.d.ts +35 -0
  100. package/types/components/display/TabsHeader.vue.d.ts +7 -0
  101. package/types/components/display/index.d.ts +8 -1
  102. package/types/components/display/tabs-variant.d.ts +17 -0
  103. package/types/components/display/types.d.ts +6 -0
  104. package/types/components/form/FormDivider.vue.d.ts +2 -0
  105. package/types/components/form/FormGroupTitle.vue.d.ts +22 -0
  106. package/types/components/form/FormItemNestForm.vue.d.ts +2 -0
  107. package/types/components/form/ai-schema.d.ts +24 -0
  108. package/types/components/form/group.d.ts +36 -0
  109. package/types/components/form/index.d.ts +2 -0
  110. package/types/components/form/types.d.ts +94 -3
  111. package/types/components/form/use-ai-fill.d.ts +59 -0
  112. package/types/components/form/utils.d.ts +19 -0
  113. package/types/components/list-layout/ListLayout.vue.d.ts +3 -0
  114. package/types/components/list-layout/types.d.ts +28 -0
  115. package/types/components/modal/ModalConfirm.vue.d.ts +1 -1
  116. package/types/components/modal/VideoPreviewTrigger.vue.d.ts +1 -1
  117. package/types/components/page-layout/AppPageDetail.vue.d.ts +2 -2
  118. package/types/components/page-layout/AppPageListDetailLayout.vue.d.ts +3 -7
  119. package/types/components/page-layout/AppPageListDetailSheet.vue.d.ts +4 -8
  120. package/types/components/page-layout/AppPageListDetailSplit.vue.d.ts +4 -8
  121. package/types/components/page-layout/types.d.ts +42 -0
  122. package/types/components/panel/PanelItemNestForm.vue.d.ts +2 -0
  123. package/types/components/table/types.d.ts +9 -0
  124. package/types/components/view-layout/ViewLayout.vue.d.ts +18 -0
  125. package/types/components/view-layout/types.d.ts +15 -0
  126. package/types/config/slot-region.d.ts +10 -1
  127. package/types/hooks/use-surface.d.ts +34 -0
  128. package/types/inject/key.d.ts +10 -0
  129. package/types/injectInfo.json.d.ts +1 -1
  130. package/types/store/app.d.ts +3 -0
  131. package/types/utils/dom.d.ts +31 -0
  132. package/types/utils/gap-scale.d.ts +46 -0
  133. package/types/utils/index.d.ts +1 -0
  134. package/types/utils/theme-scale.d.ts +33 -0
package/es/index.mjs CHANGED
@@ -31,7 +31,8 @@ import { default as default32 } from "./components/misc/TriggerAutoImport.vue.mj
31
31
  import { default as default33 } from "./components/display/WatchSize.vue.mjs";
32
32
  import { APP_API_LIST_MODEL_KEY_CONFIG } from "./config/list-model.mjs";
33
33
  import { APP_GLOBAL_IMAGE_PREVIEW_KEY, APP_GLOBAL_VIDEO_PREVIEW_KEY, GLOBAL_MODAL_REMOTE_KEY } from "./components/modal/modal-global-keys.mjs";
34
- import { APP_LAYOUT_APP_STORE_KEY, APP_LAYOUT_BRIDGE_KEY, APP_LAYOUT_USER_STORE_KEY, APP_PAGE_CONTENT_INSET, APP_PAGE_LIST_DETAIL_CONTEXT, BODY_CONTENT_VIEWPORT_HEIGHT, BODY_CONTENT_VIEWPORT_INSET, BODY_CONTENT_VIEWPORT_RECT, CORE_BRIDGE_KEY, FORM_NEST_REGISTRY_KEY, NEST_LAYOUT_SCALE_KEY, SCOPE_VIEWPORT_MAX_HEIGHT, TABS_MAIN_VISUAL_LEVEL, getModalShelfInjectionKey } from "./inject/key.mjs";
34
+ import { APP_LAYOUT_APP_STORE_KEY, APP_LAYOUT_BRIDGE_KEY, APP_LAYOUT_USER_STORE_KEY, APP_PAGE_CONTENT_INSET, APP_PAGE_LIST_DETAIL_CONTEXT, BODY_CONTENT_VIEWPORT_HEIGHT, BODY_CONTENT_VIEWPORT_INSET, BODY_CONTENT_VIEWPORT_RECT, CORE_BRIDGE_KEY, FORM_NEST_REGISTRY_KEY, FORM_VALIDATE_ERROR_KEYS, NEST_LAYOUT_SCALE_KEY, SCOPE_VIEWPORT_MAX_HEIGHT, TABS_MAIN_VISUAL_LEVEL, getModalShelfInjectionKey } from "./inject/key.mjs";
35
+ import { APP_PAGE_LIST_LAYOUT_RECOMMENDED } from "./components/app-layout/app-page-recommended.mjs";
35
36
  import { APP_PAGE_SLOT_Z_INDEX, computeAppPageContentInset, computeAppPageReducedViewportHeight, computeAppPageReducedViewportWidth, computeAppPageSlotShimStyles, computeAppPageSlotStyles } from "./components/app-layout/app-page-geometry.mjs";
36
37
  import { default as default34 } from "./components/display/ActionConfirm.vue.mjs";
37
38
  import { default as default35 } from "./components/app-layout/AppAside.vue.mjs";
@@ -48,42 +49,45 @@ import { default as default45 } from "./components/misc/AutoRefresh.vue.mjs";
48
49
  import { default as default46 } from "./components/misc/AutoRefreshGroup.vue.mjs";
49
50
  import { BADGE_MASK_KINDS } from "./bridge/badge.mjs";
50
51
  import { default as default47 } from "./components/display/BadgeMark.vue.mjs";
52
+ import { COLLAPSED_CLASS, swiftFormItemDivider, swiftFormItemGroup } from "./components/form/group.mjs";
51
53
  import { CORE_VIEWPORT_DECOR_ZINDEX_ABOVE, CORE_VIEWPORT_DECOR_ZINDEX_BELOW } from "./components/app-layout/viewport.mjs";
52
54
  import { default as default48, default as default49 } from "./components/modal/ModalConfirm.vue.mjs";
53
55
  import { DC_SLOT_ATTR, SlotRegion, parseSlotRegion } from "./config/slot-region.mjs";
54
56
  import { default as default50 } from "./components/data-view/DataGridView.vue.mjs";
57
+ import { default as default51 } from "./components/display/DragFloat.vue.mjs";
55
58
  import { EXPORT_MAX_LIMIT, OPERATE_COLUMN_PROP, exportCSV, pickExportColumns } from "./utils/export.mjs";
56
59
  import { FORM_CONFIG_SELECT_ALL_VALUE, getConfirmPasswordRule, passwordRule, setFormComponentType } from "./helpers/form.mjs";
57
- import { FORM_ITEM_CHANGE_LOADING, NEST_LAYOUT_TIERS, ceilToTier, generateFormData, getBlurSubmit, getChangeSubmit, getDatePickerShortcuts, getEnterSubmit, getPlaceholder, getVModelSugar, parseFormData, resolveFormLayout, resolveLayoutSpan, setInputComponent, setSelectComponent, stringifyFormData, swiftFormItemConfig } from "./components/form/utils.mjs";
58
- import { default as default51 } from "./components/form/FormActiveFilter.vue.mjs";
59
- import { default as default52 } from "./components/form/FormItemNestForm.vue.mjs";
60
- import { default as default53 } from "./components/form/FormItemNestFormList.vue.mjs";
61
- import { default as default54 } from "./components/form/FormMain.vue.mjs";
62
- import { default as default55 } from "./components/form/FormSearch.vue.mjs";
63
- import { default as default56 } from "./components/form/FormShadowCloneDispatch.vue.mjs";
64
- import { default as default57 } from "./components/form/FormSortSwitch.vue.mjs";
65
- import { default as default58 } from "./components/form/FormSortSwitchGroup.vue.mjs";
66
- import { default as default59 } from "./components/form/FormSubmitPanel.vue.mjs";
67
- import { default as default60 } from "./components/form/FormUpload.vue.mjs";
68
- import { default as default61 } from "./components/form/FormUploadAudio.vue.mjs";
69
- import { default as default62 } from "./components/form/FormUploadImage.vue.mjs";
70
- import { default as default63 } from "./components/form/FormUploadVideo.vue.mjs";
71
- import { default as default64 } from "./components/form/FormVerifyImage.vue.mjs";
72
- import { default as default65 } from "./components/data-view/InfiniteListView.vue.mjs";
73
- import { default as default66, default as default67 } from "./components/list-layout/ListLayout.vue.mjs";
74
- import { default as default68 } from "./components/modal/ModalVideoPreview.vue.mjs";
75
- import { default as default69 } from "./components/panel/PanelEditSwitch.vue.mjs";
76
- import { default as default70 } from "./components/panel/PanelItem.vue.mjs";
77
- import { default as default71 } from "./components/panel/PanelItemNestForm.vue.mjs";
78
- import { default as default72 } from "./components/panel/PanelMain.vue.mjs";
60
+ import { FORM_ITEM_CHANGE_LOADING, NEST_LAYOUT_TIERS, ceilToTier, checkFormItemIsIgnore, generateFormData, getBlurSubmit, getChangeSubmit, getDatePickerShortcuts, getEnterSubmit, getPlaceholder, getVModelSugar, parseFormData, patchFormData, resolveFormLayout, resolveLayoutSpan, setInputComponent, setSelectComponent, stringifyFormData, swiftFormItemConfig } from "./components/form/utils.mjs";
61
+ import { default as default52 } from "./components/form/FormActiveFilter.vue.mjs";
62
+ import { default as default53 } from "./components/form/FormItemNestForm.vue.mjs";
63
+ import { default as default54 } from "./components/form/FormItemNestFormList.vue.mjs";
64
+ import { default as default55 } from "./components/form/FormMain.vue.mjs";
65
+ import { default as default56 } from "./components/form/FormSearch.vue.mjs";
66
+ import { default as default57 } from "./components/form/FormShadowCloneDispatch.vue.mjs";
67
+ import { default as default58 } from "./components/form/FormSortSwitch.vue.mjs";
68
+ import { default as default59 } from "./components/form/FormSortSwitchGroup.vue.mjs";
69
+ import { default as default60 } from "./components/form/FormSubmitPanel.vue.mjs";
70
+ import { default as default61 } from "./components/form/FormUpload.vue.mjs";
71
+ import { default as default62 } from "./components/form/FormUploadAudio.vue.mjs";
72
+ import { default as default63 } from "./components/form/FormUploadImage.vue.mjs";
73
+ import { default as default64 } from "./components/form/FormUploadVideo.vue.mjs";
74
+ import { default as default65 } from "./components/form/FormVerifyImage.vue.mjs";
75
+ import { GAP_SCALE_RUNG, gapScaleBase, gapScaleValue } from "./utils/gap-scale.mjs";
76
+ import { default as default66 } from "./components/data-view/InfiniteListView.vue.mjs";
77
+ import { default as default67, default as default68 } from "./components/list-layout/ListLayout.vue.mjs";
78
+ import { default as default69 } from "./components/modal/ModalVideoPreview.vue.mjs";
79
+ import { default as default70 } from "./components/panel/PanelEditSwitch.vue.mjs";
80
+ import { default as default71 } from "./components/panel/PanelItem.vue.mjs";
81
+ import { default as default72 } from "./components/panel/PanelItemNestForm.vue.mjs";
82
+ import { default as default73 } from "./components/panel/PanelMain.vue.mjs";
79
83
  import { ROUTE_MODULE_LEVEL, TabsMainReplaceQueryKey } from "./config/route.mjs";
80
- import { default as default73 } from "./components/slot-layout/SlotLayoutFlowAside.vue.mjs";
84
+ import { default as default74 } from "./components/slot-layout/SlotLayoutFlowAside.vue.mjs";
81
85
  import { TABLE_COLUMN_KEY_OPERATE, TABLE_COLUMN_KEY_SELECTION } from "./components/table/constants.mjs";
82
- import { default as default74 } from "./components/table/TableMain.vue.mjs";
83
- import { default as default75 } from "./components/table/TableSkeleton.vue.mjs";
84
- import { default as default76 } from "./components/table/TableToolbar.vue.mjs";
85
- import { default as default77 } from "./components/modal/VideoPreviewTrigger.vue.mjs";
86
- import { default as default78 } from "./components/view-layout/ViewLayout.vue.mjs";
86
+ import { default as default75 } from "./components/table/TableMain.vue.mjs";
87
+ import { default as default76 } from "./components/table/TableSkeleton.vue.mjs";
88
+ import { default as default77 } from "./components/table/TableToolbar.vue.mjs";
89
+ import { default as default78 } from "./components/modal/VideoPreviewTrigger.vue.mjs";
90
+ import { default as default79 } from "./components/view-layout/ViewLayout.vue.mjs";
87
91
  import { buildRhythmCss, useCoreThemeApply } from "./hooks/use-theme-apply.mjs";
88
92
  import { checkLogin } from "./router/guard/login.mjs";
89
93
  import { checkPermission } from "./router/guard/permission.mjs";
@@ -96,15 +100,16 @@ import { createRoutePermissionStore } from "./store/router-permission.mjs";
96
100
  import { createStorageWithNamespace } from "./bridge/storage.mjs";
97
101
  import { createUseState } from "./bridge/state.mjs";
98
102
  import { createUserStore } from "./store/user.mjs";
99
- import { domClosestScrollableAncestor, domClosestStickyScrollport } from "./utils/dom.mjs";
103
+ import { domClosestScrollableAncestor, domClosestStickyScrollport, domScrollIntoViewport } from "./utils/dom.mjs";
100
104
  import { flatRouteMetaResolveRaw, getRoutePermissionKey } from "./utils/router.mjs";
105
+ import { getFormAiSchema, resolveFormAiFormDescription } from "./components/form/ai-schema.mjs";
101
106
  import { getId } from "./utils/id.mjs";
102
107
  import { nestFormItem } from "./components/form/nest-form-item.mjs";
103
108
  import { nestFormItemList } from "./components/form/nest-form-item-list.mjs";
104
109
  import { nestPanelForm } from "./components/panel/nest-panel-form.mjs";
105
110
  import { nestPanelItem } from "./components/panel/nest-panel-item.mjs";
106
111
  import { resolveBreakpointByWidth, resolveRootEl, useCustomBreakpoint } from "./hooks/use-custom-breakpoint.mjs";
107
- import { themeScaleDerive, themeScaleMix, themeScaleParseHex, themeScaleToRgba } from "./utils/theme-scale.mjs";
112
+ import { themeScaleDerive, themeScaleIsNearBlack, themeScaleMix, themeScalePageColor, themeScaleParseHex, themeScaleSurfaceColor, themeScaleToRgba } from "./utils/theme-scale.mjs";
108
113
  import { timeCountDown } from "./utils/time.mjs";
109
114
  import { useActivated, useActivatedEvent, useActivatedExec } from "./hooks/activated.mjs";
110
115
  import { useBreakpoint } from "./hooks/use-breakpoint.mjs";
@@ -127,6 +132,7 @@ export {
127
132
  APP_LAYOUT_USER_STORE_KEY,
128
133
  APP_PAGE_CONTENT_INSET,
129
134
  APP_PAGE_LIST_DETAIL_CONTEXT,
135
+ APP_PAGE_LIST_LAYOUT_RECOMMENDED,
130
136
  APP_PAGE_SLOT_Z_INDEX,
131
137
  default2 as ActionBtn,
132
138
  default3 as ActionBtnGroup,
@@ -150,6 +156,7 @@ export {
150
156
  BODY_CONTENT_VIEWPORT_RECT,
151
157
  default47 as BadgeMark,
152
158
  default5 as BooleanTag,
159
+ COLLAPSED_CLASS,
153
160
  CORE_BRIDGE_KEY,
154
161
  CORE_VIEWPORT_DECOR_ZINDEX_ABOVE,
155
162
  CORE_VIEWPORT_DECOR_ZINDEX_BELOW,
@@ -157,40 +164,43 @@ export {
157
164
  DC_SLOT_ATTR,
158
165
  default50 as DataGridView,
159
166
  default6 as DetailModal,
167
+ default51 as DragFloat,
160
168
  EXPORT_MAX_LIMIT,
161
169
  FORM_CONFIG_SELECT_ALL_VALUE,
162
170
  FORM_ITEM_CHANGE_LOADING,
163
171
  FORM_NEST_REGISTRY_KEY,
164
- default51 as FormActiveFilter,
172
+ FORM_VALIDATE_ERROR_KEYS,
173
+ default52 as FormActiveFilter,
165
174
  default8 as FormInput,
166
175
  default9 as FormInputShadowClone,
167
- default52 as FormItemNestForm,
168
- default53 as FormItemNestFormList,
169
- default54 as FormMain,
176
+ default53 as FormItemNestForm,
177
+ default54 as FormItemNestFormList,
178
+ default55 as FormMain,
170
179
  default10 as FormModal,
171
180
  default12 as FormRadioGroup,
172
- default55 as FormSearch,
181
+ default56 as FormSearch,
173
182
  default13 as FormSelect,
174
183
  default14 as FormSelectShadowClone,
175
- default56 as FormShadowCloneDispatch,
176
- default57 as FormSortSwitch,
177
- default58 as FormSortSwitchGroup,
184
+ default57 as FormShadowCloneDispatch,
185
+ default58 as FormSortSwitch,
186
+ default59 as FormSortSwitchGroup,
178
187
  default15 as FormSubmitBtn,
179
- default59 as FormSubmitPanel,
188
+ default60 as FormSubmitPanel,
180
189
  default16 as FormTree,
181
- default60 as FormUpload,
182
- default61 as FormUploadAudio,
183
- default62 as FormUploadImage,
184
- default63 as FormUploadVideo,
190
+ default61 as FormUpload,
191
+ default62 as FormUploadAudio,
192
+ default63 as FormUploadImage,
193
+ default64 as FormUploadVideo,
185
194
  default17 as FormVerifyCode,
186
- default64 as FormVerifyImage,
195
+ default65 as FormVerifyImage,
196
+ GAP_SCALE_RUNG,
187
197
  GLOBAL_MODAL_REMOTE_KEY,
188
198
  default18 as HeightProvider,
189
199
  default19 as IconHammer,
190
200
  default20 as ImagePreviewTrigger,
191
- default65 as InfiniteListView,
192
- default66 as ListLayout,
193
- default67 as ListPage,
201
+ default66 as InfiniteListView,
202
+ default67 as ListLayout,
203
+ default68 as ListPage,
194
204
  default21 as MenuItemSub,
195
205
  default22 as MenuTree,
196
206
  default49 as ModalConfirm,
@@ -199,37 +209,38 @@ export {
199
209
  default23 as ModalImagePreview,
200
210
  default24 as ModalPorter,
201
211
  default25 as ModalShelf,
202
- default68 as ModalVideoPreview,
212
+ default69 as ModalVideoPreview,
203
213
  NEST_LAYOUT_SCALE_KEY,
204
214
  NEST_LAYOUT_TIERS,
205
215
  OPERATE_COLUMN_PROP,
206
- default69 as PanelEditSwitch,
207
- default70 as PanelItem,
208
- default71 as PanelItemNestForm,
216
+ default70 as PanelEditSwitch,
217
+ default71 as PanelItem,
218
+ default72 as PanelItemNestForm,
209
219
  default26 as PanelItemNestPanel,
210
- default72 as PanelMain,
220
+ default73 as PanelMain,
211
221
  ROUTE_MODULE_LEVEL,
212
222
  SCOPE_VIEWPORT_MAX_HEIGHT,
213
223
  default27 as SelectModule,
214
224
  default28 as ShadowClone,
215
- default73 as SlotLayoutFlowAside,
225
+ default74 as SlotLayoutFlowAside,
216
226
  default29 as SlotLayoutTemplate,
217
227
  SlotRegion,
218
228
  TABLE_COLUMN_KEY_OPERATE,
219
229
  TABLE_COLUMN_KEY_SELECTION,
220
230
  TABS_MAIN_VISUAL_LEVEL,
221
231
  default30 as TableEmpty,
222
- default74 as TableMain,
223
- default75 as TableSkeleton,
224
- default76 as TableToolbar,
232
+ default75 as TableMain,
233
+ default76 as TableSkeleton,
234
+ default77 as TableToolbar,
225
235
  default31 as TabsMain,
226
236
  TabsMainReplaceQueryKey,
227
237
  default32 as TriggerAutoImport,
228
- default77 as VideoPreviewTrigger,
229
- default78 as ViewLayout,
238
+ default78 as VideoPreviewTrigger,
239
+ default79 as ViewLayout,
230
240
  default33 as WatchSize,
231
241
  buildRhythmCss,
232
242
  ceilToTier,
243
+ checkFormItemIsIgnore,
233
244
  checkLogin,
234
245
  checkPermission,
235
246
  computeAppPageContentInset,
@@ -250,15 +261,19 @@ export {
250
261
  createUserStore,
251
262
  domClosestScrollableAncestor,
252
263
  domClosestStickyScrollport,
264
+ domScrollIntoViewport,
253
265
  exportCSV,
254
266
  fetchListAll,
255
267
  flatRouteMetaResolveRaw,
268
+ gapScaleBase,
269
+ gapScaleValue,
256
270
  generateFormData,
257
271
  getBlurSubmit,
258
272
  getChangeSubmit,
259
273
  getConfirmPasswordRule,
260
274
  getDatePickerShortcuts,
261
275
  getEnterSubmit,
276
+ getFormAiSchema,
262
277
  getId,
263
278
  getModalShelfInjectionKey,
264
279
  getPlaceholder,
@@ -271,8 +286,10 @@ export {
271
286
  parseFormData,
272
287
  parseSlotRegion,
273
288
  passwordRule,
289
+ patchFormData,
274
290
  pickExportColumns,
275
291
  resolveBreakpointByWidth,
292
+ resolveFormAiFormDescription,
276
293
  resolveFormLayout,
277
294
  resolveLayoutSpan,
278
295
  resolveRootEl,
@@ -281,9 +298,14 @@ export {
281
298
  setSelectComponent,
282
299
  stringifyFormData,
283
300
  swiftFormItemConfig,
301
+ swiftFormItemDivider,
302
+ swiftFormItemGroup,
284
303
  themeScaleDerive,
304
+ themeScaleIsNearBlack,
285
305
  themeScaleMix,
306
+ themeScalePageColor,
286
307
  themeScaleParseHex,
308
+ themeScaleSurfaceColor,
287
309
  themeScaleToRgba,
288
310
  timeCountDown,
289
311
  useActivated,
package/es/inject/key.mjs CHANGED
@@ -35,6 +35,9 @@ const APP_LAYOUT_BRIDGE_KEY = Symbol.for(
35
35
  const CORE_BRIDGE_KEY = Symbol.for(
36
36
  nsKey("CORE_BRIDGE_KEY")
37
37
  );
38
+ const FORM_VALIDATE_ERROR_KEYS = Symbol.for(
39
+ nsKey("FORM_VALIDATE_ERROR_KEYS")
40
+ );
38
41
  const FORM_NEST_REGISTRY_KEY = Symbol.for(
39
42
  nsKey("FORM_NEST_REGISTRY")
40
43
  );
@@ -55,6 +58,7 @@ export {
55
58
  BODY_CONTENT_VIEWPORT_RECT,
56
59
  CORE_BRIDGE_KEY,
57
60
  FORM_NEST_REGISTRY_KEY,
61
+ FORM_VALIDATE_ERROR_KEYS,
58
62
  NEST_LAYOUT_SCALE_KEY,
59
63
  SCOPE_VIEWPORT_MAX_HEIGHT,
60
64
  TABS_MAIN_VISUAL_LEVEL,
package/es/store/app.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import { defineStore } from "pinia";
2
2
  import { useRoute } from "vue-router";
3
3
  import { computed, ref } from "vue";
4
+ import { gapScaleValue } from "../utils/gap-scale.mjs";
4
5
  function createAppStore(deps) {
5
6
  const { bridge } = deps;
6
7
  const storeSetup = () => {
@@ -59,7 +60,7 @@ function createAppStore(deps) {
59
60
  const bodyShimPadding = computed(
60
61
  () => {
61
62
  var _a;
62
- return ((_a = pageLayout.value) == null ? void 0 : _a.bodyShimPadding) ?? bridge.APP_LAYOUT_BODY_CONFIG.shimPadding;
63
+ return ((_a = pageLayout.value) == null ? void 0 : _a.bodyShimPadding) ?? bridge.APP_LAYOUT_BODY_CONFIG.shimPadding ?? 0;
63
64
  }
64
65
  );
65
66
  const viewportConfigEffective = computed(
@@ -78,8 +79,22 @@ function createAppStore(deps) {
78
79
  var _a;
79
80
  return ((_a = pageLayout.value) == null ? void 0 : _a.noAnimation) ?? false;
80
81
  });
81
- const gapV = computed(() => bridge.APP_LAYOUT_GAP_CONFIG.size);
82
+ const gapV = computed(
83
+ () => gapScaleValue(
84
+ bridge.APP_LAYOUT_GAP_CONFIG.size,
85
+ "module",
86
+ bridge.themeDensity.value
87
+ )
88
+ );
89
+ const outerV = computed(
90
+ () => gapScaleValue(
91
+ bridge.APP_LAYOUT_GAP_CONFIG.size,
92
+ "outer",
93
+ bridge.themeDensity.value
94
+ )
95
+ );
82
96
  const gpx = computed(() => `${gapV.value}px`);
97
+ const outerPx = computed(() => `${outerV.value}px`);
83
98
  const headerStyle = computed(() => {
84
99
  const cfg = bridge.APP_LAYOUT_HEADER_CONFIG;
85
100
  return {
@@ -97,6 +112,9 @@ function createAppStore(deps) {
97
112
  const contentRowTop = computed(
98
113
  () => hasHeader.value ? `calc(${viewportPadding.value.top} + ${gpx.value} + ${headerStyle.value.height} + ${gpx.value})` : `calc(${viewportPadding.value.top} + ${gpx.value})`
99
114
  );
115
+ const contentTop = computed(
116
+ () => hasHeader.value ? `calc(${viewportPadding.value.top} + ${gpx.value} + ${headerStyle.value.height} + ${outerPx.value})` : `calc(${viewportPadding.value.top} + ${outerPx.value})`
117
+ );
100
118
  const footerStyle = computed(() => {
101
119
  const cfg = bridge.APP_LAYOUT_FOOTER_CONFIG;
102
120
  return {
@@ -143,34 +161,50 @@ function createAppStore(deps) {
143
161
  });
144
162
  const bodyStyle = computed(() => {
145
163
  return {
146
- // 内容左让位:外框左 + 外缝;有 sidebar 再加 sidebar 宽 + 内缝。
147
- paddingLeft: showSidebar.value ? `calc(${viewportPadding.value.left} + ${gpx.value} + ${sidebarStyle.value.width} + ${gpx.value})` : `calc(${viewportPadding.value.left} + ${gpx.value})`,
148
- // 顶让位 = 内容行顶(与 sidebar/aside 同行)。
149
- paddingTop: contentRowTop.value,
150
- // 右让位(对称左):外框右 + 外缝;有 aside 再加 aside + 内缝。
151
- paddingRight: showAside.value ? `calc(${viewportPadding.value.right} + ${gpx.value} + ${asideStyle.value.width} + ${gpx.value})` : `calc(${viewportPadding.value.right} + ${gpx.value})`,
152
- // 底让位:外框下 + 外缝(footer 在流内,其底悬浮由此承担)。
153
- paddingBottom: `calc(${viewportPadding.value.bottom} + ${gpx.value})`,
154
- backgroundColor: theme.value.bodyColor
164
+ // 🔴 内容四边一律让**外圈档**(huhyx7):内容 chrome、内容 viewport
165
+ // 都是「内容对外」的那一档,比 chrome 模块彼此的 ×1 多一档。
166
+ // 它同时**接替了已废弃的 shimPadding** —— 此前这段留白由
167
+ // `gap + shimPadding` 两处各给一半,同一段空白两个来源正是要消除的冗余。
168
+ // 内容左让位:外框左 + 外圈;有 sidebar 再加 sidebar 宽(sidebar 自身左边已让模块档)。
169
+ paddingLeft: showSidebar.value ? `calc(${viewportPadding.value.left} + ${gpx.value} + ${sidebarStyle.value.width} + ${outerPx.value})` : `calc(${viewportPadding.value.left} + ${outerPx.value})`,
170
+ // 顶让位 = 内容行顶(与 sidebar/aside 同行,但内容对 header 让外圈档)。
171
+ paddingTop: contentTop.value,
172
+ // 右让位(对称左):外框右 + 外圈;有 aside 再加 aside 宽。
173
+ paddingRight: showAside.value ? `calc(${viewportPadding.value.right} + ${gpx.value} + ${asideStyle.value.width} + ${outerPx.value})` : `calc(${viewportPadding.value.right} + ${outerPx.value})`,
174
+ // 底让位:外框下 + 外圈(footer 在流内,其底悬浮由此承担)。
175
+ paddingBottom: `calc(${viewportPadding.value.bottom} + ${outerPx.value})`,
176
+ // 底色:**缺省不铺**(akw76r)——.app-body 是容器,容器一律透明,布局底由全局
177
+ // html 一处铺(use-theme-apply 的 :root{} 挂 background: var(--el-bg-color-page)),
178
+ // 一路透到这里。gap 缝与 header 上方滚动遮挡条露出的都是那一层。
179
+ // 🔴 [MUST NOT] 回补「与全局底同色」的缺省——那是把一个会变的值复制到第二处,
180
+ // 换底 / 换主题即成实色补丁(不报错、不红、只是变丑)。要改底色改主题 bodyColor。
181
+ // cfg.background 仍是逃生口:显式给值即在本层铺一块面(色 / 渐变 / 背景图皆可)。
182
+ // [MUST] 用 `background` 而非 `backgroundColor`:口子要容得下 image / gradient。
183
+ ...bridge.APP_LAYOUT_BODY_CONFIG.background === void 0 ? {} : { background: bridge.APP_LAYOUT_BODY_CONFIG.background }
155
184
  };
156
185
  });
157
186
  const contentViewportInset = computed(() => {
158
187
  const g = gapV.value;
188
+ const o = outerV.value;
159
189
  const vpCfg = bridge.APP_LAYOUT_VIEWPORT_CONFIG;
160
190
  const asideEffWidth = showAside.value && !bridge.layout.asideCollapsed.value ? bridge.APP_LAYOUT_ASIDE_CONFIG.width : 0;
161
191
  return {
162
- top: hasHeader.value ? vpCfg.paddingTop + g + headerHeight.value + g : vpCfg.paddingTop + g,
163
- bottom: hasFooter.value ? vpCfg.paddingBottom + g + footerHeight.value + g : vpCfg.paddingBottom + g,
164
- left: showSidebar.value ? vpCfg.paddingLeft + g + sidebarWidth.value + g : vpCfg.paddingLeft + g,
165
- right: showAside.value ? vpCfg.paddingRight + g + asideEffWidth + g : vpCfg.paddingRight + g
192
+ top: hasHeader.value ? vpCfg.paddingTop + g + headerHeight.value + o : vpCfg.paddingTop + o,
193
+ bottom: hasFooter.value ? vpCfg.paddingBottom + g + footerHeight.value + o : vpCfg.paddingBottom + o,
194
+ left: showSidebar.value ? vpCfg.paddingLeft + g + sidebarWidth.value + o : vpCfg.paddingLeft + o,
195
+ right: showAside.value ? vpCfg.paddingRight + g + asideEffWidth + o : vpCfg.paddingRight + o
166
196
  };
167
197
  });
168
198
  const bodyShimStyle = computed(() => {
169
199
  const headerSub = hasHeader.value ? ` - ${headerStyle.value.height} - ${gpx.value}` : "";
170
200
  const footerSub = hasFooter.value ? ` - ${footerStyle.value.height} - ${gpx.value}` : "";
171
201
  return {
172
- minHeight: `calc(100vh - ${viewportPadding.value.top} - ${viewportPadding.value.bottom} - ${gpx.value} - ${gpx.value}${headerSub}${footerSub})`,
173
- padding: `${bodyShimPadding.value}px`
202
+ // 上下两处从 gap 改**外圈档**:与 bodyStyle paddingTop/Bottom 逐项同式
203
+ // (内容对外恒让外圈),[MUST] 一起改,否则可用高与实际内容盒对不上。
204
+ minHeight: `calc(100vh - ${viewportPadding.value.top} - ${viewportPadding.value.bottom} - ${outerPx.value} - ${outerPx.value}${headerSub}${footerSub})`
205
+ // 🔴 **不铺 padding**(huhyx7 A 条):四周留白已由 bodyStyle 的外圈档给过,
206
+ // 这里再铺一层就是同一段空白两个来源 —— 那正是本批要消除的冗余。
207
+ // 原 `shimPadding` 已废弃(见 APP_LAYOUT_BODY_CONFIG.shimPadding 的 @deprecated)。
174
208
  };
175
209
  });
176
210
  const changeSidebarCollapseStatus = (status) => {