@ditari/bsui 5.0.2 → 5.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/cjs/_virtual/_commonjsHelpers.cjs +47 -0
  2. package/dist/cjs/_virtual/_commonjsHelpers.cjs.map +1 -0
  3. package/dist/cjs/_virtual/_plugin-vue_export-helper.cjs +14 -0
  4. package/dist/cjs/_virtual/_plugin-vue_export-helper.cjs.map +1 -0
  5. package/dist/cjs/_virtual/dayjs.min.cjs +12 -0
  6. package/dist/cjs/_virtual/dayjs.min.cjs.map +1 -0
  7. package/dist/cjs/_virtual/dayjs.min2.cjs +6 -0
  8. package/dist/cjs/_virtual/dayjs.min2.cjs.map +1 -0
  9. package/dist/cjs/components/icon/Moon.vue.cjs +33 -0
  10. package/dist/cjs/components/icon/Moon.vue.cjs.map +1 -0
  11. package/dist/cjs/components/icon/Sun.vue.cjs +45 -0
  12. package/dist/cjs/components/icon/Sun.vue.cjs.map +1 -0
  13. package/dist/cjs/components/icon/index.cjs +16 -0
  14. package/dist/cjs/components/icon/index.cjs.map +1 -0
  15. package/dist/cjs/components/index.cjs +5 -0
  16. package/dist/cjs/components/index.cjs.map +1 -1
  17. package/dist/cjs/components/layout/Layout.vue2.cjs +68 -28
  18. package/dist/cjs/components/layout/Layout.vue2.cjs.map +1 -1
  19. package/dist/cjs/components/layout/List.cjs +39 -7
  20. package/dist/cjs/components/layout/List.cjs.map +1 -1
  21. package/dist/cjs/components/layout/Show.cjs +0 -4
  22. package/dist/cjs/components/layout/Show.cjs.map +1 -1
  23. package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs +3 -2
  24. package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs.map +1 -1
  25. package/dist/cjs/components/layout/components/layout/ThemeApp.vue.cjs +10 -0
  26. package/dist/cjs/components/layout/components/layout/ThemeApp.vue.cjs.map +1 -0
  27. package/dist/cjs/components/layout/components/layout/ThemeApp.vue2.cjs +56 -0
  28. package/dist/cjs/components/layout/components/layout/ThemeApp.vue2.cjs.map +1 -0
  29. package/dist/cjs/components/layout/components/menu/Menu.cjs +63 -12
  30. package/dist/cjs/components/layout/components/menu/Menu.cjs.map +1 -1
  31. package/dist/cjs/components/layout/components/settings/BlockCheckbox.vue.cjs +10 -0
  32. package/dist/cjs/components/layout/components/settings/BlockCheckbox.vue.cjs.map +1 -0
  33. package/dist/cjs/components/layout/components/settings/BlockCheckbox.vue2.cjs +59 -0
  34. package/dist/cjs/components/layout/components/settings/BlockCheckbox.vue2.cjs.map +1 -0
  35. package/dist/cjs/components/layout/components/settings/SettingDrawer.cjs +109 -0
  36. package/dist/cjs/components/layout/components/settings/SettingDrawer.cjs.map +1 -0
  37. package/dist/cjs/components/tab/Search.cjs +241 -0
  38. package/dist/cjs/components/tab/Search.cjs.map +1 -0
  39. package/dist/cjs/components/tab/Tab.vue2.cjs +18 -57
  40. package/dist/cjs/components/tab/Tab.vue2.cjs.map +1 -1
  41. package/dist/cjs/components/table/Table.cjs +5 -6
  42. package/dist/cjs/components/table/Table.cjs.map +1 -1
  43. package/dist/cjs/index.cjs +4 -0
  44. package/dist/cjs/index.cjs.map +1 -1
  45. package/dist/cjs/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.cjs +20 -0
  46. package/dist/cjs/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.cjs.map +1 -0
  47. package/dist/css/components/layout/components/settings/style/index.css +1 -0
  48. package/dist/css/components/tab/style/index.css +1 -1
  49. package/dist/css/index.css +1 -1
  50. package/dist/esm/_virtual/_commonjsHelpers.mjs +41 -0
  51. package/dist/esm/_virtual/_commonjsHelpers.mjs.map +1 -0
  52. package/dist/esm/_virtual/_plugin-vue_export-helper.mjs +10 -0
  53. package/dist/esm/_virtual/_plugin-vue_export-helper.mjs.map +1 -0
  54. package/dist/esm/_virtual/dayjs.min.mjs +8 -0
  55. package/dist/esm/_virtual/dayjs.min.mjs.map +1 -0
  56. package/dist/esm/_virtual/dayjs.min2.mjs +4 -0
  57. package/dist/esm/_virtual/dayjs.min2.mjs.map +1 -0
  58. package/dist/esm/components/icon/Moon.vue.mjs +29 -0
  59. package/dist/esm/components/icon/Moon.vue.mjs.map +1 -0
  60. package/dist/esm/components/icon/Sun.vue.mjs +41 -0
  61. package/dist/esm/components/icon/Sun.vue.mjs.map +1 -0
  62. package/dist/esm/components/icon/index.mjs +13 -0
  63. package/dist/esm/components/icon/index.mjs.map +1 -0
  64. package/dist/esm/components/index.mjs +3 -0
  65. package/dist/esm/components/index.mjs.map +1 -1
  66. package/dist/esm/components/layout/Layout.vue2.mjs +71 -31
  67. package/dist/esm/components/layout/Layout.vue2.mjs.map +1 -1
  68. package/dist/esm/components/layout/List.mjs +40 -8
  69. package/dist/esm/components/layout/List.mjs.map +1 -1
  70. package/dist/esm/components/layout/Show.mjs +0 -4
  71. package/dist/esm/components/layout/Show.mjs.map +1 -1
  72. package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs +4 -3
  73. package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs.map +1 -1
  74. package/dist/esm/components/layout/components/layout/ThemeApp.vue.mjs +6 -0
  75. package/dist/esm/components/layout/components/layout/ThemeApp.vue.mjs.map +1 -0
  76. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs +52 -0
  77. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs.map +1 -0
  78. package/dist/esm/components/layout/components/menu/Menu.mjs +64 -13
  79. package/dist/esm/components/layout/components/menu/Menu.mjs.map +1 -1
  80. package/dist/esm/components/layout/components/settings/BlockCheckbox.vue.mjs +6 -0
  81. package/dist/esm/components/layout/components/settings/BlockCheckbox.vue.mjs.map +1 -0
  82. package/dist/esm/components/layout/components/settings/BlockCheckbox.vue2.mjs +55 -0
  83. package/dist/esm/components/layout/components/settings/BlockCheckbox.vue2.mjs.map +1 -0
  84. package/dist/esm/components/layout/components/settings/SettingDrawer.mjs +105 -0
  85. package/dist/esm/components/layout/components/settings/SettingDrawer.mjs.map +1 -0
  86. package/dist/esm/components/tab/Search.mjs +237 -0
  87. package/dist/esm/components/tab/Search.mjs.map +1 -0
  88. package/dist/esm/components/tab/Tab.vue2.mjs +20 -59
  89. package/dist/esm/components/tab/Tab.vue2.mjs.map +1 -1
  90. package/dist/esm/components/table/Table.mjs +5 -6
  91. package/dist/esm/components/table/Table.mjs.map +1 -1
  92. package/dist/esm/index.mjs +2 -0
  93. package/dist/esm/index.mjs.map +1 -1
  94. package/dist/esm/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.mjs +18 -0
  95. package/dist/esm/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.mjs.map +1 -0
  96. package/dist/style/index.scss +1 -1
  97. package/dist/style/layout/components/settings/style/index.scss +177 -0
  98. package/dist/style/tab/style/index.scss +15 -3
  99. package/dist/types/components/icon/index.d.ts +4 -0
  100. package/dist/types/components/icon/index.d.ts.map +1 -0
  101. package/dist/types/components/index.d.ts +1 -0
  102. package/dist/types/components/index.d.ts.map +1 -1
  103. package/dist/types/components/layout/Layout.vue.d.ts +100 -2
  104. package/dist/types/components/layout/Layout.vue.d.ts.map +1 -1
  105. package/dist/types/components/layout/List.d.ts +2 -2
  106. package/dist/types/components/layout/List.d.ts.map +1 -1
  107. package/dist/types/components/layout/Show.d.ts +2 -5
  108. package/dist/types/components/layout/Show.d.ts.map +1 -1
  109. package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts +22 -0
  110. package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts.map +1 -1
  111. package/dist/types/components/layout/components/layout/ThemeApp.vue.d.ts +9 -0
  112. package/dist/types/components/layout/components/layout/ThemeApp.vue.d.ts.map +1 -0
  113. package/dist/types/components/layout/components/menu/Menu.d.ts.map +1 -1
  114. package/dist/types/components/layout/components/settings/BlockCheckbox.vue.d.ts +47 -0
  115. package/dist/types/components/layout/components/settings/BlockCheckbox.vue.d.ts.map +1 -0
  116. package/dist/types/components/layout/components/settings/SettingDrawer.d.ts +50 -0
  117. package/dist/types/components/layout/components/settings/SettingDrawer.d.ts.map +1 -0
  118. package/dist/types/components/tab/Search.d.ts +3 -0
  119. package/dist/types/components/tab/Search.d.ts.map +1 -0
  120. package/dist/types/components/tab/Tab.vue.d.ts +2 -6
  121. package/dist/types/components/tab/Tab.vue.d.ts.map +1 -1
  122. package/dist/types/components/table/Table.d.ts.map +1 -1
  123. package/package.json +6 -7
@@ -0,0 +1,241 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+ var antDesignVue = require('ant-design-vue');
7
+ var core = require('@vueuse/core');
8
+ var iconsVue = require('@ant-design/icons-vue');
9
+ var store = require('@ditari/store');
10
+ var css = require('@emotion/css');
11
+ var dayjs_min = require('../../_virtual/dayjs.min.cjs');
12
+
13
+ "use strict";
14
+ var Search = /* @__PURE__ */ vue.defineComponent({
15
+ name: "Search",
16
+ setup() {
17
+ const {
18
+ useToken
19
+ } = antDesignVue.theme;
20
+ const {
21
+ token
22
+ } = useToken();
23
+ const {
24
+ getList,
25
+ deleteTabs
26
+ } = store.useNavTabStore();
27
+ const keys = core.useMagicKeys();
28
+ const shiftCtrlA = keys["Shift+Ctrl+S"];
29
+ const open = vue.ref(false);
30
+ const {
31
+ y
32
+ } = core.useWindowScroll();
33
+ const navTabList = vue.computed(() => {
34
+ return getList.sort((a, b) => (b.openTime || 0) - (a.openTime || 0));
35
+ });
36
+ vue.watch(shiftCtrlA, (v) => {
37
+ if (v) {
38
+ open.value = !open.value;
39
+ }
40
+ });
41
+ vue.watch(() => y.value, (val) => {
42
+ if (val > 0) {
43
+ open.value = false;
44
+ }
45
+ });
46
+ const buttonToken = {
47
+ borderRadius: "12px"
48
+ };
49
+ const onCloseTab = (path) => {
50
+ deleteTabs(path);
51
+ };
52
+ const searchStyle = vue.computed(() => css.css`
53
+ padding: 10px;
54
+ border-bottom: 1px solid ${token.value.colorBorder};
55
+ `);
56
+ const searchListStyle = vue.computed(() => css.css`
57
+ position: relative;
58
+ display: flex;
59
+ flex-direction: column;
60
+ max-height: 400px;
61
+ overflow-y: overlay;
62
+
63
+ /* 整个滚动条 */
64
+
65
+ ::-webkit-scrollbar {
66
+ width: 4px; /* 垂直滚动条的宽度 */
67
+ height: 4px; /* 水平滚动条的高度 */
68
+ }
69
+
70
+ /* 滚动条轨道 */
71
+
72
+ ::-webkit-scrollbar-track {
73
+ background: transparent; /* 轨道背景色 */
74
+ border-radius: 0; /* 轨道圆角 */
75
+ }
76
+
77
+ /* 滚动条滑块 */
78
+
79
+ ::-webkit-scrollbar-thumb {
80
+ //background: #888; /* 滑块背景色 */
81
+ // border-radius: 6px; /* 滑块圆角 */
82
+ border: 3px solid ${token.value.colorPrimaryBorder}; /* 滑块边框 */
83
+ }
84
+
85
+ /* 滚动条滑块悬停效果 */
86
+
87
+ ::-webkit-scrollbar-thumb:hover {
88
+ background: red; /* 滑块悬停背景色 */
89
+ }
90
+
91
+ .search-title {
92
+ position: sticky;
93
+ top: 0;
94
+ padding: 10px;
95
+ }
96
+
97
+ ul {
98
+ margin: 0;
99
+ padding: 0;
100
+ list-style: none;
101
+
102
+ li {
103
+ display: flex;
104
+ align-items: center;
105
+ padding: 4px 10px;
106
+ width: 400px;
107
+
108
+ &:hover {
109
+ background-color: red;
110
+
111
+ .close-wrapper {
112
+ display: block;
113
+ }
114
+ }
115
+
116
+ .icon {
117
+ width: 42px;
118
+ height: 42px;
119
+ border-radius: 10px;
120
+ background-color: ${token.value.colorPrimary};
121
+ display: flex;
122
+ justify-content: center;
123
+ align-items: center;
124
+ }
125
+
126
+ .content {
127
+ padding-left: 10px;
128
+
129
+ .time-ago {
130
+ display: flex;
131
+ align-items: center;
132
+ font-size: 12px;
133
+
134
+ .hostname {
135
+ max-width: 180px;
136
+ overflow: hidden;
137
+ }
138
+
139
+ .split {
140
+ width: 4px;
141
+ height: 4px;
142
+ display: inline-block;
143
+ background-color: ${token.value.colorPrimary};
144
+ border-radius: 10px;
145
+ margin: 0 6px;
146
+ }
147
+ }
148
+ }
149
+
150
+ .close-wrapper {
151
+ display: none;
152
+ flex: 1;
153
+ text-align: right;
154
+
155
+ .close-btn {
156
+ display: inline-block;
157
+ width: 22px;
158
+ height: 22px;
159
+ border-radius: 50%;
160
+ text-align: center;
161
+
162
+ &:hover {
163
+ background-color: blue;
164
+ }
165
+ }
166
+ }
167
+ }
168
+ }
169
+ `);
170
+ function timeAgo(providedTime) {
171
+ const now = dayjs_min.default();
172
+ const diffInSeconds = now.diff(providedTime, "second");
173
+ const diffInMinutes = now.diff(providedTime, "minute");
174
+ const diffInHours = now.diff(providedTime, "hour");
175
+ if (diffInMinutes < 1) {
176
+ return `${diffInSeconds} \u79D2\u524D`;
177
+ } else if (diffInHours < 1) {
178
+ return `${diffInMinutes} \u5206\u949F\u524D`;
179
+ } else {
180
+ return `${diffInHours} \u5C0F\u65F6\u524D`;
181
+ }
182
+ }
183
+ return () => vue.createVNode("div", null, [vue.createVNode(vue.resolveComponent("a-popover"), {
184
+ "open": open.value,
185
+ "onUpdate:open": ($event) => open.value = $event,
186
+ "placement": "bottomRight",
187
+ "trigger": "click",
188
+ "overlayClassName": "search-popover-wrapper"
189
+ }, {
190
+ default: () => vue.createVNode("div", null, [vue.createVNode(vue.resolveComponent("a-button"), {
191
+ "style": {
192
+ borderRadius: "10px"
193
+ },
194
+ "icon": vue.h(iconsVue.DownOutlined),
195
+ "title": "\u641C\u7D22\u6807\u7B7E\u9875"
196
+ }, null)]),
197
+ content: () => vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
198
+ "class": searchStyle.value
199
+ }, [vue.createVNode(vue.resolveComponent("a-input"), {
200
+ "placeholder": "\u641C\u7D22\u6807\u7B7E\u9875",
201
+ "bordered": false
202
+ }, {
203
+ prefix: () => vue.createVNode(iconsVue.SearchOutlined, null, null),
204
+ suffix: () => vue.createVNode("span", {
205
+ "style": {
206
+ color: "rgba(0, 0, 0, 0.45)"
207
+ }
208
+ }, [vue.createTextVNode("Ctrl+Shift+S")])
209
+ })]), vue.createVNode("div", {
210
+ "class": searchListStyle.value
211
+ }, [vue.createVNode("span", {
212
+ "class": "search-title"
213
+ }, [vue.createTextVNode("\u6253\u5F00\u7684\u6807\u7B7E\u9875")]), vue.createVNode("ul", null, [navTabList.value.map((item) => {
214
+ var _a, _b;
215
+ return vue.createVNode("li", null, [vue.createVNode("div", {
216
+ "class": "icon"
217
+ }, [vue.createVNode(iconsVue.UnorderedListOutlined, null, null)]), vue.createVNode("div", {
218
+ "class": "content"
219
+ }, [vue.createVNode("div", {
220
+ "class": "title"
221
+ }, [(_a = item.meta) == null ? void 0 : _a.title]), vue.createVNode("div", {
222
+ "class": "time-ago"
223
+ }, [vue.createVNode("span", {
224
+ "class": "hostname"
225
+ }, [window.location.hostname + "" + item.path]), vue.createVNode("span", {
226
+ "class": "split"
227
+ }, null), vue.createVNode("span", {
228
+ "class": "time"
229
+ }, [timeAgo((_b = item.openTime) != null ? _b : 0)])])]), vue.createVNode("div", {
230
+ "class": "close-wrapper"
231
+ }, [vue.createVNode("span", {
232
+ "class": "close-btn",
233
+ "onClick": () => onCloseTab(item.fullPath || "")
234
+ }, [vue.createVNode(iconsVue.CloseOutlined, null, null)])])]);
235
+ })])])])
236
+ })]);
237
+ }
238
+ });
239
+
240
+ exports.default = Search;
241
+ //# sourceMappingURL=Search.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Search.cjs","sources":["../../../../src/components/tab/Search.tsx"],"sourcesContent":["import { computed, ComputedRef, defineComponent, h, ref, watch } from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { useMagicKeys, useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport {\r\n CloseOutlined,\r\n DownOutlined,\r\n SearchOutlined,\r\n UnorderedListOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport { useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport dayjs from \"dayjs\";\r\n\r\nexport default defineComponent({\r\n name: \"Search\",\r\n setup() {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n\r\n const { getList, deleteTabs } = useNavTabStore();\r\n // 用来监听 Ctrl + Shift + S\r\n const keys = useMagicKeys();\r\n const shiftCtrlA = keys[\"Shift+Ctrl+S\"];\r\n const open = ref(false);\r\n const { y } = useWindowScroll();\r\n\r\n const navTabList = computed(() => {\r\n return getList!.sort((a, b) => (b.openTime || 0) - (a.openTime || 0));\r\n });\r\n\r\n watch(shiftCtrlA, v => {\r\n if (v) {\r\n open.value = !open.value;\r\n }\r\n });\r\n watch(\r\n () => y.value,\r\n val => {\r\n if (val > 0) {\r\n open.value = false;\r\n }\r\n }\r\n );\r\n\r\n const buttonToken = {\r\n borderRadius: \"12px\"\r\n };\r\n\r\n const onCloseTab = (path: string) => {\r\n deleteTabs(path);\r\n };\r\n\r\n const searchStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n border-bottom: 1px solid ${token.value.colorBorder};\r\n `\r\n );\r\n\r\n const searchListStyle = computed(\r\n () => css`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 400px;\r\n overflow-y: overlay;\r\n\r\n /* 整个滚动条 */\r\n\r\n ::-webkit-scrollbar {\r\n width: 4px; /* 垂直滚动条的宽度 */\r\n height: 4px; /* 水平滚动条的高度 */\r\n }\r\n\r\n /* 滚动条轨道 */\r\n\r\n ::-webkit-scrollbar-track {\r\n background: transparent; /* 轨道背景色 */\r\n border-radius: 0; /* 轨道圆角 */\r\n }\r\n\r\n /* 滚动条滑块 */\r\n\r\n ::-webkit-scrollbar-thumb {\r\n //background: #888; /* 滑块背景色 */\r\n // border-radius: 6px; /* 滑块圆角 */\r\n border: 3px solid ${token.value.colorPrimaryBorder}; /* 滑块边框 */\r\n }\r\n\r\n /* 滚动条滑块悬停效果 */\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background: red; /* 滑块悬停背景色 */\r\n }\r\n\r\n .search-title {\r\n position: sticky;\r\n top: 0;\r\n padding: 10px;\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 10px;\r\n width: 400px;\r\n\r\n &:hover {\r\n background-color: red;\r\n\r\n .close-wrapper {\r\n display: block;\r\n }\r\n }\r\n\r\n .icon {\r\n width: 42px;\r\n height: 42px;\r\n border-radius: 10px;\r\n background-color: ${token.value.colorPrimary};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .content {\r\n padding-left: 10px;\r\n\r\n .time-ago {\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n\r\n .hostname {\r\n max-width: 180px;\r\n overflow: hidden;\r\n }\r\n\r\n .split {\r\n width: 4px;\r\n height: 4px;\r\n display: inline-block;\r\n background-color: ${token.value.colorPrimary};\r\n border-radius: 10px;\r\n margin: 0 6px;\r\n }\r\n }\r\n }\r\n\r\n .close-wrapper {\r\n display: none;\r\n flex: 1;\r\n text-align: right;\r\n\r\n .close-btn {\r\n display: inline-block;\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n background-color: blue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n function timeAgo(providedTime: number) {\r\n const now = dayjs();\r\n const diffInSeconds = now.diff(providedTime, \"second\"); // 计算时间差(秒)\r\n const diffInMinutes = now.diff(providedTime, \"minute\"); // 计算时间差(分钟)\r\n const diffInHours = now.diff(providedTime, \"hour\"); // 计算时间差(小时)\r\n\r\n if (diffInMinutes < 1) {\r\n return `${diffInSeconds} 秒前`;\r\n } else if (diffInHours < 1) {\r\n return `${diffInMinutes} 分钟前`;\r\n } else {\r\n return `${diffInHours} 小时前`;\r\n }\r\n }\r\n\r\n return () => (\r\n <div>\r\n <a-popover\r\n v-model:open={open.value}\r\n placement={\"bottomRight\"}\r\n trigger={\"click\"}\r\n overlayClassName={\"search-popover-wrapper\"}\r\n >\r\n {{\r\n default: () => (\r\n <div>\r\n <a-button\r\n style={{ borderRadius: \"10px\" }}\r\n icon={h(DownOutlined)}\r\n title={\"搜索标签页\"}\r\n />\r\n </div>\r\n ),\r\n content: () => (\r\n <>\r\n <div class={searchStyle.value}>\r\n <a-input placeholder={\"搜索标签页\"} bordered={false}>\r\n {{\r\n prefix: () => <SearchOutlined />,\r\n suffix: () => (\r\n <span style={{ color: \"rgba(0, 0, 0, 0.45)\" }}>\r\n Ctrl+Shift+S\r\n </span>\r\n )\r\n }}\r\n </a-input>\r\n </div>\r\n <div class={searchListStyle.value}>\r\n <span class={\"search-title\"}>打开的标签页</span>\r\n <ul>\r\n {navTabList.value.map(item => (\r\n <li>\r\n <div class={\"icon\"}>\r\n <UnorderedListOutlined />\r\n </div>\r\n <div class={\"content\"}>\r\n <div class={\"title\"}>{item.meta?.title}</div>\r\n <div class={\"time-ago\"}>\r\n <span class={\"hostname\"}>\r\n {window.location.hostname + \"\" + item.path}\r\n </span>\r\n <span class={\"split\"}></span>\r\n <span class={\"time\"}>\r\n {timeAgo(item.openTime ?? 0)}\r\n </span>\r\n </div>\r\n </div>\r\n <div class={\"close-wrapper\"}>\r\n <span\r\n class={\"close-btn\"}\r\n onClick={() => onCloseTab(item.fullPath || \"\")}\r\n >\r\n <CloseOutlined />\r\n </span>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n }}\r\n </a-popover>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","useToken","theme","token","getList","deleteTabs","useNavTabStore","keys","useMagicKeys","shiftCtrlA","open","ref","y","useWindowScroll","navTabList","computed","sort","a","b","openTime","watch","v","value","val","buttonToken","borderRadius","onCloseTab","path","searchStyle","css","colorBorder","searchListStyle","colorPrimaryBorder","colorPrimary","timeAgo","providedTime","now","dayjs","diffInSeconds","diff","diffInMinutes","diffInHours","_createVNode","_resolveComponent","$event","default","h","DownOutlined","content","_Fragment","prefix","SearchOutlined","suffix","color","_createTextVNode","map","item","UnorderedListOutlined","meta","title","window","location","hostname","onClick","fullPath","CloseOutlined"],"mappings":"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"}
@@ -6,49 +6,51 @@ var vue = require('vue');
6
6
  var vueRouter = require('vue-router');
7
7
  var antDesignVue = require('ant-design-vue');
8
8
  var pinia = require('pinia');
9
+ var Search = require('./Search.cjs');
9
10
  var iconsVue = require('@ant-design/icons-vue');
10
11
  var store = require('@ditari/store');
11
12
  var css = require('@emotion/css');
12
13
 
13
14
  "use strict";
14
15
  const _hoisted_1 = { class: "d-tabs-nav" };
15
- const _hoisted_2 = { style: { "padding": "0 10px" } };
16
- const _hoisted_3 = { class: "tab-item" };
17
- const _hoisted_4 = { class: "tab-close" };
18
- const _hoisted_5 = ["onClick"];
16
+ const _hoisted_2 = { class: "tab-item" };
17
+ const _hoisted_3 = { class: "tab-close" };
18
+ const _hoisted_4 = ["onClick"];
19
19
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
20
20
  __name: "Tab",
21
21
  setup(__props) {
22
- const { token, tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();
22
+ const { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();
23
23
  const { activeKey, list, onChange, onClose } = useTab();
24
24
  function useStyle() {
25
25
  const { useToken } = antDesignVue.theme;
26
- const { token: token2 } = useToken();
27
- const dynamicValue = "green";
26
+ const { token } = useToken();
27
+ const activeTabColor = vue.computed(() => token.value.colorBgLayout);
28
+ const splitColor = vue.computed(() => token.value.colorBorderSecondary);
28
29
  const tabsNavStyle2 = vue.computed(() => {
29
30
  return css.css`
30
- --my-color: ${dynamicValue};
31
- background: ${token2.value.colorBgContainer};
31
+ --active-tab-color: ${activeTabColor.value};
32
+ --splitColor: ${splitColor.value};
33
+ background: ${token.value.colorBgContainer};
32
34
  padding-top: 10px;
35
+ display: flex;
33
36
  `;
34
37
  });
35
38
  const tabHoverBgStyle2 = vue.computed(() => {
36
39
  return css.css`
37
40
  &:before {
38
- background: ${token2.value.colorPrimaryBgHover};
41
+ background: ${token.value.colorPrimaryBgHover};
39
42
  }
40
43
  `;
41
44
  });
42
45
  const closeBtnStyle2 = vue.computed(() => {
43
46
  return css.css`
44
47
  &:hover {
45
- background: ${token2.value.colorPrimaryBorderHover};
48
+ background: ${token.value.colorPrimaryBorderHover};
46
49
  border-radius: 50%;
47
50
  }
48
51
  `;
49
52
  });
50
53
  return {
51
- token: token2,
52
54
  tabsNavStyle: tabsNavStyle2,
53
55
  tabHoverBgStyle: tabHoverBgStyle2,
54
56
  closeBtnStyle: closeBtnStyle2
@@ -101,9 +103,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
101
103
  };
102
104
  }
103
105
  return (_ctx, _cache) => {
104
- const _component_a_input = vue.resolveComponent("a-input");
105
- const _component_a_button = vue.resolveComponent("a-button");
106
- const _component_a_popover = vue.resolveComponent("a-popover");
107
106
  const _component_a_tab_pane = vue.resolveComponent("a-tab-pane");
108
107
  const _component_a_tabs = vue.resolveComponent("a-tabs");
109
108
  return vue.openBlock(), vue.createElementBlock(
@@ -112,6 +111,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
112
111
  class: vue.normalizeClass(["tabs-nav-wrapper", vue.unref(tabsNavStyle)])
113
112
  },
114
113
  [
114
+ vue.createVNode(vue.unref(Search.default)),
115
115
  vue.createElementVNode("div", _hoisted_1, [
116
116
  vue.createVNode(_component_a_tabs, {
117
117
  size: "small",
@@ -121,45 +121,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
121
121
  "hide-add": "",
122
122
  onChange: vue.unref(onChange)
123
123
  }, {
124
- leftExtra: vue.withCtx(() => [
125
- vue.createElementVNode("div", _hoisted_2, [
126
- vue.createVNode(_component_a_popover, { placement: "bottomRight" }, {
127
- content: vue.withCtx(() => [
128
- vue.createVNode(_component_a_input, {
129
- bordered: false,
130
- placeholder: "\u641C\u7D22\u6807\u7B7E\u9875"
131
- }, {
132
- prefix: vue.withCtx(() => [
133
- vue.createVNode(vue.unref(iconsVue.SearchOutlined))
134
- ]),
135
- suffix: vue.withCtx(() => [
136
- vue.createElementVNode(
137
- "span",
138
- {
139
- style: vue.normalizeStyle({ color: vue.unref(token).colorTextTertiary })
140
- },
141
- "Ctrl+Shift+S",
142
- 4
143
- /* STYLE */
144
- )
145
- ]),
146
- _: 1
147
- /* STABLE */
148
- })
149
- ]),
150
- default: vue.withCtx(() => [
151
- vue.createVNode(_component_a_button, {
152
- size: "small",
153
- shape: "circle",
154
- icon: vue.h(vue.unref(iconsVue.SearchOutlined)),
155
- title: "\u641C\u7D22\u6807\u7B7E\u9875"
156
- }, null, 8, ["icon"])
157
- ]),
158
- _: 1
159
- /* STABLE */
160
- })
161
- ])
162
- ]),
163
124
  default: vue.withCtx(() => [
164
125
  (vue.openBlock(true), vue.createElementBlock(
165
126
  vue.Fragment,
@@ -191,18 +152,18 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
191
152
  )),
192
153
  vue.createElementVNode(
193
154
  "div",
194
- _hoisted_3,
155
+ _hoisted_2,
195
156
  vue.toDisplayString(((_a = item.meta) == null ? void 0 : _a.title) || "\u65E0\u6807\u9898"),
196
157
  1
197
158
  /* TEXT */
198
159
  ),
199
- vue.createElementVNode("div", _hoisted_4, [
160
+ vue.createElementVNode("div", _hoisted_3, [
200
161
  vue.createElementVNode("div", {
201
162
  class: vue.normalizeClass(["close-btn", vue.unref(closeBtnStyle)]),
202
163
  onClick: ($event) => vue.unref(onClose)($event, item.fullPath)
203
164
  }, [
204
165
  vue.createVNode(vue.unref(iconsVue.CloseOutlined))
205
- ], 10, _hoisted_5)
166
+ ], 10, _hoisted_4)
206
167
  ])
207
168
  ];
208
169
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue2.cjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, h, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { CloseOutlined, SearchOutlined } from \"@ant-design/icons-vue\";\r\nimport { 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 { token, tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();\r\n\r\nconst { activeKey, list, onChange, onClose } = useTab();\r\n\r\nfunction useStyle(): {\r\n token: ComputedRef<GlobalToken>;\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n const dynamicValue = \"green\"; // 动态值,可以是从 state props 中获取的\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --my-color: ${dynamicValue};\r\n background: ${token.value.colorBgContainer};\r\n padding-top: 10px;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n token,\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(item => item.path === key)[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = ($event: Event, key: string | undefined) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <template #leftExtra>\r\n <div style=\"padding: 0 10px\">\r\n <a-popover placement=\"bottomRight\">\r\n <template #content>\r\n <a-input :bordered=\"false\" placeholder=\"搜索标签页\">\r\n <template #prefix>\r\n <SearchOutlined />\r\n </template>\r\n <template #suffix>\r\n <span :style=\"{ color: token.colorTextTertiary }\"\r\n >Ctrl+Shift+S</span\r\n >\r\n </template>\r\n </a-input>\r\n </template>\r\n <a-button\r\n size=\"small\"\r\n shape=\"circle\"\r\n :icon=\"h(SearchOutlined)\"\r\n title=\"搜索标签页\"\r\n />\r\n </a-popover>\r\n </div>\r\n </template>\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div class=\"tab-hover-bg\" :class=\"tabHoverBgStyle\"></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div class=\"tab-item\">{{ item.meta?.title || \"无标题\" }}</div>\r\n <div class=\"tab-close\">\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["theme","token","tabsNavStyle","computed","css","tabHoverBgStyle","closeBtnStyle","useRoute","useRouter","store","useNavTabStore","list","activeKey","storeToRefs","watch","onChange","onClose"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.vue2.cjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, ref, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport Search from \"./Search\";\r\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\r\nimport { 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 { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } = useStyle();\r\n\r\nconst { activeKey, list, onChange, onClose } = useTab();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } = useToken();\r\n\r\n const activeTabColor = computed(() => token.value.colorBgLayout);\r\n const splitColor = computed(() => token.value.colorBorderSecondary);\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n background: ${token.value.colorBgContainer};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(item => item.path === key)[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = ($event: Event, key: string | undefined) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div class=\"tab-hover-bg\" :class=\"tabHoverBgStyle\"></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div class=\"tab-item\">{{ item.meta?.title || \"无标题\" }}</div>\r\n <div class=\"tab-close\">\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["theme","computed","tabsNavStyle","css","tabHoverBgStyle","closeBtnStyle","useRoute","useRouter","store","useNavTabStore","list","activeKey","storeToRefs","watch","onChange","onClose"],"mappings":"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"}
@@ -86,6 +86,7 @@ const defaultConfig = {
86
86
  const paginationStyle = css.css`
87
87
  display: flex;
88
88
  justify-content: center;
89
+ padding-top: 6px;
89
90
  `;
90
91
  const DTable = /* @__PURE__ */ vue.defineComponent({
91
92
  name: "DTable",
@@ -161,7 +162,7 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
161
162
  var _a, _b, _c;
162
163
  tableEl = (_a = tableRef2 == null ? void 0 : tableRef2.value) == null ? void 0 : _a.$el;
163
164
  headerHeight = useEleHeight(tableEl.getElementsByClassName("ant-table-header")[0]);
164
- const paginationEl = tableEl.getElementsByClassName("ant-pagination")[0];
165
+ const paginationEl = tableEl.getElementsByClassName("d-pagination")[0];
165
166
  let paginationHeight = 0;
166
167
  if (paginationEl) {
167
168
  paginationEl.style.marginBottom = "0";
@@ -349,11 +350,8 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
349
350
  scrollToFirstRowOnChange: true
350
351
  }
351
352
  }, tableSlots), vue.createVNode("div", {
352
- "class": paginationStyle
353
+ "class": [paginationStyle, "d-pagination"]
353
354
  }, [pagination && vue.createVNode(antDesignVue.Pagination, {
354
- "style": {
355
- marginTop: "16px"
356
- },
357
355
  "current": paginationConfig.value.current,
358
356
  "onUpdate:current": ($event) => paginationConfig.value.current = $event,
359
357
  "pageSize": paginationConfig.value.pageSize,
@@ -367,7 +365,8 @@ const DTable = /* @__PURE__ */ vue.defineComponent({
367
365
  "default-page-size": paginationConfig.value.defaultPageSize,
368
366
  "page-size-options": paginationConfig.value.pageSizeOptions,
369
367
  "show-total": paginationConfig.value.showTotal,
370
- "onChange": onPaginationChange
368
+ "onChange": onPaginationChange,
369
+ "showLessItems": true
371
370
  }, null)])]
372
371
  });
373
372
  }