@ibiz-template/vue3-components 0.0.1-alpha.1

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 (306) hide show
  1. package/es/common/app-icon/app-icon.d.ts +19 -0
  2. package/es/common/app-icon/app-icon.js +71 -0
  3. package/es/common/app-keep-alive/app-keep-alive.d.ts +47 -0
  4. package/es/common/app-keep-alive/app-keep-alive.js +297 -0
  5. package/es/common/app-keep-alive/scheduler.d.ts +39 -0
  6. package/es/common/app-keep-alive/scheduler.js +171 -0
  7. package/es/common/app-router-view/app-router-view.d.ts +30 -0
  8. package/es/common/app-router-view/app-router-view.js +73 -0
  9. package/es/common/app-user/app-user.d.ts +8 -0
  10. package/es/common/app-user/app-user.js +60 -0
  11. package/es/common/grid-pagination/grid-pagination.d.ts +41 -0
  12. package/es/common/grid-pagination/grid-pagination.js +84 -0
  13. package/es/common/grid-pagination/index.d.ts +40 -0
  14. package/es/common/grid-pagination/index.js +9 -0
  15. package/es/common/index.d.ts +8 -0
  16. package/es/common/index.js +8 -0
  17. package/es/common/quick-search/quick-search.d.ts +30 -0
  18. package/es/common/quick-search/quick-search.js +63 -0
  19. package/es/common/tab-page-exp/tab-page-exp.d.ts +69 -0
  20. package/es/common/tab-page-exp/tab-page-exp.js +117 -0
  21. package/es/control/app-menu/app-menu-provider.d.ts +13 -0
  22. package/es/control/app-menu/app-menu-provider.js +14 -0
  23. package/es/control/app-menu/app-menu.d.ts +54 -0
  24. package/es/control/app-menu/app-menu.js +178 -0
  25. package/es/control/app-menu/index.d.ts +53 -0
  26. package/es/control/app-menu/index.js +12 -0
  27. package/es/control/grid-control/grid-control.d.ts +158 -0
  28. package/es/control/grid-control/grid-control.util.d.ts +38 -0
  29. package/es/control/grid-control/grid-control.util.js +84 -0
  30. package/es/control/grid-control/grid-field-column/grid-field-column.d.ts +26 -0
  31. package/es/control/grid-control/grid-field-column-provider.d.ts +15 -0
  32. package/es/control/grid-control/grid-field-column-provider.js +20 -0
  33. package/es/control/grid-control/grid-provider.d.ts +13 -0
  34. package/es/control/grid-control/grid-provider.js +14 -0
  35. package/es/control/grid-control/index.d.ts +114 -0
  36. package/es/control/grid-control/index.js +23 -0
  37. package/es/control/index.d.ts +3 -0
  38. package/es/control/index.js +3 -0
  39. package/es/control/toolbar-control/index.d.ts +43 -0
  40. package/es/control/toolbar-control/index.js +12 -0
  41. package/es/control/toolbar-control/toolbar-control.d.ts +44 -0
  42. package/es/control/toolbar-control/toolbar-provider.d.ts +13 -0
  43. package/es/control/toolbar-control/toolbar-provider.js +14 -0
  44. package/es/index.d.ts +4 -0
  45. package/es/index.js +4 -0
  46. package/es/layout/app-layout/app-layout.d.ts +32 -0
  47. package/es/layout/control-base/control-base.d.ts +17 -0
  48. package/es/layout/control-base/control-base.js +42 -0
  49. package/es/layout/control-layout/control-layout.d.ts +19 -0
  50. package/es/layout/control-shell/control-shell.d.ts +18 -0
  51. package/es/layout/index.d.ts +10 -0
  52. package/es/layout/index.js +20 -0
  53. package/es/layout/md-view-base/md-view-base.d.ts +12 -0
  54. package/es/layout/md-view-base/md-view-base.js +35 -0
  55. package/es/layout/router-shell/router-shell.d.ts +27 -0
  56. package/es/layout/router-shell/router-shell.js +96 -0
  57. package/es/layout/view-base/view-base.d.ts +18 -0
  58. package/es/layout/view-layout/view-layout.d.ts +44 -0
  59. package/es/layout/view-shell/view-shell.d.ts +42 -0
  60. package/es/shims-vue.d.ts +5 -0
  61. package/es/util/install.d.ts +3 -0
  62. package/es/util/install.js +9 -0
  63. package/es/views/edit-view/index.d.ts +3 -0
  64. package/es/views/edit-view/index.js +9 -0
  65. package/es/views/edit-view/src/edit-view.css +6 -0
  66. package/es/views/edit-view/src/edit-view.d.ts +3 -0
  67. package/es/views/edit-view/src/edit-view.js +15 -0
  68. package/es/views/grid-view/grid-view-engine.d.ts +8 -0
  69. package/es/views/grid-view/grid-view-engine.js +21 -0
  70. package/es/views/grid-view/grid-view-provider.d.ts +13 -0
  71. package/es/views/grid-view/grid-view-provider.js +14 -0
  72. package/es/views/grid-view/grid-view.d.ts +32 -0
  73. package/es/views/grid-view/grid-view.js +64 -0
  74. package/es/views/grid-view/index.d.ts +32 -0
  75. package/es/views/grid-view/index.js +14 -0
  76. package/es/views/index-view/index-view-default.d.ts +22 -0
  77. package/es/views/index-view/index-view-default.js +117 -0
  78. package/es/views/index-view/index-view-engine.d.ts +6 -0
  79. package/es/views/index-view/index-view-engine.js +9 -0
  80. package/es/views/index-view/index-view-exp.d.ts +29 -0
  81. package/es/views/index-view/index-view-exp.js +177 -0
  82. package/es/views/index-view/index-view-provider.d.ts +13 -0
  83. package/es/views/index-view/index-view-provider.js +14 -0
  84. package/es/views/index-view/index-view.d.ts +44 -0
  85. package/es/views/index-view/index-view.js +155 -0
  86. package/es/views/index-view/index.d.ts +44 -0
  87. package/es/views/index-view/index.js +14 -0
  88. package/es/views/index.d.ts +4 -0
  89. package/es/views/index.js +6 -0
  90. package/lib/common/app-icon/app-icon.d.ts +19 -0
  91. package/lib/common/app-icon/app-icon.js +71 -0
  92. package/lib/common/app-keep-alive/app-keep-alive.d.ts +47 -0
  93. package/lib/common/app-keep-alive/app-keep-alive.js +297 -0
  94. package/lib/common/app-keep-alive/scheduler.d.ts +39 -0
  95. package/lib/common/app-keep-alive/scheduler.js +171 -0
  96. package/lib/common/app-router-view/app-router-view.d.ts +30 -0
  97. package/lib/common/app-router-view/app-router-view.js +73 -0
  98. package/lib/common/app-user/app-user.d.ts +8 -0
  99. package/lib/common/app-user/app-user.js +60 -0
  100. package/lib/common/grid-pagination/grid-pagination.d.ts +41 -0
  101. package/lib/common/grid-pagination/grid-pagination.js +84 -0
  102. package/lib/common/grid-pagination/index.d.ts +40 -0
  103. package/lib/common/grid-pagination/index.js +9 -0
  104. package/lib/common/index.d.ts +8 -0
  105. package/lib/common/index.js +66 -0
  106. package/lib/common/quick-search/quick-search.d.ts +30 -0
  107. package/lib/common/quick-search/quick-search.js +63 -0
  108. package/lib/common/tab-page-exp/tab-page-exp.d.ts +69 -0
  109. package/lib/common/tab-page-exp/tab-page-exp.js +117 -0
  110. package/lib/control/app-menu/app-menu-provider.d.ts +13 -0
  111. package/lib/control/app-menu/app-menu-provider.js +14 -0
  112. package/lib/control/app-menu/app-menu.d.ts +54 -0
  113. package/lib/control/app-menu/app-menu.js +178 -0
  114. package/lib/control/app-menu/index.d.ts +53 -0
  115. package/lib/control/app-menu/index.js +12 -0
  116. package/lib/control/grid-control/grid-control.d.ts +158 -0
  117. package/lib/control/grid-control/grid-control.util.d.ts +38 -0
  118. package/lib/control/grid-control/grid-control.util.js +84 -0
  119. package/lib/control/grid-control/grid-field-column/grid-field-column.d.ts +26 -0
  120. package/lib/control/grid-control/grid-field-column-provider.d.ts +15 -0
  121. package/lib/control/grid-control/grid-field-column-provider.js +20 -0
  122. package/lib/control/grid-control/grid-provider.d.ts +13 -0
  123. package/lib/control/grid-control/grid-provider.js +14 -0
  124. package/lib/control/grid-control/index.d.ts +114 -0
  125. package/lib/control/grid-control/index.js +24 -0
  126. package/lib/control/index.d.ts +3 -0
  127. package/lib/control/index.js +26 -0
  128. package/lib/control/toolbar-control/index.d.ts +43 -0
  129. package/lib/control/toolbar-control/index.js +12 -0
  130. package/lib/control/toolbar-control/toolbar-control.d.ts +44 -0
  131. package/lib/control/toolbar-control/toolbar-provider.d.ts +13 -0
  132. package/lib/control/toolbar-control/toolbar-provider.js +14 -0
  133. package/lib/index.d.ts +4 -0
  134. package/lib/index.js +34 -0
  135. package/lib/layout/app-layout/app-layout.d.ts +32 -0
  136. package/lib/layout/control-base/control-base.d.ts +17 -0
  137. package/lib/layout/control-base/control-base.js +42 -0
  138. package/lib/layout/control-layout/control-layout.d.ts +19 -0
  139. package/lib/layout/control-shell/control-shell.d.ts +18 -0
  140. package/lib/layout/index.d.ts +10 -0
  141. package/lib/layout/index.js +44 -0
  142. package/lib/layout/md-view-base/md-view-base.d.ts +12 -0
  143. package/lib/layout/md-view-base/md-view-base.js +35 -0
  144. package/lib/layout/router-shell/router-shell.d.ts +27 -0
  145. package/lib/layout/router-shell/router-shell.js +96 -0
  146. package/lib/layout/view-base/view-base.d.ts +18 -0
  147. package/lib/layout/view-layout/view-layout.d.ts +44 -0
  148. package/lib/layout/view-shell/view-shell.d.ts +42 -0
  149. package/lib/shims-vue.d.ts +5 -0
  150. package/lib/util/install.d.ts +3 -0
  151. package/lib/util/install.js +9 -0
  152. package/lib/views/edit-view/index.d.ts +3 -0
  153. package/lib/views/edit-view/index.js +8 -0
  154. package/lib/views/edit-view/src/edit-view.css +6 -0
  155. package/lib/views/edit-view/src/edit-view.d.ts +3 -0
  156. package/lib/views/edit-view/src/edit-view.js +14 -0
  157. package/lib/views/grid-view/grid-view-engine.d.ts +8 -0
  158. package/lib/views/grid-view/grid-view-engine.js +21 -0
  159. package/lib/views/grid-view/grid-view-provider.d.ts +13 -0
  160. package/lib/views/grid-view/grid-view-provider.js +14 -0
  161. package/lib/views/grid-view/grid-view.d.ts +32 -0
  162. package/lib/views/grid-view/grid-view.js +64 -0
  163. package/lib/views/grid-view/index.d.ts +32 -0
  164. package/lib/views/grid-view/index.js +14 -0
  165. package/lib/views/index-view/index-view-default.d.ts +22 -0
  166. package/lib/views/index-view/index-view-default.js +117 -0
  167. package/lib/views/index-view/index-view-engine.d.ts +6 -0
  168. package/lib/views/index-view/index-view-engine.js +9 -0
  169. package/lib/views/index-view/index-view-exp.d.ts +29 -0
  170. package/lib/views/index-view/index-view-exp.js +177 -0
  171. package/lib/views/index-view/index-view-provider.d.ts +13 -0
  172. package/lib/views/index-view/index-view-provider.js +14 -0
  173. package/lib/views/index-view/index-view.d.ts +44 -0
  174. package/lib/views/index-view/index-view.js +155 -0
  175. package/lib/views/index-view/index.d.ts +44 -0
  176. package/lib/views/index-view/index.js +14 -0
  177. package/lib/views/index.d.ts +4 -0
  178. package/lib/views/index.js +20 -0
  179. package/package.json +71 -0
  180. package/src/common/app-col/app-col.tsx +90 -0
  181. package/src/common/app-icon/app-icon.tsx +58 -0
  182. package/src/common/app-keep-alive/app-keep-alive.ts +441 -0
  183. package/src/common/app-keep-alive/scheduler.ts +281 -0
  184. package/src/common/app-router-view/app-router-view.tsx +73 -0
  185. package/src/common/app-row/app-row.tsx +31 -0
  186. package/src/common/app-user/app-user.scss +32 -0
  187. package/src/common/app-user/app-user.tsx +61 -0
  188. package/src/common/index.ts +9 -0
  189. package/src/common/quick-search/quick-search.scss +15 -0
  190. package/src/common/quick-search/quick-search.tsx +59 -0
  191. package/src/common/tab-page-exp/tab-page-exp.scss +43 -0
  192. package/src/common/tab-page-exp/tab-page-exp.tsx +125 -0
  193. package/src/control/app-menu/app-menu-provider.ts +14 -0
  194. package/src/control/app-menu/app-menu-state.ts +20 -0
  195. package/src/control/app-menu/app-menu.controller.ts +97 -0
  196. package/src/control/app-menu/app-menu.scss +163 -0
  197. package/src/control/app-menu/app-menu.tsx +305 -0
  198. package/src/control/app-menu/index.ts +12 -0
  199. package/src/control/form/form/form-control.tsx +98 -0
  200. package/src/control/form/form/form-state.ts +39 -0
  201. package/src/control/form/form/form.controller.ts +260 -0
  202. package/src/control/form/form/form.scss +10 -0
  203. package/src/control/form/form/index.ts +30 -0
  204. package/src/control/form/form-detail/form-detail/form-detail-state.ts +92 -0
  205. package/src/control/form/form-detail/form-detail/form-detail.ts +214 -0
  206. package/src/control/form/form-detail/form-detail/index.ts +2 -0
  207. package/src/control/form/form-detail/form-group-panel/form-group-panel-provider.ts +27 -0
  208. package/src/control/form/form-detail/form-group-panel/form-group-panel-state.ts +29 -0
  209. package/src/control/form/form-detail/form-group-panel/form-group-panel.controller.ts +103 -0
  210. package/src/control/form/form-detail/form-group-panel/index.ts +3 -0
  211. package/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss +90 -0
  212. package/src/control/form/form-detail/form-item/form-item-container/form-item-container.tsx +68 -0
  213. package/src/control/form/form-detail/form-item/form-item-provider.ts +28 -0
  214. package/src/control/form/form-detail/form-item/form-item-state.ts +48 -0
  215. package/src/control/form/form-detail/form-item/form-item.controller.ts +341 -0
  216. package/src/control/form/form-detail/form-item/form-item.scss +4 -0
  217. package/src/control/form/form-detail/form-item/form-item.tsx +69 -0
  218. package/src/control/form/form-detail/form-item/index.ts +3 -0
  219. package/src/control/form/form-detail/form-page/form-page-item.tsx +59 -0
  220. package/src/control/form/form-detail/form-page/form-page-provider.ts +27 -0
  221. package/src/control/form/form-detail/form-page/form-page-state.ts +12 -0
  222. package/src/control/form/form-detail/form-page/form-page.controller.ts +20 -0
  223. package/src/control/form/form-detail/form-page/form-page.scss +42 -0
  224. package/src/control/form/form-detail/form-page/form-page.tsx +56 -0
  225. package/src/control/form/form-detail/index.ts +3 -0
  226. package/src/control/form/index.ts +12 -0
  227. package/src/control/form/search-form/index.ts +15 -0
  228. package/src/control/form/search-form/search-form-provider.ts +14 -0
  229. package/src/control/form/search-form/search-form-state.ts +12 -0
  230. package/src/control/form/search-form/search-form.controller.ts +135 -0
  231. package/src/control/form/search-form/search-form.scss +48 -0
  232. package/src/control/form/search-form/search-form.tsx +70 -0
  233. package/src/control/grid/grid/grid-column.controller.ts +98 -0
  234. package/src/control/grid/grid/grid-control.tsx +174 -0
  235. package/src/control/grid/grid/grid-control.util.ts +135 -0
  236. package/src/control/grid/grid/grid-provider.ts +13 -0
  237. package/src/control/grid/grid/grid-row.controller.ts +114 -0
  238. package/src/control/grid/grid/grid-state.ts +20 -0
  239. package/src/control/grid/grid/grid.controller.ts +531 -0
  240. package/src/control/grid/grid/grid.scss +79 -0
  241. package/src/control/grid/grid-field-column/grid-field-column-provider.ts +26 -0
  242. package/src/control/grid/grid-field-column/grid-field-column.controller.ts +189 -0
  243. package/src/control/grid/grid-field-column/grid-field-column.scss +19 -0
  244. package/src/control/grid/grid-field-column/grid-field-column.tsx +87 -0
  245. package/src/control/grid/grid-pagination/grid-pagination.scss +7 -0
  246. package/src/control/grid/grid-pagination/grid-pagination.tsx +88 -0
  247. package/src/control/grid/index.ts +23 -0
  248. package/src/control/index.ts +4 -0
  249. package/src/control/panel/index.ts +23 -0
  250. package/src/control/panel/panel/panel-item-state.ts +73 -0
  251. package/src/control/panel/panel/panel-item.controller.ts +161 -0
  252. package/src/control/panel/panel/panel-state.ts +22 -0
  253. package/src/control/panel/panel/panel.controller.ts +256 -0
  254. package/src/control/panel/panel-container/index.ts +23 -0
  255. package/src/control/panel/panel-container/panel-container-provider.ts +28 -0
  256. package/src/control/panel/panel-container/panel-container-state.ts +12 -0
  257. package/src/control/panel/panel-container/panel-container.controller.ts +18 -0
  258. package/src/control/panel/panel-container/panel-container.scss +66 -0
  259. package/src/control/panel/panel-container/panel-container.tsx +93 -0
  260. package/src/control/panel/panel-ctrl-pos/index.ts +13 -0
  261. package/src/control/panel/panel-ctrl-pos/panel-ctrl-pos-provider.ts +28 -0
  262. package/src/control/panel/panel-ctrl-pos/panel-ctrl-pos.controller.ts +23 -0
  263. package/src/control/panel/panel-ctrl-pos/panel-ctrl-pos.tsx +39 -0
  264. package/src/control/panel/view-layout-panel/view-layout-panel-provider.ts +14 -0
  265. package/src/control/panel/view-layout-panel/view-layout-panel.controller.ts +62 -0
  266. package/src/control/panel/view-layout-panel/view-layout-panel.scss +3 -0
  267. package/src/control/panel/view-layout-panel/view-layout-panel.tsx +127 -0
  268. package/src/control/panel/view-layout-panel.json +141 -0
  269. package/src/control/toolbar/index.ts +12 -0
  270. package/src/control/toolbar/toolbar-control.scss +46 -0
  271. package/src/control/toolbar/toolbar-control.tsx +127 -0
  272. package/src/control/toolbar/toolbar-provider.ts +14 -0
  273. package/src/control/toolbar/toolbar-state.ts +31 -0
  274. package/src/control/toolbar/toolbar.controllerr.ts +112 -0
  275. package/src/editor/index.ts +14 -0
  276. package/src/editor/text-box/ibiz-input/ibiz-input.scss +48 -0
  277. package/src/editor/text-box/ibiz-input/ibiz-input.tsx +176 -0
  278. package/src/editor/text-box/index.ts +1 -0
  279. package/src/editor/text-box/text-box-provider.ts +39 -0
  280. package/src/editor/text-box/text-box.controller.ts +21 -0
  281. package/src/index.ts +57 -0
  282. package/src/layout/app-layout/app-layout.scss +133 -0
  283. package/src/layout/app-layout/app-layout.tsx +149 -0
  284. package/src/layout/control-base/control-base.tsx +37 -0
  285. package/src/layout/control-layout/control-layout.scss +4 -0
  286. package/src/layout/control-layout/control-layout.tsx +29 -0
  287. package/src/layout/index.ts +15 -0
  288. package/src/layout/md-view-base/md-view-base.tsx +69 -0
  289. package/src/layout/view-base/view-base.scss +11 -0
  290. package/src/layout/view-base/view-base.tsx +147 -0
  291. package/src/layout/view-layout/view-layout.scss +198 -0
  292. package/src/layout/view-layout/view-layout.tsx +115 -0
  293. package/src/shims-vue.d.ts +5 -0
  294. package/src/util/install.ts +11 -0
  295. package/src/views/grid-view/grid-view-engine.ts +68 -0
  296. package/src/views/grid-view/index.ts +12 -0
  297. package/src/views/index-view/index-view-default.ts +168 -0
  298. package/src/views/index-view/index-view-engine.ts +10 -0
  299. package/src/views/index-view/index-view-exp.ts +261 -0
  300. package/src/views/index-view/index-view-provider.ts +14 -0
  301. package/src/views/index-view/index-view.tsx +249 -0
  302. package/src/views/index-view/index.ts +14 -0
  303. package/src/views/index.ts +3 -0
  304. package/src/views/view/ibiz-view.tsx +49 -0
  305. package/src/views/view/index.ts +12 -0
  306. package/src/views/view/view-provider.ts +14 -0
@@ -0,0 +1,125 @@
1
+ import { defineComponent, ref, watch } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import './tab-page-exp.scss';
4
+ import { TabPaneName, TabsPaneContext } from 'element-plus';
5
+
6
+ interface RouteMsg {
7
+ key: string;
8
+ fullPath: string;
9
+ modelPath?: string;
10
+ caption?: string;
11
+ }
12
+ interface dropdownAction {
13
+ text: string;
14
+ value?: string;
15
+ }
16
+
17
+ export const TabPageExp = defineComponent({
18
+ name: 'TabPageExp',
19
+ props: {
20
+ routeMsgs: {
21
+ type: Array<RouteMsg>,
22
+ required: true,
23
+ },
24
+ currentKey: {
25
+ type: String,
26
+ required: true,
27
+ },
28
+ },
29
+ emits: ['tab-delete', 'tab-click', 'close-all', 'close-other'],
30
+ setup(props, { emit }) {
31
+ const ns = useNamespace('tab-page-exp');
32
+ const tabsValue = ref(0);
33
+ const actions: dropdownAction[] = [
34
+ { text: '关闭所有', value: 'closeAll' },
35
+ { text: '关闭其他', value: 'closeOther' },
36
+ ];
37
+
38
+ // 监听currentVal确认当前激活tab
39
+ watch(
40
+ () => props.currentKey,
41
+ (newVal, _oldVal) => {
42
+ const currentRouteMsgIndex = props.routeMsgs.findIndex(
43
+ (msg: RouteMsg) => msg.key === newVal,
44
+ );
45
+ if (currentRouteMsgIndex !== -1) {
46
+ tabsValue.value = currentRouteMsgIndex;
47
+ }
48
+ },
49
+ );
50
+
51
+ // 点击tab
52
+ const changePage = (pane: TabsPaneContext, _ev: Event) => {
53
+ const index = Number(pane.index);
54
+ tabsValue.value = index;
55
+ emit('tab-click', index);
56
+ };
57
+
58
+ // 关闭tab
59
+ const onClose = (name: TabPaneName) => {
60
+ emit('tab-delete', name);
61
+ };
62
+
63
+ // 处理下拉点击
64
+ const handleCommand = (command: dropdownAction) => {
65
+ if (command.value === 'closeAll') {
66
+ emit('close-all');
67
+ } else if (command.value === 'closeOther') {
68
+ emit('close-other');
69
+ }
70
+ };
71
+
72
+ return { ns, tabsValue, actions, changePage, onClose, handleCommand };
73
+ },
74
+ render() {
75
+ return (
76
+ <div class={this.ns.b()}>
77
+ <div class={this.ns.e('left')}>
78
+ <el-tabs
79
+ type='card'
80
+ v-model={this.tabsValue}
81
+ closable
82
+ onTabClick={this.changePage}
83
+ onTabRemove={this.onClose}
84
+ >
85
+ {this.routeMsgs?.map((msg: RouteMsg, index: number) => {
86
+ return (
87
+ <el-tab-pane
88
+ name={index}
89
+ key={index}
90
+ label={msg.caption}
91
+ ></el-tab-pane>
92
+ );
93
+ })}
94
+ </el-tabs>
95
+ </div>
96
+ <div class={this.ns.e('right')}>
97
+ <el-dropdown onCommand={this.handleCommand}>
98
+ {{
99
+ default: () => {
100
+ return (
101
+ <el-button size='small' type='primary'>
102
+ 更多 <ion-icon name='arrow-down'></ion-icon>
103
+ </el-button>
104
+ );
105
+ },
106
+ dropdown: () => {
107
+ return (
108
+ <el-dropdown-menu>
109
+ {this.actions.map((action: dropdownAction) => {
110
+ return (
111
+ <el-dropdown-item command={action}>
112
+ {action.text}
113
+ </el-dropdown-item>
114
+ );
115
+ })}
116
+ </el-dropdown-menu>
117
+ );
118
+ },
119
+ }}
120
+ </el-dropdown>
121
+ </div>
122
+ </div>
123
+ );
124
+ },
125
+ });
@@ -0,0 +1,14 @@
1
+ import { IControlProvider } from '@ibiz-template/runtime';
2
+
3
+ /**
4
+ * 应用菜单适配器
5
+ *
6
+ * @author lxm
7
+ * @date 2022-10-25 18:10:57
8
+ * @export
9
+ * @class AppMenuProvider
10
+ * @implements {IControlProvider}
11
+ */
12
+ export class AppMenuProvider implements IControlProvider {
13
+ component: string = 'AppMenu';
14
+ }
@@ -0,0 +1,20 @@
1
+ import { ControlState } from '@ibiz-template/runtime';
2
+
3
+ /**
4
+ * 应用菜单部件UI状态
5
+ *
6
+ * @export
7
+ * @class AppMenuState
8
+ * @extends {ControlState}
9
+ */
10
+ export class AppMenuState extends ControlState {
11
+ /**
12
+ * 菜单项状态
13
+ *
14
+ * @author lxm
15
+ * @date 2022-10-12 20:10:51
16
+ * @type {{ [p: string]: { visible: boolean; permitted: boolean } }}
17
+ */
18
+ menuItemsState: { [p: string]: { visible: boolean; permitted: boolean } } =
19
+ {};
20
+ }
@@ -0,0 +1,97 @@
1
+ import { RuntimeError } from '@ibiz-template/core';
2
+ import {
3
+ ControlController,
4
+ AppFuncCommand,
5
+ findRecursiveChild,
6
+ } from '@ibiz-template/runtime';
7
+ import { IAppMenu, IAppMenuItem } from '@ibiz/model-core';
8
+ import { AppMenuState } from './app-menu-state';
9
+
10
+ /**
11
+ * 应用菜单控制器
12
+ *
13
+ * @author chitanda
14
+ * @date 2022-07-24 15:07:07
15
+ * @export
16
+ * @class AppMenuController
17
+ * @extends {ControlController}
18
+ */
19
+ export class AppMenuController extends ControlController<IAppMenu> {
20
+ state = new AppMenuState();
21
+
22
+ /**
23
+ * 菜单项状态
24
+ *
25
+ * @deprecated
26
+ * @author lxm
27
+ * @date 2022-10-12 20:10:51
28
+ * @type {{ [p: string]: { visible: boolean; permitted: boolean } }}
29
+ */
30
+ menuItemsState: { [p: string]: { visible: boolean; permitted: boolean } } =
31
+ {};
32
+
33
+ protected async doCreated(): Promise<void> {
34
+ await super.doCreated();
35
+
36
+ // 初始化菜单项状态
37
+ this.model.appMenuItems?.forEach(item => {
38
+ this.initMenuItemState(item);
39
+ });
40
+ }
41
+
42
+ /**
43
+ * 菜单项点击回调,触发对应的应用功能
44
+ *
45
+ * @author chitanda
46
+ * @date 2022-12-22 14:12:53
47
+ * @param {string} id
48
+ * @return {*} {Promise<void>}
49
+ */
50
+ async onClickMenuItem(id: string): Promise<void> {
51
+ const menuItem = findRecursiveChild(this.model, id, {
52
+ compareField: 'id',
53
+ childrenFields: ['appMenuItems'],
54
+ });
55
+ if (!menuItem) {
56
+ throw new RuntimeError(`找不到名为${id}的菜单项`);
57
+ }
58
+
59
+ console.log(menuItem);
60
+ await ibiz.commands.execute(
61
+ AppFuncCommand.TAG,
62
+ menuItem.appFuncId,
63
+ this.context,
64
+ this.params,
65
+ );
66
+ }
67
+
68
+ /**
69
+ * 初始化菜单项状态
70
+ *
71
+ * @author lxm
72
+ * @date 2022-10-12 20:10:37
73
+ * @param {AppMenuItemModel} menu
74
+ */
75
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
+ initMenuItemState(menu: IAppMenuItem): {
77
+ visible: boolean;
78
+ permitted: boolean;
79
+ } {
80
+ // const permitted = app.authority.hasMenuPermitted(menu);
81
+ const permitted = true;
82
+ let visible = permitted;
83
+ // 有子的计算子状态,如果本身显示但是子都不显示则不显示
84
+ if (menu.appMenuItems?.length) {
85
+ const childrenState = menu.appMenuItems.map(child => {
86
+ return this.initMenuItemState(child).visible;
87
+ });
88
+ visible = visible && childrenState.includes(true);
89
+ }
90
+ const result = { permitted, visible };
91
+ this.state.menuItemsState[menu.id!] = result;
92
+ return {
93
+ visible: true,
94
+ permitted: true,
95
+ };
96
+ }
97
+ }
@@ -0,0 +1,163 @@
1
+ // @mixin menu-item-vertical-style {
2
+ // @include flex(row, flex-start, center);
3
+
4
+ // width: 100%;
5
+ // height: getCssVar('control-menu-item', 'height');
6
+ // padding: calc(getCssVar('control-menu-item', 'padding') * 0.875)
7
+ // calc(getCssVar('control-menu-item', 'padding') * 1.5);
8
+ // font-size: getCssVar('control-menu-item', 'font-size');
9
+ // color: getCssVar('control-menu-item', 'color');
10
+ // white-space: nowrap;
11
+
12
+ // &:hover {
13
+ // color: getCssVar('control-menu-item', 'hover-color');
14
+ // background-color: getCssVar('control-menu-item', 'hover-bg-color');
15
+ // }
16
+
17
+ // &.is-active {
18
+ // color: getCssVar('control-menu-item', 'selected-color');
19
+ // background-color: getCssVar('control-menu-item', 'selected-bg-color');
20
+ // }
21
+ // }
22
+
23
+ // @mixin menu-item-horizontal-style {
24
+ // color: getCssVar('control-menu-item', 'horizontal-color');
25
+ // white-space: nowrap;
26
+ // border: none;
27
+
28
+ // &:hover {
29
+ // color: getCssVar('control-menu-item', 'horizontal-hover-color');
30
+ // background-color: getCssVar(
31
+ // 'control-menu-item',
32
+ // 'horizontal-hover-bg-color'
33
+ // );
34
+ // }
35
+
36
+ // &.is-active {
37
+ // // 压element-plus 加important
38
+ // color: getCssVar(
39
+ // 'control-menu-item',
40
+ // 'horizontal-selected-color'
41
+ // ) !important;
42
+ // background-color: getCssVar(
43
+ // 'control-menu-item',
44
+ // 'horizontal-selected-bg-color'
45
+ // );
46
+ // }
47
+ // }
48
+
49
+ // @mixin menu-collapse-item-style {
50
+ // @include flex-center;
51
+
52
+ // padding: calc(getCssVar('control-menu', 'collapse-item-padding') * 0.875)
53
+ // calc(getCssVar('control-menu', 'collapse-item-padding') * 1.5);
54
+
55
+ // &:hover {
56
+ // color: getCssVar('control-menu', 'collapse-item-hover-color');
57
+ // }
58
+ // }
59
+
60
+ // @mixin menu-item-selected-style {
61
+ // color: getCssVar('control-menu', 'item-selected-color');
62
+ // background-color: getCssVar('control-menu', 'item-selected-bg-color');
63
+ // }
64
+
65
+ // @include b(control-menu) {
66
+ // position: static;
67
+ // @include set-component-css-var('control-menu', $control-menu);
68
+ // @include set-component-css-var('control-menu-item', $control-menu-item);
69
+
70
+ // // 垂直
71
+ // .el-menu--vertical {
72
+ // height: calc(100vh - getCssVar('layout', 'header-height'));
73
+
74
+ // // 菜单项样式
75
+ // .el-menu-item,
76
+ // .el-sub-menu__title {
77
+ // @include menu-item-vertical-style;
78
+ // }
79
+ // }
80
+
81
+ // // 水平
82
+ // .el-menu--horizontal {
83
+ // max-width: getCssVar('control-menu', 'horizontal-width');
84
+ // height: 100%;
85
+ // background-color: getCssVar('control-menu', 'horizontal-bg-color');
86
+ // border-bottom: none;
87
+
88
+ // // 菜单项样式
89
+ // .el-menu-item,
90
+ // .el-sub-menu__title {
91
+ // @include menu-item-horizontal-style;
92
+ // }
93
+
94
+ // > .el-sub-menu.is-active .el-sub-menu__title {
95
+ // color: getCssVar('control-menu-item', 'horizontal-selected-color');
96
+ // background-color: getCssVar(
97
+ // 'control-menu-item',
98
+ // 'horizontal-selected-bg-color'
99
+ // );
100
+ // }
101
+
102
+ // &::-webkit-scrollbar-thumb {
103
+ // background: #fff;
104
+ // }
105
+ // }
106
+
107
+ // overflow-y: auto;
108
+
109
+ // // 图标样式
110
+ // @include e(icon) {
111
+ // margin: getCssVar('control-menu', 'icon-margin');
112
+ // }
113
+
114
+ // // 收缩
115
+ // @include when(collapse) {
116
+ // @include e(item) {
117
+ // @include menu-collapse-item-style;
118
+ // }
119
+ // @include b(control-menu-tooltip) {
120
+ // width: 100%;
121
+ // }
122
+ // @include b(control-menu-submenu) {
123
+ // display: block;
124
+
125
+ // > .el-sub-menu__title {
126
+ // @include flex-center;
127
+ // @include menu-collapse-item-style;
128
+
129
+ // white-space: nowrap;
130
+ // cursor: pointer;
131
+ // }
132
+ // @include e(item) {
133
+ // padding: 0;
134
+ // }
135
+ // }
136
+ // }
137
+
138
+ // .el-menu {
139
+ // border-right: 0;
140
+ // }
141
+
142
+ // .el-sub-menu {
143
+ // .el-sub-menu__icon-arrow {
144
+ // right: 14px;
145
+ // width: 12px;
146
+ // }
147
+
148
+ // .el-menu-item {
149
+ // padding: calc(getCssVar('control-menu', 'item-padding') * 0.875)
150
+ // calc(getCssVar('control-menu', 'item-padding') * 2.5);
151
+ // }
152
+ // }
153
+ // }
154
+
155
+ // // 收缩时菜单项样式
156
+ // .el-menu--popup-container {
157
+ // @include set-component-css-var('control-menu', $control-menu);
158
+
159
+ // .el-menu-item,
160
+ // .el-sub-menu__title {
161
+ // @include menu-item-vertical-style;
162
+ // }
163
+ // }