@lambo-design/variant-form 2.2.9-beta.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 (293) hide show
  1. package/index.js +41 -0
  2. package/package.json +64 -0
  3. package/src/assets/ft-images/t1.png +0 -0
  4. package/src/assets/ft-images/t2.png +0 -0
  5. package/src/assets/ft-images/t3.png +0 -0
  6. package/src/assets/ft-images/t4.png +0 -0
  7. package/src/assets/ft-images/t5.png +0 -0
  8. package/src/assets/ft-images/t6.png +0 -0
  9. package/src/assets/ft-images/t7.png +0 -0
  10. package/src/assets/ft-images/t8.png +0 -0
  11. package/src/assets/vform-logo.png +0 -0
  12. package/src/components/code-editor/index.vue +134 -0
  13. package/src/components/form-designer/designer.js +962 -0
  14. package/src/components/form-designer/form-widget/container-widget/container-wrapper.vue +107 -0
  15. package/src/components/form-designer/form-widget/container-widget/containerMixin.js +93 -0
  16. package/src/components/form-designer/form-widget/container-widget/grid-col-widget.vue +314 -0
  17. package/src/components/form-designer/form-widget/container-widget/grid-widget.vue +93 -0
  18. package/src/components/form-designer/form-widget/container-widget/index.js +24 -0
  19. package/src/components/form-designer/form-widget/container-widget/tab-widget.vue +123 -0
  20. package/src/components/form-designer/form-widget/container-widget/table-cell-widget.vue +347 -0
  21. package/src/components/form-designer/form-widget/container-widget/table-widget.vue +116 -0
  22. package/src/components/form-designer/form-widget/field-widget/button-widget.vue +87 -0
  23. package/src/components/form-designer/form-widget/field-widget/cascader-widget.vue +120 -0
  24. package/src/components/form-designer/form-widget/field-widget/checkbox-widget.vue +105 -0
  25. package/src/components/form-designer/form-widget/field-widget/color-widget.vue +99 -0
  26. package/src/components/form-designer/form-widget/field-widget/date-range-widget.vue +104 -0
  27. package/src/components/form-designer/form-widget/field-widget/date-widget.vue +103 -0
  28. package/src/components/form-designer/form-widget/field-widget/divider-widget.vue +83 -0
  29. package/src/components/form-designer/form-widget/field-widget/fieldMixin.js +613 -0
  30. package/src/components/form-designer/form-widget/field-widget/file-upload-widget.vue +313 -0
  31. package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue +331 -0
  32. package/src/components/form-designer/form-widget/field-widget/html-text-widget.vue +82 -0
  33. package/src/components/form-designer/form-widget/field-widget/index.js +10 -0
  34. package/src/components/form-designer/form-widget/field-widget/input-widget.vue +112 -0
  35. package/src/components/form-designer/form-widget/field-widget/number-widget.vue +103 -0
  36. package/src/components/form-designer/form-widget/field-widget/picture-upload-widget.vue +280 -0
  37. package/src/components/form-designer/form-widget/field-widget/radio-widget.vue +105 -0
  38. package/src/components/form-designer/form-widget/field-widget/rate-widget.vue +102 -0
  39. package/src/components/form-designer/form-widget/field-widget/rich-editor-widget.vue +123 -0
  40. package/src/components/form-designer/form-widget/field-widget/select-widget.vue +123 -0
  41. package/src/components/form-designer/form-widget/field-widget/slider-widget.vue +100 -0
  42. package/src/components/form-designer/form-widget/field-widget/slot-widget.vue +102 -0
  43. package/src/components/form-designer/form-widget/field-widget/static-content-wrapper.vue +196 -0
  44. package/src/components/form-designer/form-widget/field-widget/static-text-widget.vue +83 -0
  45. package/src/components/form-designer/form-widget/field-widget/switch-widget.vue +101 -0
  46. package/src/components/form-designer/form-widget/field-widget/textarea-widget.vue +99 -0
  47. package/src/components/form-designer/form-widget/field-widget/time-range-widget.vue +104 -0
  48. package/src/components/form-designer/form-widget/field-widget/time-widget.vue +103 -0
  49. package/src/components/form-designer/form-widget/index.vue +272 -0
  50. package/src/components/form-designer/index.vue +500 -0
  51. package/src/components/form-designer/refMixinDesign.js +28 -0
  52. package/src/components/form-designer/setting-panel/form-setting.vue +354 -0
  53. package/src/components/form-designer/setting-panel/index.vue +367 -0
  54. package/src/components/form-designer/setting-panel/option-items-setting.vue +234 -0
  55. package/src/components/form-designer/setting-panel/property-editor/allowCreate-editor.vue +24 -0
  56. package/src/components/form-designer/setting-panel/property-editor/appendButton-editor.vue +28 -0
  57. package/src/components/form-designer/setting-panel/property-editor/appendButtonDisabled-editor.vue +23 -0
  58. package/src/components/form-designer/setting-panel/property-editor/automaticDropdown-editor.vue +23 -0
  59. package/src/components/form-designer/setting-panel/property-editor/border-editor.vue +23 -0
  60. package/src/components/form-designer/setting-panel/property-editor/buttonIcon-editor.vue +23 -0
  61. package/src/components/form-designer/setting-panel/property-editor/buttonStyle-editor.vue +23 -0
  62. package/src/components/form-designer/setting-panel/property-editor/clearable-editor.vue +23 -0
  63. package/src/components/form-designer/setting-panel/property-editor/columnWidth-editor.vue +26 -0
  64. package/src/components/form-designer/setting-panel/property-editor/container-grid/colHeight-editor.vue +28 -0
  65. package/src/components/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +81 -0
  66. package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue +24 -0
  67. package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue +24 -0
  68. package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue +24 -0
  69. package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-responsive-editor.vue +23 -0
  70. package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue +48 -0
  71. package/src/components/form-designer/setting-panel/property-editor/container-sub-form/showBlankRow-editor.vue +23 -0
  72. package/src/components/form-designer/setting-panel/property-editor/container-sub-form/showRowNumber-editor.vue +23 -0
  73. package/src/components/form-designer/setting-panel/property-editor/container-sub-form/sub-form-labelAlign-editor.vue +36 -0
  74. package/src/components/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue +119 -0
  75. package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue +23 -0
  76. package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue +23 -0
  77. package/src/components/form-designer/setting-panel/property-editor/container-table-cell/wordBreak-editor.vue +23 -0
  78. package/src/components/form-designer/setting-panel/property-editor/customClass-editor.vue +40 -0
  79. package/src/components/form-designer/setting-panel/property-editor/defaultValue-editor.vue +25 -0
  80. package/src/components/form-designer/setting-panel/property-editor/disabled-editor.vue +23 -0
  81. package/src/components/form-designer/setting-panel/property-editor/displayStyle-editor.vue +26 -0
  82. package/src/components/form-designer/setting-panel/property-editor/editable-editor.vue +24 -0
  83. package/src/components/form-designer/setting-panel/property-editor/endPlaceholder-editor.vue +23 -0
  84. package/src/components/form-designer/setting-panel/property-editor/event-handler/eventMixin.js +12 -0
  85. package/src/components/form-designer/setting-panel/property-editor/event-handler/onAppendButtonClick-editor.vue +30 -0
  86. package/src/components/form-designer/setting-panel/property-editor/event-handler/onBeforeUpload-editor.vue +30 -0
  87. package/src/components/form-designer/setting-panel/property-editor/event-handler/onBlur-editor.vue +30 -0
  88. package/src/components/form-designer/setting-panel/property-editor/event-handler/onChange-editor.vue +30 -0
  89. package/src/components/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +30 -0
  90. package/src/components/form-designer/setting-panel/property-editor/event-handler/onCreated-editor.vue +31 -0
  91. package/src/components/form-designer/setting-panel/property-editor/event-handler/onFileRemove.vue +30 -0
  92. package/src/components/form-designer/setting-panel/property-editor/event-handler/onFocus-editor.vue +30 -0
  93. package/src/components/form-designer/setting-panel/property-editor/event-handler/onInput-editor.vue +30 -0
  94. package/src/components/form-designer/setting-panel/property-editor/event-handler/onMounted-editor.vue +30 -0
  95. package/src/components/form-designer/setting-panel/property-editor/event-handler/onRemoteQuery-editor.vue +30 -0
  96. package/src/components/form-designer/setting-panel/property-editor/event-handler/onSubFormRowAdd-editor.vue +30 -0
  97. package/src/components/form-designer/setting-panel/property-editor/event-handler/onSubFormRowChange-editor.vue +30 -0
  98. package/src/components/form-designer/setting-panel/property-editor/event-handler/onSubFormRowDelete-editor.vue +30 -0
  99. package/src/components/form-designer/setting-panel/property-editor/event-handler/onSubFormRowInsert-editor.vue +30 -0
  100. package/src/components/form-designer/setting-panel/property-editor/event-handler/onUploadError-editor.vue +30 -0
  101. package/src/components/form-designer/setting-panel/property-editor/event-handler/onUploadSuccess-editor.vue +30 -0
  102. package/src/components/form-designer/setting-panel/property-editor/event-handler/onValidate-editor.vue +30 -0
  103. package/src/components/form-designer/setting-panel/property-editor/field-button/button-type-editor.vue +32 -0
  104. package/src/components/form-designer/setting-panel/property-editor/field-button/circle-editor.vue +23 -0
  105. package/src/components/form-designer/setting-panel/property-editor/field-button/icon-editor.vue +23 -0
  106. package/src/components/form-designer/setting-panel/property-editor/field-button/plain-editor.vue +24 -0
  107. package/src/components/form-designer/setting-panel/property-editor/field-button/round-editor.vue +23 -0
  108. package/src/components/form-designer/setting-panel/property-editor/field-cascader/cascader-defaultValue-editor.vue +18 -0
  109. package/src/components/form-designer/setting-panel/property-editor/field-cascader/cascader-multiple-editor.vue +24 -0
  110. package/src/components/form-designer/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue +23 -0
  111. package/src/components/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +23 -0
  112. package/src/components/form-designer/setting-panel/property-editor/field-checkbox/checkbox-defaultValue-editor.vue +18 -0
  113. package/src/components/form-designer/setting-panel/property-editor/field-color/color-defaultValue-editor.vue +25 -0
  114. package/src/components/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +26 -0
  115. package/src/components/form-designer/setting-panel/property-editor/field-date/date-format-editor.vue +30 -0
  116. package/src/components/form-designer/setting-panel/property-editor/field-date/date-type-editor.vue +30 -0
  117. package/src/components/form-designer/setting-panel/property-editor/field-date/date-valueFormat-editor.vue +26 -0
  118. package/src/components/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +26 -0
  119. package/src/components/form-designer/setting-panel/property-editor/field-date-range/date-range-format-editor.vue +30 -0
  120. package/src/components/form-designer/setting-panel/property-editor/field-date-range/date-range-type-editor.vue +27 -0
  121. package/src/components/form-designer/setting-panel/property-editor/field-date-range/date-range-valueFormat-editor.vue +26 -0
  122. package/src/components/form-designer/setting-panel/property-editor/field-divider/contentPosition-editor.vue +27 -0
  123. package/src/components/form-designer/setting-panel/property-editor/field-file-upload/file-upload-fileTypes-editor.vue +44 -0
  124. package/src/components/form-designer/setting-panel/property-editor/field-html-text/htmlContent-editor.vue +29 -0
  125. package/src/components/form-designer/setting-panel/property-editor/field-number/controlsPosition-editor.vue +27 -0
  126. package/src/components/form-designer/setting-panel/property-editor/field-picture-upload/picture-upload-fileTypes-editor.vue +44 -0
  127. package/src/components/form-designer/setting-panel/property-editor/field-radio/radio-defaultValue-editor.vue +18 -0
  128. package/src/components/form-designer/setting-panel/property-editor/field-rate/allowHalf-editor.vue +23 -0
  129. package/src/components/form-designer/setting-panel/property-editor/field-rate/highThreshold-editor.vue +24 -0
  130. package/src/components/form-designer/setting-panel/property-editor/field-rate/lowThreshold-editor.vue +24 -0
  131. package/src/components/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue +26 -0
  132. package/src/components/form-designer/setting-panel/property-editor/field-rate/rate-max-editor.vue +25 -0
  133. package/src/components/form-designer/setting-panel/property-editor/field-rate/showScore-editor.vue +23 -0
  134. package/src/components/form-designer/setting-panel/property-editor/field-rate/showText-editor.vue +23 -0
  135. package/src/components/form-designer/setting-panel/property-editor/field-select/select-defaultValue-editor.vue +18 -0
  136. package/src/components/form-designer/setting-panel/property-editor/field-slider/range-editor.vue +23 -0
  137. package/src/components/form-designer/setting-panel/property-editor/field-slider/showStops-editor.vue +23 -0
  138. package/src/components/form-designer/setting-panel/property-editor/field-slider/vertical-editor.vue +23 -0
  139. package/src/components/form-designer/setting-panel/property-editor/field-static-text/fontSize-editor.vue +23 -0
  140. package/src/components/form-designer/setting-panel/property-editor/field-static-text/preWrap-editor.vue +23 -0
  141. package/src/components/form-designer/setting-panel/property-editor/field-static-text/textContent-editor.vue +23 -0
  142. package/src/components/form-designer/setting-panel/property-editor/field-switch/activeColor-editor.vue +23 -0
  143. package/src/components/form-designer/setting-panel/property-editor/field-switch/activeText-editor.vue +23 -0
  144. package/src/components/form-designer/setting-panel/property-editor/field-switch/inactiveColor-editor.vue +23 -0
  145. package/src/components/form-designer/setting-panel/property-editor/field-switch/inactiveText-editor.vue +23 -0
  146. package/src/components/form-designer/setting-panel/property-editor/field-switch/switch-defaultValue-editor.vue +25 -0
  147. package/src/components/form-designer/setting-panel/property-editor/field-switch/switchWidth-editor.vue +23 -0
  148. package/src/components/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +26 -0
  149. package/src/components/form-designer/setting-panel/property-editor/field-time/time-format-editor.vue +27 -0
  150. package/src/components/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +26 -0
  151. package/src/components/form-designer/setting-panel/property-editor/field-time-range/time-range-format-editor.vue +27 -0
  152. package/src/components/form-designer/setting-panel/property-editor/fileMaxSize-editor.vue +23 -0
  153. package/src/components/form-designer/setting-panel/property-editor/filterable-editor.vue +23 -0
  154. package/src/components/form-designer/setting-panel/property-editor/hidden-editor.vue +23 -0
  155. package/src/components/form-designer/setting-panel/property-editor/index.js +10 -0
  156. package/src/components/form-designer/setting-panel/property-editor/label-editor.vue +30 -0
  157. package/src/components/form-designer/setting-panel/property-editor/labelAlign-editor.vue +42 -0
  158. package/src/components/form-designer/setting-panel/property-editor/labelHidden-editor.vue +23 -0
  159. package/src/components/form-designer/setting-panel/property-editor/labelIconClass-editor.vue +28 -0
  160. package/src/components/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +37 -0
  161. package/src/components/form-designer/setting-panel/property-editor/labelTooltip-editor.vue +23 -0
  162. package/src/components/form-designer/setting-panel/property-editor/labelWidth-editor.vue +25 -0
  163. package/src/components/form-designer/setting-panel/property-editor/limit-editor.vue +24 -0
  164. package/src/components/form-designer/setting-panel/property-editor/max-editor.vue +39 -0
  165. package/src/components/form-designer/setting-panel/property-editor/maxLength-editor.vue +40 -0
  166. package/src/components/form-designer/setting-panel/property-editor/min-editor.vue +40 -0
  167. package/src/components/form-designer/setting-panel/property-editor/minLength-editor.vue +41 -0
  168. package/src/components/form-designer/setting-panel/property-editor/multiple-editor.vue +24 -0
  169. package/src/components/form-designer/setting-panel/property-editor/multipleLimit-editor.vue +24 -0
  170. package/src/components/form-designer/setting-panel/property-editor/multipleSelect-editor.vue +24 -0
  171. package/src/components/form-designer/setting-panel/property-editor/name-editor.vue +89 -0
  172. package/src/components/form-designer/setting-panel/property-editor/optionItems-editor.vue +28 -0
  173. package/src/components/form-designer/setting-panel/property-editor/placeholder-editor.vue +24 -0
  174. package/src/components/form-designer/setting-panel/property-editor/precision-editor.vue +23 -0
  175. package/src/components/form-designer/setting-panel/property-editor/prefixIcon-editor.vue +23 -0
  176. package/src/components/form-designer/setting-panel/property-editor/propertyMixin.js +55 -0
  177. package/src/components/form-designer/setting-panel/property-editor/readonly-editor.vue +23 -0
  178. package/src/components/form-designer/setting-panel/property-editor/remote-editor.vue +25 -0
  179. package/src/components/form-designer/setting-panel/property-editor/required-editor.vue +23 -0
  180. package/src/components/form-designer/setting-panel/property-editor/requiredHint-editor.vue +24 -0
  181. package/src/components/form-designer/setting-panel/property-editor/rows-editor.vue +24 -0
  182. package/src/components/form-designer/setting-panel/property-editor/showFileList-editor.vue +23 -0
  183. package/src/components/form-designer/setting-panel/property-editor/showPassword-editor.vue +24 -0
  184. package/src/components/form-designer/setting-panel/property-editor/showWordLimit-editor.vue +23 -0
  185. package/src/components/form-designer/setting-panel/property-editor/size-editor.vue +38 -0
  186. package/src/components/form-designer/setting-panel/property-editor/startPlaceholder-editor.vue +23 -0
  187. package/src/components/form-designer/setting-panel/property-editor/step-editor.vue +23 -0
  188. package/src/components/form-designer/setting-panel/property-editor/suffixIcon-editor.vue +23 -0
  189. package/src/components/form-designer/setting-panel/property-editor/textAlign-editor.vue +35 -0
  190. package/src/components/form-designer/setting-panel/property-editor/type-editor.vue +33 -0
  191. package/src/components/form-designer/setting-panel/property-editor/uploadTip-editor.vue +24 -0
  192. package/src/components/form-designer/setting-panel/property-editor/uploadURL-editor.vue +28 -0
  193. package/src/components/form-designer/setting-panel/property-editor/validation-editor.vue +48 -0
  194. package/src/components/form-designer/setting-panel/property-editor/validationHint-editor.vue +23 -0
  195. package/src/components/form-designer/setting-panel/property-editor/withCredentials-editor.vue +23 -0
  196. package/src/components/form-designer/setting-panel/property-editor-factory.js +173 -0
  197. package/src/components/form-designer/setting-panel/propertyRegister.js +215 -0
  198. package/src/components/form-designer/toolbar-panel/index.vue +886 -0
  199. package/src/components/form-designer/widget-panel/index.vue +394 -0
  200. package/src/components/form-designer/widget-panel/templatesConfig.js +58 -0
  201. package/src/components/form-designer/widget-panel/widgetsConfig.js +934 -0
  202. package/src/components/form-render/container-item/container-item-wrapper.vue +37 -0
  203. package/src/components/form-render/container-item/containerItemMixin.js +221 -0
  204. package/src/components/form-render/container-item/grid-col-item.vue +126 -0
  205. package/src/components/form-render/container-item/grid-item.vue +59 -0
  206. package/src/components/form-render/container-item/index.js +24 -0
  207. package/src/components/form-render/container-item/sub-form-item.vue +417 -0
  208. package/src/components/form-render/container-item/tab-item.vue +99 -0
  209. package/src/components/form-render/container-item/table-cell-item.vue +72 -0
  210. package/src/components/form-render/container-item/table-item.vue +70 -0
  211. package/src/components/form-render/index.vue +721 -0
  212. package/src/components/form-render/refMixin.js +30 -0
  213. package/src/components/svg-icon/index.vue +49 -0
  214. package/src/components/v-table/index.vue +106 -0
  215. package/src/extension/extension-helper.js +23 -0
  216. package/src/extension/extension-loader.js +116 -0
  217. package/src/extension/samples/alert/alert-widget.vue +72 -0
  218. package/src/extension/samples/card/card-item.vue +100 -0
  219. package/src/extension/samples/card/card-widget.vue +132 -0
  220. package/src/extension/samples/extension-schema.js +36 -0
  221. package/src/extension/samples/extension-sfc-generator.js +50 -0
  222. package/src/iconfont/iconfont.css +29 -0
  223. package/src/iconfont/iconfont.eot +0 -0
  224. package/src/iconfont/iconfont.js +1 -0
  225. package/src/iconfont/iconfont.json +37 -0
  226. package/src/iconfont/iconfont.svg +35 -0
  227. package/src/iconfont/iconfont.ttf +0 -0
  228. package/src/iconfont/iconfont.woff +0 -0
  229. package/src/iconfont/iconfont.woff2 +0 -0
  230. package/src/icons/index.js +3 -0
  231. package/src/icons/svg/alert.svg +1 -0
  232. package/src/icons/svg/button.svg +1 -0
  233. package/src/icons/svg/card.svg +1 -0
  234. package/src/icons/svg/cascader-field.svg +1 -0
  235. package/src/icons/svg/checkbox-field.svg +1 -0
  236. package/src/icons/svg/color-field.svg +1 -0
  237. package/src/icons/svg/custom-component.svg +1 -0
  238. package/src/icons/svg/data-table.svg +1 -0
  239. package/src/icons/svg/date-field.svg +1 -0
  240. package/src/icons/svg/date-range-field.svg +1 -0
  241. package/src/icons/svg/divider.svg +1 -0
  242. package/src/icons/svg/document.svg +1 -0
  243. package/src/icons/svg/drag.svg +1 -0
  244. package/src/icons/svg/file-upload-field.svg +1 -0
  245. package/src/icons/svg/github.svg +1 -0
  246. package/src/icons/svg/grid.svg +1 -0
  247. package/src/icons/svg/html-text.svg +1 -0
  248. package/src/icons/svg/node-tree.svg +1 -0
  249. package/src/icons/svg/number-field.svg +1 -0
  250. package/src/icons/svg/picture-upload-field.svg +1 -0
  251. package/src/icons/svg/radio-field.svg +1 -0
  252. package/src/icons/svg/rate-field.svg +1 -0
  253. package/src/icons/svg/redo.svg +1 -0
  254. package/src/icons/svg/rich-editor-field.svg +1 -0
  255. package/src/icons/svg/section.svg +1 -0
  256. package/src/icons/svg/select-field.svg +1 -0
  257. package/src/icons/svg/slider-field.svg +1 -0
  258. package/src/icons/svg/slot-component.svg +1 -0
  259. package/src/icons/svg/slot-field.svg +1 -0
  260. package/src/icons/svg/static-text.svg +1 -0
  261. package/src/icons/svg/sub-form.svg +1 -0
  262. package/src/icons/svg/switch-field.svg +1 -0
  263. package/src/icons/svg/tab.svg +1 -0
  264. package/src/icons/svg/table.svg +1 -0
  265. package/src/icons/svg/text-field.svg +1 -0
  266. package/src/icons/svg/textarea-field.svg +1 -0
  267. package/src/icons/svg/time-field.svg +1 -0
  268. package/src/icons/svg/time-range-field.svg +1 -0
  269. package/src/icons/svg/undo.svg +1 -0
  270. package/src/icons/svg/vue-sfc.svg +1 -0
  271. package/src/lang/en-US.js +354 -0
  272. package/src/lang/en-US_extension.js +26 -0
  273. package/src/lang/en-US_render.js +38 -0
  274. package/src/lang/zh-CN.js +354 -0
  275. package/src/lang/zh-CN_extension.js +26 -0
  276. package/src/lang/zh-CN_render.js +38 -0
  277. package/src/styles/global.scss +108 -0
  278. package/src/styles/index.scss +15 -0
  279. package/src/utils/beautifierLoader.js +77 -0
  280. package/src/utils/code-generator.js +91 -0
  281. package/src/utils/config.js +9 -0
  282. package/src/utils/debug-console.js +7 -0
  283. package/src/utils/directive.js +74 -0
  284. package/src/utils/emitter.js +34 -0
  285. package/src/utils/format.js +214 -0
  286. package/src/utils/i18n.js +95 -0
  287. package/src/utils/sfc-generator.js +583 -0
  288. package/src/utils/smart-vue-i18n/index.js +56 -0
  289. package/src/utils/smart-vue-i18n/utils.js +47 -0
  290. package/src/utils/util.js +376 -0
  291. package/src/utils/validators.js +127 -0
  292. package/src/utils/vue2js-generator.js +144 -0
  293. package/src/utils/vue3js-generator.js +70 -0
@@ -0,0 +1,500 @@
1
+ <!--
2
+ /**
3
+ * author: vformAdmin
4
+ * email: vdpadmin@163.com
5
+ * website: https://www.vform666.com
6
+ * date: 2021.08.18
7
+ * remark: 如果要分发VForm源码,需在本文件顶部保留此文件头信息!!
8
+ */
9
+ -->
10
+
11
+ <template>
12
+ <el-container class="main-container full-height">
13
+ <el-header class="main-header">
14
+ <div class="float-left main-title">
15
+ <img src="../../assets/vform-logo.png" @click="openHome">
16
+ <span class="bold">VForm</span> {{i18nt('application.productTitle')}} <span class="version-span">Ver {{vFormVersion}}</span></div>
17
+ <div class="float-right external-link">
18
+ <el-dropdown v-if="showLink('languageMenu')" :hide-timeout="2000" @command="handleLanguageChanged">
19
+ <span class="el-dropdown-link">{{curLangName}}<i class="el-icon-arrow-down el-icon--right"></i></span>
20
+ <el-dropdown-menu slot="dropdown">
21
+ <el-dropdown-item command="zh-CN">{{i18nt('application.zh-CN')}}</el-dropdown-item>
22
+ <el-dropdown-item command="en-US">{{i18nt('application.en-US')}}</el-dropdown-item>
23
+ </el-dropdown-menu>
24
+ </el-dropdown>
25
+ <a v-if="showLink('externalLink')" href="javascript:void(0)" @click="(ev) => openUrl(ev, gitUrl)" target="_blank"><svg-icon icon-class="github" />{{i18nt('application.github')}}</a>
26
+ <a v-if="showLink('externalLink')" href="javascript:void(0)" @click="(ev) => openUrl(ev, docUrl)" target="_blank"><svg-icon icon-class="document" />{{i18nt('application.document')}}</a>
27
+ <a v-if="showLink('externalLink')" href="javascript:void(0)" @click="(ev) => openUrl(ev, chatUrl)" target="_blank">{{i18nt('application.qqGroup')}}</a>
28
+ <a v-if="showLink('externalLink')" href="javascript:void(0)" @click="(ev) => openUrl(ev, subScribeUrl)" target="_blank">
29
+ {{i18nt('application.subscription')}}<i class="el-icon-top-right"></i></a>
30
+ </div>
31
+ </el-header>
32
+
33
+ <el-container>
34
+ <el-aside class="side-panel">
35
+ <widget-panel :designer="designer" />
36
+ </el-aside>
37
+
38
+ <el-container class="center-layout-container">
39
+ <el-header class="toolbar-header">
40
+ <toolbar-panel :designer="designer" :global-dsv="globalDsv" ref="toolbarRef">
41
+ <template v-for="(idx, slotName) in $slots" #[slotName]>
42
+ <slot :name="slotName"></slot>
43
+ </template>
44
+ </toolbar-panel>
45
+ </el-header>
46
+ <el-main class="form-widget-main">
47
+ <el-scrollbar class="container-scroll-bar" :style="{height: scrollerHeight}">
48
+ <v-form-widget :designer="designer" :form-config="designer.formConfig" :global-dsv="globalDsv" ref="formRef">
49
+ </v-form-widget>
50
+ </el-scrollbar>
51
+ </el-main>
52
+ </el-container>
53
+
54
+ <el-aside>
55
+ <setting-panel :designer="designer" :selected-widget="designer.selectedWidget"
56
+ :form-config="designer.formConfig" :global-dsv="globalDsv" />
57
+ </el-aside>
58
+ </el-container>
59
+
60
+ </el-container>
61
+ </template>
62
+
63
+ <script>
64
+ import WidgetPanel from './widget-panel/index'
65
+ import ToolbarPanel from './toolbar-panel/index'
66
+ import SettingPanel from './setting-panel/index'
67
+ import VFormWidget from './form-widget/index'
68
+ import {createDesigner} from "@/components/form-designer/designer"
69
+ import {
70
+ addWindowResizeHandler,
71
+ deepClone,
72
+ getAllContainerWidgets,
73
+ getAllFieldWidgets,
74
+ getQueryParam, traverseAllWidgets
75
+ } from "@/utils/util"
76
+ import {MOCK_CASE_URL, VARIANT_FORM_VERSION} from "@/utils/config"
77
+ import i18n, { changeLocale } from "@/utils/i18n"
78
+ import axios from "axios"
79
+ import SvgIcon from '@/components/svg-icon'
80
+
81
+ export default {
82
+ name: "VFormDesigner",
83
+ componentName: "VFormDesigner",
84
+ mixins: [i18n],
85
+ components: {
86
+ WidgetPanel,
87
+ ToolbarPanel,
88
+ SettingPanel,
89
+ VFormWidget,
90
+ SvgIcon,
91
+ },
92
+ props: {
93
+ /* 后端字段列表API */
94
+ fieldListApi: {
95
+ type: Object,
96
+ default: null,
97
+ },
98
+
99
+ /* 禁止显示的组件名称数组 */
100
+ bannedWidgets: {
101
+ type: Array,
102
+ default: () => []
103
+ },
104
+
105
+ designerConfig: {
106
+ type: Object,
107
+ default: () => {
108
+ return {
109
+ languageMenu: true, //是否显示语言切换菜单
110
+ externalLink: true, //是否显示GitHub、文档等外部链接
111
+ formTemplates: true, //是否显示表单模板
112
+ eventCollapse: true, //是否显示组件事件属性折叠面板
113
+ widgetNameReadonly: false, //禁止修改组件名称
114
+
115
+ clearDesignerButton: true, //是否显示清空设计器按钮
116
+ previewFormButton: true, //是否显示预览表单按钮
117
+ importJsonButton: true, //是否显示导入JSON按钮
118
+ exportJsonButton: true, //是否显示导出JSON器按钮
119
+ exportCodeButton: true, //是否显示导出代码按钮
120
+ generateSFCButton: true, //是否显示生成SFC按钮
121
+ toolbarMaxWidth: 420, //设计器工具按钮栏最大宽度(单位像素)
122
+ toolbarMinWidth: 300, //设计器工具按钮栏最小宽度(单位像素)
123
+
124
+ presetCssCode: '', //设计器预设CSS样式代码
125
+
126
+ resetFormJson: false, //是否在设计器初始化时将表单内容重置为空
127
+ }
128
+ }
129
+ },
130
+
131
+ /* 全局数据源变量 */
132
+ globalDsv: {
133
+ type: Object,
134
+ default: () => ({})
135
+ },
136
+
137
+ },
138
+ data() {
139
+ return {
140
+ vFormVersion: VARIANT_FORM_VERSION,
141
+ curLangName: '',
142
+
143
+ vsCodeFlag: false,
144
+ caseName: '',
145
+
146
+ docUrl: 'https://www.vform666.com/document.html',
147
+ gitUrl: 'https://github.com/vform666/variant-form',
148
+ chatUrl: 'https://www.vform666.com/pages/chat-group/',
149
+ subScribeUrl: 'https://www.vform666.com/pages/pro/',
150
+
151
+ scrollerHeight: 0,
152
+
153
+ designer: createDesigner(this),
154
+
155
+ fieldList: []
156
+ }
157
+ },
158
+ provide() {
159
+ return {
160
+ serverFieldList: this.fieldList,
161
+ getDesignerConfig: () => this.designerConfig,
162
+ getBannedWidgets: () => this.bannedWidgets,
163
+ }
164
+ },
165
+ created() {
166
+ this.vsCodeFlag = getQueryParam('vscode') == 1
167
+ this.caseName = getQueryParam('case')
168
+ },
169
+ mounted() {
170
+ this.initLocale()
171
+
172
+ this.scrollerHeight = window.innerHeight - 56 - 36 + 'px'
173
+ addWindowResizeHandler(() => {
174
+ this.$nextTick(() => {
175
+ this.scrollerHeight = window.innerHeight - 56 - 36 + 'px'
176
+ })
177
+ })
178
+
179
+ this.loadCase()
180
+
181
+ this.loadFieldListFromServer()
182
+ },
183
+ methods: {
184
+ showLink(configName) {
185
+ if (this.designerConfig[configName] === undefined) {
186
+ return true
187
+ }
188
+
189
+ return !!this.designerConfig[configName]
190
+ },
191
+
192
+ openHome() {
193
+ if (!!this.vsCodeFlag) {
194
+ const msgObj = {
195
+ cmd: 'openUrl',
196
+ data: {
197
+ url: 'https://www.vform666.com/'
198
+ }
199
+ }
200
+ window.parent.postMessage(msgObj, '*')
201
+ }
202
+ },
203
+
204
+ openUrl(event, url) {
205
+ if (!!this.vsCodeFlag) {
206
+ const msgObj = {
207
+ cmd: 'openUrl',
208
+ data: {
209
+ url
210
+ }
211
+ }
212
+ window.parent.postMessage(msgObj, '*')
213
+ } else {
214
+ let aDom = event.currentTarget
215
+ aDom.href = url
216
+ //window.open(url, '_blank') //直接打开新窗口,会被浏览器拦截
217
+ }
218
+ },
219
+
220
+ loadCase() {
221
+ if (!this.caseName) {
222
+ return
223
+ }
224
+
225
+ axios.get(MOCK_CASE_URL + this.caseName + '.txt').then(res => {
226
+ if (!!res.data.code) {
227
+ this.$message.error(this.i18nt('designer.hint.sampleLoadedFail'))
228
+ return
229
+ }
230
+
231
+ this.setFormJson(res.data)
232
+ this.$message.success(this.i18nt('designer.hint.sampleLoadedSuccess'))
233
+ }).catch(error => {
234
+ this.$message.error(this.i18nt('designer.hint.sampleLoadedFail') + ':' + error)
235
+ })
236
+ },
237
+
238
+ initLocale() {
239
+ let curLocale = localStorage.getItem('v_form_locale')
240
+ if (!!this.vsCodeFlag) {
241
+ curLocale = curLocale || 'en-US'
242
+ } else {
243
+ curLocale = curLocale || 'zh-CN'
244
+ }
245
+ this.curLangName = this.i18nt('application.' + curLocale)
246
+ this.changeLanguage(curLocale)
247
+ },
248
+
249
+ loadFieldListFromServer() {
250
+ if (!this.fieldListApi) {
251
+ return
252
+ }
253
+
254
+ let headers = this.fieldListApi.headers || {}
255
+ axios.get(this.fieldListApi.URL, {'headers': headers}).then(res => {
256
+ let labelKey = this.fieldListApi.labelKey || 'label'
257
+ let nameKey = this.fieldListApi.nameKey || 'name'
258
+
259
+ this.fieldList.splice(0, this.fieldList.length) //清空已有
260
+ res.data.forEach(fieldItem => {
261
+ this.fieldList.push({
262
+ label: fieldItem[labelKey],
263
+ name: fieldItem[nameKey]
264
+ })
265
+ })
266
+ }).catch(error => {
267
+ this.$message.error(error)
268
+ })
269
+ },
270
+
271
+ handleLanguageChanged(command) {
272
+ this.changeLanguage(command)
273
+ this.curLangName = this.i18nt('application.' + command)
274
+ },
275
+
276
+ changeLanguage(langName) {
277
+ changeLocale(langName)
278
+ },
279
+
280
+ setFormJson(formJson) {
281
+ let modifiedFlag = false
282
+ if (!!formJson) {
283
+ if (typeof formJson === 'string') {
284
+ modifiedFlag = this.designer.loadFormJson( JSON.parse(formJson) )
285
+ } else if (formJson.constructor === Object) {
286
+ modifiedFlag = this.designer.loadFormJson(formJson)
287
+ }
288
+
289
+ if (modifiedFlag) {
290
+ this.designer.emitHistoryChange()
291
+ }
292
+ }
293
+ },
294
+
295
+ getFormJson() {
296
+ return {
297
+ widgetList: deepClone(this.designer.widgetList),
298
+ formConfig: deepClone(this.designer.formConfig)
299
+ }
300
+ },
301
+
302
+ clearDesigner() {
303
+ this.$refs.toolbarRef.clearFormWidget()
304
+ },
305
+
306
+
307
+ /**
308
+ * 刷新表单设计器
309
+ */
310
+ refreshDesigner() {
311
+ //this.designer.loadFormJson( this.getFormJson() ) //只有第一次调用生效??
312
+
313
+ let fJson = this.getFormJson()
314
+ this.designer.clearDesigner(true) //不触发历史记录变更
315
+ this.designer.loadFormJson(fJson)
316
+ },
317
+
318
+ /**
319
+ * 预览表单
320
+ */
321
+ previewForm() {
322
+ this.$refs.toolbarRef.previewForm()
323
+ },
324
+
325
+ /**
326
+ * 导入表单JSON
327
+ */
328
+ importJson() {
329
+ this.$refs.toolbarRef.importJson()
330
+ },
331
+
332
+ /**
333
+ * 导出表单JSON
334
+ */
335
+ exportJson() {
336
+ this.$refs.toolbarRef.exportJson()
337
+ },
338
+
339
+ /**
340
+ * 导出Vue/HTML代码
341
+ */
342
+ exportCode() {
343
+ this.$refs.toolbarRef.exportCode()
344
+ },
345
+
346
+ /**
347
+ * 生成SFC代码
348
+ */
349
+ generateSFC() {
350
+ this.$refs.toolbarRef.generateSFC()
351
+ },
352
+
353
+ /**
354
+ * 获取所有字段组件
355
+ * @returns {*[]}
356
+ */
357
+ getFieldWidgets(widgetList = null) {
358
+ return !!widgetList ? getAllFieldWidgets(widgetList) : getAllFieldWidgets(this.designer.widgetList)
359
+ },
360
+
361
+ /**
362
+ * 获取所有容器组件
363
+ * @returns {*[]}
364
+ */
365
+ getContainerWidgets(widgetList = null) {
366
+ return !!widgetList ? getAllContainerWidgets(widgetList) : getAllContainerWidgets(this.designer.widgetList)
367
+ },
368
+
369
+ /**
370
+ * 升级表单json,以补充最新的组件属性
371
+ * @param formJson
372
+ */
373
+ upgradeFormJson(formJson) {
374
+ if (!formJson.widgetList || !formJson.formConfig) {
375
+ this.$message.error('Invalid form json!')
376
+ return
377
+ }
378
+
379
+ traverseAllWidgets(formJson.widgetList, (w) => {
380
+ this.designer.upgradeWidgetConfig(w)
381
+ })
382
+ this.designer.upgradeFormConfig(formJson.formConfig)
383
+
384
+ return formJson
385
+ },
386
+
387
+ getWidgetRef(widgetName, showError = false) {
388
+ return this.$refs['formRef'].getWidgetRef(widgetName, showError)
389
+ },
390
+
391
+ getSelectedWidgetRef() {
392
+ return this.$refs['formRef'].getSelectedWidgetRef()
393
+ },
394
+
395
+ //TODO: 增加更多方法!!
396
+
397
+ }
398
+ }
399
+ </script>
400
+
401
+ <style lang="scss" scoped>
402
+ .el-container.main-container {
403
+ background: #fff;
404
+
405
+ ::v-deep aside { /* 防止aside样式被外部样式覆盖!! */
406
+ margin: 0;
407
+ padding: 0;
408
+ background: inherit;
409
+ }
410
+ }
411
+
412
+ .el-container.full-height {
413
+ height: 100%;
414
+ overflow-y: hidden;
415
+ }
416
+
417
+ .el-container.center-layout-container {
418
+ min-width: 680px;
419
+ border-left: 2px dotted #EBEEF5;
420
+ border-right: 2px dotted #EBEEF5;
421
+ }
422
+
423
+ .el-header.main-header {
424
+ border-bottom: 2px dotted #EBEEF5;
425
+ height: 48px !important;
426
+ line-height: 48px !important;
427
+ min-width: 800px;
428
+ }
429
+
430
+ div.main-title {
431
+ font-size: 18px;
432
+ color: #242424;
433
+ display: flex;
434
+ align-items: center;
435
+ justify-items: center;
436
+
437
+ img {
438
+ cursor: pointer;
439
+ width: 36px;
440
+ height: 36px;
441
+ }
442
+
443
+ span.bold {
444
+ font-size: 20px;
445
+ font-weight: bold;
446
+ margin: 0 6px 0 6px;
447
+ }
448
+
449
+ span.version-span {
450
+ font-size: 14px;
451
+ color: #101F1C;
452
+ margin-left: 6px;
453
+ }
454
+ }
455
+
456
+ .float-left {
457
+ float: left;
458
+ }
459
+
460
+ .float-right {
461
+ float: right;
462
+ }
463
+
464
+ .el-dropdown-link {
465
+ margin-right: 12px;
466
+ cursor: pointer;
467
+ }
468
+
469
+ div.external-link a {
470
+ font-size: 13px;
471
+ text-decoration: none;
472
+ margin-right: 10px;
473
+ color: #606266;
474
+ }
475
+
476
+ .el-header.toolbar-header {
477
+ font-size: 14px;
478
+ border-bottom: 1px dotted #CCCCCC;
479
+ height: 42px !important;
480
+ //line-height: 42px !important;
481
+ }
482
+
483
+ .el-aside.side-panel {
484
+ width: 260px !important;
485
+ overflow-y: hidden;
486
+ }
487
+
488
+ .el-main.form-widget-main {
489
+ padding: 0;
490
+
491
+ position: relative;
492
+ overflow-x: hidden;
493
+ }
494
+
495
+ .container-scroll-bar {
496
+ ::v-deep .el-scrollbar__wrap, ::v-deep .el-scrollbar__view {
497
+ overflow-x: hidden;
498
+ }
499
+ }
500
+ </style>
@@ -0,0 +1,28 @@
1
+ export default {
2
+ methods: {
3
+ initRefList() {
4
+ if ((this.refList !== null) && !!this.widget.options.name) {
5
+ this.refList[this.widget.options.name] = this
6
+ }
7
+ },
8
+
9
+ getWidgetRef(widgetName, showError = false) {
10
+ let foundRef = this.refList[widgetName]
11
+ if (!foundRef && !!showError) {
12
+ this.$message.error(this.i18nt('render.hint.refNotFound') + widgetName)
13
+ }
14
+ return foundRef
15
+ },
16
+
17
+ /* 该方法用于组件重名检查!! */
18
+ registerToRefList(oldRefName) {
19
+ if ((this.refList !== null) && !!this.widget.options.name) {
20
+ if (!!oldRefName) {
21
+ delete this.refList[oldRefName]
22
+ }
23
+ this.refList[this.widget.options.name] = this
24
+ }
25
+ },
26
+
27
+ }
28
+ }