@done-coding/admin-core 0.29.0 → 0.29.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.
- package/es/bridge/layout.mjs +31 -2
- package/es/components/app-layout/AppAside.vue.mjs +1 -1
- package/es/components/app-layout/AppCollapseToggle.vue.mjs +1 -1
- package/es/components/app-layout/AppFooter.vue.mjs +1 -1
- package/es/components/app-layout/AppHeader.vue.mjs +1 -1
- package/es/components/app-layout/AppHeader.vue2.mjs +1 -1
- package/es/components/app-layout/AppSidebar.vue.mjs +1 -1
- package/es/components/app-layout/AppSidebar.vue2.mjs +60 -34
- package/es/components/data-view/DataGridView.vue.mjs +1 -1
- package/es/components/data-view/DataGridView.vue2.mjs +30 -6
- package/es/components/data-view/DataListView.vue.mjs +1 -1
- package/es/components/data-view/DataListView.vue2.mjs +38 -14
- package/es/components/data-view/DataListViewItem.vue.mjs +1 -1
- package/es/components/data-view/DataListViewItem.vue2.mjs +23 -4
- package/es/components/data-view/InfiniteListView.vue.mjs +1 -1
- package/es/components/data-view/InfiniteListView.vue2.mjs +9 -3
- package/es/components/data-view/use-grid-layout.mjs +46 -0
- package/es/components/data-view/use-masonry.mjs +65 -0
- package/es/components/display/BadgeMark.vue.mjs +1 -1
- package/es/components/display/BadgeMark.vue2.mjs +11 -3
- package/es/components/display/HeightProvider.vue.mjs +17 -3
- package/es/components/display/use-badge.mjs +22 -13
- package/es/components/form/use-upload-state.mjs +33 -11
- package/es/components/page-layout/AppPageDetail.vue.mjs +1 -1
- package/es/components/page-layout/AppPageDetail.vue2.mjs +12 -2
- package/es/components/page-layout/AppPageListDetailLayout.vue.mjs +11 -4
- package/es/components/page-layout/AppPageListDetailSheet.vue.mjs +8 -1
- package/es/components/page-layout/AppPageListDetailSplit.vue.mjs +1 -1
- package/es/components/page-layout/AppPageListDetailSplit.vue2.mjs +8 -1
- package/es/components/table/TableMain.vue.mjs +1 -1
- package/es/components/table/TableMain.vue2.mjs +8 -5
- package/es/components/view-layout/ViewLayout.vue.mjs +1 -1
- package/es/components/view-layout/ViewLayout.vue2.mjs +68 -20
- package/es/hooks/use-surface.mjs +4 -1
- package/es/hooks/use-theme-apply.mjs +78 -0
- package/es/index.mjs +118 -120
- package/es/store/app.mjs +25 -0
- package/es/style.css +120 -95
- package/package.json +2 -2
- package/src/bridge/docs/README.md +31 -0
- package/src/components/app-layout/docs/README-AppAside.md +11 -0
- package/src/components/app-layout/docs/README-AppFooter.md +11 -1
- package/src/components/app-layout/docs/README-AppHeader.md +16 -0
- package/src/components/app-layout/docs/README-AppSidebar.md +18 -0
- package/src/components/data-view/README.md +2 -1
- package/src/components/data-view/docs/README-DataGridView.md +21 -1
- package/src/components/data-view/docs/README-DataListView.md +65 -3
- package/src/components/data-view/docs/README-InfiniteListView.md +17 -0
- package/src/components/display/README.md +1 -1
- package/src/components/display/docs/README-BadgeMark.md +52 -10
- package/src/components/display/docs/README-HeightProvider.md +14 -8
- package/src/components/form/docs/README-FormUpload.md +79 -0
- package/src/components/form/docs/README-FormUploadImage.md +19 -0
- package/src/components/form/docs/README-FormUploadVideo.md +19 -0
- package/src/components/page-layout/README.md +15 -0
- package/src/components/page-layout/docs/README-AppPageDetail.md +3 -0
- package/src/components/page-layout/docs/README-AppPageListDetailLayout.md +33 -0
- package/src/components/table/docs/README-TableMain.md +17 -0
- package/src/components/view-layout/README.md +2 -2
- package/src/components/view-layout/docs/README-ViewLayout.md +97 -6
- package/types/bridge/badge.d.ts +3 -1
- package/types/bridge/layout.d.ts +42 -5
- package/types/components/app-layout/AppSidebar.vue.d.ts +286 -2
- package/types/components/app-layout/types.d.ts +1 -1
- package/types/components/data-view/DataListViewItem.vue.d.ts +12 -7
- package/types/components/data-view/types.d.ts +76 -0
- package/types/components/data-view/use-grid-layout.d.ts +42 -0
- package/types/components/data-view/use-masonry.d.ts +44 -0
- package/types/components/display/BadgeMark.vue.d.ts +5 -5
- package/types/components/display/HeightProvider.vue.d.ts +1 -0
- package/types/components/display/use-badge.d.ts +6 -0
- package/types/components/page-layout/AppPageDetail.vue.d.ts +18 -0
- package/types/components/page-layout/AppPageListDetailLayout.vue.d.ts +20 -0
- package/types/components/page-layout/AppPageListDetailSheet.vue.d.ts +4 -0
- package/types/components/page-layout/AppPageListDetailSplit.vue.d.ts +4 -0
- package/types/components/table/types.d.ts +8 -0
- package/types/components/view-layout/ViewLayout.vue.d.ts +30 -0
- package/types/components/view-layout/types.d.ts +12 -0
- package/types/hooks/use-surface.d.ts +11 -0
- package/types/index.d.ts +0 -1
- package/types/injectInfo.json.d.ts +1 -1
- package/es/components/icon/IconHammer.vue.mjs +0 -26
- package/es/components/icon/IconHammer.vue2.mjs +0 -4
- package/src/components/icon/README.md +0 -38
- package/types/components/icon/IconHammer.vue.d.ts +0 -2
- package/types/components/icon/index.d.ts +0 -7
|
@@ -219,6 +219,84 @@ const EP_STRUCTURAL_CSS = [
|
|
|
219
219
|
":root:not(.dark) .el-date-editor:not(.is-disabled) .el-range-input::placeholder,",
|
|
220
220
|
":root:not(.dark) .el-select__placeholder.is-transparent {",
|
|
221
221
|
" color: color-mix(in srgb, var(--el-text-color-regular) 60%, var(--el-text-color-secondary));",
|
|
222
|
+
"}",
|
|
223
|
+
// 徽标**镂空**(gyycky,甲方 2026-09-17:「badge 使用镂空,而不是当前的纯色背景 + 白字」)。
|
|
224
|
+
// 🔴 落点 [MUST] 在此、[MUST NOT] 在 BadgeMark.vue 写 scoped —— 角标由 ElBadge 渲染在
|
|
225
|
+
// 它自己的 DOM 上(`.el-badge__content`),scoped 选择器打不中。
|
|
226
|
+
//
|
|
227
|
+
// 三件事:底从语义色实心 → **面色**([MUST NOT] 用纯透明:角标叠在宿主内容上,
|
|
228
|
+
// 全透会透出下面的字)· 边框 **1px 语义色** · 文字 / 图标 → **语义色**(图标走
|
|
229
|
+
// currentColor,随之变线条)。
|
|
230
|
+
//
|
|
231
|
+
// 🔴 **[MUST] 逐档写,[MUST NOT] 想着「引 --el-badge-bg-color 一条规则covers全档」**:
|
|
232
|
+
// 实测那个变量**不按档赋值** —— EP 只在基类里用它(恒 danger 红),per-type 色是
|
|
233
|
+
// `.el-badge__content--<type>{background-color: var(--el-color-<type>)}` 五条独立规则给的。
|
|
234
|
+
// 曾按「一条覆盖全档」写过,CDP 实测八档全渲染成 danger 红当场证伪。
|
|
235
|
+
// 五档即 EP 语义色全集:无 type 修饰符的基类 = danger(count 默认档),custom 的 `type`
|
|
236
|
+
// 也只收这五档 ⇒ 五条 + 基类一条 = 全覆盖,不存在漏档。
|
|
237
|
+
".el-badge__content {",
|
|
238
|
+
" background-color: var(--dc-core-surface, var(--el-bg-color));",
|
|
239
|
+
" color: var(--el-color-danger);",
|
|
240
|
+
" border: 1px solid var(--el-color-danger);",
|
|
241
|
+
"}",
|
|
242
|
+
".el-badge__content--primary {",
|
|
243
|
+
" background-color: var(--dc-core-surface, var(--el-bg-color));",
|
|
244
|
+
" color: var(--el-color-primary);",
|
|
245
|
+
" border-color: var(--el-color-primary);",
|
|
246
|
+
"}",
|
|
247
|
+
".el-badge__content--success {",
|
|
248
|
+
" background-color: var(--dc-core-surface, var(--el-bg-color));",
|
|
249
|
+
" color: var(--el-color-success);",
|
|
250
|
+
" border-color: var(--el-color-success);",
|
|
251
|
+
"}",
|
|
252
|
+
".el-badge__content--warning {",
|
|
253
|
+
" background-color: var(--dc-core-surface, var(--el-bg-color));",
|
|
254
|
+
" color: var(--el-color-warning);",
|
|
255
|
+
" border-color: var(--el-color-warning);",
|
|
256
|
+
"}",
|
|
257
|
+
".el-badge__content--danger {",
|
|
258
|
+
" background-color: var(--dc-core-surface, var(--el-bg-color));",
|
|
259
|
+
" color: var(--el-color-danger);",
|
|
260
|
+
" border-color: var(--el-color-danger);",
|
|
261
|
+
"}",
|
|
262
|
+
".el-badge__content--info {",
|
|
263
|
+
" background-color: var(--dc-core-surface, var(--el-bg-color));",
|
|
264
|
+
" color: var(--el-color-info);",
|
|
265
|
+
" border-color: var(--el-color-info);",
|
|
266
|
+
"}",
|
|
267
|
+
// 亮色下把**字色**压深一档(描边仍取 base,镂空的轮廓才读得出语义色相)。
|
|
268
|
+
// 🔴 依据是 CDP 实测的 WCAG 对比度,[MUST NOT] 只看顺眼:
|
|
269
|
+
//
|
|
270
|
+
// | 档 | 亮色 base | 亮色 dark-2 | 暗色 base |
|
|
271
|
+
// | --- | --- | --- | --- |
|
|
272
|
+
// | primary | 2.78 | **4.20** | 6.63 |
|
|
273
|
+
// | success | 2.24 | **3.45** | 8.21 |
|
|
274
|
+
// | warning | 2.19 | **3.35** | 8.42 |
|
|
275
|
+
// | danger | 2.90 | **4.36** | 6.35 |
|
|
276
|
+
// | info | 3.08 | **4.56** | 5.98 |
|
|
277
|
+
//
|
|
278
|
+
// ⇒ **暗色 base 已 5.98–8.42,[MUST NOT] 跟着压深**(深底上再压只会更糊),故只打亮色。
|
|
279
|
+
// ⚠️ 亮色压深后 3.35–4.56 **仍未普遍达到小字 4.5:1** —— 但那是 EP 语义色板在白底上的
|
|
280
|
+
// 固有天花板(要达标得换色相、即放弃 EP 语义色);且**改造前的实心底白字是同一组数字**
|
|
281
|
+
// (对比度对称:白字压在 success 上同样是 2.24)⇒ 镂空 + 压深是**净改善约 1.2 倍**,
|
|
282
|
+
// 不是新引入的缺陷。徽标是补充性指示器,图标档的完整语义另由悬浮气泡承载。
|
|
283
|
+
":root:not(.dark) .el-badge__content {",
|
|
284
|
+
" color: var(--el-color-danger-dark-2);",
|
|
285
|
+
"}",
|
|
286
|
+
":root:not(.dark) .el-badge__content--primary {",
|
|
287
|
+
" color: var(--el-color-primary-dark-2);",
|
|
288
|
+
"}",
|
|
289
|
+
":root:not(.dark) .el-badge__content--success {",
|
|
290
|
+
" color: var(--el-color-success-dark-2);",
|
|
291
|
+
"}",
|
|
292
|
+
":root:not(.dark) .el-badge__content--warning {",
|
|
293
|
+
" color: var(--el-color-warning-dark-2);",
|
|
294
|
+
"}",
|
|
295
|
+
":root:not(.dark) .el-badge__content--danger {",
|
|
296
|
+
" color: var(--el-color-danger-dark-2);",
|
|
297
|
+
"}",
|
|
298
|
+
":root:not(.dark) .el-badge__content--info {",
|
|
299
|
+
" color: var(--el-color-info-dark-2);",
|
|
222
300
|
"}"
|
|
223
301
|
].join("\n");
|
|
224
302
|
const EP_BRIDGE_CSS = [
|
package/es/index.mjs
CHANGED
|
@@ -14,81 +14,80 @@ import { default as default15 } from "./components/form/FormSubmitBtn.vue.mjs";
|
|
|
14
14
|
import { default as default16 } from "./components/form/FormTree.vue.mjs";
|
|
15
15
|
import { default as default17 } from "./components/form/FormVerifyCode.vue.mjs";
|
|
16
16
|
import { default as default18 } from "./components/display/HeightProvider.vue.mjs";
|
|
17
|
-
import { default as default19 } from "./components/
|
|
18
|
-
import { default as default20 } from "./components/
|
|
19
|
-
import { default as default21 } from "./components/menu/
|
|
20
|
-
import { default as default22 } from "./components/
|
|
21
|
-
import { default as default23 } from "./components/modal/
|
|
22
|
-
import { default as default24 } from "./components/modal/
|
|
23
|
-
import { default as default25 } from "./components/
|
|
24
|
-
import { default as default26 } from "./components/
|
|
25
|
-
import { default as default27 } from "./components/
|
|
26
|
-
import { default as default28 } from "./components/
|
|
27
|
-
import { default as default29 } from "./components/
|
|
28
|
-
import { default as default30 } from "./components/
|
|
29
|
-
import { default as default31 } from "./components/
|
|
30
|
-
import { default as default32 } from "./components/
|
|
31
|
-
import { default as default33 } from "./components/display/WatchSize.vue.mjs";
|
|
17
|
+
import { default as default19 } from "./components/modal/ImagePreviewTrigger.vue.mjs";
|
|
18
|
+
import { default as default20 } from "./components/menu/MenuItemSub.vue.mjs";
|
|
19
|
+
import { default as default21 } from "./components/menu/MenuTree.vue.mjs";
|
|
20
|
+
import { default as default22 } from "./components/modal/ModalImagePreview.vue.mjs";
|
|
21
|
+
import { default as default23 } from "./components/modal/ModalPorter.vue.mjs";
|
|
22
|
+
import { default as default24 } from "./components/modal/ModalShelf.vue.mjs";
|
|
23
|
+
import { default as default25 } from "./components/panel/PanelItemNestPanel.vue.mjs";
|
|
24
|
+
import { default as default26 } from "./components/misc/SelectModule.vue.mjs";
|
|
25
|
+
import { default as default27 } from "./components/display/ShadowClone.vue.mjs";
|
|
26
|
+
import { default as default28 } from "./components/slot-layout/SlotLayoutTemplate.vue.mjs";
|
|
27
|
+
import { default as default29 } from "./components/table/TableEmpty.vue.mjs";
|
|
28
|
+
import { default as default30 } from "./components/display/TabsMain.vue.mjs";
|
|
29
|
+
import { default as default31 } from "./components/misc/TriggerAutoImport.vue.mjs";
|
|
30
|
+
import { default as default32 } from "./components/display/WatchSize.vue.mjs";
|
|
32
31
|
import { APP_API_LIST_MODEL_KEY_CONFIG } from "./config/list-model.mjs";
|
|
33
32
|
import { APP_GLOBAL_IMAGE_PREVIEW_KEY, APP_GLOBAL_VIDEO_PREVIEW_KEY, GLOBAL_MODAL_REMOTE_KEY } from "./components/modal/modal-global-keys.mjs";
|
|
34
33
|
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
34
|
import { APP_PAGE_LIST_LAYOUT_RECOMMENDED } from "./components/app-layout/app-page-recommended.mjs";
|
|
36
35
|
import { APP_PAGE_SLOT_Z_INDEX, computeAppPageContentInset, computeAppPageReducedViewportHeight, computeAppPageReducedViewportWidth, computeAppPageSlotShimStyles, computeAppPageSlotStyles } from "./components/app-layout/app-page-geometry.mjs";
|
|
37
|
-
import { default as
|
|
38
|
-
import { default as
|
|
39
|
-
import { default as
|
|
40
|
-
import { default as
|
|
41
|
-
import { default as
|
|
42
|
-
import { default as
|
|
43
|
-
import { default as
|
|
44
|
-
import { default as
|
|
45
|
-
import { default as
|
|
46
|
-
import { default as
|
|
47
|
-
import { default as
|
|
48
|
-
import { default as
|
|
49
|
-
import { default as
|
|
36
|
+
import { default as default33 } from "./components/display/ActionConfirm.vue.mjs";
|
|
37
|
+
import { default as default34 } from "./components/app-layout/AppAside.vue.mjs";
|
|
38
|
+
import { default as default35 } from "./components/app-layout/AppBody.vue.mjs";
|
|
39
|
+
import { default as default36 } from "./components/app-layout/AppBreadcrumb.vue.mjs";
|
|
40
|
+
import { default as default37 } from "./components/app-layout/AppFooter.vue.mjs";
|
|
41
|
+
import { default as default38 } from "./components/app-layout/AppHeader.vue.mjs";
|
|
42
|
+
import { default as default39 } from "./components/app-layout/AppLayout.vue.mjs";
|
|
43
|
+
import { default as default40 } from "./components/app-layout/AppPage.vue.mjs";
|
|
44
|
+
import { default as default41 } from "./components/page-layout/AppPageDetail.vue.mjs";
|
|
45
|
+
import { default as default42 } from "./components/app-layout/AppSidebar.vue.mjs";
|
|
46
|
+
import { default as default43 } from "./components/app-layout/AppTheme.vue.mjs";
|
|
47
|
+
import { default as default44 } from "./components/misc/AutoRefresh.vue.mjs";
|
|
48
|
+
import { default as default45 } from "./components/misc/AutoRefreshGroup.vue.mjs";
|
|
50
49
|
import { BADGE_HOST_ATTR, BADGE_KEY_ATTR } from "./config/badge-attr.mjs";
|
|
51
50
|
import { BADGE_MASK_KINDS } from "./bridge/badge.mjs";
|
|
52
|
-
import { default as
|
|
51
|
+
import { default as default46 } from "./components/display/BadgeMark.vue.mjs";
|
|
53
52
|
import { COLLAPSED_CLASS, swiftFormItemDivider, swiftFormItemGroup } from "./components/form/group.mjs";
|
|
54
53
|
import { CORE_VIEWPORT_DECOR_ZINDEX_ABOVE, CORE_VIEWPORT_DECOR_ZINDEX_BELOW } from "./components/app-layout/viewport.mjs";
|
|
55
|
-
import { default as
|
|
54
|
+
import { default as default47, default as default48 } from "./components/modal/ModalConfirm.vue.mjs";
|
|
56
55
|
import { DC_SLOT_ATTR, SlotRegion, parseSlotRegion } from "./config/slot-region.mjs";
|
|
57
|
-
import { default as
|
|
58
|
-
import { default as
|
|
56
|
+
import { default as default49 } from "./components/data-view/DataGridView.vue.mjs";
|
|
57
|
+
import { default as default50 } from "./components/display/DragFloat.vue.mjs";
|
|
59
58
|
import { EXPORT_MAX_LIMIT, OPERATE_COLUMN_PROP, exportCSV, pickExportColumns } from "./utils/export.mjs";
|
|
60
59
|
import { FORM_CONFIG_SELECT_ALL_VALUE, getConfirmPasswordRule, passwordRule, setFormComponentType } from "./helpers/form.mjs";
|
|
61
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";
|
|
62
|
-
import { default as
|
|
63
|
-
import { default as
|
|
64
|
-
import { default as
|
|
65
|
-
import { default as
|
|
66
|
-
import { default as
|
|
67
|
-
import { default as
|
|
68
|
-
import { default as
|
|
69
|
-
import { default as
|
|
70
|
-
import { default as
|
|
71
|
-
import { default as
|
|
72
|
-
import { default as
|
|
73
|
-
import { default as
|
|
74
|
-
import { default as
|
|
75
|
-
import { default as
|
|
61
|
+
import { default as default51 } from "./components/form/FormActiveFilter.vue.mjs";
|
|
62
|
+
import { default as default52 } from "./components/form/FormItemNestForm.vue.mjs";
|
|
63
|
+
import { default as default53 } from "./components/form/FormItemNestFormList.vue.mjs";
|
|
64
|
+
import { default as default54 } from "./components/form/FormMain.vue.mjs";
|
|
65
|
+
import { default as default55 } from "./components/form/FormSearch.vue.mjs";
|
|
66
|
+
import { default as default56 } from "./components/form/FormShadowCloneDispatch.vue.mjs";
|
|
67
|
+
import { default as default57 } from "./components/form/FormSortSwitch.vue.mjs";
|
|
68
|
+
import { default as default58 } from "./components/form/FormSortSwitchGroup.vue.mjs";
|
|
69
|
+
import { default as default59 } from "./components/form/FormSubmitPanel.vue.mjs";
|
|
70
|
+
import { default as default60 } from "./components/form/FormUpload.vue.mjs";
|
|
71
|
+
import { default as default61 } from "./components/form/FormUploadAudio.vue.mjs";
|
|
72
|
+
import { default as default62 } from "./components/form/FormUploadImage.vue.mjs";
|
|
73
|
+
import { default as default63 } from "./components/form/FormUploadVideo.vue.mjs";
|
|
74
|
+
import { default as default64 } from "./components/form/FormVerifyImage.vue.mjs";
|
|
76
75
|
import { GAP_SCALE_RUNG, gapScaleBase, gapScaleValue } from "./utils/gap-scale.mjs";
|
|
77
|
-
import { default as
|
|
78
|
-
import { default as
|
|
79
|
-
import { default as
|
|
80
|
-
import { default as
|
|
81
|
-
import { default as
|
|
82
|
-
import { default as
|
|
83
|
-
import { default as
|
|
76
|
+
import { default as default65 } from "./components/data-view/InfiniteListView.vue.mjs";
|
|
77
|
+
import { default as default66, default as default67 } from "./components/list-layout/ListLayout.vue.mjs";
|
|
78
|
+
import { default as default68 } from "./components/modal/ModalVideoPreview.vue.mjs";
|
|
79
|
+
import { default as default69 } from "./components/panel/PanelEditSwitch.vue.mjs";
|
|
80
|
+
import { default as default70 } from "./components/panel/PanelItem.vue.mjs";
|
|
81
|
+
import { default as default71 } from "./components/panel/PanelItemNestForm.vue.mjs";
|
|
82
|
+
import { default as default72 } from "./components/panel/PanelMain.vue.mjs";
|
|
84
83
|
import { ROUTE_MODULE_LEVEL, TabsMainReplaceQueryKey } from "./config/route.mjs";
|
|
85
|
-
import { default as
|
|
84
|
+
import { default as default73 } from "./components/slot-layout/SlotLayoutFlowAside.vue.mjs";
|
|
86
85
|
import { TABLE_COLUMN_KEY_OPERATE, TABLE_COLUMN_KEY_SELECTION } from "./components/table/constants.mjs";
|
|
87
|
-
import { default as
|
|
88
|
-
import { default as
|
|
89
|
-
import { default as
|
|
90
|
-
import { default as
|
|
91
|
-
import { default as
|
|
86
|
+
import { default as default74 } from "./components/table/TableMain.vue.mjs";
|
|
87
|
+
import { default as default75 } from "./components/table/TableSkeleton.vue.mjs";
|
|
88
|
+
import { default as default76 } from "./components/table/TableToolbar.vue.mjs";
|
|
89
|
+
import { default as default77 } from "./components/modal/VideoPreviewTrigger.vue.mjs";
|
|
90
|
+
import { default as default78 } from "./components/view-layout/ViewLayout.vue.mjs";
|
|
92
91
|
import { buildRhythmCss, useCoreThemeApply } from "./hooks/use-theme-apply.mjs";
|
|
93
92
|
import { checkLogin } from "./router/guard/login.mjs";
|
|
94
93
|
import { checkPermission } from "./router/guard/permission.mjs";
|
|
@@ -137,110 +136,109 @@ export {
|
|
|
137
136
|
APP_PAGE_SLOT_Z_INDEX,
|
|
138
137
|
default2 as ActionBtn,
|
|
139
138
|
default3 as ActionBtnGroup,
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
139
|
+
default33 as ActionConfirm,
|
|
140
|
+
default34 as AppAside,
|
|
141
|
+
default35 as AppBody,
|
|
142
|
+
default36 as AppBreadcrumb,
|
|
143
|
+
default37 as AppFooter,
|
|
144
|
+
default38 as AppHeader,
|
|
145
|
+
default39 as AppLayout,
|
|
146
|
+
default40 as AppPage,
|
|
147
|
+
default41 as AppPageDetail,
|
|
149
148
|
default4 as AppPageListDetailLayout,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
default42 as AppSidebar,
|
|
150
|
+
default43 as AppTheme,
|
|
151
|
+
default44 as AutoRefresh,
|
|
152
|
+
default45 as AutoRefreshGroup,
|
|
154
153
|
BADGE_HOST_ATTR,
|
|
155
154
|
BADGE_KEY_ATTR,
|
|
156
155
|
BADGE_MASK_KINDS,
|
|
157
156
|
BODY_CONTENT_VIEWPORT_HEIGHT,
|
|
158
157
|
BODY_CONTENT_VIEWPORT_INSET,
|
|
159
158
|
BODY_CONTENT_VIEWPORT_RECT,
|
|
160
|
-
|
|
159
|
+
default46 as BadgeMark,
|
|
161
160
|
default5 as BooleanTag,
|
|
162
161
|
COLLAPSED_CLASS,
|
|
163
162
|
CORE_BRIDGE_KEY,
|
|
164
163
|
CORE_VIEWPORT_DECOR_ZINDEX_ABOVE,
|
|
165
164
|
CORE_VIEWPORT_DECOR_ZINDEX_BELOW,
|
|
166
|
-
|
|
165
|
+
default47 as ConfirmModal,
|
|
167
166
|
DC_SLOT_ATTR,
|
|
168
|
-
|
|
167
|
+
default49 as DataGridView,
|
|
169
168
|
default6 as DetailModal,
|
|
170
|
-
|
|
169
|
+
default50 as DragFloat,
|
|
171
170
|
EXPORT_MAX_LIMIT,
|
|
172
171
|
FORM_CONFIG_SELECT_ALL_VALUE,
|
|
173
172
|
FORM_ITEM_CHANGE_LOADING,
|
|
174
173
|
FORM_NEST_REGISTRY_KEY,
|
|
175
174
|
FORM_VALIDATE_ERROR_KEYS,
|
|
176
|
-
|
|
175
|
+
default51 as FormActiveFilter,
|
|
177
176
|
default8 as FormInput,
|
|
178
177
|
default9 as FormInputShadowClone,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
178
|
+
default52 as FormItemNestForm,
|
|
179
|
+
default53 as FormItemNestFormList,
|
|
180
|
+
default54 as FormMain,
|
|
182
181
|
default10 as FormModal,
|
|
183
182
|
default12 as FormRadioGroup,
|
|
184
|
-
|
|
183
|
+
default55 as FormSearch,
|
|
185
184
|
default13 as FormSelect,
|
|
186
185
|
default14 as FormSelectShadowClone,
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
186
|
+
default56 as FormShadowCloneDispatch,
|
|
187
|
+
default57 as FormSortSwitch,
|
|
188
|
+
default58 as FormSortSwitchGroup,
|
|
190
189
|
default15 as FormSubmitBtn,
|
|
191
|
-
|
|
190
|
+
default59 as FormSubmitPanel,
|
|
192
191
|
default16 as FormTree,
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
default60 as FormUpload,
|
|
193
|
+
default61 as FormUploadAudio,
|
|
194
|
+
default62 as FormUploadImage,
|
|
195
|
+
default63 as FormUploadVideo,
|
|
197
196
|
default17 as FormVerifyCode,
|
|
198
|
-
|
|
197
|
+
default64 as FormVerifyImage,
|
|
199
198
|
GAP_SCALE_RUNG,
|
|
200
199
|
GLOBAL_MODAL_REMOTE_KEY,
|
|
201
200
|
default18 as HeightProvider,
|
|
202
|
-
default19 as
|
|
203
|
-
|
|
204
|
-
default66 as
|
|
205
|
-
default67 as
|
|
206
|
-
|
|
207
|
-
default21 as
|
|
208
|
-
|
|
209
|
-
default49 as ModalConfirm,
|
|
201
|
+
default19 as ImagePreviewTrigger,
|
|
202
|
+
default65 as InfiniteListView,
|
|
203
|
+
default66 as ListLayout,
|
|
204
|
+
default67 as ListPage,
|
|
205
|
+
default20 as MenuItemSub,
|
|
206
|
+
default21 as MenuTree,
|
|
207
|
+
default48 as ModalConfirm,
|
|
210
208
|
default7 as ModalDetail,
|
|
211
209
|
default11 as ModalForm,
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
210
|
+
default22 as ModalImagePreview,
|
|
211
|
+
default23 as ModalPorter,
|
|
212
|
+
default24 as ModalShelf,
|
|
213
|
+
default68 as ModalVideoPreview,
|
|
216
214
|
NEST_LAYOUT_SCALE_KEY,
|
|
217
215
|
NEST_LAYOUT_TIERS,
|
|
218
216
|
OPERATE_COLUMN_PROP,
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
217
|
+
default69 as PanelEditSwitch,
|
|
218
|
+
default70 as PanelItem,
|
|
219
|
+
default71 as PanelItemNestForm,
|
|
220
|
+
default25 as PanelItemNestPanel,
|
|
221
|
+
default72 as PanelMain,
|
|
224
222
|
ROUTE_MODULE_LEVEL,
|
|
225
223
|
SCOPE_VIEWPORT_MAX_HEIGHT,
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
224
|
+
default26 as SelectModule,
|
|
225
|
+
default27 as ShadowClone,
|
|
226
|
+
default73 as SlotLayoutFlowAside,
|
|
227
|
+
default28 as SlotLayoutTemplate,
|
|
230
228
|
SlotRegion,
|
|
231
229
|
TABLE_COLUMN_KEY_OPERATE,
|
|
232
230
|
TABLE_COLUMN_KEY_SELECTION,
|
|
233
231
|
TABS_MAIN_VISUAL_LEVEL,
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
232
|
+
default29 as TableEmpty,
|
|
233
|
+
default74 as TableMain,
|
|
234
|
+
default75 as TableSkeleton,
|
|
235
|
+
default76 as TableToolbar,
|
|
236
|
+
default30 as TabsMain,
|
|
239
237
|
TabsMainReplaceQueryKey,
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
238
|
+
default31 as TriggerAutoImport,
|
|
239
|
+
default77 as VideoPreviewTrigger,
|
|
240
|
+
default78 as ViewLayout,
|
|
241
|
+
default32 as WatchSize,
|
|
244
242
|
buildRhythmCss,
|
|
245
243
|
ceilToTier,
|
|
246
244
|
checkFormItemIsIgnore,
|
package/es/store/app.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import { defineStore } from "pinia";
|
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
import { computed, ref } from "vue";
|
|
4
4
|
import { gapScaleValue } from "../utils/gap-scale.mjs";
|
|
5
|
+
const LAYOUT_CHROME_RADIUS = "var(--dc-core-radius, var(--el-border-radius-base))";
|
|
5
6
|
function createAppStore(deps) {
|
|
6
7
|
const { bridge } = deps;
|
|
7
8
|
const storeSetup = () => {
|
|
@@ -98,8 +99,20 @@ function createAppStore(deps) {
|
|
|
98
99
|
const headerStyle = computed(() => {
|
|
99
100
|
const cfg = bridge.APP_LAYOUT_HEADER_CONFIG;
|
|
100
101
|
return {
|
|
102
|
+
// 🔴 面貌默认值(圆角 + 横向内呼吸)[MUST] 写在 `...cfg.style` **之前**:
|
|
103
|
+
// 它们是**默认**不是**引擎托管** —— 消费方经 style 逃生舱传同名键要能整体压过
|
|
104
|
+
// (既有单测「style 逃生舱:装饰键生效」即钉这条)。
|
|
105
|
+
// 🔴 且 [MUST] 与 `background` **同源**(都在这份 inline style 里):一半 inline
|
|
106
|
+
// 一半 scoped CSS 会让消费方覆盖时只改得动一半(hehvwt)。
|
|
107
|
+
borderRadius: LAYOUT_CHROME_RADIUS,
|
|
108
|
+
// 横向内呼吸取间距阶梯**模块档**(×1,默认 8px),取代原先写死在
|
|
109
|
+
// `.app-header-shim` 的 `0 20px`;随 gap 基数 + 密度档缩放。
|
|
110
|
+
padding: `0 ${gpx.value}`,
|
|
101
111
|
...cfg.style,
|
|
102
112
|
position: "fixed",
|
|
113
|
+
// 引擎托管:横向 padding 恒收在盒内。core 是发布包,[MUST NOT] 指望消费方
|
|
114
|
+
// 有 `* { box-sizing: border-box }` 的全局 reset。
|
|
115
|
+
boxSizing: "border-box",
|
|
103
116
|
// 通栏悬浮:三外边各让外缝 gap(底边朝内容,由下方模块 top 让内缝)。
|
|
104
117
|
top: `calc(${viewportPadding.value.top} + ${gpx.value})`,
|
|
105
118
|
left: `calc(${viewportPadding.value.left} + ${gpx.value})`,
|
|
@@ -118,7 +131,11 @@ function createAppStore(deps) {
|
|
|
118
131
|
const footerStyle = computed(() => {
|
|
119
132
|
const cfg = bridge.APP_LAYOUT_FOOTER_CONFIG;
|
|
120
133
|
return {
|
|
134
|
+
// 面貌默认值与 header 同口径同位置(对称积木,[MUST] 一起改)——见 headerStyle 注释。
|
|
135
|
+
borderRadius: LAYOUT_CHROME_RADIUS,
|
|
136
|
+
padding: `0 ${gpx.value}`,
|
|
121
137
|
...cfg.style,
|
|
138
|
+
boxSizing: "border-box",
|
|
122
139
|
height: `${showFooter.value ? footerHeight.value : 0}px`,
|
|
123
140
|
// footer 在 body 流内:marginTop 与内容 shim 隔内缝;底边悬浮由 body paddingBottom 承担。
|
|
124
141
|
// 用 hasFooter:footer 收起到 0 高时不留死内缝 gap(对称 hasHeader)。
|
|
@@ -130,6 +147,11 @@ function createAppStore(deps) {
|
|
|
130
147
|
const sidebarStyle = computed(() => {
|
|
131
148
|
const cfg = bridge.APP_LAYOUT_SIDEBAR_CONFIG;
|
|
132
149
|
return {
|
|
150
|
+
// 圆角与 background 同源(见 headerStyle 注释);默认值在展开前,逃生舱可整体覆盖。
|
|
151
|
+
// 🔴 **不给横向 padding**:侧栏里装的是菜单树,`.el-menu-item` 自带
|
|
152
|
+
// `padding: 0 var(--el-menu-base-level-padding)`(默认 20px),外层再让一份就是双份、
|
|
153
|
+
// 且折叠成图标栏时会把图标挤离中线。[MUST NOT] 为「四区补齐」想当然加上(hehvwt)。
|
|
154
|
+
borderRadius: LAYOUT_CHROME_RADIUS,
|
|
133
155
|
...cfg.style,
|
|
134
156
|
position: "fixed",
|
|
135
157
|
width: `${showSidebar.value ? sidebarWidth.value : 0}px`,
|
|
@@ -145,6 +167,9 @@ function createAppStore(deps) {
|
|
|
145
167
|
const asideStyle = computed(() => {
|
|
146
168
|
const cfg = bridge.APP_LAYOUT_ASIDE_CONFIG;
|
|
147
169
|
return {
|
|
170
|
+
// 与 sidebar 同口径(对称积木):圆角随主题、无横向 padding
|
|
171
|
+
// (内容由消费方经默认插槽自填,呼吸归内容自己,core 代让会与之叠成双份)。
|
|
172
|
+
borderRadius: LAYOUT_CHROME_RADIUS,
|
|
148
173
|
...cfg.style,
|
|
149
174
|
position: "fixed",
|
|
150
175
|
// 折叠双表达:外层宽收 0(收回空间)+ AppAside shim 绕 Y 轴翻转(视觉)。
|