el-plus2 0.0.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 (299) hide show
  1. package/dist/index.full.js +2204 -0
  2. package/dist/index.full.min.js +2 -0
  3. package/dist/index.full.min.js.map +1 -0
  4. package/dist/index.full.min.mjs +2 -0
  5. package/dist/index.full.min.mjs.map +1 -0
  6. package/dist/index.full.mjs +2176 -0
  7. package/env.d.ts +17 -0
  8. package/es/components/buttons/index.d.ts +359 -0
  9. package/es/components/buttons/index.mjs +8 -0
  10. package/es/components/buttons/index.mjs.map +1 -0
  11. package/es/components/buttons/src/buttons-vue.d.ts +142 -0
  12. package/es/components/buttons/src/buttons-vue.mjs +70 -0
  13. package/es/components/buttons/src/buttons-vue.mjs.map +1 -0
  14. package/es/components/buttons/src/buttons.d.ts +57 -0
  15. package/es/components/buttons/src/buttons.mjs +23 -0
  16. package/es/components/buttons/src/buttons.mjs.map +1 -0
  17. package/es/components/form/index.d.ts +291 -0
  18. package/es/components/form/index.mjs +10 -0
  19. package/es/components/form/index.mjs.map +1 -0
  20. package/es/components/form/src/form-item-vue.d.ts +135 -0
  21. package/es/components/form/src/form-item-vue.mjs +40 -0
  22. package/es/components/form/src/form-item-vue.mjs.map +1 -0
  23. package/es/components/form/src/form-item.d.ts +68 -0
  24. package/es/components/form/src/form-item.mjs +33 -0
  25. package/es/components/form/src/form-item.mjs.map +1 -0
  26. package/es/components/form/src/form.d.ts +66 -0
  27. package/es/components/form/src/form.mjs +50 -0
  28. package/es/components/form/src/form.mjs.map +1 -0
  29. package/es/components/form/src/form.vue.d.ts +161 -0
  30. package/es/components/form/src/form.vue.mjs +6 -0
  31. package/es/components/form/src/form.vue.mjs.map +1 -0
  32. package/es/components/form/src/form.vue2.mjs +124 -0
  33. package/es/components/form/src/form.vue2.mjs.map +1 -0
  34. package/es/components/form/src/hooks/use-form-item.d.ts +12 -0
  35. package/es/components/form/src/hooks/use-form-item.mjs +97 -0
  36. package/es/components/form/src/hooks/use-form-item.mjs.map +1 -0
  37. package/es/components/form/src/hooks/use-form.d.ts +25 -0
  38. package/es/components/form/src/hooks/use-form.mjs +53 -0
  39. package/es/components/form/src/hooks/use-form.mjs.map +1 -0
  40. package/es/components/index.d.ts +6 -0
  41. package/es/components/index.mjs +9 -0
  42. package/es/components/index.mjs.map +1 -0
  43. package/es/components/input/index.d.ts +468 -0
  44. package/es/components/input/index.mjs +8 -0
  45. package/es/components/input/index.mjs.map +1 -0
  46. package/es/components/input/src/input.d.ts +122 -0
  47. package/es/components/input/src/input.mjs +28 -0
  48. package/es/components/input/src/input.mjs.map +1 -0
  49. package/es/components/input/src/input.vue.d.ts +268 -0
  50. package/es/components/input/src/input.vue.mjs +6 -0
  51. package/es/components/input/src/input.vue.mjs.map +1 -0
  52. package/es/components/input/src/input.vue2.mjs +144 -0
  53. package/es/components/input/src/input.vue2.mjs.map +1 -0
  54. package/es/components/searchListPage/index.d.ts +8583 -0
  55. package/es/components/searchListPage/index.mjs +8 -0
  56. package/es/components/searchListPage/index.mjs.map +1 -0
  57. package/es/components/searchListPage/src/searchListPage.d.ts +64 -0
  58. package/es/components/searchListPage/src/searchListPage.mjs +61 -0
  59. package/es/components/searchListPage/src/searchListPage.mjs.map +1 -0
  60. package/es/components/searchListPage/src/searchListPage.vue.d.ts +2760 -0
  61. package/es/components/searchListPage/src/searchListPage.vue.mjs +6 -0
  62. package/es/components/searchListPage/src/searchListPage.vue.mjs.map +1 -0
  63. package/es/components/searchListPage/src/searchListPage.vue2.mjs +99 -0
  64. package/es/components/searchListPage/src/searchListPage.vue2.mjs.map +1 -0
  65. package/es/components/searchListPage/src/use-search-list-page.d.ts +2671 -0
  66. package/es/components/searchListPage/src/use-search-list-page.mjs +177 -0
  67. package/es/components/searchListPage/src/use-search-list-page.mjs.map +1 -0
  68. package/es/components/select/index.d.ts +664 -0
  69. package/es/components/select/index.mjs +8 -0
  70. package/es/components/select/index.mjs.map +1 -0
  71. package/es/components/select/src/select.d.ts +283 -0
  72. package/es/components/select/src/select.mjs +47 -0
  73. package/es/components/select/src/select.mjs.map +1 -0
  74. package/es/components/select/src/select.vue.d.ts +384 -0
  75. package/es/components/select/src/select.vue.mjs +6 -0
  76. package/es/components/select/src/select.vue.mjs.map +1 -0
  77. package/es/components/select/src/select.vue2.mjs +113 -0
  78. package/es/components/select/src/select.vue2.mjs.map +1 -0
  79. package/es/components/select/src/use-select.d.ts +12 -0
  80. package/es/components/select/src/use-select.mjs +87 -0
  81. package/es/components/select/src/use-select.mjs.map +1 -0
  82. package/es/components/table/index.d.ts +2975 -0
  83. package/es/components/table/index.mjs +8 -0
  84. package/es/components/table/index.mjs.map +1 -0
  85. package/es/components/table/src/table.d.ts +781 -0
  86. package/es/components/table/src/table.mjs +81 -0
  87. package/es/components/table/src/table.mjs.map +1 -0
  88. package/es/components/table/src/table.vue.d.ts +1708 -0
  89. package/es/components/table/src/table.vue.mjs +6 -0
  90. package/es/components/table/src/table.vue.mjs.map +1 -0
  91. package/es/components/table/src/table.vue2.mjs +204 -0
  92. package/es/components/table/src/table.vue2.mjs.map +1 -0
  93. package/es/components/table/src/use-table.d.ts +241 -0
  94. package/es/components/table/src/use-table.mjs +260 -0
  95. package/es/components/table/src/use-table.mjs.map +1 -0
  96. package/es/components.d.ts +3 -0
  97. package/es/components.mjs +11 -0
  98. package/es/components.mjs.map +1 -0
  99. package/es/directives/index.d.ts +2 -0
  100. package/es/directives/index.mjs +3 -0
  101. package/es/directives/index.mjs.map +1 -0
  102. package/es/directives/permission/index.d.ts +6 -0
  103. package/es/directives/permission/index.mjs +55 -0
  104. package/es/directives/permission/index.mjs.map +1 -0
  105. package/es/directives/repeat-click/index.d.ts +16 -0
  106. package/es/directives/repeat-click/index.mjs +68 -0
  107. package/es/directives/repeat-click/index.mjs.map +1 -0
  108. package/es/directives/vite.config.d.ts +2 -0
  109. package/es/hooks/index.d.ts +1 -0
  110. package/es/hooks/index.mjs +2 -0
  111. package/es/hooks/index.mjs.map +1 -0
  112. package/es/hooks/use-request.d.ts +20 -0
  113. package/es/hooks/use-request.mjs +82 -0
  114. package/es/hooks/use-request.mjs.map +1 -0
  115. package/es/index.d.ts +9 -0
  116. package/es/index.mjs +24 -0
  117. package/es/index.mjs.map +1 -0
  118. package/es/package.json.mjs +4 -0
  119. package/es/package.json.mjs.map +1 -0
  120. package/es/theme-chalk/gulpfile.d.ts +0 -0
  121. package/es/theme-chalk/gulpfile.mjs +2 -0
  122. package/es/theme-chalk/gulpfile.mjs.map +1 -0
  123. package/es/types/env.d.mjs +2 -0
  124. package/es/types/env.d.mjs.map +1 -0
  125. package/es/types/global.d.mjs +2 -0
  126. package/es/types/global.d.mjs.map +1 -0
  127. package/es/types/vue-shim.d.mjs +2 -0
  128. package/es/types/vue-shim.d.mjs.map +1 -0
  129. package/es/utils/bem.d.ts +10 -0
  130. package/es/utils/bem.mjs +31 -0
  131. package/es/utils/bem.mjs.map +1 -0
  132. package/es/utils/cookie.d.ts +7 -0
  133. package/es/utils/cookie.mjs +29 -0
  134. package/es/utils/cookie.mjs.map +1 -0
  135. package/es/utils/env.d.ts +3 -0
  136. package/es/utils/env.mjs +27 -0
  137. package/es/utils/env.mjs.map +1 -0
  138. package/es/utils/props.d.ts +37 -0
  139. package/es/utils/props.mjs +66 -0
  140. package/es/utils/props.mjs.map +1 -0
  141. package/es/utils/request.d.ts +6 -0
  142. package/es/utils/request.mjs +157 -0
  143. package/es/utils/request.mjs.map +1 -0
  144. package/es/utils/type.d.ts +15 -0
  145. package/es/utils/type.mjs +2 -0
  146. package/es/utils/type.mjs.map +1 -0
  147. package/es/utils/with-install.d.ts +4 -0
  148. package/es/utils/with-install.mjs +9 -0
  149. package/es/utils/with-install.mjs.map +1 -0
  150. package/es/version.d.ts +1 -0
  151. package/es/version.mjs +4 -0
  152. package/es/version.mjs.map +1 -0
  153. package/global.d.ts +13 -0
  154. package/lib/components/buttons/index.d.ts +359 -0
  155. package/lib/components/buttons/index.js +13 -0
  156. package/lib/components/buttons/index.js.map +1 -0
  157. package/lib/components/buttons/src/buttons-vue.d.ts +142 -0
  158. package/lib/components/buttons/src/buttons-vue.js +74 -0
  159. package/lib/components/buttons/src/buttons-vue.js.map +1 -0
  160. package/lib/components/buttons/src/buttons.d.ts +57 -0
  161. package/lib/components/buttons/src/buttons.js +25 -0
  162. package/lib/components/buttons/src/buttons.js.map +1 -0
  163. package/lib/components/form/index.d.ts +291 -0
  164. package/lib/components/form/index.js +21 -0
  165. package/lib/components/form/index.js.map +1 -0
  166. package/lib/components/form/src/form-item-vue.d.ts +135 -0
  167. package/lib/components/form/src/form-item-vue.js +44 -0
  168. package/lib/components/form/src/form-item-vue.js.map +1 -0
  169. package/lib/components/form/src/form-item.d.ts +68 -0
  170. package/lib/components/form/src/form-item.js +36 -0
  171. package/lib/components/form/src/form-item.js.map +1 -0
  172. package/lib/components/form/src/form.d.ts +66 -0
  173. package/lib/components/form/src/form.js +55 -0
  174. package/lib/components/form/src/form.js.map +1 -0
  175. package/lib/components/form/src/form.vue.d.ts +161 -0
  176. package/lib/components/form/src/form.vue.js +10 -0
  177. package/lib/components/form/src/form.vue.js.map +1 -0
  178. package/lib/components/form/src/form.vue2.js +128 -0
  179. package/lib/components/form/src/form.vue2.js.map +1 -0
  180. package/lib/components/form/src/hooks/use-form-item.d.ts +12 -0
  181. package/lib/components/form/src/hooks/use-form-item.js +101 -0
  182. package/lib/components/form/src/hooks/use-form-item.js.map +1 -0
  183. package/lib/components/form/src/hooks/use-form.d.ts +25 -0
  184. package/lib/components/form/src/hooks/use-form.js +56 -0
  185. package/lib/components/form/src/hooks/use-form.js.map +1 -0
  186. package/lib/components/index.d.ts +6 -0
  187. package/lib/components/index.js +35 -0
  188. package/lib/components/index.js.map +1 -0
  189. package/lib/components/input/index.d.ts +468 -0
  190. package/lib/components/input/index.js +15 -0
  191. package/lib/components/input/index.js.map +1 -0
  192. package/lib/components/input/src/input.d.ts +122 -0
  193. package/lib/components/input/src/input.js +32 -0
  194. package/lib/components/input/src/input.js.map +1 -0
  195. package/lib/components/input/src/input.vue.d.ts +268 -0
  196. package/lib/components/input/src/input.vue.js +10 -0
  197. package/lib/components/input/src/input.vue.js.map +1 -0
  198. package/lib/components/input/src/input.vue2.js +148 -0
  199. package/lib/components/input/src/input.vue2.js.map +1 -0
  200. package/lib/components/searchListPage/index.d.ts +8583 -0
  201. package/lib/components/searchListPage/index.js +13 -0
  202. package/lib/components/searchListPage/index.js.map +1 -0
  203. package/lib/components/searchListPage/src/searchListPage.d.ts +64 -0
  204. package/lib/components/searchListPage/src/searchListPage.js +63 -0
  205. package/lib/components/searchListPage/src/searchListPage.js.map +1 -0
  206. package/lib/components/searchListPage/src/searchListPage.vue.d.ts +2760 -0
  207. package/lib/components/searchListPage/src/searchListPage.vue.js +10 -0
  208. package/lib/components/searchListPage/src/searchListPage.vue.js.map +1 -0
  209. package/lib/components/searchListPage/src/searchListPage.vue2.js +103 -0
  210. package/lib/components/searchListPage/src/searchListPage.vue2.js.map +1 -0
  211. package/lib/components/searchListPage/src/use-search-list-page.d.ts +2671 -0
  212. package/lib/components/searchListPage/src/use-search-list-page.js +179 -0
  213. package/lib/components/searchListPage/src/use-search-list-page.js.map +1 -0
  214. package/lib/components/select/index.d.ts +664 -0
  215. package/lib/components/select/index.js +17 -0
  216. package/lib/components/select/index.js.map +1 -0
  217. package/lib/components/select/src/select.d.ts +283 -0
  218. package/lib/components/select/src/select.js +53 -0
  219. package/lib/components/select/src/select.js.map +1 -0
  220. package/lib/components/select/src/select.vue.d.ts +384 -0
  221. package/lib/components/select/src/select.vue.js +10 -0
  222. package/lib/components/select/src/select.vue.js.map +1 -0
  223. package/lib/components/select/src/select.vue2.js +117 -0
  224. package/lib/components/select/src/select.vue2.js.map +1 -0
  225. package/lib/components/select/src/use-select.d.ts +12 -0
  226. package/lib/components/select/src/use-select.js +89 -0
  227. package/lib/components/select/src/use-select.js.map +1 -0
  228. package/lib/components/table/index.d.ts +2975 -0
  229. package/lib/components/table/index.js +16 -0
  230. package/lib/components/table/index.js.map +1 -0
  231. package/lib/components/table/src/table.d.ts +781 -0
  232. package/lib/components/table/src/table.js +86 -0
  233. package/lib/components/table/src/table.js.map +1 -0
  234. package/lib/components/table/src/table.vue.d.ts +1708 -0
  235. package/lib/components/table/src/table.vue.js +10 -0
  236. package/lib/components/table/src/table.vue.js.map +1 -0
  237. package/lib/components/table/src/table.vue2.js +208 -0
  238. package/lib/components/table/src/table.vue2.js.map +1 -0
  239. package/lib/components/table/src/use-table.d.ts +241 -0
  240. package/lib/components/table/src/use-table.js +264 -0
  241. package/lib/components/table/src/use-table.js.map +1 -0
  242. package/lib/components.d.ts +3 -0
  243. package/lib/components.js +15 -0
  244. package/lib/components.js.map +1 -0
  245. package/lib/directives/index.d.ts +2 -0
  246. package/lib/directives/index.js +10 -0
  247. package/lib/directives/index.js.map +1 -0
  248. package/lib/directives/permission/index.d.ts +6 -0
  249. package/lib/directives/permission/index.js +60 -0
  250. package/lib/directives/permission/index.js.map +1 -0
  251. package/lib/directives/repeat-click/index.d.ts +16 -0
  252. package/lib/directives/repeat-click/index.js +72 -0
  253. package/lib/directives/repeat-click/index.js.map +1 -0
  254. package/lib/directives/vite.config.d.ts +2 -0
  255. package/lib/hooks/index.d.ts +1 -0
  256. package/lib/hooks/index.js +8 -0
  257. package/lib/hooks/index.js.map +1 -0
  258. package/lib/hooks/use-request.d.ts +20 -0
  259. package/lib/hooks/use-request.js +84 -0
  260. package/lib/hooks/use-request.js.map +1 -0
  261. package/lib/index.d.ts +9 -0
  262. package/lib/index.js +53 -0
  263. package/lib/index.js.map +1 -0
  264. package/lib/package.json.js +6 -0
  265. package/lib/package.json.js.map +1 -0
  266. package/lib/theme-chalk/gulpfile.d.ts +0 -0
  267. package/lib/theme-chalk/gulpfile.js +3 -0
  268. package/lib/theme-chalk/gulpfile.js.map +1 -0
  269. package/lib/types/env.d.js +3 -0
  270. package/lib/types/env.d.js.map +1 -0
  271. package/lib/types/global.d.js +3 -0
  272. package/lib/types/global.d.js.map +1 -0
  273. package/lib/types/vue-shim.d.js +3 -0
  274. package/lib/types/vue-shim.d.js.map +1 -0
  275. package/lib/utils/bem.d.ts +10 -0
  276. package/lib/utils/bem.js +33 -0
  277. package/lib/utils/bem.js.map +1 -0
  278. package/lib/utils/cookie.d.ts +7 -0
  279. package/lib/utils/cookie.js +33 -0
  280. package/lib/utils/cookie.js.map +1 -0
  281. package/lib/utils/env.d.ts +3 -0
  282. package/lib/utils/env.js +30 -0
  283. package/lib/utils/env.js.map +1 -0
  284. package/lib/utils/props.d.ts +37 -0
  285. package/lib/utils/props.js +73 -0
  286. package/lib/utils/props.js.map +1 -0
  287. package/lib/utils/request.d.ts +6 -0
  288. package/lib/utils/request.js +162 -0
  289. package/lib/utils/request.js.map +1 -0
  290. package/lib/utils/type.d.ts +15 -0
  291. package/lib/utils/type.js +3 -0
  292. package/lib/utils/type.js.map +1 -0
  293. package/lib/utils/with-install.d.ts +4 -0
  294. package/lib/utils/with-install.js +11 -0
  295. package/lib/utils/with-install.js.map +1 -0
  296. package/lib/version.d.ts +1 -0
  297. package/lib/version.js +6 -0
  298. package/lib/version.js.map +1 -0
  299. package/package.json +27 -0
@@ -0,0 +1,260 @@
1
+ import { useTemplateRef, ref, computed, reactive, createVNode, createTextVNode } from 'vue';
2
+ import { useRequest } from '../../../hooks/use-request.mjs';
3
+ import { prepareProps } from '../../../utils/props.mjs';
4
+
5
+ const useTable = (props) => {
6
+ const elFormRef = useTemplateRef("elFormRef");
7
+ const elTableRef = useTemplateRef("elTableRef");
8
+ const customData = ref([]);
9
+ const {
10
+ loading,
11
+ requestFn
12
+ } = useRequest({
13
+ api: props.api,
14
+ method: props.method,
15
+ reqData: props.reqData,
16
+ reqParams: props.reqParams,
17
+ reqBefore: props.reqBefore,
18
+ reqAfter: props.reqAfter,
19
+ cancelToken: true,
20
+ hooks: {
21
+ success(data) {
22
+ if (Array.isArray(data)) {
23
+ customData.value = data;
24
+ } else if (data && typeof data === "object") {
25
+ const rawData = data;
26
+ customData.value = rawData?.list || rawData?.data || [];
27
+ } else {
28
+ customData.value = [];
29
+ }
30
+ if (props.showPagination) {
31
+ pagination.total = (props.isFrontPage ? customData.value.length : data.total) || 0;
32
+ }
33
+ },
34
+ fail(error) {
35
+ console.error(error);
36
+ }
37
+ }
38
+ });
39
+ const search = (init = false, isPagination = false) => {
40
+ if (init) {
41
+ pagination.pageNo = 1;
42
+ }
43
+ if (isPagination && props.isFrontPage) {
44
+ const {
45
+ pageNo,
46
+ pageSize
47
+ } = pagination;
48
+ const data = customData.value.filter((item, index) => {
49
+ return index < pageNo * pageSize && index >= (pageNo - 1) * pageSize;
50
+ });
51
+ customData.value = data;
52
+ } else {
53
+ if (props.api) {
54
+ requestFn({
55
+ pageNo: pagination.pageNo,
56
+ pageSize: pagination.pageSize
57
+ });
58
+ } else if (props.data?.length) {
59
+ customData.value = props.data;
60
+ }
61
+ }
62
+ };
63
+ const {
64
+ pagination,
65
+ paginationProps
66
+ } = usePagination(props, search);
67
+ search(true);
68
+ const validate = () => {
69
+ return elFormRef.value.validate();
70
+ };
71
+ const resetFields = (props2) => {
72
+ return elFormRef.value.resetFields(props2);
73
+ };
74
+ const clearValidate = (props2) => {
75
+ return elFormRef.value.clearValidate(props2);
76
+ };
77
+ const formatActionButtons = (list, scope) => {
78
+ return list.map((item) => {
79
+ if (item.onClick) {
80
+ item.onClick = item.onClick.bind(null, scope);
81
+ }
82
+ return item;
83
+ });
84
+ };
85
+ return {
86
+ loading,
87
+ data: customData,
88
+ search,
89
+ pagination,
90
+ paginationProps,
91
+ validate,
92
+ resetFields,
93
+ clearValidate,
94
+ elFormRef,
95
+ elTableRef,
96
+ formatActionButtons
97
+ };
98
+ };
99
+ const usePagination = function(props, search) {
100
+ const pageSizes = [20, 50, 100, 200];
101
+ const pagination = reactive({
102
+ total: 0,
103
+ pageNo: 1,
104
+ pageSize: pageSizes[0]
105
+ });
106
+ const paginationProps = computed(() => {
107
+ const defaultPaginationProps = props.paginationProps || {};
108
+ const onSizeChange = defaultPaginationProps.onSizeChange;
109
+ const onCurrentChange = defaultPaginationProps.onCurrentChange;
110
+ return {
111
+ ...defaultPaginationProps,
112
+ pageSizes,
113
+ layout: "total, sizes, prev, pager, next, jumper",
114
+ onSizeChange: (value) => {
115
+ onSizeChange && onSizeChange(value);
116
+ search(true, true);
117
+ },
118
+ onCurrentChange: (value) => {
119
+ onCurrentChange && onCurrentChange(value);
120
+ search(false, true);
121
+ }
122
+ };
123
+ });
124
+ return {
125
+ pagination,
126
+ paginationProps
127
+ };
128
+ };
129
+ const useTableColumn = (props, tableData) => {
130
+ const columnProps = (column) => {
131
+ const attrs = {
132
+ align: column.align || props.align
133
+ // ...prepareEvents<TableEmits>(emit, tableEmits),
134
+ };
135
+ if (!column.renderHeader) {
136
+ let required = column.required;
137
+ if (typeof column.required === "function") {
138
+ required = column.required();
139
+ }
140
+ if (required) {
141
+ attrs["renderHeader"] = (data) => {
142
+ const {
143
+ column: column2
144
+ } = data;
145
+ return createVNode("span", null, [createVNode("span", {
146
+ "style": "color:var(--el-color-danger)"
147
+ }, [createTextVNode(" * ")]), column2.label]);
148
+ };
149
+ }
150
+ }
151
+ if (column.headerRender) {
152
+ attrs.renderHeader = column.headerRender;
153
+ }
154
+ if (column.filter) {
155
+ const arr = tableData.value.map((item) => item[column.prop]);
156
+ attrs.filters = [...new Set(arr)].map((item) => {
157
+ return {
158
+ text: item,
159
+ value: item
160
+ };
161
+ });
162
+ attrs.filterMethod = (value, row) => {
163
+ return row[column.prop] === value;
164
+ };
165
+ }
166
+ return {
167
+ ...attrs,
168
+ ...prepareProps(column)
169
+ };
170
+ };
171
+ const columnList = computed(() => {
172
+ return props.columns.filter((column) => {
173
+ if (props.linkProps.length) {
174
+ const linkColumn = props.linkProps.find((item) => item.prop === column.prop);
175
+ if (linkColumn) {
176
+ column.type = "EpButtons";
177
+ column.className = "table-column-link";
178
+ column.props = {
179
+ list: [linkColumn],
180
+ type: "text",
181
+ ...column.props
182
+ };
183
+ }
184
+ }
185
+ if ("show" in column) {
186
+ return typeof column.show === "function" ? column.show(column) : column.show;
187
+ } else if ("hide" in column) {
188
+ return typeof column.hide === "function" ? !column.hide(column) : !column.hide;
189
+ }
190
+ return true;
191
+ });
192
+ });
193
+ return {
194
+ columnProps,
195
+ columnList
196
+ };
197
+ };
198
+ const useTableFormItem = (props) => {
199
+ const formItemProps = (scope, item) => {
200
+ let required = item.required;
201
+ if (typeof required === "function") {
202
+ required = required();
203
+ }
204
+ if (item.cellRequired) {
205
+ required = item.cellRequired(scope);
206
+ }
207
+ let disabled = props.disabled;
208
+ if ("disabled" in item) {
209
+ if (typeof item.disabled === "function") {
210
+ disabled = item.disabled(scope);
211
+ } else {
212
+ disabled = item.disabled || false;
213
+ }
214
+ }
215
+ if (item.type === "EpSelect" && item.props) {
216
+ if ("options" in item.props && typeof item.props.options === "function") {
217
+ item.props.options = item.props.options(scope);
218
+ }
219
+ if ("disabledOption" in item.props && typeof item.props.disabledOption === "function") {
220
+ const disabledOption = item.props.disabledOption;
221
+ item.props.disabledOption = (...args) => disabledOption(...args, scope);
222
+ }
223
+ }
224
+ if (item.type === "EpButtons" && item.props) {
225
+ item.props.list.forEach((btnItem) => {
226
+ if (btnItem.prop) {
227
+ btnItem.name = scope.row[btnItem.prop];
228
+ }
229
+ if (btnItem.onClick) {
230
+ btnItem.onClick = btnItem.onClick.bind(null, scope);
231
+ }
232
+ });
233
+ }
234
+ for (const key in item) {
235
+ if (key.startsWith("on") && typeof item[key] === "function") {
236
+ const fn = item[key];
237
+ item[key] = (...args) => fn(...args, scope);
238
+ }
239
+ }
240
+ return {
241
+ ...prepareProps(item),
242
+ isShowLabel: false,
243
+ required,
244
+ hideRequiredAsterisk: "cellRequired" in item ? false : required,
245
+ prop: `table.${scope.$index}.${item.prop}`,
246
+ tableProp: item.prop,
247
+ // table里的表单需要绑定的prop
248
+ props: {
249
+ ...item.props,
250
+ disabled
251
+ }
252
+ };
253
+ };
254
+ return {
255
+ formItemProps
256
+ };
257
+ };
258
+
259
+ export { useTable, useTableColumn, useTableFormItem };
260
+ //# sourceMappingURL=use-table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-table.mjs","sources":["../../../../../../packages/components/table/src/use-table.tsx"],"sourcesContent":["import type { FormInstance, TableInstance, FormItemProp } from 'element-plus'\nimport { ref, computed, type Ref, reactive, useTemplateRef } from 'vue'\nimport { useRequest } from '@el-plus/hooks/use-request'\nimport type { TableColumn, TableProps, TableScope } from './table'\nimport type { ButtonProps } from '@el-plus/components/buttons'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nexport type ISearch = (init: boolean, isPagination?: boolean) => void\nexport const useTable = (props: TableProps) => {\n const elFormRef = useTemplateRef<FormInstance>('elFormRef')\n const elTableRef = useTemplateRef<TableInstance>('elTableRef')\n const customData = ref<Record<string, unknown>[]>([])\n const { loading, requestFn } = useRequest({\n api: props.api,\n method: props.method,\n reqData: props.reqData,\n reqParams: props.reqParams,\n reqBefore: props.reqBefore,\n reqAfter: props.reqAfter,\n cancelToken: true,\n hooks: {\n success(data) {\n if (Array.isArray(data)) {\n customData.value = data\n } else if (data && typeof data === 'object') {\n const rawData = data as Record<string, any>\n customData.value = rawData?.list || rawData?.data || []\n } else {\n customData.value = []\n }\n if (props.showPagination) {\n pagination.total =\n (props.isFrontPage\n ? customData.value.length\n : (data as { total: number }).total) || 0\n }\n },\n fail(error) {\n console.error(error)\n },\n },\n })\n // 加载下拉列表\n const search: ISearch = (init = false, isPagination = false) => {\n if (init) {\n pagination.pageNo = 1\n }\n // 前端分页\n if (isPagination && props.isFrontPage) {\n const { pageNo, pageSize } = pagination\n const data = customData.value.filter((item, index) => {\n return index < pageNo * pageSize && index >= (pageNo - 1) * pageSize\n })\n customData.value = data\n } else {\n if (props.api) {\n requestFn!({\n pageNo: pagination.pageNo,\n pageSize: pagination.pageSize,\n })\n } else if (props.data?.length) {\n customData.value = props.data\n }\n }\n }\n const { pagination, paginationProps } = usePagination(props, search)\n search(true)\n // 校验\n const validate = () => {\n return elFormRef.value!.validate()\n }\n // 重置校验\n const resetFields = (props: FormItemProp) => {\n return elFormRef.value!.resetFields(props)\n }\n // 清理某个字段的表单验证信息\n const clearValidate = (props: FormItemProp) => {\n return elFormRef.value!.clearValidate(props)\n }\n // 格式化操作按钮\n const formatActionButtons = (list: ButtonProps[], scope: TableScope) => {\n return list.map((item) => {\n if (item.onClick) {\n item.onClick = item.onClick.bind(null, scope)\n }\n return item\n })\n }\n\n return {\n loading,\n data: customData,\n search,\n pagination,\n paginationProps,\n validate,\n resetFields,\n clearValidate,\n elFormRef,\n elTableRef,\n formatActionButtons,\n }\n}\nconst usePagination = function (props: TableProps, search: ISearch) {\n const pageSizes = [20, 50, 100, 200]\n const pagination = reactive({\n total: 0,\n pageNo: 1,\n pageSize: pageSizes[0],\n })\n const paginationProps = computed(() => {\n const defaultPaginationProps = props.paginationProps || {}\n const onSizeChange = defaultPaginationProps.onSizeChange\n const onCurrentChange = defaultPaginationProps.onCurrentChange\n return {\n ...defaultPaginationProps,\n pageSizes,\n layout: 'total, sizes, prev, pager, next, jumper',\n onSizeChange: (value: number) => {\n onSizeChange && onSizeChange(value)\n search(true, true)\n },\n onCurrentChange: (value: number) => {\n onCurrentChange && onCurrentChange(value)\n search(false, true)\n },\n }\n })\n return {\n pagination,\n paginationProps,\n }\n}\n\nexport const useTableColumn = (\n props: TableProps,\n tableData: Ref<TableProps['data']>,\n) => {\n const columnProps = (column: TableColumn) => {\n const attrs = {\n align: column.align || props.align,\n // ...prepareEvents<TableEmits>(emit, tableEmits),\n } as TableColumn\n // console.log(attrs)\n\n if (!column.renderHeader) {\n let required = column.required\n if (typeof column.required === 'function') {\n required = column.required()\n }\n if (required) {\n attrs['renderHeader'] = (data) => {\n const { column } = data\n return (\n <span>\n <span style=\"color:var(--el-color-danger)\"> * </span>\n {column.label}\n </span>\n )\n }\n }\n }\n if (column.headerRender) {\n attrs.renderHeader = column.headerRender\n }\n if (column.filter) {\n const arr = tableData.value!.map((item) => item[column.prop!])\n attrs.filters = [...new Set(arr)].map((item) => {\n return {\n text: item,\n value: item,\n }\n })\n attrs.filterMethod = (value, row) => {\n return row[column.prop!] === value\n }\n }\n return {\n ...attrs,\n ...prepareProps(column),\n }\n }\n const columnList = computed(() => {\n return props.columns!.filter((column: TableColumn) => {\n if (props.linkProps!.length) {\n const linkColumn = props.linkProps!.find(\n (item) => item.prop === column.prop,\n )\n if (linkColumn) {\n column.type = 'EpButtons'\n column.className = 'table-column-link'\n column.props = {\n list: [linkColumn],\n type: 'text',\n ...column.props,\n }\n }\n }\n if ('show' in column) {\n return typeof column.show === 'function'\n ? column.show(column)\n : column.show\n } else if ('hide' in column) {\n return typeof column.hide === 'function'\n ? !column.hide(column)\n : !column.hide\n }\n return true\n })\n })\n return {\n columnProps,\n columnList,\n }\n}\n\nexport const useTableFormItem = (props: TableProps) => {\n const formItemProps = (scope: TableScope, item: TableColumn) => {\n let required = item.required\n if (typeof required === 'function') {\n required = required()\n }\n if (item.cellRequired) {\n required = item.cellRequired(scope)\n }\n let disabled = props.disabled\n if ('disabled' in item) {\n if (typeof item.disabled === 'function') {\n disabled = item.disabled(scope)\n } else {\n disabled = item.disabled || false\n }\n }\n if (item.type === 'EpSelect' && item.props) {\n if ('options' in item.props && typeof item.props.options === 'function') {\n item.props.options = item.props.options(scope)\n }\n if (\n 'disabledOption' in item.props &&\n typeof item.props.disabledOption === 'function'\n ) {\n const disabledOption = item.props.disabledOption\n item.props.disabledOption = (...args: unknown[]) =>\n disabledOption(...args, scope)\n }\n }\n\n if (item.type === 'EpButtons' && item.props) {\n item.props.list.forEach((btnItem: ButtonProps) => {\n if (btnItem.prop) {\n btnItem.name = scope.row[btnItem.prop] as string\n }\n if (btnItem.onClick) {\n btnItem.onClick = btnItem.onClick.bind(null, scope)\n }\n })\n }\n for (const key in item) {\n if (key.startsWith('on') && typeof item[key] === 'function') {\n const fn = item[key]\n item[key] = (...args: unknown[]) => fn(...args, scope)\n }\n }\n return {\n ...prepareProps(item),\n isShowLabel: false,\n required,\n hideRequiredAsterisk: 'cellRequired' in item ? false : required,\n prop: `table.${scope.$index}.${item.prop}`,\n tableProp: item.prop, // table里的表单需要绑定的prop\n props: {\n ...item.props,\n disabled,\n },\n }\n }\n return {\n formItemProps,\n }\n}\n"],"names":["useTable","props","elFormRef","useTemplateRef","elTableRef","customData","ref","loading","requestFn","useRequest","api","method","reqData","reqParams","reqBefore","reqAfter","cancelToken","hooks","success","data","Array","isArray","value","rawData","list","showPagination","pagination","total","isFrontPage","length","fail","error","console","search","init","isPagination","pageNo","pageSize","filter","item","index","paginationProps","usePagination","validate","resetFields","clearValidate","formatActionButtons","scope","map","onClick","bind","pageSizes","reactive","computed","defaultPaginationProps","onSizeChange","onCurrentChange","layout","useTableColumn","tableData","columnProps","column","attrs","align","renderHeader","required","_createVNode","_createTextVNode","label","headerRender","arr","prop","filters","Set","text","filterMethod","row","prepareProps","columnList","columns","linkProps","linkColumn","find","type","className","show","hide","useTableFormItem","formItemProps","cellRequired","disabled","options","disabledOption","args","forEach","btnItem","name","key","startsWith","fn","isShowLabel","hideRequiredAsterisk","$index","tableProp"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Plugin } from 'vue';
2
+ declare const _default: Plugin[];
3
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import Buttons from './components/buttons/index.mjs';
2
+ import Form from './components/form/index.mjs';
3
+ import Input from './components/input/index.mjs';
4
+ import SearchListPage from './components/searchListPage/index.mjs';
5
+ import Select from './components/select/index.mjs';
6
+ import Table from './components/table/index.mjs';
7
+
8
+ var components = [Buttons, Form, Input, SearchListPage, Select, Table];
9
+
10
+ export { components as default };
11
+ //# sourceMappingURL=components.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.mjs","sources":["../../../packages/el-plus/components.ts"],"sourcesContent":["import type { Plugin } from 'vue'\nimport Buttons from '@el-plus/components/buttons'\nimport Form from '@el-plus/components/form'\nimport Input from '@el-plus/components/input'\nimport SearchListPage from '@el-plus/components/searchListPage'\nimport Select from '@el-plus/components/select'\nimport Table from '@el-plus/components/table'\n\nexport default [Buttons, Form, Input, SearchListPage, Select, Table] as Plugin[]\n"],"names":[],"mappings":";;;;;;;AAQA,iBAAe,CAAC,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,cAAA,EAAgB,QAAQ,KAAK,CAAA;;;;"}
@@ -0,0 +1,2 @@
1
+ export { default as vRepeatClick } from './repeat-click';
2
+ export { default as vPermission } from './permission';
@@ -0,0 +1,3 @@
1
+ export { default as vRepeatClick } from './repeat-click/index.mjs';
2
+ export { default as vPermission } from './permission/index.mjs';
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,6 @@
1
+ import type { Directive } from 'vue';
2
+ declare const vPermisson: Directive<HTMLElement> & {
3
+ name: string;
4
+ };
5
+ export declare function checkPermission(permission: string, el: HTMLElement): Promise<boolean>;
6
+ export default vPermisson;
@@ -0,0 +1,55 @@
1
+ import fetch from '../../utils/request.mjs';
2
+
3
+ const vPermisson = {
4
+ name: "permission",
5
+ mounted(el, binding) {
6
+ const { arg, value } = binding.value;
7
+ if (!arg && !value) {
8
+ return;
9
+ }
10
+ el.style.display = "none";
11
+ const permission = `${arg}:${value}`;
12
+ checkPermission(permission, el);
13
+ },
14
+ updated(el, binding) {
15
+ const { arg, value } = binding.value;
16
+ if (!arg && !value) {
17
+ if (el.style.display === "none") {
18
+ el.style.display = "";
19
+ }
20
+ return;
21
+ }
22
+ const permission = `${arg}:${value}`;
23
+ checkPermission(permission, el);
24
+ }
25
+ };
26
+ async function checkPermission(permission, el) {
27
+ const { data: roles = [] } = await queryRoles();
28
+ const hasPermission = roles.indexOf(permission) > -1;
29
+ if (!hasPermission) {
30
+ el && el.parentNode && el.parentNode.removeChild(el);
31
+ } else {
32
+ el.style.display = "";
33
+ }
34
+ return hasPermission;
35
+ }
36
+ let requestPromise = null;
37
+ async function queryRoles() {
38
+ try {
39
+ if (requestPromise) {
40
+ return requestPromise;
41
+ }
42
+ requestPromise = fetch({
43
+ url: "/api-u/api/saas/user/appButtonRoleList",
44
+ loading: true,
45
+ noErrorMsg: true
46
+ });
47
+ return requestPromise;
48
+ } catch (error) {
49
+ console.error(error);
50
+ return { data: [] };
51
+ }
52
+ }
53
+
54
+ export { checkPermission, vPermisson as default };
55
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/permission/index.ts"],"sourcesContent":["import type { Directive } from 'vue'\nimport request from '@el-plus/utils/request'\n\n// v-permisson:CGXQD:QXSP\nconst vPermisson: Directive<HTMLElement> & { name: string } = {\n name: 'permission',\n mounted(el, binding) {\n const { arg, value } = binding.value\n if (!arg && !value) {\n return\n }\n el.style.display = 'none'\n const permission = `${arg}:${value}`\n checkPermission(permission, el)\n },\n updated(el, binding) {\n const { arg, value } = binding.value\n if (!arg && !value) {\n if (el.style.display === 'none') {\n el.style.display = ''\n }\n return\n }\n const permission = `${arg}:${value}`\n checkPermission(permission, el)\n },\n}\n\nexport async function checkPermission(permission: string, el: HTMLElement) {\n const { data: roles = [] } = await queryRoles()\n const hasPermission = roles.indexOf(permission) > -1\n if (!hasPermission) {\n el && el.parentNode && el.parentNode.removeChild(el)\n } else {\n el.style.display = ''\n }\n return hasPermission\n}\ntype RequestPromise = Promise<{ data: string[] }>\nlet requestPromise: RequestPromise | null = null\nasync function queryRoles(): RequestPromise {\n try {\n if (requestPromise) {\n return requestPromise\n }\n requestPromise = request({\n url: '/api-u/api/saas/user/appButtonRoleList',\n loading: true,\n noErrorMsg: true,\n })\n return requestPromise\n } catch (error) {\n console.error(error)\n return { data: [] }\n }\n}\n\nexport default vPermisson\n"],"names":["request"],"mappings":";;AAIA,MAAM,UAAA,GAAwD;AAAA,EAC5D,IAAA,EAAM,YAAA;AAAA,EACN,OAAA,CAAQ,IAAI,OAAA,EAAS;AACnB,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAM,GAAI,OAAA,CAAQ,KAAA;AAC/B,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,KAAA,EAAO;AAClB,MAAA;AAAA,IACF;AACA,IAAA,EAAA,CAAG,MAAM,OAAA,GAAU,MAAA;AACnB,IAAA,MAAM,UAAA,GAAa,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAClC,IAAA,eAAA,CAAgB,YAAY,EAAE,CAAA;AAAA,EAChC,CAAA;AAAA,EACA,OAAA,CAAQ,IAAI,OAAA,EAAS;AACnB,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAM,GAAI,OAAA,CAAQ,KAAA;AAC/B,IAAA,IAAI,CAAC,GAAA,IAAO,CAAC,KAAA,EAAO;AAClB,MAAA,IAAI,EAAA,CAAG,KAAA,CAAM,OAAA,KAAY,MAAA,EAAQ;AAC/B,QAAA,EAAA,CAAG,MAAM,OAAA,GAAU,EAAA;AAAA,MACrB;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,UAAA,GAAa,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAClC,IAAA,eAAA,CAAgB,YAAY,EAAE,CAAA;AAAA,EAChC;AACF;AAEA,eAAsB,eAAA,CAAgB,YAAoB,EAAA,EAAiB;AACzE,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,GAAQ,EAAC,EAAE,GAAI,MAAM,UAAA,EAAW;AAC9C,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,EAAA;AAClD,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,EAAA,IAAM,EAAA,CAAG,UAAA,IAAc,EAAA,CAAG,UAAA,CAAW,YAAY,EAAE,CAAA;AAAA,EACrD,CAAA,MAAO;AACL,IAAA,EAAA,CAAG,MAAM,OAAA,GAAU,EAAA;AAAA,EACrB;AACA,EAAA,OAAO,aAAA;AACT;AAEA,IAAI,cAAA,GAAwC,IAAA;AAC5C,eAAe,UAAA,GAA6B;AAC1C,EAAA,IAAI;AACF,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,OAAO,cAAA;AAAA,IACT;AACA,IAAA,cAAA,GAAiBA,KAAA,CAAQ;AAAA,MACvB,GAAA,EAAK,wCAAA;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY;AAAA,KACb,CAAA;AACD,IAAA,OAAO,cAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AACnB,IAAA,OAAO,EAAE,IAAA,EAAM,EAAC,EAAE;AAAA,EACpB;AACF;;;;"}
@@ -0,0 +1,16 @@
1
+ import type { Directive } from 'vue';
2
+ declare const SCOPE = "_RepeatClick";
3
+ export interface RepeatClickEl extends HTMLElement {
4
+ [SCOPE]: null | {
5
+ start?: (evt: MouseEvent) => void;
6
+ };
7
+ }
8
+ export interface RepeatClickOptions {
9
+ immediate?: boolean;
10
+ delay?: number;
11
+ handler: (...args: unknown[]) => unknown;
12
+ }
13
+ declare const vRepeatClick: Directive<RepeatClickEl, RepeatClickOptions> & {
14
+ name: string;
15
+ };
16
+ export default vRepeatClick;
@@ -0,0 +1,68 @@
1
+ const SCOPE = "_RepeatClick";
2
+ const vRepeatClick = {
3
+ name: "repeatClick",
4
+ // 在绑定元素的 attribute 前
5
+ // 或事件监听器应用前调用
6
+ // created(el, binding, vnode) {
7
+ // // el.style.display = 'none'
8
+ // // 下面会介绍各个参数的细节
9
+ // console.log('created', el, binding, vnode)
10
+ // },
11
+ // 在元素被插入到 DOM 前调用
12
+ beforeMount(el, binding) {
13
+ const { delay = 300, immediate } = typeof binding.value === "object" ? binding.value : {};
14
+ const handler = typeof binding.value === "object" ? binding.value.handler : binding.value;
15
+ let isPending = false;
16
+ let timer;
17
+ const start = (e) => {
18
+ if (e.button !== 0) return;
19
+ timer && clearTimeout(timer);
20
+ timer = setTimeout(() => {
21
+ if (immediate) {
22
+ isPending = false;
23
+ } else {
24
+ handler?.(e);
25
+ }
26
+ }, delay);
27
+ if (immediate) {
28
+ if (isPending) {
29
+ return;
30
+ }
31
+ isPending = true;
32
+ handler?.(e);
33
+ }
34
+ };
35
+ el[SCOPE] = { start };
36
+ el.addEventListener("click", start);
37
+ },
38
+ // // 在绑定元素的父组件
39
+ // // 及他自己的所有子节点都挂载完成后调用
40
+ // mounted(el, binding, vnode) {
41
+ // console.log('mounted', el, binding, vnode)
42
+ // },
43
+ // // 绑定元素的父组件更新前调用
44
+ // beforeUpdate(el, binding, vnode, prevVnode) {
45
+ // console.log('beforeUpdate', el, binding, vnode, prevVnode)
46
+ // },
47
+ // // 在绑定元素的父组件
48
+ // // 及他自己的所有子节点都更新后调用
49
+ // updated(el, binding, vnode, prevVnode) {
50
+ // console.log('updated', el, binding, vnode, prevVnode)
51
+ // },
52
+ // // 绑定元素的父组件卸载前调用
53
+ // beforeUnmount(el, binding, vnode) {
54
+ // console.log('beforeUnmount', el, binding, vnode)
55
+ // },
56
+ // 绑定元素的父组件卸载后调用
57
+ unmounted(el) {
58
+ if (!el[SCOPE]) return;
59
+ const { start } = el[SCOPE];
60
+ if (start) {
61
+ el.removeEventListener("mousedown", start);
62
+ }
63
+ el[SCOPE] = null;
64
+ }
65
+ };
66
+
67
+ export { vRepeatClick as default };
68
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/repeat-click/index.ts"],"sourcesContent":["import type { Directive } from 'vue'\nconst SCOPE = '_RepeatClick'\nexport interface RepeatClickEl extends HTMLElement {\n [SCOPE]: null | {\n start?: (evt: MouseEvent) => void\n }\n}\nexport interface RepeatClickOptions {\n immediate?: boolean\n delay?: number\n handler: (...args: unknown[]) => unknown\n}\nconst vRepeatClick: Directive<RepeatClickEl, RepeatClickOptions> & {\n name: string\n} = {\n name: 'repeatClick',\n // 在绑定元素的 attribute 前\n // 或事件监听器应用前调用\n // created(el, binding, vnode) {\n // // el.style.display = 'none'\n // // 下面会介绍各个参数的细节\n // console.log('created', el, binding, vnode)\n // },\n\n // 在元素被插入到 DOM 前调用\n beforeMount(el, binding) {\n const { delay = 300, immediate } =\n typeof binding.value === 'object' ? binding.value : {}\n const handler =\n typeof binding.value === 'object' ? binding.value.handler : binding.value\n let isPending = false\n let timer: ReturnType<typeof setTimeout>\n const start = (e: MouseEvent) => {\n if (e.button !== 0) return // 只处理左键点击\n timer && clearTimeout(timer)\n timer = setTimeout(() => {\n if (immediate) {\n isPending = false\n } else {\n handler?.(e)\n }\n }, delay)\n if (immediate) {\n if (isPending) {\n return\n }\n isPending = true\n handler?.(e)\n }\n }\n el[SCOPE] = { start }\n el.addEventListener('click', start)\n },\n // // 在绑定元素的父组件\n // // 及他自己的所有子节点都挂载完成后调用\n // mounted(el, binding, vnode) {\n // console.log('mounted', el, binding, vnode)\n // },\n // // 绑定元素的父组件更新前调用\n // beforeUpdate(el, binding, vnode, prevVnode) {\n // console.log('beforeUpdate', el, binding, vnode, prevVnode)\n // },\n // // 在绑定元素的父组件\n // // 及他自己的所有子节点都更新后调用\n // updated(el, binding, vnode, prevVnode) {\n // console.log('updated', el, binding, vnode, prevVnode)\n // },\n // // 绑定元素的父组件卸载前调用\n // beforeUnmount(el, binding, vnode) {\n // console.log('beforeUnmount', el, binding, vnode)\n // },\n // 绑定元素的父组件卸载后调用\n unmounted(el) {\n if (!el[SCOPE]) return\n const { start } = el[SCOPE]\n\n if (start) {\n el.removeEventListener('mousedown', start)\n }\n el[SCOPE] = null\n },\n}\nexport default vRepeatClick\n"],"names":[],"mappings":"AACA,MAAM,KAAA,GAAQ,cAAA;AAWd,MAAM,YAAA,GAEF;AAAA,EACF,IAAA,EAAM,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUN,WAAA,CAAY,IAAI,OAAA,EAAS;AACvB,IAAA,MAAM,EAAE,KAAA,GAAQ,GAAA,EAAK,SAAA,EAAU,GAC7B,OAAO,OAAA,CAAQ,KAAA,KAAU,QAAA,GAAW,OAAA,CAAQ,KAAA,GAAQ,EAAC;AACvD,IAAA,MAAM,OAAA,GACJ,OAAO,OAAA,CAAQ,KAAA,KAAU,WAAW,OAAA,CAAQ,KAAA,CAAM,UAAU,OAAA,CAAQ,KAAA;AACtE,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,IAAI,KAAA;AACJ,IAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAkB;AAC/B,MAAA,IAAI,CAAA,CAAE,WAAW,CAAA,EAAG;AACpB,MAAA,KAAA,IAAS,aAAa,KAAK,CAAA;AAC3B,MAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,SAAA,GAAY,KAAA;AAAA,QACd,CAAA,MAAO;AACL,UAAA,OAAA,GAAU,CAAC,CAAA;AAAA,QACb;AAAA,MACF,GAAG,KAAK,CAAA;AACR,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,IAAI,SAAA,EAAW;AACb,UAAA;AAAA,QACF;AACA,QAAA,SAAA,GAAY,IAAA;AACZ,QAAA,OAAA,GAAU,CAAC,CAAA;AAAA,MACb;AAAA,IACF,CAAA;AACA,IAAA,EAAA,CAAG,KAAK,CAAA,GAAI,EAAE,KAAA,EAAM;AACpB,IAAA,EAAA,CAAG,gBAAA,CAAiB,SAAS,KAAK,CAAA;AAAA,EACpC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,UAAU,EAAA,EAAI;AACZ,IAAA,IAAI,CAAC,EAAA,CAAG,KAAK,CAAA,EAAG;AAChB,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,EAAA,CAAG,KAAK,CAAA;AAE1B,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,EAAA,CAAG,mBAAA,CAAoB,aAAa,KAAK,CAAA;AAAA,IAC3C;AACA,IAAA,EAAA,CAAG,KAAK,CAAA,GAAI,IAAA;AAAA,EACd;AACF;;;;"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
@@ -0,0 +1 @@
1
+ export * from './use-request';
@@ -0,0 +1,2 @@
1
+ export { useRequest } from './use-request.mjs';
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { type Ref } from 'vue';
2
+ import type { Api, ReqAfter, ReqBefore, Method } from 'el-plus/es/utils/type';
3
+ type UseRequest = (config: {
4
+ api?: Api;
5
+ method?: Method;
6
+ reqData?: Record<string, unknown>;
7
+ reqParams?: Record<string, unknown>;
8
+ reqBefore?: ReqBefore;
9
+ reqAfter?: ReqAfter;
10
+ cancelToken?: boolean;
11
+ hooks?: {
12
+ success?: (data: unknown) => void;
13
+ fail?: (error: unknown) => void;
14
+ };
15
+ }) => {
16
+ loading?: Ref<boolean>;
17
+ requestFn?: (data?: Record<string, unknown>) => Promise<void>;
18
+ };
19
+ export declare const useRequest: UseRequest;
20
+ export {};
@@ -0,0 +1,82 @@
1
+ import { ref } from 'vue';
2
+ import fetch from '../utils/request.mjs';
3
+
4
+ const useRequest = ({
5
+ api,
6
+ method,
7
+ reqData,
8
+ reqParams,
9
+ reqBefore,
10
+ reqAfter,
11
+ cancelToken,
12
+ hooks
13
+ }) => {
14
+ if (!api) return {};
15
+ const loading = ref(false);
16
+ let cancelRequest;
17
+ let apiFn;
18
+ if (typeof api === "string") {
19
+ const config = {
20
+ url: api,
21
+ method
22
+ };
23
+ if (cancelToken) {
24
+ config.cancelRequest = (cancel) => {
25
+ cancelRequest = cancel;
26
+ };
27
+ }
28
+ apiFn = (data = {}, params) => {
29
+ if (config.method === "get") {
30
+ config.params = data;
31
+ } else {
32
+ config.data = data;
33
+ config.params = params;
34
+ }
35
+ config.data = {
36
+ ...reqData,
37
+ ...config.data
38
+ };
39
+ config.params = {
40
+ ...reqParams,
41
+ ...config.params
42
+ };
43
+ if (data.$query) {
44
+ config.data[data.$query] = data.$searchValue;
45
+ delete data.$searchValue;
46
+ }
47
+ if (reqBefore) {
48
+ reqBefore(config);
49
+ }
50
+ return fetch(config);
51
+ };
52
+ } else {
53
+ apiFn = api;
54
+ }
55
+ const requestFn = async (data = {}) => {
56
+ if (loading.value && !cancelToken) return;
57
+ loading.value = true;
58
+ try {
59
+ cancelRequest && cancelRequest();
60
+ const res = await apiFn(data);
61
+ if (reqAfter) {
62
+ reqAfter(res);
63
+ }
64
+ if (hooks?.success) {
65
+ hooks.success(res.data);
66
+ }
67
+ } catch (error) {
68
+ if (hooks?.fail) {
69
+ hooks.fail(error);
70
+ }
71
+ } finally {
72
+ loading.value = false;
73
+ }
74
+ };
75
+ return {
76
+ loading,
77
+ requestFn
78
+ };
79
+ };
80
+
81
+ export { useRequest };
82
+ //# sourceMappingURL=use-request.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-request.mjs","sources":["../../../../packages/hooks/use-request.ts"],"sourcesContent":["import { ref } from 'vue'\nimport { type Ref } from 'vue'\nimport type { Api, ReqAfter, ReqBefore, Method } from '@el-plus/utils/type'\nimport type { Canceler } from 'axios'\n\nimport request from '@el-plus/utils/request'\ntype UseRequest = (config: {\n api?: Api\n method?: Method\n reqData?: Record<string, unknown>\n reqParams?: Record<string, unknown>\n reqBefore?: ReqBefore\n reqAfter?: ReqAfter\n cancelToken?: boolean\n hooks?: {\n success?: (data: unknown) => void\n fail?: (error: unknown) => void\n }\n}) => {\n loading?: Ref<boolean>\n requestFn?: (data?: Record<string, unknown>) => Promise<void>\n}\n\nexport const useRequest: UseRequest = ({\n api,\n method,\n reqData,\n reqParams,\n reqBefore,\n reqAfter,\n cancelToken,\n hooks,\n}) => {\n if (!api) return {}\n const loading = ref(false)\n let cancelRequest: Canceler\n let apiFn\n if (typeof api === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const config: Record<string, any> = {\n url: api,\n method,\n }\n if (cancelToken) {\n config.cancelRequest = (cancel: Canceler) => {\n cancelRequest = cancel\n }\n }\n\n apiFn = (data: Record<string, any> = {}, params?: Record<string, any>) => {\n if (config.method === 'get') {\n config.params = data\n } else {\n config.data = data\n config.params = params\n }\n config.data = {\n ...reqData,\n ...config.data,\n }\n config.params = {\n ...reqParams,\n ...config.params,\n }\n // 替换$query为$searchValue\n if (data.$query) {\n config.data[data.$query] = data.$searchValue\n delete data.$searchValue\n }\n\n if (reqBefore) {\n reqBefore(config)\n }\n return request(config)\n }\n } else {\n apiFn = api\n }\n const requestFn = async (data: Record<string, unknown> = {}) => {\n if (loading.value && !cancelToken) return\n loading.value = true\n try {\n cancelRequest && cancelRequest()\n const res = await apiFn(data)\n if (reqAfter) {\n reqAfter(res)\n }\n if (hooks?.success) {\n hooks.success(res.data)\n }\n } catch (error) {\n if (hooks?.fail) {\n hooks.fail(error)\n }\n } finally {\n loading.value = false\n }\n }\n return {\n loading,\n requestFn,\n }\n}\n"],"names":["request"],"mappings":";;;AAuBO,MAAM,aAAyB,CAAC;AAAA,EACrC,GAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,IAAI,CAAC,GAAA,EAAK,OAAO,EAAC;AAClB,EAAA,MAAM,OAAA,GAAU,IAAI,KAAK,CAAA;AACzB,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAE3B,IAAA,MAAM,MAAA,GAA8B;AAAA,MAClC,GAAA,EAAK,GAAA;AAAA,MACL;AAAA,KACF;AACA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAA,CAAO,aAAA,GAAgB,CAAC,MAAA,KAAqB;AAC3C,QAAA,aAAA,GAAgB,MAAA;AAAA,MAClB,CAAA;AAAA,IACF;AAEA,IAAA,KAAA,GAAQ,CAAC,IAAA,GAA4B,EAAC,EAAG,MAAA,KAAiC;AACxE,MAAA,IAAI,MAAA,CAAO,WAAW,KAAA,EAAO;AAC3B,QAAA,MAAA,CAAO,MAAA,GAAS,IAAA;AAAA,MAClB,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,IAAA,GAAO,IAAA;AACd,QAAA,MAAA,CAAO,MAAA,GAAS,MAAA;AAAA,MAClB;AACA,MAAA,MAAA,CAAO,IAAA,GAAO;AAAA,QACZ,GAAG,OAAA;AAAA,QACH,GAAG,MAAA,CAAO;AAAA,OACZ;AACA,MAAA,MAAA,CAAO,MAAA,GAAS;AAAA,QACd,GAAG,SAAA;AAAA,QACH,GAAG,MAAA,CAAO;AAAA,OACZ;AAEA,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,GAAI,IAAA,CAAK,YAAA;AAChC,QAAA,OAAO,IAAA,CAAK,YAAA;AAAA,MACd;AAEA,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,SAAA,CAAU,MAAM,CAAA;AAAA,MAClB;AACA,MAAA,OAAOA,MAAQ,MAAM,CAAA;AAAA,IACvB,CAAA;AAAA,EACF,CAAA,MAAO;AACL,IAAA,KAAA,GAAQ,GAAA;AAAA,EACV;AACA,EAAA,MAAM,SAAA,GAAY,OAAO,IAAA,GAAgC,EAAC,KAAM;AAC9D,IAAA,IAAI,OAAA,CAAQ,KAAA,IAAS,CAAC,WAAA,EAAa;AACnC,IAAA,OAAA,CAAQ,KAAA,GAAQ,IAAA;AAChB,IAAA,IAAI;AACF,MAAA,aAAA,IAAiB,aAAA,EAAc;AAC/B,MAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,IAAI,CAAA;AAC5B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,GAAG,CAAA;AAAA,MACd;AACA,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,KAAA,CAAM,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,MACxB;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA,SAAE;AACA,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAAA,IAClB;AAAA,EACF,CAAA;AACA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
package/es/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { App, Plugin } from 'vue';
2
+ export declare const install: (app: App, options?: Record<string, any>) => void;
3
+ declare const plugin: Plugin & {
4
+ version: string;
5
+ };
6
+ export default plugin;
7
+ export * from 'el-plus/es/components';
8
+ export * from 'el-plus/es/hooks';
9
+ export * from 'el-plus/es/directives';