@deppon/deppon-template 2.5.3 → 2.5.4
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/README.md +4 -0
- package/es/index.d.ts +2 -0
- package/es/index.js +8 -0
- package/es/pro-dialog/ProDialog.vue.css +39 -2
- package/es/pro-field/ProField.vue.css +39 -2
- package/es/pro-field/components/DatePicker/FieldDatePicker.vue.css +39 -2
- package/es/pro-field/components/Select/FieldSelect.vue.css +39 -2
- package/es/pro-form/ProForm.vue.css +39 -2
- package/es/pro-iframe/ProIframe.vue.css +78 -0
- package/es/pro-iframe/ProIframe.vue.js +7 -0
- package/es/pro-iframe/ProIframe.vue_vue_type_script_setup_true_lang.vue.js +271 -0
- package/es/pro-iframe/ProIframe.vue_vue_type_style_index_0_id_7119d75d_scoped_true_lang.vue.js +1 -0
- package/es/pro-iframe/ProIframeRouteView.vue.js +5 -0
- package/es/pro-iframe/ProIframeRouteView.vue_vue_type_script_setup_true_lang.vue.js +85 -0
- package/es/pro-iframe/buildIframeRouteLocation.d.ts +18 -0
- package/es/pro-iframe/buildIframeRouteLocation.js +34 -0
- package/es/pro-iframe/createIframeRoute.d.ts +33 -0
- package/es/pro-iframe/createIframeRoute.js +46 -0
- package/es/pro-iframe/index.d.ts +43 -0
- package/es/pro-iframe/isInIframeEmbed.d.ts +4 -0
- package/es/pro-iframe/isInIframeEmbed.js +15 -0
- package/es/pro-iframe/resolveIframeSrc.d.ts +19 -0
- package/es/pro-iframe/resolveIframeSrc.js +177 -0
- package/es/pro-iframe/types.d.ts +60 -0
- package/es/pro-layout/ProLayout.vue.css +296 -4
- package/es/pro-layout/ProLayout.vue_vue_type_script_setup_true_lang.vue.js +747 -68
- package/es/pro-layout/ProLayoutColumnsAside.vue.css +62 -0
- package/es/pro-layout/ProLayoutColumnsAside.vue.js +7 -0
- package/es/pro-layout/ProLayoutColumnsAside.vue_vue_type_script_setup_true_lang.vue.js +86 -0
- package/es/pro-layout/ProLayoutColumnsAside.vue_vue_type_style_index_0_id_18647f64_scoped_true_lang.vue.js +1 -0
- package/es/pro-layout/ProLayoutSettingsDrawer.vue.css +140 -0
- package/es/pro-layout/ProLayoutSettingsDrawer.vue.js +7 -0
- package/es/pro-layout/ProLayoutSettingsDrawer.vue_vue_type_script_setup_true_lang.vue.js +280 -0
- package/es/pro-layout/ProLayoutSettingsDrawer.vue_vue_type_style_index_0_id_5b67a386_scoped_true_lang.vue.js +1 -0
- package/es/pro-layout/ProLayoutSettingsFab.vue.css +81 -0
- package/es/pro-layout/ProLayoutSettingsFab.vue.js +7 -0
- package/es/pro-layout/ProLayoutSettingsFab.vue_vue_type_script_setup_true_lang.vue.js +106 -0
- package/es/pro-layout/ProLayoutSettingsFab.vue_vue_type_style_index_0_id_3bf2eb6b_scoped_true_lang.vue.js +1 -0
- package/es/pro-layout/index.d.ts +51 -1
- package/es/pro-layout/index.js +3 -0
- package/es/pro-layout/pro-layout-context.d.ts +8 -0
- package/es/pro-layout/pro-layout-context.js +5 -0
- package/es/pro-layout/proLayoutGlobalColors.d.ts +16 -0
- package/es/pro-layout/proLayoutGlobalColors.js +171 -0
- package/es/pro-layout/proLayoutTheme.d.ts +29 -0
- package/es/pro-layout/proLayoutTheme.js +232 -0
- package/es/pro-layout/types.d.ts +52 -0
- package/es/pro-table/ProTable.vue.css +39 -2
- package/es/pro-table/ProTableColumn.vue.css +39 -2
- package/es/pro-table/ToolBar/ColumnSetting.vue.css +39 -2
- package/es/pro-table/ToolBar/Density.vue.css +39 -2
- package/es/pro-table/ToolBar/Fullscreen.vue.css +39 -2
- package/es/pro-table/ToolBar/index.vue.css +39 -2
- package/es/styles/index.css +39 -2
- package/package.json +6 -6
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import '../_virtual/_rollup-plugin-inject-process-env.js';
|
|
2
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
4
|
+
import { markRaw, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, renderSlot, createBlock, unref, withCtx, resolveDynamicComponent, createCommentVNode } from 'vue';
|
|
5
|
+
import { ElIcon } from '@deppon/deppon-ui';
|
|
6
|
+
import { Setting } from '@deppon/deppon-ui/icons-vue';
|
|
7
|
+
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
var _hoisted_1 = ["title", "aria-label"];
|
|
11
|
+
var script = {
|
|
12
|
+
__name: 'ProLayoutSettingsFab',
|
|
13
|
+
props: {
|
|
14
|
+
visible: {
|
|
15
|
+
type: Boolean,
|
|
16
|
+
"default": true
|
|
17
|
+
},
|
|
18
|
+
/** fixed:右侧悬浮;header:顶栏操作区(铃铛右侧) */
|
|
19
|
+
placement: {
|
|
20
|
+
type: String,
|
|
21
|
+
"default": 'fixed'
|
|
22
|
+
},
|
|
23
|
+
position: {
|
|
24
|
+
type: String,
|
|
25
|
+
"default": 'right-center'
|
|
26
|
+
},
|
|
27
|
+
offset: {
|
|
28
|
+
type: Object,
|
|
29
|
+
"default": function _default() {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
style: {
|
|
34
|
+
type: Object,
|
|
35
|
+
"default": function _default() {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"class": {
|
|
40
|
+
type: [String, Array, Object],
|
|
41
|
+
"default": ''
|
|
42
|
+
},
|
|
43
|
+
size: {
|
|
44
|
+
type: String,
|
|
45
|
+
"default": 'default'
|
|
46
|
+
},
|
|
47
|
+
title: {
|
|
48
|
+
type: String,
|
|
49
|
+
"default": '布局与主题'
|
|
50
|
+
},
|
|
51
|
+
showIcon: {
|
|
52
|
+
type: Boolean,
|
|
53
|
+
"default": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
emits: ['click'],
|
|
57
|
+
setup: function setup(__props, _ref) {
|
|
58
|
+
var __emit = _ref.emit;
|
|
59
|
+
var SettingIcon = markRaw(Setting);
|
|
60
|
+
var props = __props;
|
|
61
|
+
var emit = __emit;
|
|
62
|
+
var placementClass = computed(function () {
|
|
63
|
+
if (props.placement === 'header') {
|
|
64
|
+
return 'pro-layout-settings-fab--in-header';
|
|
65
|
+
}
|
|
66
|
+
return "pro-layout-settings-fab--".concat(props.position);
|
|
67
|
+
});
|
|
68
|
+
var fabClass = computed(function () {
|
|
69
|
+
var extra = props["class"];
|
|
70
|
+
var sizeClass = props.size !== 'default' ? "pro-layout-settings-fab--".concat(props.size) : '';
|
|
71
|
+
if (!extra) return sizeClass;
|
|
72
|
+
if (typeof extra === 'string') return [sizeClass, extra].filter(Boolean);
|
|
73
|
+
if (Array.isArray(extra)) return [sizeClass].concat(_toConsumableArray(extra));
|
|
74
|
+
return [sizeClass, extra];
|
|
75
|
+
});
|
|
76
|
+
var fabInlineStyle = computed(function () {
|
|
77
|
+
return _objectSpread(_objectSpread({}, props.offset), props.style);
|
|
78
|
+
});
|
|
79
|
+
var handleClick = function handleClick(e) {
|
|
80
|
+
emit('click', e);
|
|
81
|
+
};
|
|
82
|
+
return function (_ctx, _cache) {
|
|
83
|
+
return __props.visible ? (openBlock(), createElementBlock("button", {
|
|
84
|
+
key: 0,
|
|
85
|
+
type: "button",
|
|
86
|
+
"class": normalizeClass(["pro-layout-settings-fab", [placementClass.value, fabClass.value]]),
|
|
87
|
+
style: normalizeStyle(fabInlineStyle.value),
|
|
88
|
+
title: __props.title,
|
|
89
|
+
"aria-label": __props.title,
|
|
90
|
+
onClick: handleClick
|
|
91
|
+
}, [renderSlot(_ctx.$slots, "default", {}, function () {
|
|
92
|
+
return [__props.showIcon ? (openBlock(), createBlock(unref(ElIcon), {
|
|
93
|
+
key: 0,
|
|
94
|
+
"class": "pro-layout-settings-fab__icon"
|
|
95
|
+
}, {
|
|
96
|
+
"default": withCtx(function () {
|
|
97
|
+
return [(openBlock(), createBlock(resolveDynamicComponent(unref(SettingIcon))))];
|
|
98
|
+
}),
|
|
99
|
+
_: 1 /* STABLE */
|
|
100
|
+
})) : createCommentVNode("v-if", true)];
|
|
101
|
+
})], 14 /* CLASS, STYLE, PROPS */, _hoisted_1)) : createCommentVNode("v-if", true);
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export { script as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './ProLayoutSettingsFab.vue.css';
|
package/es/pro-layout/index.d.ts
CHANGED
|
@@ -1,4 +1,54 @@
|
|
|
1
1
|
import type { DefineComponent } from 'vue';
|
|
2
|
+
import type {
|
|
3
|
+
ProLayoutMode,
|
|
4
|
+
ProLayoutThemeConfig,
|
|
5
|
+
ProLayoutThemeTokens,
|
|
6
|
+
ProLayoutSettingsFabConfig,
|
|
7
|
+
ProLayoutSettingsFabPosition,
|
|
8
|
+
} from './types';
|
|
2
9
|
|
|
3
|
-
declare const ProLayout: DefineComponent<Record<string,
|
|
10
|
+
declare const ProLayout: DefineComponent<Record<string, unknown>, Record<string, unknown>, unknown>;
|
|
4
11
|
export default ProLayout;
|
|
12
|
+
|
|
13
|
+
export const ProLayoutSettingsFab: DefineComponent<Record<string, unknown>, Record<string, unknown>, unknown>;
|
|
14
|
+
export const ProLayoutSettingsDrawer: DefineComponent<Record<string, unknown>, Record<string, unknown>, unknown>;
|
|
15
|
+
export const ProLayoutColumnsAside: DefineComponent<Record<string, unknown>, Record<string, unknown>, unknown>;
|
|
16
|
+
|
|
17
|
+
export const proLayoutContextKey: symbol;
|
|
18
|
+
|
|
19
|
+
export const DEFAULT_PRO_LAYOUT_THEME_CONFIG: ProLayoutThemeConfig;
|
|
20
|
+
export const DEFAULT_PRO_LAYOUT_THEME_TOKENS: Required<ProLayoutThemeTokens>;
|
|
21
|
+
|
|
22
|
+
export const DEFAULT_PRO_LAYOUT_GLOBAL_COLORS: Record<string, string>;
|
|
23
|
+
export const PRO_LAYOUT_COLOR_SETTING_GROUPS: Array<{
|
|
24
|
+
title: string;
|
|
25
|
+
items: Array<{ key: string; label: string; alpha?: boolean }>;
|
|
26
|
+
}>;
|
|
27
|
+
|
|
28
|
+
export function applyProLayoutThemeToElement(
|
|
29
|
+
el: HTMLElement | null | undefined,
|
|
30
|
+
tokens?: ProLayoutThemeTokens | null,
|
|
31
|
+
): void;
|
|
32
|
+
export function applyProLayoutGlobalColors(
|
|
33
|
+
colors?: Record<string, string> | null,
|
|
34
|
+
target?: HTMLElement | null,
|
|
35
|
+
): void;
|
|
36
|
+
export function applyPrimaryColorDerivatives(primary: string, target?: HTMLElement): void;
|
|
37
|
+
export function mergeProLayoutTheme(
|
|
38
|
+
base: ProLayoutThemeConfig,
|
|
39
|
+
patch?: ProLayoutThemeConfig | null,
|
|
40
|
+
): ProLayoutThemeConfig;
|
|
41
|
+
export function persistProLayoutTheme(key: string, config: ProLayoutThemeConfig): void;
|
|
42
|
+
export function readPersistedProLayoutTheme(key: string): ProLayoutThemeConfig | null;
|
|
43
|
+
export function clearPersistedProLayoutTheme(key: string): void;
|
|
44
|
+
export function getLightColor(color: string, level: number): string;
|
|
45
|
+
export function getDarkColor(color: string, level: number): string;
|
|
46
|
+
|
|
47
|
+
export type {
|
|
48
|
+
ProLayoutMode,
|
|
49
|
+
ProLayoutThemeConfig,
|
|
50
|
+
ProLayoutThemeTokens,
|
|
51
|
+
ProLayoutGlobalColors,
|
|
52
|
+
ProLayoutSettingsFabConfig,
|
|
53
|
+
ProLayoutSettingsFabPosition,
|
|
54
|
+
};
|
package/es/pro-layout/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import '../_virtual/_rollup-plugin-inject-process-env.js';
|
|
2
2
|
import './ProLayout.vue.js';
|
|
3
3
|
import './ProLayout.vue.js';
|
|
4
|
+
import './ProLayoutColumnsAside.vue.js';
|
|
5
|
+
import './ProLayoutSettingsDrawer.vue.js';
|
|
6
|
+
import './ProLayoutSettingsFab.vue.js';
|
|
4
7
|
export { default } from './ProLayout.vue_vue_type_script_setup_true_lang.vue.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { InjectionKey, Ref } from 'vue';
|
|
2
|
+
import type { ProLayoutThemeConfig } from './types';
|
|
3
|
+
export interface ProLayoutContext {
|
|
4
|
+
themeConfig: Ref<ProLayoutThemeConfig>;
|
|
5
|
+
openSettingsDrawer: () => void;
|
|
6
|
+
closeSettingsDrawer: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const proLayoutContextKey: InjectionKey<ProLayoutContext>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ProLayoutGlobalColors } from './types';
|
|
2
|
+
export interface ProLayoutColorSettingItem {
|
|
3
|
+
/** CSS 变量名(不含 --) */
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
/** color-picker 是否支持透明度 */
|
|
7
|
+
alpha?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ProLayoutColorSettingGroup {
|
|
10
|
+
title: string;
|
|
11
|
+
items: ProLayoutColorSettingItem[];
|
|
12
|
+
}
|
|
13
|
+
/** 默认全局色(与 site/src/App.vue :root 保持一致) */
|
|
14
|
+
export declare const DEFAULT_PRO_LAYOUT_GLOBAL_COLORS: ProLayoutGlobalColors;
|
|
15
|
+
/** 设置抽屉中的颜色分组 */
|
|
16
|
+
export declare const PRO_LAYOUT_COLOR_SETTING_GROUPS: ProLayoutColorSettingGroup[];
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import '../_virtual/_rollup-plugin-inject-process-env.js';
|
|
2
|
+
|
|
3
|
+
/** 默认全局色(与 site/src/App.vue :root 保持一致) */
|
|
4
|
+
var DEFAULT_PRO_LAYOUT_GLOBAL_COLORS = {
|
|
5
|
+
'el-color-primary': '#1957ff',
|
|
6
|
+
'el-text-color-primary': 'rgba(0, 0, 0, 0.88)',
|
|
7
|
+
'el-text-color-regular': 'rgba(0, 0, 0, 0.6)',
|
|
8
|
+
'el-text-color-secondary': 'rgba(0, 0, 0, 0.6)',
|
|
9
|
+
'el-text-color-placeholder': 'rgba(0, 0, 0, 0.25)',
|
|
10
|
+
'el-bg-color': '#ffffff',
|
|
11
|
+
'el-bg-color-page': '#f4f4f4',
|
|
12
|
+
'el-bg-color-overlay': '#ffffff',
|
|
13
|
+
'el-fill-color-light': '#f4f4f4',
|
|
14
|
+
'el-border-color-extra-light': '#f0f2f5',
|
|
15
|
+
'el-border-color-lighter': '#ebeef5',
|
|
16
|
+
'el-card-border-color': 'rgba(0, 0, 0, 0.2)',
|
|
17
|
+
'el-table-row-hover-bg-color': '#f5f7fa',
|
|
18
|
+
'pro-layout-accent': '#1957ff',
|
|
19
|
+
'pro-layout-accent-dark': '#0f52e6',
|
|
20
|
+
'pro-layout-accent-soft': '#e8eeff',
|
|
21
|
+
'pro-layout-accent-muted': '#d1ddff',
|
|
22
|
+
'pro-layout-header-bg': 'rgba(255, 255, 255, 0.88)',
|
|
23
|
+
'pro-layout-sider-bg': 'rgba(255, 255, 255, 0.92)',
|
|
24
|
+
'pro-layout-main-bg': '#f8fafc',
|
|
25
|
+
'pro-layout-tags-bar-bg': 'rgba(248, 250, 252, 0.92)',
|
|
26
|
+
'pro-layout-text': '#0f172a',
|
|
27
|
+
'pro-layout-text-muted': '#64748b',
|
|
28
|
+
'pro-shadow-color': 'rgba(0, 0, 0, 0.1)',
|
|
29
|
+
'pro-shadow-color-light': 'rgba(0, 0, 0, 0.08)',
|
|
30
|
+
'pro-shadow-color-sider': 'rgba(0, 0, 0, 0.12)',
|
|
31
|
+
'pro-table-border-color': 'rgba(0, 0, 0, 0.08)',
|
|
32
|
+
'pro-table-border-bottom-color': '#f3f4f5',
|
|
33
|
+
'pro-table-header-bg': '#f4f4f4',
|
|
34
|
+
'pro-table-th-color-primary': 'rgba(0, 0, 0, 0.88)',
|
|
35
|
+
'pro-table-td-color-primary': 'rgba(0, 0, 0, 0.88)',
|
|
36
|
+
'pro-table-cell-bg-color': '#f4f4f4',
|
|
37
|
+
'pro-table-row-error-bg': '#fff5f5',
|
|
38
|
+
'pro-table-selected-bg-color': '#f5f7fa',
|
|
39
|
+
'pro-bg-disabled-color': '#f4f4f4',
|
|
40
|
+
'pro-form-label-color': 'rgba(0, 0, 0, 0.88)',
|
|
41
|
+
'pro-form-label-readonly-color': 'rgba(0, 0, 0, 0.45)',
|
|
42
|
+
'pro-select-dropdown-item-selected-color': '#1957ff',
|
|
43
|
+
'pro-el-scrollbar-bg-color': 'rgba(0, 0, 0, 0.6)'
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/** 设置抽屉中的颜色分组 */
|
|
47
|
+
var PRO_LAYOUT_COLOR_SETTING_GROUPS = [{
|
|
48
|
+
title: '主题色',
|
|
49
|
+
items: [{
|
|
50
|
+
key: 'el-color-primary',
|
|
51
|
+
label: '主色(Element)'
|
|
52
|
+
}, {
|
|
53
|
+
key: 'pro-layout-accent',
|
|
54
|
+
label: '布局强调色'
|
|
55
|
+
}, {
|
|
56
|
+
key: 'pro-layout-accent-dark',
|
|
57
|
+
label: '布局强调色(深)'
|
|
58
|
+
}, {
|
|
59
|
+
key: 'pro-select-dropdown-item-selected-color',
|
|
60
|
+
label: '下拉选中色'
|
|
61
|
+
}]
|
|
62
|
+
}, {
|
|
63
|
+
title: '文字色',
|
|
64
|
+
items: [{
|
|
65
|
+
key: 'el-text-color-primary',
|
|
66
|
+
label: '主要文字',
|
|
67
|
+
alpha: true
|
|
68
|
+
}, {
|
|
69
|
+
key: 'el-text-color-regular',
|
|
70
|
+
label: '常规文字',
|
|
71
|
+
alpha: true
|
|
72
|
+
}, {
|
|
73
|
+
key: 'el-text-color-placeholder',
|
|
74
|
+
label: '占位文字',
|
|
75
|
+
alpha: true
|
|
76
|
+
}, {
|
|
77
|
+
key: 'pro-form-label-color',
|
|
78
|
+
label: '表单标签',
|
|
79
|
+
alpha: true
|
|
80
|
+
}, {
|
|
81
|
+
key: 'pro-form-label-readonly-color',
|
|
82
|
+
label: '只读标签',
|
|
83
|
+
alpha: true
|
|
84
|
+
}]
|
|
85
|
+
}, {
|
|
86
|
+
title: '背景与边框',
|
|
87
|
+
items: [{
|
|
88
|
+
key: 'el-bg-color',
|
|
89
|
+
label: '组件背景'
|
|
90
|
+
}, {
|
|
91
|
+
key: 'el-bg-color-page',
|
|
92
|
+
label: '页面背景'
|
|
93
|
+
}, {
|
|
94
|
+
key: 'el-fill-color-light',
|
|
95
|
+
label: '填充浅色'
|
|
96
|
+
}, {
|
|
97
|
+
key: 'el-border-color-lighter',
|
|
98
|
+
label: '边框浅色'
|
|
99
|
+
}, {
|
|
100
|
+
key: 'el-card-border-color',
|
|
101
|
+
label: '卡片边框',
|
|
102
|
+
alpha: true
|
|
103
|
+
}, {
|
|
104
|
+
key: 'pro-bg-disabled-color',
|
|
105
|
+
label: '禁用背景'
|
|
106
|
+
}]
|
|
107
|
+
}, {
|
|
108
|
+
title: '布局壳层',
|
|
109
|
+
items: [{
|
|
110
|
+
key: 'pro-layout-header-bg',
|
|
111
|
+
label: '顶栏背景',
|
|
112
|
+
alpha: true
|
|
113
|
+
}, {
|
|
114
|
+
key: 'pro-layout-sider-bg',
|
|
115
|
+
label: '侧栏背景',
|
|
116
|
+
alpha: true
|
|
117
|
+
}, {
|
|
118
|
+
key: 'pro-layout-main-bg',
|
|
119
|
+
label: '主内容区背景'
|
|
120
|
+
}, {
|
|
121
|
+
key: 'pro-layout-tags-bar-bg',
|
|
122
|
+
label: '页签栏背景',
|
|
123
|
+
alpha: true
|
|
124
|
+
}, {
|
|
125
|
+
key: 'pro-layout-text',
|
|
126
|
+
label: '布局主文字'
|
|
127
|
+
}, {
|
|
128
|
+
key: 'pro-layout-text-muted',
|
|
129
|
+
label: '布局次要文字'
|
|
130
|
+
}]
|
|
131
|
+
}, {
|
|
132
|
+
title: '表格',
|
|
133
|
+
items: [{
|
|
134
|
+
key: 'pro-table-header-bg',
|
|
135
|
+
label: '表头背景'
|
|
136
|
+
}, {
|
|
137
|
+
key: 'pro-table-cell-bg-color',
|
|
138
|
+
label: '单元格背景'
|
|
139
|
+
}, {
|
|
140
|
+
key: 'pro-table-border-color',
|
|
141
|
+
label: '表格边框',
|
|
142
|
+
alpha: true
|
|
143
|
+
}, {
|
|
144
|
+
key: 'pro-table-th-color-primary',
|
|
145
|
+
label: '表头文字',
|
|
146
|
+
alpha: true
|
|
147
|
+
}, {
|
|
148
|
+
key: 'pro-table-selected-bg-color',
|
|
149
|
+
label: '选中行背景'
|
|
150
|
+
}, {
|
|
151
|
+
key: 'el-table-row-hover-bg-color',
|
|
152
|
+
label: '行悬停背景'
|
|
153
|
+
}]
|
|
154
|
+
}, {
|
|
155
|
+
title: '阴影与滚动条',
|
|
156
|
+
items: [{
|
|
157
|
+
key: 'pro-shadow-color',
|
|
158
|
+
label: '通用阴影',
|
|
159
|
+
alpha: true
|
|
160
|
+
}, {
|
|
161
|
+
key: 'pro-shadow-color-sider',
|
|
162
|
+
label: '侧栏阴影',
|
|
163
|
+
alpha: true
|
|
164
|
+
}, {
|
|
165
|
+
key: 'pro-el-scrollbar-bg-color',
|
|
166
|
+
label: '滚动条',
|
|
167
|
+
alpha: true
|
|
168
|
+
}]
|
|
169
|
+
}];
|
|
170
|
+
|
|
171
|
+
export { DEFAULT_PRO_LAYOUT_GLOBAL_COLORS, PRO_LAYOUT_COLOR_SETTING_GROUPS };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ProLayoutGlobalColors, ProLayoutMode, ProLayoutThemeConfig, ProLayoutThemeTokens } from './types';
|
|
2
|
+
export { DEFAULT_PRO_LAYOUT_GLOBAL_COLORS, PRO_LAYOUT_COLOR_SETTING_GROUPS } from './proLayoutGlobalColors';
|
|
3
|
+
export type { ProLayoutColorSettingGroup, ProLayoutColorSettingItem } from './proLayoutGlobalColors';
|
|
4
|
+
export declare const DEFAULT_PRO_LAYOUT_THEME_TOKENS: Required<ProLayoutThemeTokens>;
|
|
5
|
+
export declare const DEFAULT_PRO_LAYOUT_THEME_CONFIG: ProLayoutThemeConfig;
|
|
6
|
+
/** 将 hex / rgb / rgba 转为 #rrggbb,供主色衍生计算 */
|
|
7
|
+
export declare function normalizeColorToHex(color: string): string | null;
|
|
8
|
+
export declare function getLightColor(color: string, level: number): string;
|
|
9
|
+
export declare function getDarkColor(color: string, level: number): string;
|
|
10
|
+
export interface BuildInitialProLayoutThemeOptions {
|
|
11
|
+
themePersist: boolean;
|
|
12
|
+
persistKey: string;
|
|
13
|
+
layoutMode?: ProLayoutMode | string;
|
|
14
|
+
theme?: ProLayoutThemeConfig | null;
|
|
15
|
+
}
|
|
16
|
+
/** 初始化主题:开启持久化且 localStorage 有值时,以已保存配置为准(不被 layoutMode 等 props 覆盖) */
|
|
17
|
+
export declare function buildInitialProLayoutThemeConfig(options: BuildInitialProLayoutThemeOptions): ProLayoutThemeConfig;
|
|
18
|
+
/** 序列化为可 JSON 存储的纯对象(避免 Vue 响应式代理导致写入异常) */
|
|
19
|
+
export declare function cloneProLayoutThemeConfig(config: ProLayoutThemeConfig): ProLayoutThemeConfig;
|
|
20
|
+
export declare function mergeProLayoutTheme(base: ProLayoutThemeConfig, patch?: ProLayoutThemeConfig | null): ProLayoutThemeConfig;
|
|
21
|
+
/** 主色联动:生成 Element primary 色阶与布局 accent 衍生色 */
|
|
22
|
+
export declare function applyPrimaryColorDerivatives(primary: string, target?: HTMLElement): void;
|
|
23
|
+
/** 将全局 CSS 变量写入 document(或指定节点) */
|
|
24
|
+
export declare function applyProLayoutGlobalColors(colors?: ProLayoutGlobalColors | null, target?: HTMLElement | null): void;
|
|
25
|
+
/** 将主题令牌写入布局根节点(仅影响该 ProLayout 实例) */
|
|
26
|
+
export declare function applyProLayoutThemeToElement(el: HTMLElement | null | undefined, tokens?: ProLayoutThemeTokens | null): void;
|
|
27
|
+
export declare function readPersistedProLayoutTheme(key: string): ProLayoutThemeConfig | null;
|
|
28
|
+
export declare function persistProLayoutTheme(key: string, config: ProLayoutThemeConfig): void;
|
|
29
|
+
export declare function clearPersistedProLayoutTheme(key: string): void;
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import '../_virtual/_rollup-plugin-inject-process-env.js';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import { DEFAULT_PRO_LAYOUT_GLOBAL_COLORS } from './proLayoutGlobalColors.js';
|
|
5
|
+
export { DEFAULT_PRO_LAYOUT_GLOBAL_COLORS, PRO_LAYOUT_COLOR_SETTING_GROUPS } from './proLayoutGlobalColors.js';
|
|
6
|
+
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
|
+
var HEX_REG = /^#?[0-9A-Fa-f]{6}$/;
|
|
10
|
+
var DEFAULT_PRO_LAYOUT_THEME_TOKENS = {
|
|
11
|
+
accent: '#1957ff',
|
|
12
|
+
shellBg: 'linear-gradient(135deg, #f1f5f9 0%, #f8fafc 45%, rgba(238, 242, 255, 0.55) 100%)',
|
|
13
|
+
shellRadius: '16px',
|
|
14
|
+
shellBorder: 'rgba(255, 255, 255, 0.65)',
|
|
15
|
+
shellShadow: '0 1px 3px rgba(15, 23, 42, 0.06), 0 12px 40px -8px rgba(15, 23, 42, 0.12)',
|
|
16
|
+
headerBg: 'rgba(255, 255, 255, 0.88)',
|
|
17
|
+
tagsBarBg: 'rgba(248, 250, 252, 0.92)',
|
|
18
|
+
mainBg: '#f8fafc',
|
|
19
|
+
text: '#0f172a',
|
|
20
|
+
textMuted: '#64748b',
|
|
21
|
+
siderBg: 'rgba(255, 255, 255, 0.92)',
|
|
22
|
+
topMenuFontFamily: "'DM Sans', 'Yuanti SC', 'Yuanti TC', 'Hiragino Sans GB', 'PingFang SC', 'Microsoft YaHei UI', system-ui, sans-serif"
|
|
23
|
+
};
|
|
24
|
+
var DEFAULT_PRO_LAYOUT_THEME_CONFIG = {
|
|
25
|
+
layout: 'classic',
|
|
26
|
+
tokens: _objectSpread({}, DEFAULT_PRO_LAYOUT_THEME_TOKENS),
|
|
27
|
+
globalColors: _objectSpread({}, DEFAULT_PRO_LAYOUT_GLOBAL_COLORS),
|
|
28
|
+
isDark: false,
|
|
29
|
+
isCollapse: false,
|
|
30
|
+
isFixedHeader: true,
|
|
31
|
+
isTagsView: true,
|
|
32
|
+
isShowSider: true
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/** 将 hex / rgb / rgba 转为 #rrggbb,供主色衍生计算 */
|
|
36
|
+
function normalizeColorToHex(color) {
|
|
37
|
+
var trimmed = color.trim();
|
|
38
|
+
if (HEX_REG.test(trimmed)) {
|
|
39
|
+
return trimmed.startsWith('#') ? trimmed : "#".concat(trimmed);
|
|
40
|
+
}
|
|
41
|
+
var rgb = trimmed.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);
|
|
42
|
+
if (rgb) {
|
|
43
|
+
return rgbToHex(Number(rgb[1]), Number(rgb[2]), Number(rgb[3]));
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function hexToRgb(hex) {
|
|
48
|
+
var _normalizeColorToHex$, _normalizeColorToHex;
|
|
49
|
+
var normalized = (_normalizeColorToHex$ = (_normalizeColorToHex = normalizeColorToHex(hex)) === null || _normalizeColorToHex === void 0 ? void 0 : _normalizeColorToHex.replace('#', '')) !== null && _normalizeColorToHex$ !== void 0 ? _normalizeColorToHex$ : hex.replace('#', '');
|
|
50
|
+
if (!normalized || normalized.length !== 6) return null;
|
|
51
|
+
var parts = normalized.match(/../g);
|
|
52
|
+
if (!parts || parts.length !== 3) return null;
|
|
53
|
+
return parts.map(function (v) {
|
|
54
|
+
return parseInt(v, 16);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function rgbToHex(r, g, b) {
|
|
58
|
+
var toHex = function toHex(n) {
|
|
59
|
+
var s = Math.max(0, Math.min(255, n)).toString(16);
|
|
60
|
+
return s.length === 1 ? "0".concat(s) : s;
|
|
61
|
+
};
|
|
62
|
+
return "#".concat(toHex(r)).concat(toHex(g)).concat(toHex(b));
|
|
63
|
+
}
|
|
64
|
+
function getLightColor(color, level) {
|
|
65
|
+
var rgb = hexToRgb(color);
|
|
66
|
+
if (!rgb) return color;
|
|
67
|
+
var _rgb$map = rgb.map(function (v) {
|
|
68
|
+
return Math.floor((255 - v) * level + v);
|
|
69
|
+
}),
|
|
70
|
+
_rgb$map2 = _slicedToArray(_rgb$map, 3),
|
|
71
|
+
r = _rgb$map2[0],
|
|
72
|
+
g = _rgb$map2[1],
|
|
73
|
+
b = _rgb$map2[2];
|
|
74
|
+
return rgbToHex(r, g, b);
|
|
75
|
+
}
|
|
76
|
+
function getDarkColor(color, level) {
|
|
77
|
+
var rgb = hexToRgb(color);
|
|
78
|
+
if (!rgb) return color;
|
|
79
|
+
var _rgb$map3 = rgb.map(function (v) {
|
|
80
|
+
return Math.floor(v * (1 - level));
|
|
81
|
+
}),
|
|
82
|
+
_rgb$map4 = _slicedToArray(_rgb$map3, 3),
|
|
83
|
+
r = _rgb$map4[0],
|
|
84
|
+
g = _rgb$map4[1],
|
|
85
|
+
b = _rgb$map4[2];
|
|
86
|
+
return rgbToHex(r, g, b);
|
|
87
|
+
}
|
|
88
|
+
/** 初始化主题:开启持久化且 localStorage 有值时,以已保存配置为准(不被 layoutMode 等 props 覆盖) */
|
|
89
|
+
function buildInitialProLayoutThemeConfig(options) {
|
|
90
|
+
var _DEFAULT_PRO_LAYOUT_T;
|
|
91
|
+
var themePersist = options.themePersist,
|
|
92
|
+
persistKey = options.persistKey,
|
|
93
|
+
layoutMode = options.layoutMode,
|
|
94
|
+
theme = options.theme;
|
|
95
|
+
var persisted = themePersist ? readPersistedProLayoutTheme(persistKey) : null;
|
|
96
|
+
var defaultLayout = (_DEFAULT_PRO_LAYOUT_T = DEFAULT_PRO_LAYOUT_THEME_CONFIG.layout) !== null && _DEFAULT_PRO_LAYOUT_T !== void 0 ? _DEFAULT_PRO_LAYOUT_T : 'classic';
|
|
97
|
+
var resolveLayout = function resolveLayout() {
|
|
98
|
+
for (var _len = arguments.length, candidates = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
99
|
+
candidates[_key] = arguments[_key];
|
|
100
|
+
}
|
|
101
|
+
for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) {
|
|
102
|
+
var item = _candidates[_i];
|
|
103
|
+
if (item) return item;
|
|
104
|
+
}
|
|
105
|
+
return defaultLayout;
|
|
106
|
+
};
|
|
107
|
+
if (themePersist && persisted) {
|
|
108
|
+
return mergeProLayoutTheme(DEFAULT_PRO_LAYOUT_THEME_CONFIG, _objectSpread(_objectSpread(_objectSpread({}, persisted), theme || {}), {}, {
|
|
109
|
+
layout: resolveLayout(persisted.layout, layoutMode, theme === null || theme === void 0 ? void 0 : theme.layout)
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
return mergeProLayoutTheme(DEFAULT_PRO_LAYOUT_THEME_CONFIG, _objectSpread(_objectSpread({}, theme || {}), {}, {
|
|
113
|
+
layout: resolveLayout(layoutMode, theme === null || theme === void 0 ? void 0 : theme.layout)
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** 序列化为可 JSON 存储的纯对象(避免 Vue 响应式代理导致写入异常) */
|
|
118
|
+
function cloneProLayoutThemeConfig(config) {
|
|
119
|
+
return JSON.parse(JSON.stringify(config));
|
|
120
|
+
}
|
|
121
|
+
function mergeProLayoutTheme(base, patch) {
|
|
122
|
+
if (!patch) {
|
|
123
|
+
return _objectSpread(_objectSpread({}, base), {}, {
|
|
124
|
+
tokens: _objectSpread({}, base.tokens),
|
|
125
|
+
globalColors: _objectSpread({}, base.globalColors)
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return _objectSpread(_objectSpread(_objectSpread({}, base), patch), {}, {
|
|
129
|
+
tokens: _objectSpread(_objectSpread({}, base.tokens), patch.tokens || {}),
|
|
130
|
+
globalColors: _objectSpread(_objectSpread({}, base.globalColors), patch.globalColors || {})
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** 主色联动:生成 Element primary 色阶与布局 accent 衍生色 */
|
|
135
|
+
function applyPrimaryColorDerivatives(primary) {
|
|
136
|
+
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;
|
|
137
|
+
var hex = normalizeColorToHex(primary);
|
|
138
|
+
if (!hex) return;
|
|
139
|
+
primary = hex;
|
|
140
|
+
var imp = 'important';
|
|
141
|
+
target.style.setProperty('--el-color-primary', primary, imp);
|
|
142
|
+
target.style.setProperty('--el-color-primary-dark-2', getDarkColor(primary, 0.1), imp);
|
|
143
|
+
for (var i = 1; i <= 9; i++) {
|
|
144
|
+
target.style.setProperty("--el-color-primary-light-".concat(i), getLightColor(primary, i / 10), imp);
|
|
145
|
+
}
|
|
146
|
+
target.style.setProperty('--pro-layout-accent', primary, imp);
|
|
147
|
+
target.style.setProperty('--pro-layout-accent-dark', getDarkColor(primary, 0.35), imp);
|
|
148
|
+
target.style.setProperty('--pro-layout-accent-soft', getLightColor(primary, 0.92), imp);
|
|
149
|
+
target.style.setProperty('--pro-layout-accent-muted', getLightColor(primary, 0.85), imp);
|
|
150
|
+
target.style.setProperty('--pro-select-dropdown-item-selected-color', primary, imp);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** 将全局 CSS 变量写入 document(或指定节点) */
|
|
154
|
+
function applyProLayoutGlobalColors(colors) {
|
|
155
|
+
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : typeof document !== 'undefined' ? document.documentElement : null;
|
|
156
|
+
if (!target) return;
|
|
157
|
+
var merged = _objectSpread(_objectSpread({}, DEFAULT_PRO_LAYOUT_GLOBAL_COLORS), colors || {});
|
|
158
|
+
Object.entries(merged).forEach(function (_ref) {
|
|
159
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
160
|
+
key = _ref2[0],
|
|
161
|
+
value = _ref2[1];
|
|
162
|
+
if (value != null && value !== '') {
|
|
163
|
+
target.style.setProperty("--".concat(key), String(value), 'important');
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
var primary = merged['el-color-primary'] || merged['pro-layout-accent'];
|
|
167
|
+
if (primary) {
|
|
168
|
+
applyPrimaryColorDerivatives(primary, target);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
var TOKEN_VAR_MAP = {
|
|
172
|
+
accent: '--pro-layout-accent',
|
|
173
|
+
shellBg: '--pro-layout-shell-bg',
|
|
174
|
+
shellRadius: '--pro-layout-shell-radius',
|
|
175
|
+
shellBorder: '--pro-layout-shell-border',
|
|
176
|
+
shellShadow: '--pro-layout-shell-shadow',
|
|
177
|
+
headerBg: '--pro-layout-header-bg',
|
|
178
|
+
tagsBarBg: '--pro-layout-tags-bar-bg',
|
|
179
|
+
mainBg: '--pro-layout-main-bg',
|
|
180
|
+
text: '--pro-layout-text',
|
|
181
|
+
textMuted: '--pro-layout-text-muted',
|
|
182
|
+
siderBg: '--pro-layout-sider-bg',
|
|
183
|
+
topMenuFontFamily: '--pro-layout-top-menu-font-family'
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/** 将主题令牌写入布局根节点(仅影响该 ProLayout 实例) */
|
|
187
|
+
function applyProLayoutThemeToElement(el, tokens) {
|
|
188
|
+
if (!el) return;
|
|
189
|
+
var merged = _objectSpread(_objectSpread({}, DEFAULT_PRO_LAYOUT_THEME_TOKENS), tokens || {});
|
|
190
|
+
Object.entries(TOKEN_VAR_MAP).forEach(function (_ref3) {
|
|
191
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
192
|
+
key = _ref4[0],
|
|
193
|
+
cssVar = _ref4[1];
|
|
194
|
+
var value = merged[key];
|
|
195
|
+
if (value != null && value !== '') {
|
|
196
|
+
el.style.setProperty(cssVar, String(value));
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
var accent = merged.accent;
|
|
200
|
+
if (accent && normalizeColorToHex(accent)) {
|
|
201
|
+
el.style.setProperty('--pro-layout-accent-soft', getLightColor(accent, 0.92));
|
|
202
|
+
el.style.setProperty('--pro-layout-accent-muted', getLightColor(accent, 0.85));
|
|
203
|
+
el.style.setProperty('--pro-layout-accent-dark', getDarkColor(accent, 0.35));
|
|
204
|
+
if (typeof document !== 'undefined') {
|
|
205
|
+
applyPrimaryColorDerivatives(accent, document.documentElement);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function readPersistedProLayoutTheme(key) {
|
|
210
|
+
if (typeof window === 'undefined') return null;
|
|
211
|
+
try {
|
|
212
|
+
var raw = window.localStorage.getItem(key);
|
|
213
|
+
if (!raw) return null;
|
|
214
|
+
return JSON.parse(raw);
|
|
215
|
+
} catch (_unused) {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function persistProLayoutTheme(key, config) {
|
|
220
|
+
if (typeof window === 'undefined') return;
|
|
221
|
+
try {
|
|
222
|
+
window.localStorage.setItem(key, JSON.stringify(config));
|
|
223
|
+
} catch (_unused2) {
|
|
224
|
+
/* ignore quota */
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function clearPersistedProLayoutTheme(key) {
|
|
228
|
+
if (typeof window === 'undefined') return;
|
|
229
|
+
window.localStorage.removeItem(key);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export { DEFAULT_PRO_LAYOUT_THEME_CONFIG, DEFAULT_PRO_LAYOUT_THEME_TOKENS, applyPrimaryColorDerivatives, applyProLayoutGlobalColors, applyProLayoutThemeToElement, buildInitialProLayoutThemeConfig, clearPersistedProLayoutTheme, cloneProLayoutThemeConfig, getDarkColor, getLightColor, mergeProLayoutTheme, normalizeColorToHex, persistProLayoutTheme, readPersistedProLayoutTheme };
|