@ditari/bsui 5.0.29 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/cjs/components/card/Card.cjs +49 -0
  2. package/dist/cjs/components/card/Card.cjs.map +1 -0
  3. package/dist/cjs/components/card/index.cjs +8 -0
  4. package/dist/cjs/components/card/index.cjs.map +1 -0
  5. package/dist/cjs/components/card/style.cjs +40 -0
  6. package/dist/cjs/components/card/style.cjs.map +1 -0
  7. package/dist/cjs/components/index.cjs +11 -0
  8. package/dist/cjs/components/index.cjs.map +1 -1
  9. package/dist/cjs/components/layout/AppContext.cjs +7 -0
  10. package/dist/cjs/components/layout/AppContext.cjs.map +1 -0
  11. package/dist/cjs/components/layout/Layout.vue2.cjs +11 -16
  12. package/dist/cjs/components/layout/Layout.vue2.cjs.map +1 -1
  13. package/dist/cjs/components/layout/Show.cjs +6 -1
  14. package/dist/cjs/components/layout/Show.cjs.map +1 -1
  15. package/dist/cjs/components/layout/components/layout/ThemeApp.vue2.cjs +0 -1
  16. package/dist/cjs/components/layout/components/layout/ThemeApp.vue2.cjs.map +1 -1
  17. package/dist/cjs/components/layout/components/menu/Menu.cjs +38 -39
  18. package/dist/cjs/components/layout/components/menu/Menu.cjs.map +1 -1
  19. package/dist/cjs/components/table-form/TableForm.cjs +109 -0
  20. package/dist/cjs/components/table-form/TableForm.cjs.map +1 -0
  21. package/dist/cjs/components/table-form/TableFormItem.cjs +112 -0
  22. package/dist/cjs/components/table-form/TableFormItem.cjs.map +1 -0
  23. package/dist/cjs/components/table-form/index.cjs +16 -0
  24. package/dist/cjs/components/table-form/index.cjs.map +1 -0
  25. package/dist/cjs/components/table-form/interface.cjs +58 -0
  26. package/dist/cjs/components/table-form/interface.cjs.map +1 -0
  27. package/dist/cjs/components/table-form/style.cjs +124 -0
  28. package/dist/cjs/components/table-form/style.cjs.map +1 -0
  29. package/dist/cjs/hooks/useDesign.cjs +31 -0
  30. package/dist/cjs/hooks/useDesign.cjs.map +1 -0
  31. package/dist/cjs/index.cjs +13 -3
  32. package/dist/cjs/index.cjs.map +1 -1
  33. package/dist/cjs/utils/withInstall.cjs +18 -0
  34. package/dist/cjs/utils/withInstall.cjs.map +1 -0
  35. package/dist/esm/components/card/Card.mjs +47 -0
  36. package/dist/esm/components/card/Card.mjs.map +1 -0
  37. package/dist/esm/components/card/index.mjs +4 -0
  38. package/dist/esm/components/card/index.mjs.map +1 -0
  39. package/dist/esm/components/card/style.mjs +38 -0
  40. package/dist/esm/components/card/style.mjs.map +1 -0
  41. package/dist/esm/components/index.mjs +5 -0
  42. package/dist/esm/components/index.mjs.map +1 -1
  43. package/dist/esm/components/layout/AppContext.mjs +5 -0
  44. package/dist/esm/components/layout/AppContext.mjs.map +1 -0
  45. package/dist/esm/components/layout/Layout.vue2.mjs +12 -17
  46. package/dist/esm/components/layout/Layout.vue2.mjs.map +1 -1
  47. package/dist/esm/components/layout/Show.mjs +7 -2
  48. package/dist/esm/components/layout/Show.mjs.map +1 -1
  49. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs +0 -1
  50. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs.map +1 -1
  51. package/dist/esm/components/layout/components/menu/Menu.mjs +41 -42
  52. package/dist/esm/components/layout/components/menu/Menu.mjs.map +1 -1
  53. package/dist/esm/components/table-form/TableForm.mjs +106 -0
  54. package/dist/esm/components/table-form/TableForm.mjs.map +1 -0
  55. package/dist/esm/components/table-form/TableFormItem.mjs +110 -0
  56. package/dist/esm/components/table-form/TableFormItem.mjs.map +1 -0
  57. package/dist/esm/components/table-form/index.mjs +10 -0
  58. package/dist/esm/components/table-form/index.mjs.map +1 -0
  59. package/dist/esm/components/table-form/interface.mjs +54 -0
  60. package/dist/esm/components/table-form/interface.mjs.map +1 -0
  61. package/dist/esm/components/table-form/style.mjs +122 -0
  62. package/dist/esm/components/table-form/style.mjs.map +1 -0
  63. package/dist/esm/hooks/useDesign.mjs +28 -0
  64. package/dist/esm/hooks/useDesign.mjs.map +1 -0
  65. package/dist/esm/index.mjs +4 -0
  66. package/dist/esm/index.mjs.map +1 -1
  67. package/dist/esm/utils/withInstall.mjs +16 -0
  68. package/dist/esm/utils/withInstall.mjs.map +1 -0
  69. package/dist/types/components/card/Card.d.ts +6 -0
  70. package/dist/types/components/card/Card.d.ts.map +1 -0
  71. package/dist/types/components/card/index.d.ts +3 -0
  72. package/dist/types/components/card/index.d.ts.map +1 -0
  73. package/dist/types/components/card/style.d.ts +9 -0
  74. package/dist/types/components/card/style.d.ts.map +1 -0
  75. package/dist/types/components/index.d.ts +2 -0
  76. package/dist/types/components/index.d.ts.map +1 -1
  77. package/dist/types/components/layout/AppContext.d.ts +11 -0
  78. package/dist/types/components/layout/AppContext.d.ts.map +1 -0
  79. package/dist/types/components/layout/Layout.vue.d.ts +11 -2
  80. package/dist/types/components/layout/Layout.vue.d.ts.map +1 -1
  81. package/dist/types/components/layout/Show.d.ts.map +1 -1
  82. package/dist/types/components/layout/components/layout/ThemeApp.vue.d.ts.map +1 -1
  83. package/dist/types/components/layout/components/menu/Menu.d.ts.map +1 -1
  84. package/dist/types/components/table-form/TableForm.d.ts +57 -0
  85. package/dist/types/components/table-form/TableForm.d.ts.map +1 -0
  86. package/dist/types/components/table-form/TableFormItem.d.ts +23 -0
  87. package/dist/types/components/table-form/TableFormItem.d.ts.map +1 -0
  88. package/dist/types/components/table-form/index.d.ts +9 -0
  89. package/dist/types/components/table-form/index.d.ts.map +1 -0
  90. package/dist/types/components/table-form/interface.d.ts +57 -0
  91. package/dist/types/components/table-form/interface.d.ts.map +1 -0
  92. package/dist/types/components/table-form/style.d.ts +12 -0
  93. package/dist/types/components/table-form/style.d.ts.map +1 -0
  94. package/dist/types/hooks/useDesign.d.ts +8 -0
  95. package/dist/types/hooks/useDesign.d.ts.map +1 -0
  96. package/dist/types/utils/withInstall.d.ts +12 -0
  97. package/dist/types/utils/withInstall.d.ts.map +1 -0
  98. package/package.json +3 -3
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var css = require('@emotion/css');
5
+ var useDesign = require('../../hooks/useDesign.cjs');
6
+ var withInstall = require('../../utils/withInstall.cjs');
7
+ var style = require('./style.cjs');
8
+
9
+ "use strict";
10
+ const _Card = /* @__PURE__ */ vue.defineComponent({
11
+ name: "DCard",
12
+ props: {
13
+ title: String
14
+ },
15
+ setup(props, {
16
+ slots
17
+ }) {
18
+ const {
19
+ getPrefixCls
20
+ } = useDesign.useDesign("card");
21
+ const styles = style.useStyle();
22
+ return () => {
23
+ var _a;
24
+ const rootCls = getPrefixCls();
25
+ const headerCls = getPrefixCls("head");
26
+ const iconCls = getPrefixCls("icon");
27
+ const titleCls = getPrefixCls("title");
28
+ const actionCls = getPrefixCls("action");
29
+ const bodyCls = getPrefixCls("body");
30
+ return vue.createVNode("div", {
31
+ "class": css.cx(rootCls, styles.container)
32
+ }, [vue.createVNode("div", {
33
+ "class": css.cx(headerCls, styles.header)
34
+ }, [slots.icon && vue.createVNode("div", {
35
+ "class": css.cx(iconCls, styles.icon)
36
+ }, [slots.icon()]), vue.createVNode("div", {
37
+ "class": css.cx(titleCls, styles.header_title)
38
+ }, [props.title])]), slots.action && vue.createVNode("div", {
39
+ "class": css.cx(actionCls, styles.action)
40
+ }, [slots.action()]), vue.createVNode("div", {
41
+ "class": css.cx(bodyCls, styles.body)
42
+ }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])]);
43
+ };
44
+ }
45
+ });
46
+ const Card = withInstall.withInstall(_Card);
47
+
48
+ exports.Card = Card;
49
+ //# sourceMappingURL=Card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.cjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\r\nimport { defineComponent } from \"vue\";\r\n\r\nimport { cx } from \"@emotion/css\"; // 引入 cx\r\n\r\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nimport { useStyle } from \"./style\";\r\n\r\nconst _Card = defineComponent({\r\n name: \"DCard\",\r\n props: {\r\n title: String\r\n },\r\n setup(props, { slots }) {\r\n // 初始化 Design Hook,传入组件名 'card'\r\n const { getPrefixCls } = useDesign(\"card\");\r\n\r\n // 初始化 Emotion 样式\r\n const styles = useStyle();\r\n\r\n return () => {\r\n // 生成语义化类名\r\n const rootCls = getPrefixCls();\r\n const headerCls = getPrefixCls(\"head\");\r\n const iconCls = getPrefixCls(\"icon\");\r\n const titleCls = getPrefixCls(\"title\");\r\n const actionCls = getPrefixCls(\"action\");\r\n const bodyCls = getPrefixCls(\"body\");\r\n\r\n return (\r\n <div class={cx(rootCls, styles.container)}>\r\n {/* Header 区域 */}\r\n <div class={cx(headerCls, styles.header)}>\r\n {slots.icon && <div class={cx(iconCls, styles.icon)}>{slots.icon()}</div>}\r\n <div class={cx(titleCls, styles.header_title)}>{props.title}</div>\r\n </div>\r\n {/*action*/}\r\n {slots.action && <div class={cx(actionCls, styles.action)}>{slots.action()}</div>}\r\n\r\n {/* Body 区域 */}\r\n <div class={cx(bodyCls, styles.body)}>{slots.default?.()}</div>\r\n </div>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const Card = withInstall(_Card);\r\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,mBAAAA,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,oBAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,cAAAA,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,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,MAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,MAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAgBC,MAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CAAGf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAAOJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAC7DC,MAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAAGpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAG5DG,KAAAA,CAAMiB,MAAAA,IAAMN,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAgBC,MAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CAAGjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAAON,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGrEC,MAAAA,CAAGF,OAAAA,EAASP,MAAAA,CAAOe,IAAI;AAAA,SAAC,CAAA,CAAGlB,EAAAA,GAAAA,KAAAA,CAAMmB,YAANnB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA;AAAA,IAG9D,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMoB,IAAAA,GAAOC,wBAAY5B,KAAK;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var Card = require('./Card.cjs');
4
+
5
+ "use strict";
6
+
7
+ exports.Card = Card.Card;
8
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var css = require('@emotion/css');
4
+
5
+ "use strict";
6
+ const useStyle = () => {
7
+ return {
8
+ container: css.css`
9
+ display: flex;
10
+ flex-direction: column;
11
+ background-color: #fff;
12
+ `,
13
+ header: css.css`
14
+ display: flex;
15
+ margin-bottom: 20px;
16
+ `,
17
+ header_title: css.css`
18
+ line-height: 1.5;
19
+ /* 如果标题过长,防止换行破坏布局,可以加这行 */
20
+ white-space: nowrap;
21
+ `,
22
+ // 可选:如果你需要对 icon 容器做特殊处理(例如防止图标被压缩)
23
+ icon: css.css`
24
+ margin-right: 10px;
25
+ display: inline-flex;
26
+ align-items: center;
27
+ flex-shrink: 0; /* 防止标题过长时挤压图标 */
28
+ `,
29
+ action: css.css`
30
+ margin-bottom: 10px;
31
+ `,
32
+ body: css.css`
33
+ display: flex;
34
+ flex-direction: column;
35
+ `
36
+ };
37
+ };
38
+
39
+ exports.useStyle = useStyle;
40
+ //# sourceMappingURL=style.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.cjs","sources":["../../../../src/components/card/style.ts"],"sourcesContent":["import { css } from \"@emotion/css\";\r\n\r\nexport const useStyle = () => {\r\n return {\r\n container: css`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: #fff;\r\n `,\r\n header: css`\r\n display: flex;\r\n margin-bottom: 20px;\r\n `,\r\n header_title: css`\r\n line-height: 1.5;\r\n /* 如果标题过长,防止换行破坏布局,可以加这行 */\r\n white-space: nowrap;\r\n `,\r\n // 可选:如果你需要对 icon 容器做特殊处理(例如防止图标被压缩)\r\n icon: css`\r\n margin-right: 10px;\r\n display: inline-flex;\r\n align-items: center;\r\n flex-shrink: 0; /* 防止标题过长时挤压图标 */\r\n `,\r\n action: css`\r\n margin-bottom: 10px;\r\n `,\r\n body: css`\r\n display: flex;\r\n flex-direction: column;\r\n `\r\n };\r\n};\r\n"],"names":["css"],"mappings":";;;;;AAEO,MAAM,WAAW,MAAM;AAC5B,EAAA,OAAO;AAAA,IACL,SAAA,EAAWA,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAKX,MAAA,EAAQA,OAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAIR,YAAA,EAAcA,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAMd,IAAA,EAAMA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAMN,MAAA,EAAQA,OAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAGR,IAAA,EAAMA,OAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAIR;AACF;;;;"}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ require('./card/index.cjs');
3
4
  require('./date/index.cjs');
4
5
  require('./dic/index.cjs');
5
6
  require('./form/index.cjs');
@@ -8,10 +9,12 @@ require('./layout/index.cjs');
8
9
  require('./select/index.cjs');
9
10
  require('./tab/index.cjs');
10
11
  require('./table/index.cjs');
12
+ var index = require('./table-form/index.cjs');
11
13
  var DicReplace = require('./dic/DicReplace.cjs');
12
14
  var Select_vue_vue_type_script_setup_true_lang = require('./select/Select.vue2.cjs');
13
15
  var Tab_vue_vue_type_script_setup_true_lang = require('./tab/Tab.vue2.cjs');
14
16
  var Table = require('./table/Table.cjs');
17
+ var Card = require('./card/Card.cjs');
15
18
  var RangePicker_vue_vue_type_script_setup_true_lang = require('./date/RangePicker.vue2.cjs');
16
19
  var FormLayout = require('./form/FormLayout.cjs');
17
20
  var Moon = require('./icon/Moon.vue.cjs');
@@ -22,13 +25,17 @@ var Menu = require('./layout/components/menu/Menu.cjs');
22
25
  var Layout_vue_vue_type_script_setup_true_lang = require('./layout/Layout.vue2.cjs');
23
26
  var List = require('./layout/List.cjs');
24
27
  var Show = require('./layout/Show.cjs');
28
+ var _interface = require('./table-form/interface.cjs');
29
+ var TableFormItem = require('./table-form/TableFormItem.cjs');
25
30
 
26
31
  "use strict";
27
32
 
33
+ exports.TableForm = index.TableForm;
28
34
  exports.DicRep = DicReplace.default;
29
35
  exports.Select = Select_vue_vue_type_script_setup_true_lang.default;
30
36
  exports.Tab = Tab_vue_vue_type_script_setup_true_lang.default;
31
37
  exports.Table = Table.default;
38
+ exports.Card = Card.Card;
32
39
  exports.RangePicker = RangePicker_vue_vue_type_script_setup_true_lang.default;
33
40
  exports.FormLayout = FormLayout.default;
34
41
  exports.Moon = Moon.default;
@@ -39,4 +46,8 @@ exports.Menu = Menu.default;
39
46
  exports.Layout = Layout_vue_vue_type_script_setup_true_lang.default;
40
47
  exports.List = List.default;
41
48
  exports.Show = Show.default;
49
+ exports.DEFAULT_STYLES_CONFIG = _interface.DEFAULT_STYLES_CONFIG;
50
+ exports.tableFormItemProps = _interface.tableFormItemProps;
51
+ exports.tableFormProps = _interface.tableFormProps;
52
+ exports.TableFormItem = TableFormItem.TableFormItem;
42
53
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ "use strict";
4
+ const AppContextKey = Symbol("d-bsui-context");
5
+
6
+ exports.AppContextKey = AppContextKey;
7
+ //# sourceMappingURL=AppContext.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppContext.cjs","sources":["../../../../src/components/layout/AppContext.ts"],"sourcesContent":["import { ComputedRef, VNode } from \"vue\";\r\n\r\nexport const AppContextKey = Symbol(\"d-bsui-context\");\r\nexport interface AppContext {\r\n // 水印\r\n watermarkContent?: ComputedRef<{ content: string }>;\r\n renderMenuIcon?: (item: {\r\n icon: string;\r\n }) => VNode | VNode[];\r\n}\r\n"],"names":[],"mappings":";;;AAEO,MAAM,aAAA,GAAgB,OAAO,gBAAgB;;;;"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var vue = require('vue');
6
6
  var vueRouter = require('vue-router');
7
7
  var pinia = require('pinia');
8
+ var AppContext = require('./AppContext.cjs');
8
9
  var Menu = require('./components/menu/Menu.cjs');
9
10
  var SettingDrawer = require('./components/settings/SettingDrawer.cjs');
10
11
  var store = require('@ditari/store');
@@ -22,16 +23,19 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
22
23
  watermark: { type: Object, required: false, default: () => ({
23
24
  content: ""
24
25
  }) },
25
- isSettings: { type: Boolean, required: false, default: true }
26
+ isSettings: { type: Boolean, required: false, default: false },
27
+ renderMenuIcon: { type: Function, required: false, default: void 0 }
26
28
  },
27
29
  emits: ["onMenuClick"],
28
30
  setup(__props, { emit: __emit }) {
29
31
  const props = __props;
30
32
  const emits = __emit;
31
33
  const { layout, modeConfig, sideTokenStyle } = pinia.storeToRefs(store.useAppStore());
32
- const route = vueRouter.useRoute();
33
- useWatermark();
34
34
  const { onMenuClick } = useMenu();
35
+ vue.provide(AppContext.AppContextKey, {
36
+ watermarkContent: vue.computed(() => props.watermark || ""),
37
+ renderMenuIcon: props.renderMenuIcon
38
+ });
35
39
  const {
36
40
  layoutStyle,
37
41
  siderStyle,
@@ -40,6 +44,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
40
44
  } = useStyle();
41
45
  useKeepAlive();
42
46
  function useKeepAlive() {
47
+ const route = vueRouter.useRoute();
43
48
  const { save } = store.useKeepAliveStore();
44
49
  vue.watch(
45
50
  () => route.path,
@@ -51,17 +56,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
51
56
  }
52
57
  );
53
58
  }
54
- function useWatermark() {
55
- const watermarkContent = vue.ref("");
56
- vue.provide("watermarkContent", watermarkContent);
57
- vue.watch(
58
- () => props.watermark,
59
- (val) => {
60
- watermarkContent.value = val.content || "";
61
- },
62
- { deep: true, immediate: true }
63
- );
64
- }
65
59
  function useStyle() {
66
60
  const layoutStyle2 = css.css`
67
61
  height: 100vh;
@@ -135,7 +129,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
135
129
  theme: "light",
136
130
  collapsible: "",
137
131
  trigger: null,
138
- class: vue.normalizeClass(vue.unref(siderStyle))
132
+ class: vue.normalizeClass(vue.unref(siderStyle)),
133
+ width: vue.unref(layout).sideWidth
139
134
  }, {
140
135
  default: vue.withCtx(() => [
141
136
  vue.createElementVNode("div", _hoisted_1, [
@@ -145,7 +140,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
145
140
  ]),
146
141
  _: 3
147
142
  /* FORWARDED */
148
- }, 8, ["collapsed", "class"]),
143
+ }, 8, ["collapsed", "class", "width"]),
149
144
  vue.createVNode(_component_a_layout, {
150
145
  class: vue.normalizeClass(vue.unref(rightStyle))
151
146
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.vue2.cjs","sources":["../../../../src/components/layout/Layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, provide, ref, watch } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport DMenu from \"./components/menu/Menu\";\r\nimport SettingDrawer from \"./components/settings/SettingDrawer\";\r\nimport {\r\n useAppStore,\r\n useKeepAliveStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport HeaderLayout from \"./components/layout/HeaderLayout.vue\";\r\nimport RouterContent from \"./components/layout/RouterContent.vue\";\r\n\r\nconst props = defineProps({\n watermark: { type: Object, required: false, default: () => ({\r\n content: \"\"\r\n }) },\n isSettings: { type: Boolean, required: false, default: true }\n});\r\nconst emits = defineEmits([\"onMenuClick\"]);\r\n\r\nconst { layout, modeConfig, sideTokenStyle } =\r\n storeToRefs(useAppStore());\r\nconst route = useRoute();\r\nuseWatermark();\r\nconst { onMenuClick } = useMenu();\r\n\r\nconst {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n} = useStyle();\r\nuseKeepAlive();\r\n\r\nfunction useKeepAlive() {\r\n // 保存需要被缓存的标签\r\n const { save } = useKeepAliveStore();\r\n\r\n watch(\r\n () => route.path,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n}\r\n\r\nfunction useWatermark() {\r\n const watermarkContent = ref(\"\");\r\n provide(\"watermarkContent\", watermarkContent);\r\n // 监听 watermark 的变化\r\n watch(\r\n () => props.watermark,\r\n val => {\r\n watermarkContent.value = val.content || \"\";\r\n },\r\n { deep: true, immediate: true }\r\n );\r\n}\r\n\r\nfunction useStyle() {\r\n const layoutStyle = css`\r\n height: 100vh;\r\n `;\r\n\r\n const transitionStyle = css`\r\n transition: margin-left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `;\r\n\r\n const left = computed(\r\n () =>\r\n `${layout.value.collapsed ? layout.value.collapsedWidth : layout.value.sideWidth}px`\r\n );\r\n\r\n const siderStyle = computed(\r\n () => css`\r\n position: fixed !important;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n width: ${layout.value.sideWidth}px;\r\n\r\n .app-side {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n ${modeConfig.value.mode === \"light\"\r\n ? `background:${sideTokenStyle.value.bgColor};`\r\n : \"\"}\r\n }\r\n `\r\n );\r\n\r\n const rightStyle = computed(\r\n () => css`\r\n margin-left: ${left.value};\r\n ${transitionStyle}\r\n `\r\n );\r\n\r\n const rightContentStyle = computed(\r\n () => css`\r\n padding-top: ${layout.value.headerHeight}px;\r\n `\r\n );\r\n\r\n return {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n };\r\n}\r\n\r\nfunction useMenu() {\r\n const onMenuClick = (item: never) => {\r\n emits(\"onMenuClick\", item);\r\n };\r\n\r\n return {\r\n onMenuClick\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-layout :class=\"layoutStyle\">\r\n <a-layout-sider\r\n v-model:collapsed=\"layout.collapsed\"\r\n theme=\"light\"\r\n collapsible\r\n :trigger=\"null\"\r\n :class=\"siderStyle\"\r\n >\r\n <div class=\"app-side\">\r\n <slot name=\"logo\"></slot>\r\n <d-menu @onMenuClick=\"onMenuClick\" />\r\n </div>\r\n </a-layout-sider>\r\n <a-layout :class=\"rightStyle\">\r\n <header-layout>\r\n <slot name=\"headerRight\"></slot>\r\n </header-layout>\r\n <a-layout-content :class=\"rightContentStyle\">\r\n <RouterContent />\r\n </a-layout-content>\r\n </a-layout>\r\n </a-layout>\r\n\r\n <SettingDrawer v-if=\"isSettings\" />\r\n <a-back-top></a-back-top>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["storeToRefs","useAppStore","useRoute","useKeepAliveStore","watch","ref","provide","layoutStyle","css","computed","siderStyle","rightStyle","rightContentStyle","onMenuClick","_createVNode","_unref","_createElementVNode","_renderSlot","DMenu","HeaderLayout","RouterContent","_createBlock","SettingDrawer"],"mappings":"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"}
1
+ {"version":3,"file":"Layout.vue2.cjs","sources":["../../../../src/components/layout/Layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, provide, VNode, watch } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport DMenu from \"./components/menu/Menu\";\r\nimport SettingDrawer from \"./components/settings/SettingDrawer\";\r\nimport {\r\n useAppStore,\r\n useKeepAliveStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport HeaderLayout from \"./components/layout/HeaderLayout.vue\";\r\nimport RouterContent from \"./components/layout/RouterContent.vue\";\r\n\r\nconst props = defineProps({\n watermark: { type: Object, required: false, default: () => ({\r\n content: \"\"\r\n }) },\n isSettings: { type: Boolean, required: false, default: false },\n renderMenuIcon: { type: Function, required: false, default: undefined }\n});\r\nconst emits = defineEmits([\"onMenuClick\"]);\r\n\r\nconst { layout, modeConfig, sideTokenStyle } =\r\n storeToRefs(useAppStore());\r\n\r\nconst { onMenuClick } = useMenu();\r\n\r\nprovide<AppContext>(AppContextKey, {\r\n watermarkContent: computed(() => props.watermark || \"\"),\r\n renderMenuIcon: props.renderMenuIcon\r\n});\r\n\r\nconst {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n} = useStyle();\r\nuseKeepAlive();\r\n\r\nfunction useKeepAlive() {\r\n const route = useRoute();\r\n // 保存需要被缓存的标签\r\n const { save } = useKeepAliveStore();\r\n\r\n watch(\r\n () => route.path,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n}\r\n\r\nfunction useStyle() {\r\n const layoutStyle = css`\r\n height: 100vh;\r\n `;\r\n\r\n const transitionStyle = css`\r\n transition: margin-left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `;\r\n\r\n const left = computed(\r\n () =>\r\n `${layout.value.collapsed ? layout.value.collapsedWidth : layout.value.sideWidth}px`\r\n );\r\n\r\n const siderStyle = computed(\r\n () => css`\r\n position: fixed !important;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n width: ${layout.value.sideWidth}px;\r\n\r\n .app-side {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n ${modeConfig.value.mode === \"light\"\r\n ? `background:${sideTokenStyle.value.bgColor};`\r\n : \"\"}\r\n }\r\n `\r\n );\r\n\r\n const rightStyle = computed(\r\n () => css`\r\n margin-left: ${left.value};\r\n ${transitionStyle}\r\n `\r\n );\r\n\r\n const rightContentStyle = computed(\r\n () => css`\r\n padding-top: ${layout.value.headerHeight}px;\r\n `\r\n );\r\n\r\n return {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n };\r\n}\r\n\r\nfunction useMenu() {\r\n const onMenuClick = (item: never) => {\r\n emits(\"onMenuClick\", item);\r\n };\r\n\r\n return {\r\n onMenuClick\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-layout :class=\"layoutStyle\">\r\n <a-layout-sider\r\n v-model:collapsed=\"layout.collapsed\"\r\n theme=\"light\"\r\n collapsible\r\n :trigger=\"null\"\r\n :class=\"siderStyle\"\r\n :width=\"layout.sideWidth\"\r\n >\r\n <div class=\"app-side\">\r\n <slot name=\"logo\"></slot>\r\n <d-menu @onMenuClick=\"onMenuClick\" />\r\n </div>\r\n </a-layout-sider>\r\n <a-layout :class=\"rightStyle\">\r\n <header-layout>\r\n <slot name=\"headerRight\"></slot>\r\n </header-layout>\r\n <a-layout-content :class=\"rightContentStyle\">\r\n <RouterContent />\r\n </a-layout-content>\r\n </a-layout>\r\n </a-layout>\r\n\r\n <SettingDrawer v-if=\"isSettings\" />\r\n <a-back-top></a-back-top>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["storeToRefs","useAppStore","provide","AppContextKey","computed","useRoute","useKeepAliveStore","watch","layoutStyle","css","siderStyle","rightStyle","rightContentStyle","onMenuClick","_createVNode","_unref","_createElementVNode","_renderSlot","DMenu","HeaderLayout","RouterContent","_createBlock","SettingDrawer"],"mappings":"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"}
@@ -7,6 +7,7 @@ var vueRouter = require('vue-router');
7
7
  var antDesignVue = require('ant-design-vue');
8
8
  var pinia = require('pinia');
9
9
  var core = require('@vueuse/core');
10
+ var AppContext = require('./AppContext.cjs');
10
11
  var iconsVue = require('@ant-design/icons-vue');
11
12
  var store = require('@ditari/store');
12
13
  var css = require('@emotion/css');
@@ -30,7 +31,11 @@ const show = /* @__PURE__ */ vue.defineComponent({
30
31
  const {
31
32
  useToken
32
33
  } = antDesignVue.theme;
33
- const watermarkContent = vue.ref(vue.inject("watermarkContent", ""));
34
+ const appContext = vue.inject(AppContext.AppContextKey, null);
35
+ const watermarkContent = vue.computed(() => {
36
+ var _a;
37
+ return (_a = appContext == null ? void 0 : appContext.watermarkContent) == null ? void 0 : _a.value.content;
38
+ });
34
39
  const {
35
40
  token
36
41
  } = useToken();
@@ -1 +1 @@
1
- {"version":3,"file":"Show.cjs","sources":["../../../../src/components/layout/Show.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n inject,\r\n ref\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport {\r\n Flex,\r\n PageHeader,\r\n theme,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst getProps = () => {\r\n return {\r\n close: {\r\n type: Boolean,\r\n default: false\r\n }\r\n };\r\n};\r\nconst show = defineComponent({\r\n name: \"DShowLayout\",\r\n props: getProps(),\r\n setup(props, { slots, expose }) {\r\n const { useToken } = theme;\r\n const watermarkContent = ref(\r\n inject(\"watermarkContent\", \"\")\r\n );\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { layout, modeConfig, refresh } =\r\n storeToRefs(useAppStore());\r\n const { deleteTabs } = useNavTabStore();\r\n\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const { y } = useWindowScroll();\r\n\r\n const pageHeaderStyle = computed(\r\n () => css`\r\n position: sticky;\r\n top: ${layout.value.headerHeight}px;\r\n z-index: 10;\r\n padding: 0;\r\n transition: all 0.3s;\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n ${y.value > 0\r\n ? \"box-shadow:0 10px 10px rgba(0, 0, 0, 0.15);\"\r\n : \"\"}\r\n .ant-page-header-back {\r\n height: 100%;\r\n margin-right: 0;\r\n\r\n .ant-page-header-back-button {\r\n height: 100%;\r\n padding: 0 6px !important;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n\r\n .ant-page-header-heading-title {\r\n font-size: 14px;\r\n }\r\n `\r\n );\r\n const contentStyle = computed(\r\n () => css`\r\n padding: 10px 10px\r\n ${slots.bottomFooter ? \"50px\" : \"0\"};\r\n background: ${token.value.colorBgLayout};\r\n `\r\n );\r\n const footerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n height: 50px;\r\n left: ${layout.value.collapsed\r\n ? layout.value.collapsedWidth\r\n : layout.value.sideWidth}px;\r\n z-index: 10;\r\n padding: 10px;\r\n background: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : \"#fff\"};\r\n box-shadow: 6px 0 10px rgba(0, 0, 0, 0.15);\r\n transition: left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `\r\n );\r\n const pageTitle = () => (\r\n <div>{route.meta.title || \"无标题\"}</div>\r\n );\r\n const ghost = ref(false);\r\n\r\n const onBack = () => {\r\n if (props.close) {\r\n // 返回关闭标签\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n } else {\r\n // 不关闭标签\r\n router.go(-1);\r\n }\r\n };\r\n\r\n const onClosePage = () => {\r\n refresh.value = true;\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n };\r\n\r\n expose({\r\n close: onClosePage\r\n });\r\n\r\n return () => (\r\n <Watermark content={watermarkContent.value}>\r\n <Flex vertical={true}>\r\n <PageHeader\r\n ghost={ghost.value}\r\n class={pageHeaderStyle.value}\r\n onBack={() => onBack()}\r\n title={pageTitle()}\r\n >\r\n {{\r\n backIcon: () => (\r\n <div>\r\n <LeftOutlined\r\n style={{ fontSize: \"26px\" }}\r\n />\r\n </div>\r\n ),\r\n extra: () => slots.extra?.(),\r\n footer: () => slots.footer?.(),\r\n subTitle: () => slots.subTitle?.()\r\n }}\r\n </PageHeader>\r\n <div class={contentStyle.value}>\r\n {slots.default?.()}\r\n </div>\r\n {slots.bottomFooter ? (\r\n <div class={footerStyle.value}>\r\n {slots.bottomFooter?.()}\r\n </div>\r\n ) : null}\r\n </Flex>\r\n </Watermark>\r\n );\r\n }\r\n});\r\n\r\nexport default show;\r\n"],"names":["getProps","close","type","Boolean","default","show","defineComponent","name","props","setup","slots","expose","useToken","theme","watermarkContent","ref","inject","token","layout","modeConfig","refresh","storeToRefs","useAppStore","deleteTabs","useNavTabStore","route","useRoute","router","useRouter","y","useWindowScroll","pageHeaderStyle","computed","css","value","headerHeight","colorBgLayout","contentStyle","bottomFooter","footerStyle","collapsed","collapsedWidth","sideWidth","mode","colorBgContainer","pageTitle","_createVNode","meta","title","ghost","onBack","fullPath","go","onClosePage","Watermark","Flex","PageHeader","backIcon","LeftOutlined","fontSize","extra","_a","footer","subTitle"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAMA,WAAWA,MAAM;AACrB,EAAA,OAAO;AAAA,IACLC,KAAAA,EAAO;AAAA,MACLC,IAAAA,EAAMC,OAAAA;AAAAA,MACNC,OAAAA,EAAS;AAAA;AACX,GACF;AACF,CAAA;AACA,MAAMC,uBAAOC,mBAAAA,CAAgB;AAAA,EAC3BC,IAAAA,EAAM,aAAA;AAAA,EACNC,OAAOR,QAAAA,EAAS;AAAA,EAChBS,MAAMD,KAAAA,EAAO;AAAA,IAAEE,KAAAA;AAAAA,IAAOC;AAAAA,GAAO,EAAG;AAC9B,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAS,GAAIC,kBAAAA;AACrB,IAAA,MAAMC,gBAAAA,GAAmBC,OAAAA,CACvBC,UAAAA,CAAO,kBAAA,EAAoB,EAAE,CAC/B,CAAA;AACA,IAAA,MAAM;AAAA,MAAEC;AAAAA,QACNL,QAAAA,EAAS;AAEX,IAAA,MAAM;AAAA,MAAEM,MAAAA;AAAAA,MAAQC,UAAAA;AAAAA,MAAYC;AAAAA,KAAQ,GAClCC,iBAAAA,CAAYC,iBAAAA,EAAa,CAAA;AAC3B,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAeC,oBAAAA,EAAe;AAEtC,IAAA,MAAMC,QAAQC,kBAAAA,EAAS;AACvB,IAAA,MAAMC,SAASC,mBAAAA,EAAU;AAEzB,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAMC,oBAAAA,EAAgB;AAE9B,IAAA,MAAMC,eAAAA,GAAkBC,aACtB,MAAMC,OAAAA;AAAAA;AAAAA,aAAAA,EAEGf,MAAAA,CAAOgB,MAAMC,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA,0BAAA,EAIZlB,KAAAA,CAAMiB,MAAME,aAAa,CAAA;;AAAA,QAAA,EAE3CP,CAAAA,CAAEK,KAAAA,GAAQ,CAAA,GACR,6CAAA,GACA,EAAE;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,MAAA,CAkBV,CAAA;AACA,IAAA,MAAMG,YAAAA,GAAeL,aACnB,MAAMC,OAAAA;AAAAA;AAAAA,UAAAA,EAEAvB,KAAAA,CAAM4B,YAAAA,GAAe,MAAA,GAAS,GAAG,CAAA;AAAA,oBAAA,EACvBrB,KAAAA,CAAMiB,MAAME,aAAa,CAAA;AAAA,MAAA,CAE3C,CAAA;AACA,IAAA,MAAMG,WAAAA,GAAcP,aAClB,MAAMC,OAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,cAAAA,EAKIf,MAAAA,CAAOgB,MAAMM,SAAAA,GACjBtB,MAAAA,CAAOgB,MAAMO,cAAAA,GACbvB,MAAAA,CAAOgB,MAAMQ,SAAS,CAAA;AAAA;AAAA;AAAA,oBAAA,EAGZvB,WAAWe,KAAAA,CAAMS,IAAAA,KAAS,UACpC1B,KAAAA,CAAMiB,KAAAA,CAAMU,mBACZ,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAKd,CAAA;AACA,IAAA,MAAMC,SAAAA,GAAYA,MAAAC,eAAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CACVrB,KAAAA,CAAMsB,IAAAA,CAAKC,KAAAA,IAAS,oBAAK,CAAA,CAAA;AAEjC,IAAA,MAAMC,KAAAA,GAAQlC,QAAI,KAAK,CAAA;AAEvB,IAAA,MAAMmC,SAASA,MAAM;AACnB,MAAA,IAAI1C,MAAMP,KAAAA,EAAO;AAEfsB,QAAAA,UAAAA,CAAWE,MAAM0B,QAAQ,CAAA;AACzBxB,QAAAA,MAAAA,CAAOyB,GAAG,CAAA,CAAE,CAAA;AAAA,MACd,CAAA,MAAO;AAELzB,QAAAA,MAAAA,CAAOyB,GAAG,CAAA,CAAE,CAAA;AAAA,MACd;AAAA,IACF,CAAA;AAEA,IAAA,MAAMC,cAAcA,MAAM;AACxBjC,MAAAA,OAAAA,CAAQc,KAAAA,GAAQ,IAAA;AAChBX,MAAAA,UAAAA,CAAWE,MAAM0B,QAAQ,CAAA;AACzBxB,MAAAA,MAAAA,CAAOyB,GAAG,CAAA,CAAE,CAAA;AAAA,IACd,CAAA;AAEAzC,IAAAA,MAAAA,CAAO;AAAA,MACLV,KAAAA,EAAOoD;AAAAA,KACR,CAAA;AAED,IAAA,OAAO,MAAAP,gBAAAQ,sBAAAA,EAAA;AAAA,MAAA,WACexC,gBAAAA,CAAiBoB;AAAAA,KAAK,EAAA;AAAA,MAAA9B,OAAAA,EAAAA,MAAA,CAAA0C,eAAAA,CAAAS,iBAAAA,EAAA;AAAA,QAAA,UAAA,EACxB;AAAA,OAAI,EAAA;AAAA,QAAAnD,SAAAA,MAAA;AAtI5B,UAAA,IAAA,EAAA,EAAA,EAAA;AAsI4B,UAAA,OAAA,CAAA0C,gBAAAU,uBAAAA,EAAA;AAAA,YAAA,SAETP,KAAAA,CAAMf,KAAAA;AAAAA,YAAK,SACXH,eAAAA,CAAgBG,KAAAA;AAAAA,YAAK,QAAA,EACpBgB,MAAMA,MAAAA,EAAO;AAAA,YAAC,SACfL,SAAAA;AAAU,WAAC,EAAA;AAAA,YAGhBY,UAAUA,MAAAX,eAAAA,CAAA,OAAA,IAAA,EAAA,CAAAA,gBAAAY,qBAAAA,EAAA;AAAA,cAAA,OAAA,EAGG;AAAA,gBAAEC,QAAAA,EAAU;AAAA;AAAO,aAAC,EAAA,IAAA,CAAA,CAAA,CAAA;AAAA,YAIjCC,OAAOA,MAAA;AArJrB,cAAA,IAAAC,GAAAA;AAqJ2BnD,cAAAA,OAAAA,CAAAA,GAAAA,GAAAA,KAAAA,CAAMkD,KAAAA,KAANlD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,YAAAA,CAAAA;AAAAA,YACboD,QAAQA,MAAA;AAtJtB,cAAA,IAAAD,GAAAA;AAsJ4BnD,cAAAA,OAAAA,CAAAA,GAAAA,GAAAA,KAAAA,CAAMoD,MAAAA,KAANpD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,YAAAA,CAAAA;AAAAA,YACdqD,UAAUA,MAAA;AAvJxB,cAAA,IAAAF,GAAAA;AAuJ8BnD,cAAAA,OAAAA,CAAAA,GAAAA,GAAAA,KAAAA,CAAMqD,QAAAA,KAANrD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA;AAAAA,YAAAA;AAAAA,WAAkB,CAAA,EAAAoC,eAAAA,CAAA,KAAA,EAAA;AAAA,YAAA,SAG1BT,YAAAA,CAAaH;AAAAA,WAAK,EAAA,CAAA,CAC3BxB,EAAAA,GAAAA,KAAAA,CAAMN,OAAAA,KAANM,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,IAEnBA,KAAAA,CAAM4B,YAAAA,GAAYQ,eAAAA,CAAA,KAAA,EAAA;AAAA,YAAA,SACLP,WAAAA,CAAYL;AAAAA,aAAK,CAAA,CAC1BxB,EAAAA,GAAAA,KAAAA,CAAM4B,iBAAN5B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAsB,KAEvB,IAAI,CAAA;AAAA,QAAA;AAAA,OAAA,CAAA;AAAA,KAAA,CAAA;AAAA,EAIhB;AACF,CAAC;;;;"}
1
+ {"version":3,"file":"Show.cjs","sources":["../../../../src/components/layout/Show.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n inject,\r\n ref\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport {\r\n Flex,\r\n PageHeader,\r\n theme,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst getProps = () => {\r\n return {\r\n close: {\r\n type: Boolean,\r\n default: false\r\n }\r\n };\r\n};\r\nconst show = defineComponent({\r\n name: \"DShowLayout\",\r\n props: getProps(),\r\n setup(props, { slots, expose }) {\r\n const { useToken } = theme;\r\n\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { layout, modeConfig, refresh } =\r\n storeToRefs(useAppStore());\r\n const { deleteTabs } = useNavTabStore();\r\n\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const { y } = useWindowScroll();\r\n\r\n const pageHeaderStyle = computed(\r\n () => css`\r\n position: sticky;\r\n top: ${layout.value.headerHeight}px;\r\n z-index: 10;\r\n padding: 0;\r\n transition: all 0.3s;\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n ${y.value > 0\r\n ? \"box-shadow:0 10px 10px rgba(0, 0, 0, 0.15);\"\r\n : \"\"}\r\n .ant-page-header-back {\r\n height: 100%;\r\n margin-right: 0;\r\n\r\n .ant-page-header-back-button {\r\n height: 100%;\r\n padding: 0 6px !important;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n\r\n .ant-page-header-heading-title {\r\n font-size: 14px;\r\n }\r\n `\r\n );\r\n const contentStyle = computed(\r\n () => css`\r\n padding: 10px 10px\r\n ${slots.bottomFooter ? \"50px\" : \"0\"};\r\n background: ${token.value.colorBgLayout};\r\n `\r\n );\r\n const footerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n height: 50px;\r\n left: ${layout.value.collapsed\r\n ? layout.value.collapsedWidth\r\n : layout.value.sideWidth}px;\r\n z-index: 10;\r\n padding: 10px;\r\n background: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : \"#fff\"};\r\n box-shadow: 6px 0 10px rgba(0, 0, 0, 0.15);\r\n transition: left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `\r\n );\r\n const pageTitle = () => (\r\n <div>{route.meta.title || \"无标题\"}</div>\r\n );\r\n const ghost = ref(false);\r\n\r\n const onBack = () => {\r\n if (props.close) {\r\n // 返回关闭标签\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n } else {\r\n // 不关闭标签\r\n router.go(-1);\r\n }\r\n };\r\n\r\n const onClosePage = () => {\r\n refresh.value = true;\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n };\r\n\r\n expose({\r\n close: onClosePage\r\n });\r\n\r\n return () => (\r\n <Watermark content={watermarkContent.value}>\r\n <Flex vertical={true}>\r\n <PageHeader\r\n ghost={ghost.value}\r\n class={pageHeaderStyle.value}\r\n onBack={() => onBack()}\r\n title={pageTitle()}\r\n >\r\n {{\r\n backIcon: () => (\r\n <div>\r\n <LeftOutlined\r\n style={{ fontSize: \"26px\" }}\r\n />\r\n </div>\r\n ),\r\n extra: () => slots.extra?.(),\r\n footer: () => slots.footer?.(),\r\n subTitle: () => slots.subTitle?.()\r\n }}\r\n </PageHeader>\r\n <div class={contentStyle.value}>\r\n {slots.default?.()}\r\n </div>\r\n {slots.bottomFooter ? (\r\n <div class={footerStyle.value}>\r\n {slots.bottomFooter?.()}\r\n </div>\r\n ) : null}\r\n </Flex>\r\n </Watermark>\r\n );\r\n }\r\n});\r\n\r\nexport default show;\r\n"],"names":["getProps","close","type","Boolean","default","show","defineComponent","name","props","setup","slots","expose","useToken","theme","appContext","inject","AppContextKey","watermarkContent","computed","value","content","token","layout","modeConfig","refresh","storeToRefs","useAppStore","deleteTabs","useNavTabStore","route","useRoute","router","useRouter","y","useWindowScroll","pageHeaderStyle","css","headerHeight","colorBgLayout","contentStyle","bottomFooter","footerStyle","collapsed","collapsedWidth","sideWidth","mode","colorBgContainer","pageTitle","_createVNode","meta","title","ghost","ref","onBack","fullPath","go","onClosePage","Watermark","Flex","PageHeader","backIcon","LeftOutlined","fontSize","extra","_a","footer","subTitle"],"mappings":"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"}
@@ -60,7 +60,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
60
60
  }
61
61
  break;
62
62
  }
63
- console.log(token);
64
63
  }
65
64
  return {
66
65
  appTheme: appTheme2
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeApp.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Ref, ref, watch } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore } from \"@ditari/store\";\r\n\r\nconst props = defineProps({\n themeJson: { type: Object, required: false, default: () => ({}) }\n});\r\n\r\nconst { appTheme } = useTheme();\r\n\r\nfunction useTheme(): { appTheme: Ref<unknown> } {\r\n const { modeConfig, isCompact } =\r\n storeToRefs(useAppStore());\r\n const appTheme = ref<Record<string, unknown>>({});\r\n const { useToken } = theme;\r\n const { token } = useToken();\r\n\r\n watch(\r\n () => modeConfig.value.mode,\r\n () => {\r\n handleTheme();\r\n },\r\n { immediate: true }\r\n );\r\n\r\n watch(\r\n () => isCompact.value,\r\n () => {\r\n handleTheme();\r\n }\r\n );\r\n\r\n function handleTheme() {\r\n const isDarkMode =\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-color-scheme: dark)\")\r\n .matches;\r\n switch (modeConfig.value.mode) {\r\n case \"light\":\r\n if (isCompact.value) {\r\n appTheme.value.algorithm = theme.compactAlgorithm;\r\n appTheme.value.token = {};\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"dark\":\r\n if (isCompact.value) {\r\n appTheme.value.token = props.themeJson;\r\n } else {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"os\":\r\n if (isCompact.value && isDarkMode) {\r\n appTheme.value.token = props.themeJson;\r\n }\r\n break;\r\n }\r\n console.log(token);\r\n }\r\n\r\n return {\r\n appTheme\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-config-provider :theme=\"appTheme\">\r\n <slot></slot>\r\n </a-config-provider>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["storeToRefs","useAppStore","appTheme","ref","theme","watch","_createBlock","_unref","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;AAOA,IAAA,MAAM,KAAA,GAAQ,OAAA;AAId,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,QAAA,EAAS;AAE9B,IAAA,SAAS,QAAA,GAAuC;AAC9C,MAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAU,GAC5BA,iBAAA,CAAYC,mBAAa,CAAA;AAC3B,MAAA,MAAMC,SAAAA,GAAWC,OAAA,CAA6B,EAAE,CAAA;AAChD,MAAA,MAAM,EAAE,UAAS,GAAIC,kBAAA;AACrB,MAAA,MAAM,EAAE,KAAA,EAAM,GAAI,QAAA,EAAS;AAE3B,MAAAC,SAAA;AAAA,QACE,MAAM,WAAW,KAAA,CAAM,IAAA;AAAA,QACvB,MAAM;AACJ,UAAA,WAAA,EAAY;AAAA,QACd,CAAA;AAAA,QACA,EAAE,WAAW,IAAA;AAAK,OACpB;AAEA,MAAAA,SAAA;AAAA,QACE,MAAM,SAAA,CAAU,KAAA;AAAA,QAChB,MAAM;AACJ,UAAA,WAAA,EAAY;AAAA,QACd;AAAA,OACF;AAEA,MAAA,SAAS,WAAA,GAAc;AACrB,QAAA,MAAM,aACJ,MAAA,CAAO,UAAA,IACP,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA,CAC7C,OAAA;AACL,QAAA,QAAQ,UAAA,CAAW,MAAM,IAAA;AAAM,UAC7B,KAAK,OAAA;AACH,YAAA,IAAI,UAAU,KAAA,EAAO;AACnB,cAAAH,SAAAA,CAAS,KAAA,CAAM,SAAA,GAAYE,kBAAA,CAAM,gBAAA;AACjC,cAAAF,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,EAAC;AAAA,YAC1B,CAAA,MAAO;AACL,cAAAA,SAAAA,CAAS,KAAA,CAAM,SAAA,GAAYE,kBAAA,CAAM,gBAAA;AACjC,cAAAF,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,EAAC;AAAA,YAC1B;AACA,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,IAAI,UAAU,KAAA,EAAO;AACnB,cAAAA,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,SAAA;AAAA,YAC/B,CAAA,MAAO;AACL,cAAAA,SAAAA,CAAS,KAAA,CAAM,SAAA,GAAYE,kBAAA,CAAM,aAAA;AACjC,cAAAF,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,EAAC;AAAA,YAC1B;AACA,YAAA;AAAA,UACF,KAAK,IAAA;AACH,YAAA,IAAI,SAAA,CAAU,SAAS,UAAA,EAAY;AACjC,cAAAA,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,SAAA;AAAA,YAC/B;AACA,YAAA;AAAA;AAEJ,QAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AAAA,MACnB;AAEA,MAAA,OAAO;AAAA,QACL,QAAA,EAAAA;AAAA,OACF;AAAA,IACF;;;8BAIEI,eAAA,CAEoB,4BAAA,EAAA,EAFA,KAAA,EAAOC,SAAA,CAAA,QAAA,CAAA,EAAQ,EAAA;AAAA,6BACjC,MAAa;AAAA,UAAbC,cAAA,CAAa,IAAA,CAAA,MAAA,EAAA,SAAA;AAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"ThemeApp.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/ThemeApp.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Ref, ref, watch } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useAppStore } from \"@ditari/store\";\r\n\r\nconst props = defineProps({\n themeJson: { type: Object, required: false, default: () => ({}) }\n});\r\n\r\nconst { appTheme } = useTheme();\r\n\r\nfunction useTheme(): { appTheme: Ref<unknown> } {\r\n const { modeConfig, isCompact } =\r\n storeToRefs(useAppStore());\r\n const appTheme = ref<Record<string, unknown>>({});\r\n const { useToken } = theme;\r\n const { token } = useToken();\r\n\r\n watch(\r\n () => modeConfig.value.mode,\r\n () => {\r\n handleTheme();\r\n },\r\n { immediate: true }\r\n );\r\n\r\n watch(\r\n () => isCompact.value,\r\n () => {\r\n handleTheme();\r\n }\r\n );\r\n\r\n function handleTheme() {\r\n const isDarkMode =\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-color-scheme: dark)\")\r\n .matches;\r\n switch (modeConfig.value.mode) {\r\n case \"light\":\r\n if (isCompact.value) {\r\n appTheme.value.algorithm = theme.compactAlgorithm;\r\n appTheme.value.token = {};\r\n } else {\r\n appTheme.value.algorithm = theme.defaultAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"dark\":\r\n if (isCompact.value) {\r\n appTheme.value.token = props.themeJson;\r\n } else {\r\n appTheme.value.algorithm = theme.darkAlgorithm;\r\n appTheme.value.token = {};\r\n }\r\n break;\r\n case \"os\":\r\n if (isCompact.value && isDarkMode) {\r\n appTheme.value.token = props.themeJson;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n appTheme\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-config-provider :theme=\"appTheme\">\r\n <slot></slot>\r\n </a-config-provider>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["storeToRefs","useAppStore","appTheme","ref","theme","watch","_createBlock","_unref","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;AAOA,IAAA,MAAM,KAAA,GAAQ,OAAA;AAId,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,QAAA,EAAS;AAE9B,IAAA,SAAS,QAAA,GAAuC;AAC9C,MAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAU,GAC5BA,iBAAA,CAAYC,mBAAa,CAAA;AAC3B,MAAA,MAAMC,SAAAA,GAAWC,OAAA,CAA6B,EAAE,CAAA;AAChD,MAAA,MAAM,EAAE,UAAS,GAAIC,kBAAA;AACrB,MAAA,MAAM,EAAE,KAAA,EAAM,GAAI,QAAA,EAAS;AAE3B,MAAAC,SAAA;AAAA,QACE,MAAM,WAAW,KAAA,CAAM,IAAA;AAAA,QACvB,MAAM;AACJ,UAAA,WAAA,EAAY;AAAA,QACd,CAAA;AAAA,QACA,EAAE,WAAW,IAAA;AAAK,OACpB;AAEA,MAAAA,SAAA;AAAA,QACE,MAAM,SAAA,CAAU,KAAA;AAAA,QAChB,MAAM;AACJ,UAAA,WAAA,EAAY;AAAA,QACd;AAAA,OACF;AAEA,MAAA,SAAS,WAAA,GAAc;AACrB,QAAA,MAAM,aACJ,MAAA,CAAO,UAAA,IACP,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA,CAC7C,OAAA;AACL,QAAA,QAAQ,UAAA,CAAW,MAAM,IAAA;AAAM,UAC7B,KAAK,OAAA;AACH,YAAA,IAAI,UAAU,KAAA,EAAO;AACnB,cAAAH,SAAAA,CAAS,KAAA,CAAM,SAAA,GAAYE,kBAAA,CAAM,gBAAA;AACjC,cAAAF,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,EAAC;AAAA,YAC1B,CAAA,MAAO;AACL,cAAAA,SAAAA,CAAS,KAAA,CAAM,SAAA,GAAYE,kBAAA,CAAM,gBAAA;AACjC,cAAAF,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,EAAC;AAAA,YAC1B;AACA,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,IAAI,UAAU,KAAA,EAAO;AACnB,cAAAA,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,SAAA;AAAA,YAC/B,CAAA,MAAO;AACL,cAAAA,SAAAA,CAAS,KAAA,CAAM,SAAA,GAAYE,kBAAA,CAAM,aAAA;AACjC,cAAAF,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,EAAC;AAAA,YAC1B;AACA,YAAA;AAAA,UACF,KAAK,IAAA;AACH,YAAA,IAAI,SAAA,CAAU,SAAS,UAAA,EAAY;AACjC,cAAAA,SAAAA,CAAS,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,SAAA;AAAA,YAC/B;AACA,YAAA;AAAA;AACJ,MACF;AAEA,MAAA,OAAO;AAAA,QACL,QAAA,EAAAA;AAAA,OACF;AAAA,IACF;;;8BAIEI,eAAA,CAEoB,4BAAA,EAAA,EAFA,KAAA,EAAOC,SAAA,CAAA,QAAA,CAAA,EAAQ,EAAA;AAAA,6BACjC,MAAa;AAAA,UAAbC,cAAA,CAAa,IAAA,CAAA,MAAA,EAAA,SAAA;AAAA;;;;;;;;;;"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var vue = require('vue');
6
6
  var vueRouter = require('vue-router');
7
7
  var pinia = require('pinia');
8
+ var AppContext = require('../../AppContext.cjs');
8
9
  var store = require('@ditari/store');
9
10
  var css = require('@emotion/css');
10
11
  var useMenuCore = require('../../../../utils/useMenuCore.cjs');
@@ -36,39 +37,37 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
36
37
  setup(_, {
37
38
  emit
38
39
  }) {
39
- const pinia$1 = pinia.getActivePinia();
40
- const appStore = pinia$1 ? store.useAppStore() : null;
41
- const menuStore = pinia$1 ? store.useMenuStore() : null;
42
- const noStore = pinia$1 ? store.useNoStore() : null;
43
- const defaultLayout = {
44
- sideWidth: 200,
45
- headerHeight: 44,
46
- collapsedWidth: 80,
47
- collapsed: false
48
- };
49
- const defaultModeConfig = {
50
- mode: "light",
51
- list: [{
52
- value: "light",
53
- label: "\u4EAE\u8272"
54
- }, {
55
- value: "dark",
56
- label: "\u6DF1\u8272"
57
- }, {
58
- value: "os",
59
- label: "\u8DDF\u968F\u7CFB\u7EDF"
60
- }]
61
- };
62
- const defaultMenuList = vue.ref([]);
63
- const defaultOpenKeys = vue.ref([]);
64
- const defaultSelectedKeys = vue.ref([]);
65
- const defaultData = vue.ref([]);
66
- const layout = appStore ? pinia.storeToRefs(appStore).layout : vue.ref(defaultLayout);
67
- const modeConfig = appStore ? pinia.storeToRefs(appStore).modeConfig : vue.ref(defaultModeConfig);
68
- const menuList = noStore ? pinia.storeToRefs(noStore).menuList : defaultMenuList;
69
- const openKeys = menuStore ? pinia.storeToRefs(menuStore).openKeys : defaultOpenKeys;
70
- const selectedKeys = menuStore ? pinia.storeToRefs(menuStore).selectedKeys : defaultSelectedKeys;
71
- const data = menuStore ? pinia.storeToRefs(menuStore).data : defaultData;
40
+ const appStore = store.useAppStore();
41
+ const menuStore = store.useMenuStore();
42
+ const appContext = vue.inject(AppContext.AppContextKey, null);
43
+ const renderMenuIcon = appContext == null ? void 0 : appContext.renderMenuIcon;
44
+ const {
45
+ layout,
46
+ modeConfig
47
+ } = pinia.storeToRefs(appStore);
48
+ const {
49
+ openKeys,
50
+ selectedKeys,
51
+ data
52
+ } = pinia.storeToRefs(menuStore);
53
+ const menuList = vue.computed(() => {
54
+ const menuData = JSON.parse(JSON.stringify(data.value));
55
+ return renderIcon(menuData);
56
+ });
57
+ function renderIcon(data2) {
58
+ data2.forEach((item) => {
59
+ if (item.icon) {
60
+ const icon = item.icon;
61
+ item.icon = () => renderMenuIcon == null ? void 0 : renderMenuIcon({
62
+ icon
63
+ });
64
+ }
65
+ if (item.children && item.children.length) {
66
+ renderIcon(item.children);
67
+ }
68
+ });
69
+ return data2;
70
+ }
72
71
  const {
73
72
  findMatchedMenuById,
74
73
  findMenuItemByUrl
@@ -92,7 +91,7 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
92
91
 
93
92
  ${modeConfig.value.mode === "light" ? "background:transparent;" : ""}
94
93
  /* Webkit 浏览器 */
95
- ::-webkit-scrollbar {
94
+ ::-webkit-scrollbar {
96
95
  display: none;
97
96
  }
98
97
  }
@@ -169,15 +168,15 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
169
168
  keyPath,
170
169
  item
171
170
  }) => {
172
- var _a, _b, _c, _d, _e;
171
+ var _a, _b, _c, _d;
173
172
  const rs = findMatchedMenuById(key, data.value);
174
- if (((_a = item.originItemValue) == null ? void 0 : _a.isFrame) && ((_b = item.originItemValue) == null ? void 0 : _b.isFrame) === "0") {
173
+ if ((_a = item.originItemValue) == null ? void 0 : _a.isExternalLink) {
175
174
  emit("onMenuClick", item);
176
175
  } else {
177
176
  openKeys.value = keyPath;
178
- selectedKeys.value = [(_c = rs.matchItem) == null ? void 0 : _c.key];
179
- if (((_d = rs.matchItem) == null ? void 0 : _d.url) !== route.path) {
180
- router.push((_e = rs.matchItem) == null ? void 0 : _e.url).then((r) => {
177
+ selectedKeys.value = [(_b = rs.matchItem) == null ? void 0 : _b.key];
178
+ if (((_c = rs.matchItem) == null ? void 0 : _c.url) !== route.path) {
179
+ router.push((_d = rs.matchItem) == null ? void 0 : _d.url).then((r) => {
181
180
  if (r) {
182
181
  console.warn(r);
183
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.cjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, ref, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { getActivePinia, storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n useAppStore,\r\n useMenuStore,\r\n useNoStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport useMenuCore from \"../../../../utils/useMenuCore\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n emits: [\"onMenuClick\"],\r\n setup(_, { emit }) {\r\n // 检查 Pinia 是否可用\r\n const pinia = getActivePinia();\r\n const appStore = pinia ? useAppStore() : null;\r\n const menuStore = pinia ? useMenuStore() : null;\r\n const noStore = pinia ? useNoStore() : null;\r\n\r\n // 提供默认值当 Pinia 不可用时\r\n const defaultLayout = {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n };\r\n\r\n const defaultModeConfig = {\r\n mode: \"light\",\r\n list: [\r\n { value: \"light\", label: \"亮色\" },\r\n { value: \"dark\", label: \"深色\" },\r\n { value: \"os\", label: \"跟随系统\" }\r\n ]\r\n };\r\n\r\n const defaultMenuList = ref<any[]>([]);\r\n const defaultOpenKeys = ref<string[]>([]);\r\n const defaultSelectedKeys = ref<string[]>([]);\r\n const defaultData = ref<any[]>([]);\r\n\r\n const layout = appStore ? storeToRefs(appStore).layout : ref(defaultLayout);\r\n const modeConfig = appStore ? storeToRefs(appStore).modeConfig : ref(defaultModeConfig);\r\n const menuList = noStore ? storeToRefs(noStore).menuList : defaultMenuList;\r\n const openKeys = menuStore ? storeToRefs(menuStore).openKeys : defaultOpenKeys;\r\n const selectedKeys = menuStore ? storeToRefs(menuStore).selectedKeys : defaultSelectedKeys;\r\n const data = menuStore ? storeToRefs(menuStore).data : defaultData;\r\n\r\n const { findMatchedMenuById, findMenuItemByUrl } =\r\n useMenuCore();\r\n const { menuWrapperStyle } = useStyle();\r\n const { onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 根据URL路径查找最接近的父级菜单\r\n */\r\n const findClosestParentMenu = (\r\n url: string,\r\n menus: any[]\r\n ): any => {\r\n // 移除查询参数和哈希\r\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\r\n const pathSegments = cleanUrl\r\n .split(\"/\")\r\n .filter(Boolean);\r\n\r\n // 从最长路径开始尝试匹配\r\n for (let i = pathSegments.length; i > 0; i--) {\r\n const testPath =\r\n \"/\" + pathSegments.slice(0, i).join(\"/\");\r\n const foundItem = findMenuItemByUrl(\r\n testPath,\r\n menus\r\n );\r\n if (foundItem) return foundItem;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some(\r\n (item: string) => item === path\r\n );\r\n if (!flag) {\r\n let menuItem = findMenuItemByUrl(\r\n path,\r\n data.value\r\n );\r\n\r\n // 如果没有精确匹配,尝试匹配父级路径\r\n if (!menuItem) {\r\n menuItem = findClosestParentMenu(\r\n path,\r\n data.value\r\n );\r\n }\r\n\r\n if (!menuItem) {\r\n openKeys.value = [];\r\n selectedKeys.value = [path];\r\n } else {\r\n const rs = getFullParentChain(\r\n menuItem.id,\r\n data.value as never\r\n );\r\n if (!layout.value.collapsed) {\r\n openKeys.value = rs!;\r\n }\r\n selectedKeys.value = [menuItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const id = selectedKeys.value[0];\r\n const rs = findMatchedMenuById(\r\n id,\r\n data.value as never\r\n );\r\n\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentItem) {\r\n openKeys.value = [rs.parentItem.key];\r\n } else {\r\n openKeys.value = [rs!.matchItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n /**\r\n * 获取从根到目标菜单项的完整 key 链\r\n * @param targetId 目标菜单项 id\r\n * @param menus 菜单数据\r\n * @param parentChain 递归传递的父级链\r\n */\r\n const getFullParentChain = (\r\n targetId: string,\r\n menus: any[],\r\n parentChain: string[] = []\r\n ): string[] | null => {\r\n for (const menu of menus) {\r\n // 找到目标项,返回完整链(包含自身 key)\r\n if (menu.id === targetId) {\r\n return [...parentChain, menu.key];\r\n }\r\n\r\n // 递归查找子菜单\r\n if (menu.children?.length) {\r\n const result = getFullParentChain(\r\n targetId,\r\n menu.children,\r\n [...parentChain, menu.key] // 传递当前层级的 key\r\n );\r\n if (result) return result;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath,\r\n item\r\n }: {\r\n item: { originItemValue: any };\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n const rs = findMatchedMenuById(key, data.value);\r\n if (\r\n item.originItemValue?.isFrame &&\r\n item.originItemValue?.isFrame === \"0\"\r\n ) {\r\n emit(\"onMenuClick\", item);\r\n } else {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [rs.matchItem?.key];\r\n if (rs.matchItem?.url !== route.path) {\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n router.push(rs.matchItem?.url).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","emits","setup","_","emit","pinia","getActivePinia","appStore","useAppStore","menuStore","useMenuStore","noStore","useNoStore","defaultLayout","sideWidth","headerHeight","collapsedWidth","collapsed","defaultModeConfig","mode","list","value","label","defaultMenuList","ref","defaultOpenKeys","defaultSelectedKeys","defaultData","layout","storeToRefs","modeConfig","menuList","openKeys","selectedKeys","data","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuWrapperStyle","useStyle","onClick","useMenu","computed","css","route","useRoute","router","useRouter","findClosestParentMenu","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","length","testPath","slice","join","foundItem","watch","fullPath","path","flag","some","item","menuItem","rs","getFullParentChain","id","key","val","parentItem","matchItem","targetId","parentChain","menu","children","result","keyPath","originItemValue","isFrame","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.cjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n watch\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n AppContext,\r\n AppContextKey\r\n} from \"../../AppContext\";\r\nimport { useAppStore, useMenuStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport useMenuCore from \"../../../../utils/useMenuCore\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n emits: [\"onMenuClick\"],\r\n setup(_, { emit }) {\r\n // ⭐️ 修复:直接调用 Store 函数,Pinia 内部机制会处理实例缺失时的行为\r\n const appStore = useAppStore();\r\n const menuStore = useMenuStore();\r\n\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const renderMenuIcon = appContext?.renderMenuIcon;\r\n\r\n const { layout, modeConfig } = storeToRefs(appStore);\r\n\r\n const { openKeys, selectedKeys, data } =\r\n storeToRefs(menuStore);\r\n\r\n const menuList = computed(() => {\r\n const menuData = JSON.parse(\r\n JSON.stringify(data.value)\r\n );\r\n return renderIcon(menuData);\r\n });\r\n\r\n function renderIcon(data: []) {\r\n // 需要递归处理\r\n data.forEach(\r\n (item: {\r\n name: string;\r\n icon: unknown;\r\n children: [];\r\n }) => {\r\n if (item.icon) {\r\n const icon = item.icon;\r\n item.icon = () =>\r\n renderMenuIcon?.({ icon } as {\r\n icon: string;\r\n });\r\n }\r\n if (item.children && item.children.length) {\r\n renderIcon(item.children);\r\n }\r\n }\r\n );\r\n return data;\r\n }\r\n\r\n const { findMatchedMenuById, findMenuItemByUrl } =\r\n useMenuCore();\r\n const { menuWrapperStyle } = useStyle();\r\n const { onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 根据URL路径查找最接近的父级菜单\r\n */\r\n const findClosestParentMenu = (\r\n url: string,\r\n menus: any[]\r\n ): any => {\r\n // 移除查询参数和哈希\r\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\r\n const pathSegments = cleanUrl\r\n .split(\"/\")\r\n .filter(Boolean);\r\n\r\n // 从最长路径开始尝试匹配\r\n for (let i = pathSegments.length; i > 0; i--) {\r\n const testPath =\r\n \"/\" + pathSegments.slice(0, i).join(\"/\");\r\n const foundItem = findMenuItemByUrl(\r\n testPath,\r\n menus\r\n );\r\n if (foundItem) return foundItem;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some(\r\n (item: string) => item === path\r\n );\r\n if (!flag) {\r\n let menuItem = findMenuItemByUrl(\r\n path,\r\n data.value\r\n );\r\n\r\n // 如果没有精确匹配,尝试匹配父级路径\r\n if (!menuItem) {\r\n menuItem = findClosestParentMenu(\r\n path,\r\n data.value\r\n );\r\n }\r\n\r\n if (!menuItem) {\r\n openKeys.value = [];\r\n selectedKeys.value = [path];\r\n } else {\r\n const rs = getFullParentChain(\r\n menuItem.id,\r\n data.value as never\r\n );\r\n if (!layout.value.collapsed) {\r\n openKeys.value = rs!;\r\n }\r\n selectedKeys.value = [menuItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const id = selectedKeys.value[0];\r\n const rs = findMatchedMenuById(\r\n id,\r\n data.value as never\r\n );\r\n\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentItem) {\r\n openKeys.value = [rs.parentItem.key];\r\n } else {\r\n openKeys.value = [rs!.matchItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n /**\r\n * 获取从根到目标菜单项的完整 key 链\r\n * @param targetId 目标菜单项 id\r\n * @param menus 菜单数据\r\n * @param parentChain 递归传递的父级链\r\n */\r\n const getFullParentChain = (\r\n targetId: string,\r\n menus: any[],\r\n parentChain: string[] = []\r\n ): string[] | null => {\r\n for (const menu of menus) {\r\n // 找到目标项,返回完整链(包含自身 key)\r\n if (menu.id === targetId) {\r\n return [...parentChain, menu.key];\r\n }\r\n\r\n // 递归查找子菜单\r\n if (menu.children?.length) {\r\n const result = getFullParentChain(\r\n targetId,\r\n menu.children,\r\n [...parentChain, menu.key] // 传递当前层级的 key\r\n );\r\n if (result) return result;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath,\r\n item\r\n }: {\r\n item: { originItemValue: any };\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n const rs = findMatchedMenuById(key, data.value);\r\n if (item.originItemValue?.isExternalLink) {\r\n emit(\"onMenuClick\", item);\r\n } else {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [rs.matchItem?.key];\r\n if (rs.matchItem?.url !== route.path) {\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n router.push(rs.matchItem?.url).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","emits","setup","_","emit","appStore","useAppStore","menuStore","useMenuStore","appContext","inject","AppContextKey","renderMenuIcon","layout","modeConfig","storeToRefs","openKeys","selectedKeys","data","menuList","computed","menuData","JSON","parse","stringify","value","renderIcon","forEach","item","icon","children","length","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuWrapperStyle","useStyle","onClick","useMenu","css","mode","route","useRoute","router","useRouter","findClosestParentMenu","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","testPath","slice","join","foundItem","watch","fullPath","path","flag","some","menuItem","rs","getFullParentChain","id","collapsed","key","val","parentItem","matchItem","targetId","parentChain","menu","result","keyPath","originItemValue","isExternalLink","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}