@ditari/bsui 5.1.18 → 5.1.20
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/dist/cjs/components/action-bar/ActionBar.vue.cjs +10 -0
- package/dist/cjs/components/action-bar/ActionBar.vue.cjs.map +1 -0
- package/dist/cjs/components/action-bar/ActionBar.vue.d.ts +47 -0
- package/dist/cjs/components/action-bar/ActionBar.vue2.cjs +114 -0
- package/dist/cjs/components/action-bar/ActionBar.vue2.cjs.map +1 -0
- package/dist/cjs/components/action-bar/index.cjs +16 -0
- package/dist/cjs/components/action-bar/index.cjs.map +1 -0
- package/dist/cjs/components/action-bar/index.d.ts +4 -0
- package/dist/cjs/components/card/Card.cjs.map +1 -1
- package/dist/cjs/components/card/style.cjs.map +1 -1
- package/dist/cjs/components/dic/DicReplace.cjs.map +1 -1
- package/dist/cjs/components/form/FormLayout.cjs +147 -23
- package/dist/cjs/components/form/FormLayout.cjs.map +1 -1
- package/dist/cjs/components/form/FormLayout.d.ts +61 -0
- package/dist/cjs/components/index.cjs +6 -0
- package/dist/cjs/components/index.cjs.map +1 -1
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/layout/AppContext.cjs.map +1 -1
- package/dist/cjs/components/layout/AppLayout.cjs.map +1 -1
- package/dist/cjs/components/layout/List.cjs +25 -8
- package/dist/cjs/components/layout/List.cjs.map +1 -1
- package/dist/cjs/components/layout/Show.cjs.map +1 -1
- package/dist/cjs/components/layout/components/layout/RouterContentName.vue2.cjs.map +1 -1
- package/dist/cjs/components/layout/components/mobile/MobileList.cjs.map +1 -1
- package/dist/cjs/components/layout/style.cjs.map +1 -1
- package/dist/cjs/components/select/Select.vue2.cjs +0 -3
- package/dist/cjs/components/select/Select.vue2.cjs.map +1 -1
- package/dist/cjs/components/table/Table.cjs +13 -12
- package/dist/cjs/components/table/Table.cjs.map +1 -1
- package/dist/cjs/components/table/Table.d.ts +1 -1
- package/dist/cjs/components/table-form/TableForm.cjs.map +1 -1
- package/dist/cjs/components/table-form/TableFormItem.cjs.map +1 -1
- package/dist/cjs/components/table-form/index.cjs.map +1 -1
- package/dist/cjs/components/table-form/interface.cjs.map +1 -1
- package/dist/cjs/components/table-form/style.cjs.map +1 -1
- package/dist/cjs/components/tools-bar/ToolsBar.vue.cjs +10 -0
- package/dist/cjs/components/tools-bar/ToolsBar.vue.cjs.map +1 -0
- package/dist/cjs/components/tools-bar/ToolsBar.vue.d.ts +27 -0
- package/dist/cjs/components/tools-bar/ToolsBar.vue2.cjs +124 -0
- package/dist/cjs/components/tools-bar/ToolsBar.vue2.cjs.map +1 -0
- package/dist/cjs/components/tools-bar/index.cjs +16 -0
- package/dist/cjs/components/tools-bar/index.cjs.map +1 -0
- package/dist/cjs/components/tools-bar/index.d.ts +4 -0
- package/dist/cjs/hooks/useDesign.cjs.map +1 -1
- package/dist/cjs/index.cjs +5 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/utils/withInstall.cjs.map +1 -1
- package/dist/esm/components/action-bar/ActionBar.vue.d.ts +47 -0
- package/dist/esm/components/action-bar/ActionBar.vue.mjs +6 -0
- package/dist/esm/components/action-bar/ActionBar.vue.mjs.map +1 -0
- package/dist/esm/components/action-bar/ActionBar.vue2.mjs +110 -0
- package/dist/esm/components/action-bar/ActionBar.vue2.mjs.map +1 -0
- package/dist/esm/components/action-bar/index.d.ts +4 -0
- package/dist/esm/components/action-bar/index.mjs +11 -0
- package/dist/esm/components/action-bar/index.mjs.map +1 -0
- package/dist/esm/components/card/Card.mjs.map +1 -1
- package/dist/esm/components/card/style.mjs.map +1 -1
- package/dist/esm/components/dic/DicReplace.mjs.map +1 -1
- package/dist/esm/components/form/FormLayout.d.ts +61 -0
- package/dist/esm/components/form/FormLayout.mjs +149 -25
- package/dist/esm/components/form/FormLayout.mjs.map +1 -1
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.mjs +4 -0
- package/dist/esm/components/index.mjs.map +1 -1
- package/dist/esm/components/layout/AppContext.mjs.map +1 -1
- package/dist/esm/components/layout/AppLayout.mjs.map +1 -1
- package/dist/esm/components/layout/List.mjs +26 -9
- package/dist/esm/components/layout/List.mjs.map +1 -1
- package/dist/esm/components/layout/Show.mjs.map +1 -1
- package/dist/esm/components/layout/components/layout/RouterContentName.vue2.mjs.map +1 -1
- package/dist/esm/components/layout/components/mobile/MobileList.mjs.map +1 -1
- package/dist/esm/components/layout/style.mjs.map +1 -1
- package/dist/esm/components/select/Select.vue2.mjs +0 -3
- package/dist/esm/components/select/Select.vue2.mjs.map +1 -1
- package/dist/esm/components/table/Table.d.ts +1 -1
- package/dist/esm/components/table/Table.mjs +13 -12
- package/dist/esm/components/table/Table.mjs.map +1 -1
- package/dist/esm/components/table-form/TableForm.mjs.map +1 -1
- package/dist/esm/components/table-form/TableFormItem.mjs.map +1 -1
- package/dist/esm/components/table-form/index.mjs.map +1 -1
- package/dist/esm/components/table-form/interface.mjs.map +1 -1
- package/dist/esm/components/table-form/style.mjs.map +1 -1
- package/dist/esm/components/tools-bar/ToolsBar.vue.d.ts +27 -0
- package/dist/esm/components/tools-bar/ToolsBar.vue.mjs +6 -0
- package/dist/esm/components/tools-bar/ToolsBar.vue.mjs.map +1 -0
- package/dist/esm/components/tools-bar/ToolsBar.vue2.mjs +120 -0
- package/dist/esm/components/tools-bar/ToolsBar.vue2.mjs.map +1 -0
- package/dist/esm/components/tools-bar/index.d.ts +4 -0
- package/dist/esm/components/tools-bar/index.mjs +11 -0
- package/dist/esm/components/tools-bar/index.mjs.map +1 -0
- package/dist/esm/hooks/useDesign.mjs.map +1 -1
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/utils/withInstall.mjs.map +1 -1
- package/dist/types/components/action-bar/ActionBar.vue.d.ts +47 -0
- package/dist/types/components/action-bar/ActionBar.vue.d.ts.map +1 -0
- package/dist/types/components/action-bar/index.d.ts +4 -0
- package/dist/types/components/action-bar/index.d.ts.map +1 -0
- package/dist/types/components/form/FormLayout.d.ts +61 -0
- package/dist/types/components/form/FormLayout.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/components/layout/List.d.ts.map +1 -1
- package/dist/types/components/layout/components/layout/RouterContentName.vue.d.ts.map +1 -1
- package/dist/types/components/table/Table.d.ts +1 -1
- package/dist/types/components/table/Table.d.ts.map +1 -1
- package/dist/types/components/tools-bar/ToolsBar.vue.d.ts +27 -0
- package/dist/types/components/tools-bar/ToolsBar.vue.d.ts.map +1 -0
- package/dist/types/components/tools-bar/index.d.ts +4 -0
- package/dist/types/components/tools-bar/index.d.ts.map +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -0
package/dist/cjs/index.cjs
CHANGED
|
@@ -7,6 +7,7 @@ var DicReplace = require('./components/dic/DicReplace.cjs');
|
|
|
7
7
|
var Select_vue_vue_type_script_setup_true_lang = require('./components/select/Select.vue2.cjs');
|
|
8
8
|
var Tab_vue_vue_type_script_setup_true_lang = require('./components/tab/Tab.vue2.cjs');
|
|
9
9
|
var Table = require('./components/table/Table.cjs');
|
|
10
|
+
var ActionBar_vue_vue_type_script_setup_true_lang = require('./components/action-bar/ActionBar.vue2.cjs');
|
|
10
11
|
var Card = require('./components/card/Card.cjs');
|
|
11
12
|
var RangePicker_vue_vue_type_script_setup_true_lang = require('./components/date/RangePicker.vue2.cjs');
|
|
12
13
|
var FormLayout = require('./components/form/FormLayout.cjs');
|
|
@@ -23,9 +24,11 @@ var Show = require('./components/layout/Show.cjs');
|
|
|
23
24
|
var _interface = require('./components/table-form/interface.cjs');
|
|
24
25
|
var index$1 = require('./components/table-form/index.cjs');
|
|
25
26
|
var TableFormItem = require('./components/table-form/TableFormItem.cjs');
|
|
27
|
+
var ToolsBar_vue_vue_type_script_setup_true_lang = require('./components/tools-bar/ToolsBar.vue2.cjs');
|
|
26
28
|
|
|
27
29
|
"use strict";
|
|
28
30
|
const install = (app) => {
|
|
31
|
+
console.log("install", index$2);
|
|
29
32
|
Object.keys(index$2).forEach((key) => {
|
|
30
33
|
const component = index$2[key];
|
|
31
34
|
const plugin = component;
|
|
@@ -43,6 +46,7 @@ exports.DicRep = DicReplace.default;
|
|
|
43
46
|
exports.Select = Select_vue_vue_type_script_setup_true_lang.default;
|
|
44
47
|
exports.Tab = Tab_vue_vue_type_script_setup_true_lang.default;
|
|
45
48
|
exports.Table = Table.default;
|
|
49
|
+
exports.ActionBar = ActionBar_vue_vue_type_script_setup_true_lang.default;
|
|
46
50
|
exports.Card = Card.Card;
|
|
47
51
|
exports.RangePicker = RangePicker_vue_vue_type_script_setup_true_lang.default;
|
|
48
52
|
exports.FormLayout = FormLayout.default;
|
|
@@ -61,6 +65,7 @@ exports.tableFormItemProps = _interface.tableFormItemProps;
|
|
|
61
65
|
exports.tableFormProps = _interface.tableFormProps;
|
|
62
66
|
exports.TableForm = index$1.TableForm;
|
|
63
67
|
exports.TableFormItem = TableFormItem.TableFormItem;
|
|
68
|
+
exports.ToolsBar = ToolsBar_vue_vue_type_script_setup_true_lang.default;
|
|
64
69
|
exports.default = index;
|
|
65
70
|
exports.install = install;
|
|
66
71
|
//# sourceMappingURL=index.cjs.map
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import * as components from \"./components\";\r\nimport type { App, DefineComponent, Plugin } from \"vue\";\r\n\r\n// import { version } from \"../package.json\";\r\n\r\nexport * from \"./components\";\r\n\r\n// 定义组件类型,确保每个组件都可能具有 `install` 方法\r\ntype ComponentWithInstall = DefineComponent<\r\n never,\r\n never,\r\n never\r\n> & {\r\n install?: (app: App) => void;\r\n};\r\n\r\nexport const install = (app: App) => {\r\n Object.keys(components).forEach(key => {\r\n const component = components[\r\n key as keyof typeof components\r\n ] as ComponentWithInstall;\r\n // 类型断言,告诉 TypeScript component 可能是一个插件\r\n const plugin = component as Plugin;\r\n // 如果组件有 install 方法,则按插件安装\r\n if (plugin.install) {\r\n app.use(plugin);\r\n }\r\n });\r\n};\r\n\r\nexport default {\r\n // version,\r\n install\r\n};\r\n"],"names":["components"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import * as components from \"./components\";\r\nimport type { App, DefineComponent, Plugin } from \"vue\";\r\n\r\n// import { version } from \"../package.json\";\r\n\r\nexport * from \"./components\";\r\n\r\n// 定义组件类型,确保每个组件都可能具有 `install` 方法\r\ntype ComponentWithInstall = DefineComponent<\r\n never,\r\n never,\r\n never\r\n> & {\r\n install?: (app: App) => void;\r\n};\r\n\r\nexport const install = (app: App) => {\r\n\r\n console.log(\"install\", components);\r\n Object.keys(components).forEach(key => {\r\n const component = components[\r\n key as keyof typeof components\r\n ] as ComponentWithInstall;\r\n // 类型断言,告诉 TypeScript component 可能是一个插件\r\n const plugin = component as Plugin;\r\n // 如果组件有 install 方法,则按插件安装\r\n if (plugin.install) {\r\n app.use(plugin);\r\n }\r\n });\r\n};\r\n\r\nexport default {\r\n // version,\r\n install\r\n};\r\n"],"names":["components"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAM,OAAA,GAAU,CAAC,GAAA,KAAa;AAEnC,EAAA,OAAA,CAAQ,GAAA,CAAI,WAAWA,OAAU,CAAA;AACjC,EAAA,MAAA,CAAO,IAAA,CAAKA,OAAU,CAAA,CAAE,OAAA,CAAQ,CAAA,GAAA,KAAO;AACrC,IAAA,MAAM,SAAA,GAAYA,QAChB,GACF,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,SAAA;AAEf,IAAA,IAAI,OAAO,OAAA,EAAS;AAClB,MAAA,GAAA,CAAI,IAAI,MAAM,CAAA;AAAA,IAChB;AAAA,EACF,CAAC,CAAA;AACH;AAEA,YAAe;AAAA;AAAA,EAEb;AACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withInstall.cjs","sources":["../../../src/utils/withInstall.ts"],"sourcesContent":["// src/utils/withInstall.ts\
|
|
1
|
+
{"version":3,"file":"withInstall.cjs","sources":["../../../src/utils/withInstall.ts"],"sourcesContent":["// src/utils/withInstall.ts\n\nimport type { App, Component, Plugin } from \"vue\";\n\n// 扩展类型定义,允许组件对象拥有其他静态属性\nexport type SFCWithInstall<T> = T &\n Plugin & {\n [key: string]: T; // 允许任意静态属性\n };\n\n/**\n * 优化后的 withInstall 辅助函数\n * * 关键修改:\n * - 将泛型 T 的约束改为更通用的 Vue Component 类型。\n * - 使用 'Component' 或 'ComponentOptionsBase' 来确保兼容性。\n */\nexport const withInstall = <T extends Component>(component: T) => {\n const comp = component as SFCWithInstall<T>;\n\n if (!comp.install) {\n comp.install = (app: App) => {\n // 确保能获取到组件名\n const name = (comp as Component).name;\n if (name) {\n app.component(name, comp);\n }\n };\n }\n return comp;\n};\n"],"names":[],"mappings":";;;AAgBO,MAAM,WAAA,GAAc,CAAsB,SAAA,KAAiB;AAChE,EAAA,MAAM,IAAA,GAAO,SAAA;AAEb,EAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,IAAA,IAAA,CAAK,OAAA,GAAU,CAAC,GAAA,KAAa;AAE3B,MAAA,MAAM,OAAQ,IAAA,CAAmB,IAAA;AACjC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,GAAA,CAAI,SAAA,CAAU,MAAM,IAAI,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type VNode } from "vue";
|
|
2
|
+
interface ButtonItem {
|
|
3
|
+
title: string | VNode;
|
|
4
|
+
status?: boolean | ((record: {
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}) => boolean);
|
|
7
|
+
onClick?: (record: {
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}) => void;
|
|
10
|
+
onEvent?: (record: {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}) => void;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
15
|
+
buttonGroups: {
|
|
16
|
+
type: ArrayConstructor;
|
|
17
|
+
required: false;
|
|
18
|
+
};
|
|
19
|
+
actions: {
|
|
20
|
+
type: ArrayConstructor;
|
|
21
|
+
required: false;
|
|
22
|
+
};
|
|
23
|
+
record: {
|
|
24
|
+
type: ObjectConstructor;
|
|
25
|
+
required: true;
|
|
26
|
+
};
|
|
27
|
+
}>, {
|
|
28
|
+
props: any;
|
|
29
|
+
isShow: (item: ButtonItem) => boolean;
|
|
30
|
+
visibleButtons: import("vue").ComputedRef<ButtonItem[]>;
|
|
31
|
+
showDivider: (item: ButtonItem) => boolean;
|
|
32
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
33
|
+
buttonGroups: {
|
|
34
|
+
type: ArrayConstructor;
|
|
35
|
+
required: false;
|
|
36
|
+
};
|
|
37
|
+
actions: {
|
|
38
|
+
type: ArrayConstructor;
|
|
39
|
+
required: false;
|
|
40
|
+
};
|
|
41
|
+
record: {
|
|
42
|
+
type: ObjectConstructor;
|
|
43
|
+
required: true;
|
|
44
|
+
};
|
|
45
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
46
|
+
export default _default;
|
|
47
|
+
//# sourceMappingURL=ActionBar.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionBar.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { defineComponent, computed, resolveComponent, createElementBlock, openBlock, withModifiers, Fragment, renderList, createCommentVNode, createBlock, resolveDynamicComponent, createTextVNode, toDisplayString } from 'vue';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defProps = Object.defineProperties;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
const _hoisted_1 = ["onClick"];
|
|
24
|
+
var _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, {
|
|
25
|
+
name: "DActionBar"
|
|
26
|
+
}), {
|
|
27
|
+
__name: "ActionBar",
|
|
28
|
+
props: {
|
|
29
|
+
buttonGroups: { type: Array, required: false },
|
|
30
|
+
actions: { type: Array, required: false },
|
|
31
|
+
record: { type: Object, required: true }
|
|
32
|
+
},
|
|
33
|
+
setup(__props) {
|
|
34
|
+
const props = __props;
|
|
35
|
+
const isShow = (item) => {
|
|
36
|
+
var _a;
|
|
37
|
+
if (typeof item.status === "function") {
|
|
38
|
+
return item.status(props.record);
|
|
39
|
+
}
|
|
40
|
+
return (_a = item.status) != null ? _a : true;
|
|
41
|
+
};
|
|
42
|
+
const visibleButtons = computed(() => {
|
|
43
|
+
const groups = props.actions || props.buttonGroups || [];
|
|
44
|
+
return groups.filter((item) => isShow(item));
|
|
45
|
+
});
|
|
46
|
+
const showDivider = (item) => {
|
|
47
|
+
if (!isShow(item)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const visibleIndex = visibleButtons.value.findIndex((v) => v.title === item.title);
|
|
51
|
+
return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;
|
|
52
|
+
};
|
|
53
|
+
return (_ctx, _cache) => {
|
|
54
|
+
const _component_a_divider = resolveComponent("a-divider");
|
|
55
|
+
return openBlock(), createElementBlock("div", {
|
|
56
|
+
onClick: _cache[0] || (_cache[0] = withModifiers(() => {
|
|
57
|
+
}, ["stop"]))
|
|
58
|
+
}, [
|
|
59
|
+
(openBlock(true), createElementBlock(
|
|
60
|
+
Fragment,
|
|
61
|
+
null,
|
|
62
|
+
renderList(__props.actions || __props.buttonGroups || [], (item, index) => {
|
|
63
|
+
return openBlock(), createElementBlock(
|
|
64
|
+
Fragment,
|
|
65
|
+
{ key: index },
|
|
66
|
+
[
|
|
67
|
+
isShow(item) ? (openBlock(), createElementBlock("a", {
|
|
68
|
+
key: 0,
|
|
69
|
+
onClick: withModifiers(($event) => {
|
|
70
|
+
var _a;
|
|
71
|
+
return (_a = item.onClick || item.onEvent) == null ? void 0 : _a(__props.record);
|
|
72
|
+
}, ["stop"])
|
|
73
|
+
}, [
|
|
74
|
+
item.title instanceof Object ? (openBlock(), createBlock(resolveDynamicComponent(item.title), {
|
|
75
|
+
key: 0,
|
|
76
|
+
record: __props.record
|
|
77
|
+
}, null, 8, ["record"])) : (openBlock(), createElementBlock(
|
|
78
|
+
Fragment,
|
|
79
|
+
{ key: 1 },
|
|
80
|
+
[
|
|
81
|
+
createTextVNode(
|
|
82
|
+
toDisplayString(item.title),
|
|
83
|
+
1
|
|
84
|
+
/* TEXT */
|
|
85
|
+
)
|
|
86
|
+
],
|
|
87
|
+
64
|
|
88
|
+
/* STABLE_FRAGMENT */
|
|
89
|
+
))
|
|
90
|
+
], 8, _hoisted_1)) : createCommentVNode("v-if", true),
|
|
91
|
+
showDivider(item) ? (openBlock(), createBlock(_component_a_divider, {
|
|
92
|
+
key: 1,
|
|
93
|
+
type: "vertical",
|
|
94
|
+
style: { "border-color": "#3e7fff", "border-width": "2px" }
|
|
95
|
+
})) : createCommentVNode("v-if", true)
|
|
96
|
+
],
|
|
97
|
+
64
|
|
98
|
+
/* STABLE_FRAGMENT */
|
|
99
|
+
);
|
|
100
|
+
}),
|
|
101
|
+
128
|
|
102
|
+
/* KEYED_FRAGMENT */
|
|
103
|
+
))
|
|
104
|
+
]);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}));
|
|
108
|
+
|
|
109
|
+
export { _sfc_main as default };
|
|
110
|
+
//# sourceMappingURL=ActionBar.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionBar.vue2.mjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n import { computed, type VNode } from \"vue\";\r\n\r\n defineOptions({\r\n name: \"DActionBar\"\r\n });\r\n\r\n interface ButtonItem {\r\n title: string | VNode;\r\n status?: boolean | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n }\r\n\r\n // 2. 普通的 Props 声明\r\n const props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n /**\r\n * 判断按钮是否显示\r\n */\r\n const isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n };\r\n\r\n /**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\n const visibleButtons = computed(() => {\r\n const groups: ButtonItem[] = props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n });\r\n\r\n /**\r\n * 判断分隔线状态\r\n */\r\n const showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex((v: ButtonItem) => v.title === item.title);\r\n return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;\r\n };\r\n</script>\r\n\r\n<template>\r\n <div @click.stop>\r\n <template v-for=\"(item, index) in actions || buttonGroups || []\" :key=\"index\">\r\n <a v-if=\"isShow(item)\" @click.stop=\"(item.onClick || item.onEvent)?.(record)\">\r\n <template v-if=\"item.title instanceof Object\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["_createElementBlock","_openBlock","_Fragment","_withModifiers","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeE,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiB,SAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GAAuB,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AACrE,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK,KAAK,CAAA;AAC7F,MAAA,OAAO,YAAA,KAAiB,CAAA,CAAA,IAAM,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAC7E,CAAA;;;0BAIAA,kBAAA,CAgBM,KAAA,EAAA;AAAA,QAhBA,OAAA,0CAAD,MAAA;AAAA,QAAA,CAAA,EAAW,CAAA,MAAA,CAAA,CAAA;AAAA;SACdC,SAAA,CAAA,IAAA,CAAA,EAAAD,kBAAA;AAAA,UAcWE,QAAA;AAAA;qBAduB,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBAA0C,KAAA,EAAK;AAAA,cAAA;AAAA,gBACjE,OAAO,IAAI,CAAA,iBAApBF,mBAOI,GAAA,EAAA;AAAA;kBAPoB,OAAA,EAAKG,aAAA,CAAA,CAAA,MAAA,KAAA;;AAAQ,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA,EAAM,CAAA,MAAA,CAAA;AAAA;kBACzD,IAAA,CAAK,iBAAiB,MAAA,iBACpCC,WAAA,CAA+CC,uBAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,2DAEvCL,kBAAA;AAAA,oBAEWE,QAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNI,eAAA;AAAA,wBAAAC,eAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,iBADxBH,YAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import './ActionBar.vue.mjs';
|
|
2
|
+
import _sfc_main from './ActionBar.vue2.mjs';
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
_sfc_main.install = function(app) {
|
|
6
|
+
app.component(_sfc_main.name, _sfc_main);
|
|
7
|
+
return app;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { _sfc_main as ActionBar, _sfc_main as default };
|
|
11
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/components/action-bar/index.ts"],"sourcesContent":["import ActionBar from \"./ActionBar.vue\";\r\nimport type { App } from \"vue\";\r\n\r\nActionBar.install = function (app: App) {\r\n app.component(ActionBar.name!, ActionBar);\r\n return app;\r\n};\r\n\r\nexport { ActionBar };\r\nexport default ActionBar;\r\n"],"names":["ActionBar"],"mappings":";;;;AAGAA,SAAA,CAAU,OAAA,GAAU,SAAU,GAAA,EAAU;AACtC,EAAA,GAAA,CAAI,SAAA,CAAUA,SAAA,CAAU,IAAA,EAAOA,SAAS,CAAA;AACxC,EAAA,OAAO,GAAA;AACT,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.mjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\
|
|
1
|
+
{"version":3,"file":"Card.mjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\nimport { defineComponent } from \"vue\";\n\nimport { cx } from \"@emotion/css\"; // 引入 cx\n\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\nimport { withInstall } from \"../../utils/withInstall\";\n\nimport { useStyle } from \"./style\";\n\nconst _Card = defineComponent({\n name: \"DCard\",\n props: {\n title: String\n },\n setup(props, { slots }) {\n // 初始化 Design Hook,传入组件名 'card'\n const { getPrefixCls } = useDesign(\"card\");\n\n // 初始化 Emotion 样式\n const styles = useStyle();\n\n return () => {\n // 生成语义化类名\n const rootCls = getPrefixCls();\n const headerCls = getPrefixCls(\"head\");\n const iconCls = getPrefixCls(\"icon\");\n const titleCls = getPrefixCls(\"title\");\n const actionCls = getPrefixCls(\"action\");\n const bodyCls = getPrefixCls(\"body\");\n\n return (\n <div class={cx(rootCls, styles.container)}>\n {/* Header 区域 */}\n <div class={cx(headerCls, styles.header)}>\n {slots.icon && (\n <div class={cx(iconCls, styles.icon)}>\n {slots.icon()}\n </div>\n )}\n <div class={cx(titleCls, styles.header_title)}>\n {props.title}\n </div>\n </div>\n {/*action*/}\n {slots.action && (\n <div class={cx(actionCls, styles.action)}>\n {slots.action()}\n </div>\n )}\n\n {/* Body 区域 */}\n <div class={cx(bodyCls, styles.body)}>\n {slots.default?.()}\n </div>\n </div>\n );\n };\n }\n});\n\nexport const Card = withInstall(_Card);\n"],"names":["_Card","defineComponent","name","props","title","String","setup","slots","getPrefixCls","useDesign","styles","useStyle","rootCls","headerCls","iconCls","titleCls","actionCls","bodyCls","_createVNode","cx","container","header","icon","header_title","action","body","default","Card","withInstall"],"mappings":";;;;;;;AAUA,MAAMA,wBAAQC,eAAAA,CAAgB;AAAA,EAC5BC,IAAAA,EAAM,OAAA;AAAA,EACNC,KAAAA,EAAO;AAAA,IACLC,KAAAA,EAAOC;AAAAA,GACT;AAAA,EACAC,MAAMH,KAAAA,EAAO;AAAA,IAAEI;AAAAA,GAAM,EAAG;AAEtB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,UAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,QAAAA,EAAS;AAExB,IAAA,OAAO,MAAM;AAtBjB,MAAA,IAAA,EAAA;AAwBM,MAAA,MAAMC,UAAUJ,YAAAA,EAAa;AAC7B,MAAA,MAAMK,SAAAA,GAAYL,aAAa,MAAM,CAAA;AACrC,MAAA,MAAMM,OAAAA,GAAUN,aAAa,MAAM,CAAA;AACnC,MAAA,MAAMO,QAAAA,GAAWP,aAAa,OAAO,CAAA;AACrC,MAAA,MAAMQ,SAAAA,GAAYR,aAAa,QAAQ,CAAA;AACvC,MAAA,MAAMS,OAAAA,GAAUT,aAAa,MAAM,CAAA;AAEnC,MAAA,OAAAU,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,EAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,EAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACGC,EAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CACjCf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAEhBJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACWC,EAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAC1CpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAIfG,KAAAA,CAAMiB,MAAAA,IAAMN,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACCC,EAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CACrCjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAElBN,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGWC,EAAAA,CAAGF,OAAAA,EAASP,MAAAA,CAAOe,IAAI;AAAA,SAAC,CAAA,CACjClB,EAAAA,GAAAA,KAAAA,CAAMmB,YAANnB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA;AAAA,IAI1B,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMoB,IAAAA,GAAOC,YAAY5B,KAAK;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","sources":["../../../../src/components/card/style.ts"],"sourcesContent":["import { css } from \"@emotion/css\";\
|
|
1
|
+
{"version":3,"file":"style.mjs","sources":["../../../../src/components/card/style.ts"],"sourcesContent":["import { css } from \"@emotion/css\";\n\nexport const useStyle = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n background-color: #fff;\n `,\n header: css`\n display: flex;\n margin-bottom: 20px;\n `,\n header_title: css`\n line-height: 1.5;\n /* 如果标题过长,防止换行破坏布局,可以加这行 */\n white-space: nowrap;\n `,\n // 可选:如果你需要对 icon 容器做特殊处理(例如防止图标被压缩)\n icon: css`\n margin-right: 10px;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0; /* 防止标题过长时挤压图标 */\n `,\n action: css`\n margin-bottom: 10px;\n `,\n body: css`\n display: flex;\n flex-direction: column;\n `\n };\n};\n"],"names":[],"mappings":";;;AAEO,MAAM,WAAW,MAAM;AAC5B,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,GAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAKX,MAAA,EAAQ,GAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAIR,YAAA,EAAc,GAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAMd,IAAA,EAAM,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAMN,MAAA,EAAQ,GAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAGR,IAAA,EAAM,GAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAIR;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DicReplace.mjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\
|
|
1
|
+
{"version":3,"file":"DicReplace.mjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useDicStore, useNavTabStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: [String, Number],\n default: \"\"\n }\n },\n setup(props) {\n const { list } = storeToRefs(useNavTabStore());\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = list.value.some(\n item =>\n item.fullPath === route.fullPath &&\n item.meta?.keepAlive\n );\n const dicValueTxt = ref<string>(\"\");\n\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n >(\"fetchDic\", async (_name: string) => {\n // console.warn(\n // `fetchDic 未注入,使用默认实现,name: ${name}`\n // );\n return [];\n });\n\n onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n loadDicData().then(() =>\n console.log(\"success load dic\")\n );\n\n watch(\n () => props.value,\n (val: string | number) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string | number) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(\n name,\n value?.toString()\n );\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","Number","setup","list","storeToRefs","useNavTabStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","item","fullPath","meta","keepAlive","dicValueTxt","ref","fetchDic","inject","_name","onActivated","loadDicData","onMounted","replace","error","console","then","log","watch","val","immediate","toString","_createVNode"],"mappings":"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"}
|
|
@@ -1,6 +1,33 @@
|
|
|
1
|
+
declare const RESPONSIVE_CONFIG: {
|
|
2
|
+
readonly xs: {
|
|
3
|
+
readonly span: 24;
|
|
4
|
+
readonly colsPerRow: 1;
|
|
5
|
+
};
|
|
6
|
+
readonly sm: {
|
|
7
|
+
readonly span: 12;
|
|
8
|
+
readonly colsPerRow: 2;
|
|
9
|
+
};
|
|
10
|
+
readonly md: {
|
|
11
|
+
readonly span: 8;
|
|
12
|
+
readonly colsPerRow: 3;
|
|
13
|
+
};
|
|
14
|
+
readonly lg: {
|
|
15
|
+
readonly span: 6;
|
|
16
|
+
readonly colsPerRow: 4;
|
|
17
|
+
};
|
|
18
|
+
readonly xl: {
|
|
19
|
+
readonly span: 6;
|
|
20
|
+
readonly colsPerRow: 4;
|
|
21
|
+
};
|
|
22
|
+
readonly xxl: {
|
|
23
|
+
readonly span: 6;
|
|
24
|
+
readonly colsPerRow: 4;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
1
27
|
/**
|
|
2
28
|
* 查询表单渲染
|
|
3
29
|
* 展开,隐藏功能
|
|
30
|
+
* 支持响应式栅格布局
|
|
4
31
|
*/
|
|
5
32
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
6
33
|
scheme: {
|
|
@@ -19,6 +46,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
19
46
|
type: BooleanConstructor;
|
|
20
47
|
default: boolean;
|
|
21
48
|
};
|
|
49
|
+
responsiveConfig: {
|
|
50
|
+
type: () => Partial<typeof RESPONSIVE_CONFIG>;
|
|
51
|
+
default: () => {};
|
|
52
|
+
};
|
|
22
53
|
}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("query" | "reset")[], "query" | "reset", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
23
54
|
scheme: {
|
|
24
55
|
type: () => any[] | Record<string, any>;
|
|
@@ -36,6 +67,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
36
67
|
type: BooleanConstructor;
|
|
37
68
|
default: boolean;
|
|
38
69
|
};
|
|
70
|
+
responsiveConfig: {
|
|
71
|
+
type: () => Partial<typeof RESPONSIVE_CONFIG>;
|
|
72
|
+
default: () => {};
|
|
73
|
+
};
|
|
39
74
|
}>> & Readonly<{
|
|
40
75
|
onQuery?: ((...args: any[]) => any) | undefined;
|
|
41
76
|
onReset?: ((...args: any[]) => any) | undefined;
|
|
@@ -44,6 +79,32 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
44
79
|
scheme: any[] | Record<string, any>;
|
|
45
80
|
model: Record<string, unknown>;
|
|
46
81
|
labelWidth: string;
|
|
82
|
+
responsiveConfig: Partial<{
|
|
83
|
+
readonly xs: {
|
|
84
|
+
readonly span: 24;
|
|
85
|
+
readonly colsPerRow: 1;
|
|
86
|
+
};
|
|
87
|
+
readonly sm: {
|
|
88
|
+
readonly span: 12;
|
|
89
|
+
readonly colsPerRow: 2;
|
|
90
|
+
};
|
|
91
|
+
readonly md: {
|
|
92
|
+
readonly span: 8;
|
|
93
|
+
readonly colsPerRow: 3;
|
|
94
|
+
};
|
|
95
|
+
readonly lg: {
|
|
96
|
+
readonly span: 6;
|
|
97
|
+
readonly colsPerRow: 4;
|
|
98
|
+
};
|
|
99
|
+
readonly xl: {
|
|
100
|
+
readonly span: 6;
|
|
101
|
+
readonly colsPerRow: 4;
|
|
102
|
+
};
|
|
103
|
+
readonly xxl: {
|
|
104
|
+
readonly span: 6;
|
|
105
|
+
readonly colsPerRow: 4;
|
|
106
|
+
};
|
|
107
|
+
}>;
|
|
47
108
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
48
109
|
export default _default;
|
|
49
110
|
//# sourceMappingURL=FormLayout.d.ts.map
|
|
@@ -1,8 +1,60 @@
|
|
|
1
|
-
import { defineComponent, ref, watchEffect, watch, createVNode, onMounted } from 'vue';
|
|
2
|
-
import { Space, Button, Form, Row, Col, FormItem } from 'ant-design-vue';
|
|
1
|
+
import { defineComponent, ref, watchEffect, watch, createVNode, computed, onMounted, nextTick } from 'vue';
|
|
2
|
+
import { Grid, Space, Button, Form, Row, Col, FormItem } from 'ant-design-vue';
|
|
3
3
|
import { SearchOutlined, ReloadOutlined, DoubleRightOutlined } from '@ant-design/icons-vue';
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
const {
|
|
23
|
+
useBreakpoint
|
|
24
|
+
} = Grid;
|
|
25
|
+
const RESPONSIVE_CONFIG = {
|
|
26
|
+
xs: {
|
|
27
|
+
span: 24,
|
|
28
|
+
colsPerRow: 1
|
|
29
|
+
},
|
|
30
|
+
// < 576px - 手机
|
|
31
|
+
sm: {
|
|
32
|
+
span: 12,
|
|
33
|
+
colsPerRow: 2
|
|
34
|
+
},
|
|
35
|
+
// ≥ 576px - 平板竖屏
|
|
36
|
+
md: {
|
|
37
|
+
span: 8,
|
|
38
|
+
colsPerRow: 3
|
|
39
|
+
},
|
|
40
|
+
// ≥ 768px - 平板横屏
|
|
41
|
+
lg: {
|
|
42
|
+
span: 6,
|
|
43
|
+
colsPerRow: 4
|
|
44
|
+
},
|
|
45
|
+
// ≥ 992px - 小桌面
|
|
46
|
+
xl: {
|
|
47
|
+
span: 6,
|
|
48
|
+
colsPerRow: 4
|
|
49
|
+
},
|
|
50
|
+
// ≥ 1200px - 桌面
|
|
51
|
+
xxl: {
|
|
52
|
+
span: 6,
|
|
53
|
+
colsPerRow: 4
|
|
54
|
+
}
|
|
55
|
+
// ≥ 1600px - 大桌面
|
|
56
|
+
};
|
|
57
|
+
const DEFAULT_VISIBLE_ROWS = 2;
|
|
6
58
|
var FormLayout = /* @__PURE__ */ defineComponent({
|
|
7
59
|
name: "DQueryForm",
|
|
8
60
|
props: {
|
|
@@ -21,6 +73,11 @@ var FormLayout = /* @__PURE__ */ defineComponent({
|
|
|
21
73
|
loading: {
|
|
22
74
|
type: Boolean,
|
|
23
75
|
default: false
|
|
76
|
+
},
|
|
77
|
+
// 自定义响应式配置(可选)
|
|
78
|
+
responsiveConfig: {
|
|
79
|
+
type: Object,
|
|
80
|
+
default: () => ({})
|
|
24
81
|
}
|
|
25
82
|
},
|
|
26
83
|
emits: ["reset", "query"],
|
|
@@ -39,6 +96,8 @@ var FormLayout = /* @__PURE__ */ defineComponent({
|
|
|
39
96
|
const {
|
|
40
97
|
rowRef,
|
|
41
98
|
actionSpan,
|
|
99
|
+
actionPush,
|
|
100
|
+
currentSpan,
|
|
42
101
|
onExpend,
|
|
43
102
|
expendBtnVisible,
|
|
44
103
|
isExpend
|
|
@@ -115,47 +174,109 @@ var FormLayout = /* @__PURE__ */ defineComponent({
|
|
|
115
174
|
}
|
|
116
175
|
function useExpand() {
|
|
117
176
|
const gridCount = 24;
|
|
118
|
-
const
|
|
119
|
-
const
|
|
177
|
+
const screens = useBreakpoint();
|
|
178
|
+
const mergedConfig = computed(() => __spreadValues(__spreadValues({}, RESPONSIVE_CONFIG), props.responsiveConfig));
|
|
179
|
+
const currentConfig = computed(() => {
|
|
180
|
+
const config = mergedConfig.value;
|
|
181
|
+
if (screens.value.xxl) return config.xxl;
|
|
182
|
+
if (screens.value.xl) return config.xl;
|
|
183
|
+
if (screens.value.lg) return config.lg;
|
|
184
|
+
if (screens.value.md) return config.md;
|
|
185
|
+
if (screens.value.sm) return config.sm;
|
|
186
|
+
return config.xs;
|
|
187
|
+
});
|
|
188
|
+
const currentSpan2 = computed(() => currentConfig.value.span);
|
|
189
|
+
const colsPerRow = computed(() => currentConfig.value.colsPerRow);
|
|
120
190
|
const actionSpan2 = ref(6);
|
|
191
|
+
const actionPush2 = ref(0);
|
|
121
192
|
const isExpend2 = ref(false);
|
|
122
193
|
const expendBtnVisible2 = ref(false);
|
|
123
194
|
const rowRef2 = ref(null);
|
|
124
195
|
onMounted(() => {
|
|
125
|
-
|
|
196
|
+
updateLayout();
|
|
197
|
+
});
|
|
198
|
+
watch(screens, () => {
|
|
199
|
+
nextTick(() => {
|
|
200
|
+
updateLayout();
|
|
201
|
+
});
|
|
202
|
+
}, {
|
|
203
|
+
deep: true
|
|
126
204
|
});
|
|
127
205
|
function onExpend2() {
|
|
128
206
|
isExpend2.value = !isExpend2.value;
|
|
129
|
-
|
|
207
|
+
updateLayout();
|
|
130
208
|
}
|
|
131
|
-
function
|
|
132
|
-
var _a
|
|
133
|
-
const
|
|
209
|
+
function updateLayout() {
|
|
210
|
+
var _a;
|
|
211
|
+
const rowEl = (_a = rowRef2.value) == null ? void 0 : _a.$el;
|
|
212
|
+
if (!rowEl) return;
|
|
213
|
+
const colEl = Array.from(rowEl.children);
|
|
134
214
|
const colElLen = colEl.length - 1;
|
|
135
|
-
|
|
136
|
-
const
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
215
|
+
if (colElLen <= 0) return;
|
|
216
|
+
const actualSpan = currentSpan2.value;
|
|
217
|
+
const cols = colsPerRow.value;
|
|
218
|
+
colEl.forEach((col, index) => {
|
|
219
|
+
if (index === colElLen) return;
|
|
220
|
+
updateColSpan(col, actualSpan);
|
|
221
|
+
col.style.display = "";
|
|
222
|
+
});
|
|
223
|
+
const lastSlotIndex = cols * DEFAULT_VISIBLE_ROWS - 1;
|
|
224
|
+
if (colElLen > lastSlotIndex) {
|
|
140
225
|
expendBtnVisible2.value = true;
|
|
226
|
+
if (!isExpend2.value) {
|
|
227
|
+
colEl.forEach((col, index) => {
|
|
228
|
+
if (index === colElLen) return;
|
|
229
|
+
if (index >= lastSlotIndex) {
|
|
230
|
+
col.style.display = "none";
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
actionSpan2.value = actualSpan;
|
|
234
|
+
actionPush2.value = 0;
|
|
235
|
+
} else {
|
|
236
|
+
const lastRowItems = colElLen % cols;
|
|
237
|
+
const lastRowOccupied = lastRowItems === 0 ? gridCount : lastRowItems * actualSpan;
|
|
238
|
+
const remainingCols = gridCount - lastRowOccupied;
|
|
239
|
+
if (remainingCols >= actualSpan) {
|
|
240
|
+
actionSpan2.value = remainingCols;
|
|
241
|
+
actionPush2.value = 0;
|
|
242
|
+
} else {
|
|
243
|
+
actionSpan2.value = actualSpan;
|
|
244
|
+
actionPush2.value = gridCount - actualSpan;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
141
247
|
} else {
|
|
142
|
-
|
|
248
|
+
expendBtnVisible2.value = false;
|
|
249
|
+
const lastRowItems = colElLen % cols;
|
|
250
|
+
const lastRowOccupied = lastRowItems === 0 ? gridCount : lastRowItems * actualSpan;
|
|
251
|
+
const remainingCols = gridCount - lastRowOccupied;
|
|
252
|
+
if (remainingCols >= actualSpan) {
|
|
253
|
+
actionSpan2.value = remainingCols;
|
|
254
|
+
actionPush2.value = 0;
|
|
255
|
+
} else {
|
|
256
|
+
actionSpan2.value = actualSpan;
|
|
257
|
+
actionPush2.value = gridCount - actualSpan;
|
|
258
|
+
}
|
|
143
259
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
260
|
+
}
|
|
261
|
+
function updateColSpan(colEl, newSpan) {
|
|
262
|
+
const classList = colEl.classList;
|
|
263
|
+
for (let i = classList.length - 1; i >= 0; i--) {
|
|
264
|
+
const className = classList[i];
|
|
265
|
+
if (className.startsWith("ant-col-") && !className.includes("-offset-") && !className.includes("-push-") && !className.includes("-pull-")) {
|
|
266
|
+
const span = parseInt(className.replace("ant-col-", ""), 10);
|
|
267
|
+
if (!isNaN(span)) {
|
|
268
|
+
classList.remove(className);
|
|
269
|
+
break;
|
|
149
270
|
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (expendBtnVisible2.value) {
|
|
153
|
-
isExpend2.value ? actionSpan2.value = remainingCols : actionSpan2.value = colSpan;
|
|
271
|
+
}
|
|
154
272
|
}
|
|
273
|
+
classList.add(`ant-col-${newSpan}`);
|
|
155
274
|
}
|
|
156
275
|
return {
|
|
157
276
|
rowRef: rowRef2,
|
|
158
277
|
actionSpan: actionSpan2,
|
|
278
|
+
actionPush: actionPush2,
|
|
279
|
+
currentSpan: currentSpan2,
|
|
159
280
|
onExpend: onExpend2,
|
|
160
281
|
expendBtnVisible: expendBtnVisible2,
|
|
161
282
|
isExpend: isExpend2
|
|
@@ -180,8 +301,11 @@ var FormLayout = /* @__PURE__ */ defineComponent({
|
|
|
180
301
|
var _a;
|
|
181
302
|
return [(_a = slots.default) == null ? void 0 : _a.call(slots), createVNode(Col, {
|
|
182
303
|
"span": actionSpan.value,
|
|
304
|
+
"push": actionPush.value,
|
|
183
305
|
"style": {
|
|
184
|
-
|
|
306
|
+
display: "flex",
|
|
307
|
+
justifyContent: "flex-end",
|
|
308
|
+
alignItems: "flex-start"
|
|
185
309
|
}
|
|
186
310
|
}, {
|
|
187
311
|
default: () => [createVNode(FormItem, null, {
|