tianheng-ui 0.0.56 → 0.0.57

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 (238) hide show
  1. package/lib/039af9192b9bb277966ceb4e4ce29c41.js +16 -0
  2. package/lib/{c755e7fc08446566ee8dd3a8aa8fe43f.js → 2d84c80112a372bc149cad3464e90fa3.js} +404 -502
  3. package/lib/5977b934a4c6b480790864ea01303173.js +10834 -0
  4. package/lib/7745f3e776488705a38e62f85adad54d.js +16 -0
  5. package/lib/de8dee841ffdaaede3a2254deef30376.js +15395 -0
  6. package/lib/e78eab250e7f8ccac3d918dfdb06ca10.js +8904 -0
  7. package/lib/index.js +4 -2
  8. package/lib/theme-chalk/fonts/PingFang.ttf +0 -0
  9. package/lib/theme-chalk/fonts/bpmn.eot +0 -0
  10. package/lib/theme-chalk/fonts/bpmn.svg +224 -0
  11. package/lib/theme-chalk/fonts/bpmn.ttf +0 -0
  12. package/lib/theme-chalk/fonts/bpmn.woff +0 -0
  13. package/lib/theme-chalk/fonts/bpmn.woff2 +0 -0
  14. package/lib/theme-chalk/fonts/fontawesome-webfont.eot +0 -0
  15. package/lib/theme-chalk/fonts/fontawesome-webfont.svg +2671 -0
  16. package/lib/theme-chalk/fonts/fontawesome-webfont.ttf +0 -0
  17. package/lib/theme-chalk/fonts/fontawesome-webfont.woff +0 -0
  18. package/lib/theme-chalk/fonts/fontawesome-webfont.woff2 +0 -0
  19. package/lib/{iconfont.eot → theme-chalk/fonts/iconfont.eot} +0 -0
  20. package/lib/{iconfont.svg → theme-chalk/fonts/iconfont.svg} +0 -0
  21. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  22. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  23. package/lib/theme-chalk/images/notData.png +0 -0
  24. package/lib/theme-chalk/index.scss +29 -0
  25. package/lib/theme-chalk/styles/button.scss +501 -0
  26. package/lib/theme-chalk/styles/card.scss +29 -0
  27. package/lib/theme-chalk/styles/cell.scss +54 -0
  28. package/lib/theme-chalk/styles/codeEditor.scss +9 -0
  29. package/lib/theme-chalk/styles/col.scss +151 -0
  30. package/lib/theme-chalk/styles/dialog.scss +59 -0
  31. package/lib/theme-chalk/styles/empty.scss +22 -0
  32. package/lib/theme-chalk/styles/feature.scss +42 -0
  33. package/lib/theme-chalk/styles/font.css +7 -0
  34. package/lib/theme-chalk/{icon.css → styles/icon.css} +3 -3
  35. package/lib/theme-chalk/styles/imagePreview.scss +113 -0
  36. package/lib/theme-chalk/styles/img.scss +35 -0
  37. package/lib/theme-chalk/styles/reset.scss +8 -0
  38. package/lib/theme-chalk/{root.css → styles/root.css} +2 -35
  39. package/lib/theme-chalk/styles/row.scss +23 -0
  40. package/lib/theme-chalk/styles/variable.scss +80 -0
  41. package/lib/tianheng-ui.js +71 -9
  42. package/package.json +24 -4
  43. package/packages/Button/index.js +8 -0
  44. package/packages/Button/index.vue +80 -0
  45. package/packages/Card/index.js +8 -0
  46. package/packages/Card/index.vue +37 -0
  47. package/packages/{cell → Cell}/index.js +0 -0
  48. package/packages/Cell/index.vue +68 -0
  49. package/packages/{codeEditor → CodeEditor}/index.js +0 -0
  50. package/packages/{codeEditor → CodeEditor}/index.vue +73 -108
  51. package/packages/Col/index.js +8 -0
  52. package/packages/Col/index.vue +41 -0
  53. package/packages/{dialog → Dialog}/index.js +0 -0
  54. package/packages/{dialog → Dialog}/index.vue +19 -10
  55. package/packages/Empty/images/notData.png +0 -0
  56. package/packages/{empty → Empty}/index.js +0 -0
  57. package/packages/Empty/index.vue +35 -0
  58. package/packages/FormMaking/Container.vue +1907 -0
  59. package/packages/{formMaking → FormMaking}/FormConfig.vue +22 -6
  60. package/packages/FormMaking/GenerateForm.vue +246 -0
  61. package/packages/{formMaking → FormMaking}/GenerateFormItem.vue +340 -172
  62. package/packages/FormMaking/GenerateFormItemH5.vue +828 -0
  63. package/packages/{formMaking → FormMaking}/Upload/index.vue +0 -0
  64. package/packages/FormMaking/WidgetConfig.vue +473 -0
  65. package/packages/{formMaking → FormMaking}/WidgetForm.vue +49 -31
  66. package/packages/FormMaking/WidgetFormItem.vue +157 -0
  67. package/packages/{formMaking/componentsConfig.js → FormMaking/custom/config.js} +379 -163
  68. package/packages/FormMaking/custom/configs/alliance.vue +0 -0
  69. package/packages/FormMaking/custom/configs/blank.vue +54 -0
  70. package/packages/FormMaking/custom/configs/button.vue +144 -0
  71. package/packages/FormMaking/custom/configs/cascader.vue +182 -0
  72. package/packages/FormMaking/custom/configs/cell.vue +81 -0
  73. package/packages/FormMaking/custom/configs/checkbox.vue +237 -0
  74. package/packages/FormMaking/custom/configs/color.vue +137 -0
  75. package/packages/FormMaking/custom/configs/date.vue +158 -0
  76. package/packages/FormMaking/custom/configs/divider.vue +61 -0
  77. package/packages/FormMaking/custom/configs/editor.vue +71 -0
  78. package/packages/FormMaking/custom/configs/filler.vue +52 -0
  79. package/packages/FormMaking/custom/configs/grid.vue +103 -0
  80. package/packages/FormMaking/custom/configs/image.vue +148 -0
  81. package/packages/FormMaking/custom/configs/input.vue +176 -0
  82. package/packages/FormMaking/custom/configs/number.vue +140 -0
  83. package/packages/FormMaking/custom/configs/radio.vue +215 -0
  84. package/packages/FormMaking/custom/configs/rate.vue +109 -0
  85. package/packages/FormMaking/custom/configs/select.vue +308 -0
  86. package/packages/FormMaking/custom/configs/slider.vue +142 -0
  87. package/packages/FormMaking/custom/configs/switch.vue +130 -0
  88. package/packages/FormMaking/custom/configs/table.vue +105 -0
  89. package/packages/FormMaking/custom/configs/table_h5.vue +102 -0
  90. package/packages/FormMaking/custom/configs/tabs.vue +175 -0
  91. package/packages/FormMaking/custom/configs/text.vue +71 -0
  92. package/packages/FormMaking/custom/configs/textarea.vue +167 -0
  93. package/packages/FormMaking/custom/configs/time.vue +153 -0
  94. package/packages/FormMaking/custom/configs/upload.vue +150 -0
  95. package/packages/FormMaking/custom/index.js +33 -0
  96. package/packages/FormMaking/custom/items/alliance.vue +132 -0
  97. package/packages/FormMaking/custom/items/blank.vue +16 -0
  98. package/packages/FormMaking/custom/items/button.vue +27 -0
  99. package/packages/FormMaking/custom/items/cascader.vue +29 -0
  100. package/packages/FormMaking/custom/items/cell.vue +18 -0
  101. package/packages/FormMaking/custom/items/checkbox.vue +46 -0
  102. package/packages/FormMaking/custom/items/color.vue +19 -0
  103. package/packages/FormMaking/custom/items/date.vue +29 -0
  104. package/packages/FormMaking/custom/items/divider.vue +14 -0
  105. package/packages/FormMaking/custom/items/editor.vue +22 -0
  106. package/packages/FormMaking/custom/items/filler.vue +17 -0
  107. package/packages/FormMaking/custom/items/grid.vue +129 -0
  108. package/packages/FormMaking/custom/items/image.vue +42 -0
  109. package/packages/FormMaking/custom/items/input.vue +36 -0
  110. package/packages/FormMaking/custom/items/login.vue +13 -0
  111. package/packages/FormMaking/custom/items/number.vue +24 -0
  112. package/packages/FormMaking/custom/items/radio.vue +44 -0
  113. package/packages/FormMaking/custom/items/rate.vue +20 -0
  114. package/packages/FormMaking/custom/items/select.vue +32 -0
  115. package/packages/FormMaking/custom/items/slider.vue +34 -0
  116. package/packages/FormMaking/custom/items/switch.vue +22 -0
  117. package/packages/FormMaking/custom/items/table.vue +106 -0
  118. package/packages/FormMaking/custom/items/table_h5.vue +126 -0
  119. package/packages/FormMaking/custom/items/tabs.vue +145 -0
  120. package/packages/FormMaking/custom/items/text.vue +18 -0
  121. package/packages/FormMaking/custom/items/textarea.vue +37 -0
  122. package/packages/FormMaking/custom/items/time.vue +32 -0
  123. package/packages/FormMaking/custom/items/upload.vue +83 -0
  124. package/packages/FormMaking/custom/mixins/index.js +61 -0
  125. package/packages/FormMaking/custom/register.js +18 -0
  126. package/packages/{formMaking → FormMaking}/iconfont/demo.css +0 -0
  127. package/packages/{formMaking → FormMaking}/iconfont/demo_index.html +0 -0
  128. package/packages/{formMaking → FormMaking}/iconfont/iconfont.css +0 -0
  129. package/packages/{formMaking → FormMaking}/iconfont/iconfont.eot +0 -0
  130. package/packages/{formMaking → FormMaking}/iconfont/iconfont.js +0 -0
  131. package/packages/{formMaking → FormMaking}/iconfont/iconfont.svg +0 -0
  132. package/{lib → packages/FormMaking/iconfont}/iconfont.ttf +0 -0
  133. package/{lib → packages/FormMaking/iconfont}/iconfont.woff +0 -0
  134. package/packages/{formMaking → FormMaking}/iconfont/iconfont.woff2 +0 -0
  135. package/packages/FormMaking/index.js +35 -0
  136. package/packages/{formMaking → FormMaking}/lang/en-US.js +1 -1
  137. package/packages/{formMaking → FormMaking}/lang/zh-CN.js +1 -1
  138. package/packages/{formMaking → FormMaking}/styles/cover.scss +1 -1
  139. package/packages/{formMaking → FormMaking}/styles/index.scss +445 -429
  140. package/packages/{formMaking → FormMaking/util}/generateCode.js +5 -5
  141. package/packages/{formMaking → FormMaking}/util/index.js +0 -0
  142. package/packages/{formMaking → FormMaking}/util/request.js +0 -0
  143. package/packages/{icons → Icons}/index.js +0 -0
  144. package/packages/{icons → Icons}/index.vue +26 -9
  145. package/packages/Image/index.js +8 -0
  146. package/packages/Image/index.vue +146 -0
  147. package/packages/ImagePreview/index.js +8 -0
  148. package/packages/ImagePreview/index.vue +386 -0
  149. package/packages/Row/index.js +8 -0
  150. package/packages/Row/index.vue +35 -0
  151. package/packages/{table → Table}/action.js +0 -0
  152. package/packages/{table → Table}/action.vue +1 -1
  153. package/packages/Table/column.vue +63 -0
  154. package/packages/{table → Table}/index.js +0 -0
  155. package/packages/{table → Table}/index.vue +25 -23
  156. package/packages/{table → Table}/search.js +0 -0
  157. package/packages/{table → Table}/search.vue +2 -2
  158. package/packages/{table → Table}/tools.js +0 -0
  159. package/packages/{table → Table}/tools.vue +0 -0
  160. package/packages/Workflow/Log.js +99 -0
  161. package/packages/Workflow/designer/ProcessDesigner.vue +628 -0
  162. package/packages/Workflow/designer/index.js +7 -0
  163. package/packages/Workflow/designer/plugins/content-pad/contentPadProvider.js +390 -0
  164. package/packages/Workflow/designer/plugins/content-pad/index.js +6 -0
  165. package/packages/Workflow/designer/plugins/defaultEmpty.js +24 -0
  166. package/packages/Workflow/designer/plugins/descriptor/activitiDescriptor.json +1071 -0
  167. package/packages/Workflow/designer/plugins/descriptor/camundaDescriptor.json +1087 -0
  168. package/packages/Workflow/designer/plugins/descriptor/flowableDescriptor.json +1215 -0
  169. package/packages/Workflow/designer/plugins/extension-moddle/activiti/activitiExtension.js +74 -0
  170. package/packages/Workflow/designer/plugins/extension-moddle/activiti/index.js +9 -0
  171. package/packages/Workflow/designer/plugins/extension-moddle/camunda/extension.js +148 -0
  172. package/packages/Workflow/designer/plugins/extension-moddle/camunda/index.js +6 -0
  173. package/packages/Workflow/designer/plugins/extension-moddle/flowable/flowableExtension.js +74 -0
  174. package/packages/Workflow/designer/plugins/extension-moddle/flowable/index.js +9 -0
  175. package/packages/Workflow/designer/plugins/palette/CustomPalette.js +156 -0
  176. package/packages/Workflow/designer/plugins/palette/index.js +6 -0
  177. package/packages/Workflow/designer/plugins/palette/paletteProvider.js +160 -0
  178. package/packages/Workflow/designer/plugins/translate/customTranslate.js +41 -0
  179. package/packages/Workflow/designer/plugins/translate/zh.js +238 -0
  180. package/packages/Workflow/highlight/index.js +5 -0
  181. package/packages/Workflow/index.js +26 -0
  182. package/packages/Workflow/index.vue +394 -0
  183. package/packages/Workflow/modules/auto-place/CustomAutoPlace.js +81 -0
  184. package/packages/Workflow/modules/auto-place/index.js +6 -0
  185. package/packages/Workflow/modules/custom-renderer/CustomRenderer.js +17 -0
  186. package/packages/Workflow/modules/custom-renderer/index.js +6 -0
  187. package/packages/Workflow/modules/rules/CustomRules.js +16 -0
  188. package/packages/Workflow/modules/rules/index.js +6 -0
  189. package/packages/Workflow/palette/ProcessPalette.vue +106 -0
  190. package/packages/Workflow/palette/index.js +7 -0
  191. package/packages/Workflow/penal/PropertiesPanel.vue +247 -0
  192. package/packages/Workflow/penal/base/ElementBaseInfo.vue +80 -0
  193. package/packages/Workflow/penal/flow-condition/FlowCondition.vue +142 -0
  194. package/packages/Workflow/penal/form/ElementForm.vue +367 -0
  195. package/packages/Workflow/penal/index.js +7 -0
  196. package/packages/Workflow/penal/listeners/ElementListeners.vue +299 -0
  197. package/packages/Workflow/penal/listeners/UserTaskListeners.vue +322 -0
  198. package/packages/Workflow/penal/listeners/template.js +178 -0
  199. package/packages/Workflow/penal/listeners/utilSelf.js +62 -0
  200. package/packages/Workflow/penal/multi-instance/ElementMultiInstance.vue +200 -0
  201. package/packages/Workflow/penal/other/ElementOtherConfig.vue +59 -0
  202. package/packages/Workflow/penal/properties/ElementProperties.vue +135 -0
  203. package/packages/Workflow/penal/signal-message/SignalAndMessage.vue +104 -0
  204. package/packages/Workflow/penal/task/ElementTask.vue +73 -0
  205. package/packages/Workflow/penal/task/task-components/ReceiveTask.vue +97 -0
  206. package/packages/Workflow/penal/task/task-components/ScriptTask.vue +85 -0
  207. package/packages/Workflow/penal/task/task-components/UserTask.vue +535 -0
  208. package/packages/Workflow/theme/element-variables.scss +70 -0
  209. package/packages/Workflow/theme/index.scss +2 -0
  210. package/packages/Workflow/theme/process-designer.scss +157 -0
  211. package/packages/Workflow/theme/process-panel.scss +107 -0
  212. package/packages/Workflow/translations.js +25 -0
  213. package/packages/Workflow/utils.js +71 -0
  214. package/packages/upload/ajax.js +85 -0
  215. package/packages/upload/index.js +8 -0
  216. package/packages/upload/index.vue +325 -0
  217. package/packages/upload/locale.js +9 -0
  218. package/packages/upload/upload-dragger.vue +70 -0
  219. package/packages/upload/upload-list.vue +101 -0
  220. package/packages/upload/upload.vue +211 -0
  221. package/lib/03250ed25fc1b305e9980cf7cf0dfb09.js +0 -1
  222. package/lib/theme-chalk/cell.css +0 -53
  223. package/lib/theme-chalk/dialog.css +0 -41
  224. package/lib/theme-chalk/empty.css +0 -27
  225. package/lib/theme-chalk/index.css +0 -6
  226. package/lib/theme-chalk/reset.css +0 -4
  227. package/lib/tianheng-ui.js.map +0 -1
  228. package/packages/cell/index.vue +0 -116
  229. package/packages/empty/index.vue +0 -33
  230. package/packages/formMaking/Container.vue +0 -591
  231. package/packages/formMaking/CusDialog.vue +0 -134
  232. package/packages/formMaking/GenerateForm.vue +0 -174
  233. package/packages/formMaking/WidgetConfig.vue +0 -1539
  234. package/packages/formMaking/WidgetFormItem.vue +0 -817
  235. package/packages/formMaking/iconfont/iconfont.ttf +0 -0
  236. package/packages/formMaking/iconfont/iconfont.woff +0 -0
  237. package/packages/formMaking/index.js +0 -77
  238. package/packages/table/column.vue +0 -111
package/package.json CHANGED
@@ -1,28 +1,41 @@
1
1
  {
2
2
  "name": "tianheng-ui",
3
3
  "description": "A Vue.js project",
4
- "version": "0.0.56",
4
+ "version": "0.0.57",
5
5
  "author": "shu lang <403732931@qq.com>",
6
6
  "license": "MIT",
7
7
  "private": false,
8
8
  "main": "./lib/tianheng-ui.js",
9
9
  "scripts": {
10
10
  "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
11
- "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
11
+ "build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
12
+ "build:test": "cross-env NODE_ENV=test webpack --progress --hide-modules"
12
13
  },
13
14
  "dependencies": {
14
15
  "ace-builds": "^1.4.13",
15
16
  "axios": "^0.27.2",
17
+ "bpmn-js-sketchy": "^0.5.3",
18
+ "bpmn-js-task-resize": "^1.2.0",
19
+ "bpmn-js-token-simulation": "^0.10.0",
16
20
  "clipboard": "^2.0.11",
21
+ "diagram-js-minimap": "^2.0.4",
17
22
  "element-ui": "^2.15.6",
23
+ "highlight.js": "^10.5.0",
24
+ "min-dash": "^3.5.2",
25
+ "mini-css-extract-plugin": "^2.6.1",
18
26
  "normalize.css": "^8.0.1",
19
27
  "nprogress": "^0.2.0",
28
+ "vant": "^2.12.50",
20
29
  "viewerjs": "^1.10.5",
21
30
  "vue": "^2.5.11",
22
31
  "vue-i18n": "^5.0.3",
23
32
  "vue-router": "^3.5.3",
24
33
  "vue2-editor": "^2.10.3",
25
- "vuedraggable": "^2.24.3"
34
+ "vuedraggable": "^2.24.3",
35
+ "vuex": "^3.6.2",
36
+ "x2js": "^3.4.2",
37
+ "xlsx": "^0.18.5",
38
+ "xml-js": "^1.6.11"
26
39
  },
27
40
  "browserslist": [
28
41
  "> 1%",
@@ -37,13 +50,20 @@
37
50
  "@babel/plugin-syntax-import-meta": "^7.0.0",
38
51
  "@babel/preset-env": "^7.0.0",
39
52
  "@types/ace": "0.0.42",
53
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
54
+ "@vue/babel-preset-jsx": "^1.4.0",
40
55
  "babel-loader": "^8.2.5",
56
+ "babel-plugin-import": "^1.13.5",
57
+ "bpmn-js": "^8.8.3",
58
+ "bpmn-js-properties-panel": "^0.37.2",
59
+ "camunda-bpmn-moddle": "^4.4.1",
41
60
  "cross-env": "^5.0.5",
42
61
  "css-loader": "^0.28.7",
43
62
  "file-loader": "^1.1.4",
63
+ "html-webpack-plugin": "^4.5.0",
44
64
  "less": "^3.9.0",
45
65
  "less-loader": "^4.1.0",
46
- "sass": "^1.26.5",
66
+ "sass": "^1.55.0",
47
67
  "sass-loader": "^7.3.1",
48
68
  "uglifyjs-webpack-plugin": "^2.2.0",
49
69
  "vue-loader": "^14.2.4",
@@ -0,0 +1,8 @@
1
+ import Button from "./index.vue";
2
+
3
+ /* istanbul ignore next */
4
+ Button.install = function(Vue) {
5
+ Vue.component(Button.name, Button);
6
+ };
7
+
8
+ export default Button;
@@ -0,0 +1,80 @@
1
+ <template>
2
+ <button
3
+ class="th-button"
4
+ :class="selfClass"
5
+ :disabled="buttonDisabled || loading"
6
+ :autofocus="autofocus"
7
+ :type="nativeType"
8
+ @click="handleClick"
9
+ >
10
+ <i class="el-icon-loading" v-if="loading"></i>
11
+ <i :class="icon" v-if="icon && !loading"></i>
12
+ <span v-if="$slots.default"><slot></slot></span>
13
+ </button>
14
+ </template>
15
+ <script>
16
+ export default {
17
+ name: "ThButton",
18
+
19
+ inject: {
20
+ thForm: { default: "" },
21
+ thFormItem: { default: "" }
22
+ },
23
+
24
+ props: {
25
+ type: {
26
+ type: String,
27
+ default: "default"
28
+ },
29
+ size: String,
30
+ icon: {
31
+ type: String,
32
+ default: ""
33
+ },
34
+ nativeType: {
35
+ type: String,
36
+ default: "button"
37
+ },
38
+ loading: Boolean,
39
+ disabled: Boolean,
40
+ plain: Boolean,
41
+ autofocus: Boolean,
42
+ round: Boolean,
43
+ circle: Boolean
44
+ },
45
+
46
+ computed: {
47
+ selfClass() {
48
+ let className = [
49
+ this.type ? "th-button-" + this.type : "",
50
+ this.buttonSize ? "th-button-size-" + this.buttonSize : "",
51
+ {
52
+ "is-disabled": this.buttonDisabled,
53
+ "is-loading": this.loading,
54
+ "is-plain": this.plain,
55
+ "is-round": this.round,
56
+ "is-circle": this.circle
57
+ }
58
+ ];
59
+ return className;
60
+ },
61
+ _elFormItemSize() {
62
+ return (this.elFormItem || {}).elFormItemSize;
63
+ },
64
+ buttonSize() {
65
+ return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;
66
+ },
67
+ buttonDisabled() {
68
+ return this.$options.propsData.hasOwnProperty("disabled")
69
+ ? this.disabled
70
+ : (this.elForm || {}).disabled;
71
+ }
72
+ },
73
+
74
+ methods: {
75
+ handleClick(evt) {
76
+ this.$emit("click", evt);
77
+ }
78
+ }
79
+ };
80
+ </script>
@@ -0,0 +1,8 @@
1
+ import Card from "./index.vue";
2
+
3
+ /* istanbul ignore next */
4
+ Card.install = function(Vue) {
5
+ Vue.component(Card.name, Card);
6
+ };
7
+
8
+ export default Card;
@@ -0,0 +1,37 @@
1
+ <template>
2
+ <div class="th-card" :class="seflClass">
3
+ <template v-if="showHeader">
4
+ <slot v-if="$slots.header" name="header" />
5
+ <div v-else class="th-card-header">
6
+ <span v-if="title">{{ title }}</span>
7
+ <slot v-else name="title" />
8
+ <span v-if="label">{{ label }}</span>
9
+ <slot v-else name="label" />
10
+ </div>
11
+ </template>
12
+ <div class="th-card-body" :style="bodyStyle">
13
+ <slot />
14
+ </div>
15
+ </div>
16
+ </template>
17
+
18
+ <script>
19
+ export default {
20
+ name: "ThCard",
21
+ props: {
22
+ showHeader: { type: Boolean, default: true },
23
+ title: String,
24
+ label: String,
25
+ bodyStyle: String | Object,
26
+ shadow: { type: String, default: "always" }, // always / hover / never
27
+ border: Boolean
28
+ },
29
+ computed: {
30
+ seflClass() {
31
+ let className = `${this.shadow}-shadow`;
32
+ if (this.border) className = `${className} th-is_border`;
33
+ return className;
34
+ }
35
+ }
36
+ };
37
+ </script>
File without changes
@@ -0,0 +1,68 @@
1
+ <template>
2
+ <div :class="selfCellClass" :style="customStyle" @click="handleClick">
3
+ <i v-if="icon" class="th-cell-icon" :class="icon"></i>
4
+ <slot v-else name="icon" />
5
+ <div class="th-cell-content">
6
+ <div
7
+ v-if="title"
8
+ :class="['th-cell-title', titleClass]"
9
+ :style="titleStyle"
10
+ >
11
+ {{ title }}
12
+ </div>
13
+ <slot v-else name="title" />
14
+ <div v-if="label" :class="['th-cell-label', labelClass]">
15
+ {{ label }}
16
+ </div>
17
+ <slot v-else name="label" />
18
+ </div>
19
+ <div v-if="value" :class="['th-cell-value', valueClass]">
20
+ {{ value }}
21
+ </div>
22
+ <slot v-else />
23
+ </div>
24
+ </template>
25
+
26
+ <script>
27
+ export default {
28
+ name: "ThCell",
29
+ props: {
30
+ title: Number | String,
31
+ value: Number | String,
32
+ label: String,
33
+ icon: String,
34
+
35
+ customStyle: String | Object,
36
+ titleStyle: String | Object,
37
+
38
+ customClass: String,
39
+ titleClass: String,
40
+ labelClass: String,
41
+ valueClass: String,
42
+
43
+ activeClass: String,
44
+ hoverClass: String,
45
+
46
+ center: Boolean,
47
+ hover: Boolean,
48
+ active: Boolean
49
+ },
50
+ computed: {
51
+ selfCellClass() {
52
+ let className = "th-cell";
53
+ if (this.customClass) className = `${className} ${this.customClass}`;
54
+ if (this.center) className = `${className} th-is_alignItemsCenter`;
55
+ if (this.active)
56
+ className = `${className} ${this.activeClass || "th-is_active"}`;
57
+ if (this.hover)
58
+ className = `${className} ${this.hoverClass || "th-is_hover"}`;
59
+ return className;
60
+ }
61
+ },
62
+ methods: {
63
+ handleClick(evt) {
64
+ this.$emit("click", evt);
65
+ }
66
+ }
67
+ };
68
+ </script>
File without changes
@@ -1,59 +1,48 @@
1
1
  <template>
2
- <div class="wrap">
3
- <div class="code-editor" :ref="generateId"></div>
4
- <span v-if="withFullscreenBtn" title="全屏显示">
5
- <svg-icon
6
- class="icon-fullscreen"
7
- icon-class="fullscreen"
8
- :style="{ bottom: (withFooterBtns ? 47 : 10) + 'px' }"
9
- @click.native="fullscreen"
10
- ></svg-icon>
11
- </span>
12
-
13
- <el-dialog
14
- ref="dialog"
15
- custom-class="code-dialog"
16
- :visible.sync="isVisible"
17
- title="脚本编辑"
18
- fullscreen
19
- append-to-body
20
- :show-footer="false"
21
- @close="closeEditCode"
22
- >
23
- <code-editor v-model="dialogValue"></code-editor>
24
- </el-dialog>
25
- </div>
2
+ <div class="th-codeEditor" :style="selfStyle" :ref="generateId" />
26
3
  </template>
27
4
  <script>
28
5
  // 引入全局实例
29
6
  import ace from "ace-builds";
30
7
  // 主题风格,引入主题后还需要在 options 中指定主题才会生效
8
+ import "ace-builds/src-min-noconflict/theme-textmate";
31
9
  import "ace-builds/src-min-noconflict/theme-monokai";
32
- import "ace-builds/src-min-noconflict/theme-dracula";
10
+ import "ace-builds/src-min-noconflict/theme-terminal";
11
+ import "ace-builds/src-min-noconflict/theme-clouds";
12
+
13
+ // 联想词
14
+ import "ace-builds/src-min-noconflict/ext-language_tools";
33
15
  // 支持代码格式, 需要引入具体的语法高亮库才会有对应的语法高亮效果
34
16
  import "ace-builds/src-min-noconflict/mode-javascript";
35
17
  import "ace-builds/src-min-noconflict/mode-json";
36
18
  import "ace-builds/src-min-noconflict/mode-css";
37
- import "ace-builds/src-min-noconflict/ext-language_tools";
19
+ import "ace-builds/src-min-noconflict/mode-html";
20
+ import "ace-builds/src-min-noconflict/mode-sql";
21
+
38
22
  import jsWorkerUrl from "file-loader!ace-builds/src-noconflict/worker-javascript";
39
- import jsonWorkerUrl from "file-loader!ace-builds/src-noconflict/worker-json";
40
- import cssWorkerUrl from "file-loader!ace-builds/src-noconflict/worker-css";
41
23
  ace.config.setModuleUrl("ace/mode/javascript_worker", jsWorkerUrl);
42
- ace.config.setModuleUrl("ace/mode/json_worker", jsonWorkerUrl);
43
- ace.config.setModuleUrl("ace/mode/css_worker", cssWorkerUrl);
44
24
  ace.config.setModuleUrl(
45
25
  "ace/snippets/javascript",
46
26
  require("file-loader!ace-builds/src-noconflict/snippets/javascript.js")
47
27
  );
28
+
29
+ import cssWorkerUrl from "file-loader!ace-builds/src-noconflict/worker-css";
30
+ ace.config.setModuleUrl("ace/mode/css_worker", cssWorkerUrl);
48
31
  ace.config.setModuleUrl(
49
32
  "ace/snippets/css",
50
33
  require("file-loader!ace-builds/src-noconflict/snippets/css.js")
51
34
  );
52
35
 
36
+ import jsonWorkerUrl from "file-loader!ace-builds/src-noconflict/worker-json";
37
+ ace.config.setModuleUrl("ace/mode/json_worker", jsonWorkerUrl);
38
+
39
+ import htmlWorkerUrl from "file-loader!ace-builds/src-noconflict/worker-html";
40
+ ace.config.setModuleUrl("ace/mode/html_worker", htmlWorkerUrl);
41
+
53
42
  export default {
54
43
  name: "CodeEditor",
55
44
  model: {
56
- event: "change",
45
+ event: "change"
57
46
  },
58
47
  props: {
59
48
  // 编辑器内容
@@ -61,29 +50,28 @@ export default {
61
50
  // 默认语言
62
51
  language: {
63
52
  type: String,
64
- default: "javascript",
53
+ default: "javascript"
65
54
  },
66
55
  // 主题,对应主题库 JS 需要提前引入
67
56
  theme: {
68
57
  type: String,
69
- default: "monokai",
58
+ default: "textmate"
70
59
  },
60
+ height: String | Number,
71
61
  // 是否只读
72
- readonly: {
73
- type: Boolean,
74
- default: false,
75
- },
62
+ readonly: Boolean,
76
63
  // 最大行数
77
64
  maxLines: Number,
78
- // 是否显示全屏按钮
79
- withFullscreenBtn: {
80
- type: Boolean,
81
- default: false,
82
- },
83
- withFooterBtns: {
84
- type: Boolean,
85
- default: false,
65
+ // 自定义提示
66
+ completions: {
67
+ type: Array,
68
+ default: () => {
69
+ return [];
70
+ }
86
71
  },
72
+ showGutter: { type: Boolean, default: true },
73
+ highlightActiveLine: { type: Boolean, default: true },
74
+ highlightSelectedWord: { type: Boolean, default: true }
87
75
  },
88
76
  data() {
89
77
  return {
@@ -92,14 +80,27 @@ export default {
92
80
  "id_" +
93
81
  Math.random()
94
82
  .toString(36)
95
- .substr(2, 4),
96
- isVisible: false,
97
- dialogValue: "",
83
+ .substr(2, 4)
98
84
  };
99
85
  },
100
86
  mounted() {
101
87
  // 初始化
102
88
  this.initEditor();
89
+ this.setCompleteData();
90
+ },
91
+ computed: {
92
+ selfStyle() {
93
+ const style = {};
94
+ if (typeof this.height === "string" && this.height) {
95
+ style.height = this.height;
96
+ style.minHeight = "auto";
97
+ }
98
+ if (typeof this.height === "number" && this.height != null) {
99
+ style.height = `${this.height}px`;
100
+ style.minHeight = "auto";
101
+ }
102
+ return style;
103
+ }
103
104
  },
104
105
  watch: {
105
106
  value(val) {
@@ -107,7 +108,7 @@ export default {
107
108
  this.editor.setValue(val);
108
109
  this.editor.clearSelection();
109
110
  }
110
- },
111
+ }
111
112
  },
112
113
  methods: {
113
114
  // 初始化
@@ -116,12 +117,15 @@ export default {
116
117
  this.editor = ace.edit(this.$refs[this.generateId], {
117
118
  mode: `ace/mode/${this.language}`,
118
119
  theme: `ace/theme/${this.theme}`,
119
- fontSize: 12,
120
+ fontSize: 14,
120
121
  tabSize: 2,
121
122
  value: this.value,
122
123
  selectionStyle: "text",
123
124
  maxLines: this.maxLines,
124
125
  readOnly: this.readonly,
126
+ showGutter: this.showGutter,
127
+ highlightActiveLine: this.highlightActiveLine,
128
+ highlightSelectedWord: this.highlightSelectedWord
125
129
  });
126
130
  // 设置属性等,具体需要可根据官方参数自行设置
127
131
  this.editor.setOptions({
@@ -129,84 +133,45 @@ export default {
129
133
  enableSnippets: true,
130
134
  enableLiveAutocompletion: true,
131
135
  wrap: true,
132
- setShowPrintMargin: false,
136
+ setShowPrintMargin: false
133
137
  });
134
138
  // 设置值改变监听
135
139
  this.editor.on("change", () => {
136
140
  this.$emit("change", this.editor.getValue());
137
141
  });
138
142
  },
143
+ setCompleteData() {
144
+ let langTools = ace.require("ace/ext/language_tools");
145
+ langTools.addCompleter({
146
+ getCompletions: (editor, session, pos, prefix, callback) => {
147
+ if (prefix.length === 0) {
148
+ return callback(null, []);
149
+ } else {
150
+ return callback(null, this.completions);
151
+ }
152
+ }
153
+ });
154
+ },
155
+ setShowGutter(bool) {
156
+ this.editor.renderer.setShowGutter(bool);
157
+ },
139
158
  // 实例方法,高亮某一行
140
159
  gotoLine(lineNumber) {
141
160
  this.editor.gotoLine(lineNumber);
142
161
  },
143
- // 全屏编辑
144
- fullscreen() {
145
- this.dialogValue = JSON.parse(JSON.stringify(this.editor.getValue()));
146
- this.isVisible = true;
147
- },
148
- closeEditCode() {
149
- this.editor.setValue(this.dialogValue);
150
- this.editor.clearSelection();
151
- },
152
162
  // resize编辑器
153
163
  resize() {
154
- this.editor.resize(true);
164
+ this.editor.resize();
155
165
  },
156
166
  destroy() {
157
167
  if (this.editor) {
158
168
  this.editor.destroy();
159
169
  this.editor = null;
160
170
  }
161
- },
171
+ }
162
172
  },
163
173
  beforeDestroy() {
164
174
  this.destroy();
165
- },
175
+ }
166
176
  };
167
177
  </script>
168
- <style lang="scss" scoped>
169
- .wrap {
170
- position: relative;
171
- .code-editor {
172
- min-height: 150px;
173
- height: 100%;
174
- border: 1px solid #282f3a;
175
- background-color: #0e1013;
176
- }
177
- .icon-fullscreen {
178
- position: absolute;
179
- // color: #fff;
180
- right: 10px;
181
- font-size: 16px;
182
- z-index: 9999;
183
- cursor: pointer;
184
- }
185
- }
186
- .code-dialog {
187
- &::before {
188
- content: "";
189
- position: absolute;
190
- display: block;
191
- top: 0;
192
- left: 0;
193
- right: 0;
194
- width: 100%;
195
- height: 2px;
196
- background-image: linear-gradient(270deg, #00deff, #2483ff 74%);
197
- }
198
- display: flex;
199
- flex-direction: column;
200
- background-color: #303640;
201
- .el-dialog__header {
202
- border: none;
203
- .el-dialog__title {
204
- color: #ccc;
205
- }
206
- }
207
- .el-dialog__body {
208
- flex: 1 1 0;
209
- padding-top: 10px;
210
- }
211
- }
212
- </style>
@@ -0,0 +1,8 @@
1
+ import Col from "./index.vue";
2
+
3
+ /* istanbul ignore next */
4
+ Col.install = function(Vue) {
5
+ Vue.component(Col.name, Col);
6
+ };
7
+
8
+ export default Col;
@@ -0,0 +1,41 @@
1
+ <template>
2
+ <div class="th-col" :class="selfClass" :style="selfStyle">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: "ThCol",
10
+ props: {
11
+ span: { type: Number, default: 24 },
12
+ offset: Number
13
+ },
14
+ computed: {
15
+ selfClass() {
16
+ let className = "";
17
+ if (this.span) className = `th-col-${this.span}`;
18
+ if (this.offset) className = `${className} th-col-offset-${this.offset}`;
19
+ return className;
20
+ },
21
+ selfStyle() {
22
+ const parent = this.$parent;
23
+ while (parent && parent.$options.name !== "ThRow") {
24
+ parent = parent.$parent;
25
+ }
26
+
27
+ let gutter = 0;
28
+ if (parent) gutter = parent.gutter;
29
+
30
+ const style = {};
31
+ if (gutter) {
32
+ style.paddingLeft = `${gutter / 2}px`;
33
+ style.paddingRight = style.paddingLeft;
34
+ }
35
+ return style;
36
+ }
37
+ }
38
+ };
39
+ </script>
40
+
41
+ <style></style>
File without changes