amis-editor 4.1.0-beta.4 → 4.2.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. package/dist/component/Breadcrumb.d.ts +23 -2
  2. package/dist/component/ClassNameControl.d.ts +1 -1
  3. package/dist/component/Control/APIControl.d.ts +2 -2
  4. package/dist/component/Control/OptionControl.d.ts +3 -3
  5. package/dist/component/Control/PopoverEdit.d.ts +4 -4
  6. package/dist/component/Control/ValidationControl.d.ts +1 -1
  7. package/dist/component/Editor.d.ts +20 -1
  8. package/dist/component/IFramePreview.d.ts +2 -1
  9. package/dist/component/NodeWrapper.d.ts +1 -1
  10. package/dist/component/Panel/RenderersPanel.d.ts +1 -2
  11. package/dist/component/Preview.d.ts +3 -1
  12. package/dist/component/RegionWrapper.d.ts +4 -0
  13. package/dist/component/VRenderer.d.ts +4 -0
  14. package/dist/component/base/InputComponentName.d.ts +1 -1
  15. package/dist/component/base/SearchCustomRendererPanel.d.ts +15 -0
  16. package/dist/component/base/SearchPanel.d.ts +83 -0
  17. package/dist/component/base/SearchRendererPanel.d.ts +2 -42
  18. package/dist/env.d.ts +1 -1
  19. package/dist/exports.min.js +1 -1
  20. package/dist/index.d.ts +4 -1
  21. package/dist/index.min.js +1 -1
  22. package/dist/manager.d.ts +16 -4
  23. package/dist/plugin/Alert.d.ts +1 -1
  24. package/dist/plugin/Button.d.ts +1 -1
  25. package/dist/plugin/Card.d.ts +1 -0
  26. package/dist/plugin/Cards.d.ts +2 -1
  27. package/dist/plugin/Carousel.d.ts +1 -0
  28. package/dist/plugin/Chart.d.ts +1 -0
  29. package/dist/plugin/Collapse.d.ts +1 -0
  30. package/dist/plugin/Custom.d.ts +3 -0
  31. package/dist/plugin/CustomRegion.d.ts +40 -0
  32. package/dist/plugin/Dialog.d.ts +1 -1
  33. package/dist/plugin/Drawer.d.ts +1 -1
  34. package/dist/plugin/DropDownButton.d.ts +1 -1
  35. package/dist/plugin/Each.d.ts +1 -1
  36. package/dist/plugin/Flex.d.ts +1 -0
  37. package/dist/plugin/Form/Control.d.ts +1 -0
  38. package/dist/plugin/Form/Form.d.ts +19 -3
  39. package/dist/plugin/Form/Formula.d.ts +3 -3
  40. package/dist/plugin/Form/InputURL.d.ts +1 -0
  41. package/dist/plugin/Form/Switch.d.ts +2 -0
  42. package/dist/plugin/Grid.d.ts +1 -0
  43. package/dist/plugin/HBox.d.ts +1 -0
  44. package/dist/plugin/IFrame.d.ts +3 -3
  45. package/dist/plugin/Json.d.ts +1 -0
  46. package/dist/plugin/List.d.ts +2 -1
  47. package/dist/plugin/Mapping.d.ts +1 -0
  48. package/dist/plugin/Markdown.d.ts +1 -0
  49. package/dist/plugin/Nav.d.ts +1 -0
  50. package/dist/plugin/Page.d.ts +1 -1
  51. package/dist/plugin/Panel/Outline.d.ts +8 -0
  52. package/dist/plugin/Progress.d.ts +1 -0
  53. package/dist/plugin/QRCode.d.ts +1 -0
  54. package/dist/plugin/Reset.d.ts +0 -1
  55. package/dist/plugin/Service.d.ts +1 -0
  56. package/dist/plugin/Sparkline.d.ts +1 -0
  57. package/dist/plugin/Status.d.ts +1 -0
  58. package/dist/plugin/Steps.d.ts +1 -0
  59. package/dist/plugin/Submit.d.ts +0 -1
  60. package/dist/plugin/Table.d.ts +1 -1
  61. package/dist/plugin/TableView.d.ts +1 -0
  62. package/dist/plugin/Tasks.d.ts +1 -0
  63. package/dist/plugin/TooltipWrapper.d.ts +1 -0
  64. package/dist/plugin/Video.d.ts +1 -0
  65. package/dist/plugin/WebComponent.d.ts +1 -0
  66. package/dist/plugin/Wizard.d.ts +11 -2
  67. package/dist/plugin/Wrapper.d.ts +1 -0
  68. package/dist/plugin.d.ts +8 -7
  69. package/dist/store/editor.d.ts +47 -11
  70. package/dist/store/node.d.ts +6 -0
  71. package/dist/style.css +1 -1
  72. package/dist/util.d.ts +1 -1
  73. package/package.json +10 -3
  74. package/src/component/schemaTpl.tsx +2157 -0
  75. package/src/plugin/Alert.tsx +87 -0
  76. package/src/plugin/AnchorNav.tsx +233 -0
  77. package/src/plugin/Audio.tsx +154 -0
  78. package/src/plugin/Avatar.tsx +77 -0
  79. package/src/plugin/Breadcrumb.tsx +107 -0
  80. package/src/plugin/Button.tsx +281 -0
  81. package/src/plugin/ButtonGroup.tsx +85 -0
  82. package/src/plugin/ButtonToolbar.tsx +87 -0
  83. package/src/plugin/CRUD.tsx +1835 -0
  84. package/src/plugin/Card.tsx +290 -0
  85. package/src/plugin/Cards.tsx +318 -0
  86. package/src/plugin/Carousel.tsx +377 -0
  87. package/src/plugin/Chart.tsx +218 -0
  88. package/src/plugin/CodeView.tsx +60 -0
  89. package/src/plugin/Collapse.tsx +136 -0
  90. package/src/plugin/CollapseGroup.tsx +167 -0
  91. package/src/plugin/Container.tsx +40 -0
  92. package/src/plugin/Custom.tsx +128 -0
  93. package/src/plugin/CustomRegion.tsx +156 -0
  94. package/src/plugin/Date.tsx +74 -0
  95. package/src/plugin/Datetime.tsx +68 -0
  96. package/src/plugin/Dialog.tsx +176 -0
  97. package/src/plugin/Divider.tsx +36 -0
  98. package/src/plugin/Drawer.tsx +214 -0
  99. package/src/plugin/DropDownButton.tsx +235 -0
  100. package/src/plugin/Each.tsx +150 -0
  101. package/src/plugin/ErrorRenderer.tsx +15 -0
  102. package/src/plugin/Flex.tsx +151 -0
  103. package/src/plugin/Form/ButtonGroupSelect.tsx +75 -0
  104. package/src/plugin/Form/ButtonToolbar.tsx +110 -0
  105. package/src/plugin/Form/ChainedSelect.tsx +70 -0
  106. package/src/plugin/Form/Checkbox.tsx +87 -0
  107. package/src/plugin/Form/Checkboxes.tsx +167 -0
  108. package/src/plugin/Form/CodeEditor.tsx +81 -0
  109. package/src/plugin/Form/Combo.tsx +582 -0
  110. package/src/plugin/Form/ConditionBuilder.tsx +315 -0
  111. package/src/plugin/Form/Control.tsx +139 -0
  112. package/src/plugin/Form/DiffEditor.tsx +111 -0
  113. package/src/plugin/Form/FieldSet.tsx +163 -0
  114. package/src/plugin/Form/Form.tsx +687 -0
  115. package/src/plugin/Form/Formula.tsx +79 -0
  116. package/src/plugin/Form/Group.tsx +295 -0
  117. package/src/plugin/Form/Hidden.tsx +44 -0
  118. package/src/plugin/Form/InputArray.tsx +228 -0
  119. package/src/plugin/Form/InputCity.tsx +93 -0
  120. package/src/plugin/Form/InputColor.tsx +123 -0
  121. package/src/plugin/Form/InputDate.tsx +175 -0
  122. package/src/plugin/Form/InputDateRange.tsx +225 -0
  123. package/src/plugin/Form/InputDateTime.tsx +183 -0
  124. package/src/plugin/Form/InputDateTimeRange.tsx +221 -0
  125. package/src/plugin/Form/InputEmail.tsx +33 -0
  126. package/src/plugin/Form/InputExcel.tsx +85 -0
  127. package/src/plugin/Form/InputFile.tsx +221 -0
  128. package/src/plugin/Form/InputGroup.tsx +96 -0
  129. package/src/plugin/Form/InputImage.tsx +266 -0
  130. package/src/plugin/Form/InputKV.tsx +72 -0
  131. package/src/plugin/Form/InputMonth.tsx +35 -0
  132. package/src/plugin/Form/InputMonthRange.tsx +195 -0
  133. package/src/plugin/Form/InputNumber.tsx +89 -0
  134. package/src/plugin/Form/InputPassword.tsx +33 -0
  135. package/src/plugin/Form/InputQuarter.tsx +35 -0
  136. package/src/plugin/Form/InputQuarterRange.tsx +195 -0
  137. package/src/plugin/Form/InputRange.tsx +121 -0
  138. package/src/plugin/Form/InputRating.tsx +78 -0
  139. package/src/plugin/Form/InputRepeat.tsx +57 -0
  140. package/src/plugin/Form/InputRichText.tsx +186 -0
  141. package/src/plugin/Form/InputSubForm.tsx +189 -0
  142. package/src/plugin/Form/InputTable.tsx +434 -0
  143. package/src/plugin/Form/InputTag.tsx +70 -0
  144. package/src/plugin/Form/InputText.tsx +186 -0
  145. package/src/plugin/Form/InputTime.tsx +85 -0
  146. package/src/plugin/Form/InputTree.tsx +229 -0
  147. package/src/plugin/Form/InputURL.tsx +34 -0
  148. package/src/plugin/Form/InputYear.tsx +35 -0
  149. package/src/plugin/Form/Item.tsx +327 -0
  150. package/src/plugin/Form/ListSelect.tsx +73 -0
  151. package/src/plugin/Form/LocationPicker.tsx +62 -0
  152. package/src/plugin/Form/MatrixCheckboxes.tsx +136 -0
  153. package/src/plugin/Form/NestedSelect.tsx +211 -0
  154. package/src/plugin/Form/Picker.tsx +209 -0
  155. package/src/plugin/Form/Radios.tsx +119 -0
  156. package/src/plugin/Form/Select.tsx +233 -0
  157. package/src/plugin/Form/Static.tsx +322 -0
  158. package/src/plugin/Form/Switch.tsx +107 -0
  159. package/src/plugin/Form/TabsTransfer.tsx +259 -0
  160. package/src/plugin/Form/Textarea.tsx +83 -0
  161. package/src/plugin/Form/Transfer.tsx +368 -0
  162. package/src/plugin/Form/TreeSelect.tsx +263 -0
  163. package/src/plugin/Form/UUID.tsx +48 -0
  164. package/src/plugin/Grid.tsx +798 -0
  165. package/src/plugin/HBox.tsx +727 -0
  166. package/src/plugin/IFrame.tsx +70 -0
  167. package/src/plugin/Image.tsx +314 -0
  168. package/src/plugin/Images.tsx +231 -0
  169. package/src/plugin/Json.tsx +69 -0
  170. package/src/plugin/Link.tsx +93 -0
  171. package/src/plugin/List.tsx +278 -0
  172. package/src/plugin/ListItem.tsx +229 -0
  173. package/src/plugin/Log.tsx +52 -0
  174. package/src/plugin/Mapping.tsx +149 -0
  175. package/src/plugin/Markdown.tsx +47 -0
  176. package/src/plugin/Nav.tsx +184 -0
  177. package/src/plugin/Operation.tsx +95 -0
  178. package/src/plugin/Others/Action.tsx +426 -0
  179. package/src/plugin/Others/BasicToolbar.tsx +585 -0
  180. package/src/plugin/Others/DataDebug.tsx +134 -0
  181. package/src/plugin/Others/TableCell.tsx +480 -0
  182. package/src/plugin/Others/Unknown.tsx +37 -0
  183. package/src/plugin/Page.tsx +306 -0
  184. package/src/plugin/Panel/AvailableRenderers.tsx +41 -0
  185. package/src/plugin/Panel/Code.tsx +44 -0
  186. package/src/plugin/Panel/Name.tsx +26 -0
  187. package/src/plugin/Panel/Outline.tsx +40 -0
  188. package/src/plugin/Panel.tsx +243 -0
  189. package/src/plugin/Plain.tsx +84 -0
  190. package/src/plugin/Progress.tsx +125 -0
  191. package/src/plugin/Property.tsx +139 -0
  192. package/src/plugin/QRCode.tsx +96 -0
  193. package/src/plugin/Reset.tsx +23 -0
  194. package/src/plugin/Service.tsx +162 -0
  195. package/src/plugin/Sparkline.tsx +40 -0
  196. package/src/plugin/Status.tsx +76 -0
  197. package/src/plugin/Steps.tsx +128 -0
  198. package/src/plugin/Submit.tsx +23 -0
  199. package/src/plugin/Table.tsx +428 -0
  200. package/src/plugin/TableView.tsx +709 -0
  201. package/src/plugin/Tabs.tsx +362 -0
  202. package/src/plugin/Tasks.tsx +274 -0
  203. package/src/plugin/Time.tsx +68 -0
  204. package/src/plugin/TooltipWrapper.tsx +193 -0
  205. package/src/plugin/Tpl.tsx +158 -0
  206. package/src/plugin/Video.tsx +158 -0
  207. package/src/plugin/WebComponent.tsx +53 -0
  208. package/src/plugin/Wizard.tsx +740 -0
  209. package/src/plugin/Wrapper.tsx +107 -0
  210. package/src/plugin.ts +1050 -0
  211. package/dist/150a58f3318ca7541ed9.png +0 -0
  212. package/dist/471adb97c322b226e589.png +0 -0
  213. package/dist/4de5f42360bc5946c3c2.png +0 -0
  214. package/dist/4e9968bba3855f088fed.png +0 -0
  215. package/dist/7f09c38ebc687fea847a.png +0 -0
  216. package/dist/c94073576487510314ea.png +0 -0
@@ -0,0 +1,221 @@
1
+ import {
2
+ defaultValue,
3
+ getSchemaTpl,
4
+ valuePipeOut
5
+ } from '../../component/schemaTpl';
6
+ import {registerEditorPlugin} from '../../manager';
7
+ import {BasePlugin} from '../../plugin';
8
+
9
+ export class FileControlPlugin extends BasePlugin {
10
+ // 关联渲染器名字
11
+ rendererName = 'input-file';
12
+ $schema = '/schemas/FileControlSchema.json';
13
+
14
+ // 组件名称
15
+ name = '文件上传';
16
+ isBaseComponent = true;
17
+ icon = 'fa fa-upload';
18
+ description = `可上传多个文件,可配置是否自动上传以及大文件分片上传`;
19
+ docLink = '/amis/zh-CN/components/form/input-file';
20
+ tags = ['表单项'];
21
+ scaffold = {
22
+ type: 'input-file',
23
+ label: '文件上传',
24
+ name: 'file'
25
+ };
26
+ previewSchema: any = {
27
+ type: 'form',
28
+ className: 'text-left',
29
+ wrapWithPanel: false,
30
+ mode: 'horizontal',
31
+ body: [
32
+ {
33
+ ...this.scaffold
34
+ }
35
+ ]
36
+ };
37
+
38
+ panelTitle = '文件域';
39
+ panelBody = [
40
+ getSchemaTpl('tabs', [
41
+ {
42
+ title: '常规',
43
+ body: [
44
+ {
45
+ type: 'input-text',
46
+ name: 'btnLabel',
47
+ label: '上传按钮名称',
48
+ value: '请选择文件'
49
+ },
50
+
51
+ getSchemaTpl('api', {
52
+ label: '文件接收器',
53
+ name: 'receiver',
54
+ description:
55
+ '默认不填写将上传到 bos,可以在系统配置中设置为自己的 bos 地址。',
56
+ value: '/api/upload/file',
57
+ __isUpload: true
58
+ }),
59
+
60
+ getSchemaTpl('autoFill'),
61
+
62
+ {
63
+ type: 'fieldSet',
64
+ title: '分块上传相关',
65
+ collapsed: true,
66
+ collapsable: true,
67
+ className: 'fieldset',
68
+ body: [
69
+ {
70
+ type: 'button-group-select',
71
+ name: 'useChunk',
72
+ label: '启用分块',
73
+ size: 'xs',
74
+ pipeOut: valuePipeOut,
75
+ value: 'auto',
76
+ options: [
77
+ {
78
+ label: '自动',
79
+ value: 'auto'
80
+ },
81
+ {
82
+ label: '启用',
83
+ value: true
84
+ },
85
+ {
86
+ label: '关闭',
87
+ value: false
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ name: 'chunkSize',
93
+ type: 'input-number',
94
+ label: '分块大小',
95
+ visibleOn: 'data.useChunk != false',
96
+ value: 5 * 1024 * 1024
97
+ },
98
+ getSchemaTpl('api', {
99
+ name: 'startChunkApi',
100
+ label: 'startChunkApi',
101
+ value: '/api/upload/startChunk'
102
+ }),
103
+ getSchemaTpl('api', {
104
+ name: 'chunkApi',
105
+ label: 'chunkApi',
106
+ value: '/api/upload/chunk'
107
+ }),
108
+ getSchemaTpl('api', {
109
+ name: 'finishChunkApi',
110
+ label: 'finishChunkApi',
111
+ value: '/api/upload/finishChunk'
112
+ })
113
+ ]
114
+ },
115
+ {
116
+ type: 'input-text',
117
+ name: 'accept',
118
+ label: '文件类型',
119
+ value: '',
120
+ description:
121
+ '请填写文件的 <code>mime-types</code>,参考 <code>input[type=file]</code> 的 <code>accept</code> 说明'
122
+ },
123
+ getSchemaTpl('switchDefaultValue'),
124
+ {
125
+ type: 'input-text',
126
+ name: 'value',
127
+ label: '默认值',
128
+ visibleOn: 'typeof this.value !== "undefined"'
129
+ },
130
+ getSchemaTpl('multiple', {
131
+ pipeIn: defaultValue(false)
132
+ }),
133
+ getSchemaTpl('joinValues'),
134
+ getSchemaTpl('delimiter'),
135
+ getSchemaTpl('extractValue')
136
+ ]
137
+ },
138
+ {
139
+ title: '外观',
140
+ body: [
141
+ getSchemaTpl('className', {
142
+ name: 'btnClassName',
143
+ label: '按钮 CSS 类名',
144
+ pipeIn: defaultValue('btn-sm btn-info')
145
+ }),
146
+ getSchemaTpl('className', {
147
+ name: 'btnUploadClassName',
148
+ label: '上传按钮 CSS 类名',
149
+ pipeIn: defaultValue('btn-sm btn-success')
150
+ })
151
+ ]
152
+ },
153
+ {
154
+ title: '其他',
155
+ body: [
156
+ {
157
+ name: 'maxSize',
158
+ type: 'input-number',
159
+ label: '文件最大体积',
160
+ description: '超出大小不允许上传,单位字节'
161
+ },
162
+ {
163
+ name: 'maxLength',
164
+ type: 'input-number',
165
+ label: '文件最大数量',
166
+ description: '超出数量不允许上传',
167
+ visibleOn: 'data.multiple != false'
168
+ },
169
+ {
170
+ name: 'fileField',
171
+ type: 'input-text',
172
+ label: '文件域名称',
173
+ value: 'file'
174
+ },
175
+ {
176
+ name: 'asBase64',
177
+ type: 'switch',
178
+ mode: 'inline',
179
+ className: 'block',
180
+ label: '作为 Base64 提交',
181
+ hiddenOn: 'data.asBlob',
182
+ description:
183
+ '小文件时可以使用,默认给 Form 提交的是文件下载地址,设置后给 Form 提交文件内容的 base64 格式字符串。'
184
+ },
185
+ {
186
+ name: 'asBlob',
187
+ type: 'switch',
188
+ mode: 'inline',
189
+ className: 'block',
190
+ label: '作为二进制提交',
191
+ hiddenOn: 'data.asBase64',
192
+ description:
193
+ 'File 控件不接管文件上传,直接由表单的保存接口完成。和 Base64 选项二选一。'
194
+ },
195
+ {
196
+ name: 'autoUpload',
197
+ type: 'switch',
198
+ mode: 'inline',
199
+ className: 'block',
200
+ label: '是否自动上传',
201
+ value: true
202
+ },
203
+ {
204
+ name: 'hideUploadButton',
205
+ type: 'switch',
206
+ mode: 'inline',
207
+ className: 'block',
208
+ label: '是否隐藏上传按钮',
209
+ value: false
210
+ },
211
+ getSchemaTpl('fileUrl', {
212
+ name: 'templateUrl',
213
+ label: '模板地址'
214
+ })
215
+ ]
216
+ }
217
+ ])
218
+ ];
219
+ }
220
+
221
+ registerEditorPlugin(FileControlPlugin);
@@ -0,0 +1,96 @@
1
+ import React from 'react';
2
+ import {Button} from 'amis';
3
+ import {getSchemaTpl} from '../../component/schemaTpl';
4
+ import {registerEditorPlugin} from '../../manager';
5
+ import {BasePlugin} from '../../plugin';
6
+
7
+ export class InputGroupControlPlugin extends BasePlugin {
8
+ // 关联渲染器名字
9
+ rendererName = 'input-group';
10
+ $schema = '/schemas/InputGroupControlSchema.json';
11
+
12
+ // 组件名称
13
+ name = '输入组合';
14
+ isBaseComponent = true;
15
+ icon = 'fa fa-object-group';
16
+ description = `输入组合,支持多种类型的控件组合`;
17
+ docLink = '/amis/zh-CN/components/form/input-group';
18
+ tags = ['表单项'];
19
+ scaffold = {
20
+ type: 'input-group',
21
+ name: 'input-group',
22
+ label: 'input 组合',
23
+ body: [
24
+ {
25
+ type: 'input-text',
26
+ inputClassName: 'b-r-none p-r-none',
27
+ name: 'input-group'
28
+ },
29
+ {
30
+ type: 'submit',
31
+ label: '提交',
32
+ level: 'primary'
33
+ }
34
+ ]
35
+ };
36
+ previewSchema: any = {
37
+ type: 'form',
38
+ className: 'text-left',
39
+ mode: 'horizontal',
40
+ wrapWithPanel: false,
41
+ body: [
42
+ {
43
+ ...this.scaffold
44
+ }
45
+ ]
46
+ };
47
+
48
+ panelTitle = 'Input 组合';
49
+ panelBody = [
50
+ [
51
+ {
52
+ name: 'body',
53
+ type: 'combo',
54
+ // label: '子按钮',
55
+ multiple: true,
56
+ addable: false,
57
+ draggable: true,
58
+ draggableTip: '可排序、可移除、如要编辑请在预览区选中编辑',
59
+ editable: false,
60
+ visibleOn: 'this.body && this.body.length',
61
+ items: [
62
+ {
63
+ type: 'tpl',
64
+ inline: false,
65
+ className: 'p-t-xs',
66
+ tpl:
67
+ '<%= data.label %><% if (data.icon) { %><i class="<%= data.icon %>"/><% }%>'
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ children: (
73
+ <Button
74
+ className="m-b"
75
+ // TODO:需要限制一下 body 的类型,之前是这些 'text', 'url', 'email', 'password', 'select', 'date', 'time', 'date-time', 'date-range', 'formula', 'color', 'city', 'icon', 'plain', 'tpl', 'button', 'submit', 'reset'
76
+ onClick={() => {
77
+ // this.manager.showInsertPanel('body')
78
+ this.manager.showRendererPanel('表单项'); // '请从左侧组件面板中点击添加表单项'
79
+ }}
80
+ level="danger"
81
+ tooltip="插入一个新的元素"
82
+ size="sm"
83
+ block
84
+ >
85
+ 新增元素
86
+ </Button>
87
+ )
88
+ },
89
+ getSchemaTpl('formItemName', {
90
+ required: true
91
+ })
92
+ ]
93
+ ];
94
+ }
95
+
96
+ registerEditorPlugin(InputGroupControlPlugin);
@@ -0,0 +1,266 @@
1
+ import {getSchemaTpl, valuePipeOut} from '../../component/schemaTpl';
2
+ import {registerEditorPlugin} from '../../manager';
3
+ import {BasePlugin} from '../../plugin';
4
+
5
+ export class ImageControlPlugin extends BasePlugin {
6
+ // 关联渲染器名字
7
+ rendererName = 'input-image';
8
+ $schema = '/schemas/ImageControlSchema.json';
9
+
10
+ // 组件名称
11
+ name = '图片上传';
12
+ isBaseComponent = true;
13
+ description = `可以对图片实现裁剪,限制图片的宽高以及大小,支持自动上传及上传多张图片`;
14
+ docLink = '/amis/zh-CN/components/form/input-image';
15
+ tags = ['表单项'];
16
+ icon = 'fa fa-crop';
17
+ scaffold = {
18
+ type: 'input-image',
19
+ label: '图片上传',
20
+ name: 'image',
21
+ imageClassName: 'r w-full'
22
+ };
23
+ previewSchema: any = {
24
+ type: 'form',
25
+ className: 'text-left',
26
+ mode: 'horizontal',
27
+ wrapWithPanel: false,
28
+ body: [
29
+ {
30
+ ...this.scaffold
31
+ }
32
+ ]
33
+ };
34
+
35
+ panelTitle = '图片上传';
36
+ panelBody = [
37
+ getSchemaTpl('switchDefaultValue'),
38
+
39
+ {
40
+ type: 'input-text',
41
+ name: 'value',
42
+ label: '默认值',
43
+ visibleOn: 'typeof this.value !== "undefined"'
44
+ },
45
+
46
+ getSchemaTpl('multiple', {
47
+ value: false,
48
+ visibleOn: '!data.crop',
49
+ description: '开启后,不能同时开启裁剪功能'
50
+ }),
51
+ getSchemaTpl('joinValues'),
52
+ getSchemaTpl('delimiter'),
53
+ getSchemaTpl('extractValue'),
54
+ {
55
+ name: 'maxSize',
56
+ type: 'input-number',
57
+ label: '图片最大体积',
58
+ description: '超出大小不允许上传,单位字节'
59
+ },
60
+ {
61
+ name: 'maxLength',
62
+ type: 'input-number',
63
+ label: '图片最大数量',
64
+ visibleOn: 'data.multiple',
65
+ description: '超出数量不允许上传'
66
+ },
67
+ getSchemaTpl('api', {
68
+ label: '文件接收接口',
69
+ name: 'receiver',
70
+ description: '文件接收接口,默认不填则上传到 hiphoto',
71
+ value: '/api/upload',
72
+ __isUpload: true
73
+ }),
74
+
75
+ getSchemaTpl('autoFill'),
76
+
77
+ {
78
+ type: 'input-text',
79
+ value: '.jpeg, .jpg, .png, .gif',
80
+ name: 'accept',
81
+ label: '图片类型',
82
+ description:
83
+ '请填入图片的后缀或 <code>MimeType</code>,多个类型用<code>,</code>隔开'
84
+ },
85
+
86
+ {
87
+ type: 'input-text',
88
+ name: 'defaultImage',
89
+ label: '占位图片地址'
90
+ },
91
+
92
+ {
93
+ type: 'switch',
94
+ name: 'fixedSize',
95
+ value: false,
96
+ label: '是否开启固定尺寸',
97
+ mode: 'inline',
98
+ className: 'w-full'
99
+ },
100
+
101
+ {
102
+ type: 'switch',
103
+ name: 'hideUploadButton',
104
+ value: false,
105
+ label: '隐藏上传按钮',
106
+ mode: 'inline',
107
+ className: 'w-full'
108
+ },
109
+
110
+ {
111
+ type: 'switch',
112
+ name: 'autoUpload',
113
+ value: false,
114
+ label: '自动上传',
115
+ mode: 'inline',
116
+ className: 'w-full'
117
+ },
118
+
119
+ {
120
+ name: 'compress',
121
+ type: 'switch',
122
+ label: '开启压缩',
123
+ value: true,
124
+ mode: 'inline',
125
+ className: 'w-full',
126
+ description: '由 hiphoto 实现,自定义接口将无效'
127
+ },
128
+
129
+ {
130
+ type: 'combo',
131
+ name: 'compressOptions',
132
+ multiLine: true,
133
+ label: '压缩配置',
134
+ visibleOn: 'data.compress',
135
+ items: [
136
+ {
137
+ type: 'input-number',
138
+ label: '最大宽度',
139
+ name: 'maxWidth'
140
+ },
141
+
142
+ {
143
+ type: 'input-number',
144
+ label: '最大高度',
145
+ name: 'maxHeight'
146
+ }
147
+ ]
148
+ },
149
+
150
+ {
151
+ name: 'showCompressOptions',
152
+ type: 'switch',
153
+ label: '是否显示压缩选项',
154
+ mode: 'inline',
155
+ className: 'w-full'
156
+ },
157
+
158
+ {
159
+ name: 'crop',
160
+ type: 'switch',
161
+ label: '是否开启裁剪',
162
+ mode: 'inline',
163
+ visibleOn: '!data.multiple',
164
+ className: 'w-full',
165
+ description: '开启后,不能同时开启多选模式',
166
+ pipeIn: (value: any) => !!value
167
+ },
168
+
169
+ {
170
+ name: 'crop.aspectRatio',
171
+ type: 'input-text',
172
+ label: '裁剪比率',
173
+ visibleOn: 'data.crop',
174
+ pipeOut: valuePipeOut
175
+ },
176
+
177
+ {
178
+ name: 'crop.rotatable',
179
+ type: 'switch',
180
+ label: '裁剪时是否可旋转',
181
+ visibleOn: 'data.crop',
182
+ pipeOut: valuePipeOut
183
+ },
184
+
185
+ {
186
+ name: 'crop.scalable',
187
+ type: 'switch',
188
+ label: '裁剪时否可缩放',
189
+ visibleOn: 'data.crop',
190
+ pipeOut: valuePipeOut
191
+ },
192
+
193
+ {
194
+ name: 'crop.viewMode',
195
+ type: 'select',
196
+ label: '裁剪区域限制',
197
+ value: 1,
198
+ options: [
199
+ {label: '无限制', value: 0},
200
+ {label: '绘图区域', value: 1}
201
+ ],
202
+ visibleOn: 'data.crop',
203
+ pipeOut: valuePipeOut
204
+ },
205
+
206
+ {
207
+ type: 'fieldSet',
208
+ title: '图片限制',
209
+ collapsed: true,
210
+ collapsable: true,
211
+ className: 'fieldset',
212
+ body: [
213
+ {
214
+ type: 'input-number',
215
+ name: 'limit.width',
216
+ label: '限制宽度'
217
+ },
218
+
219
+ {
220
+ type: 'input-number',
221
+ name: 'limit.height',
222
+ label: '限制高度'
223
+ },
224
+
225
+ {
226
+ type: 'input-number',
227
+ name: 'limit.maxWidth',
228
+ label: '限制最大宽度'
229
+ },
230
+
231
+ {
232
+ type: 'input-number',
233
+ name: 'limit.maxHeight',
234
+ label: '限制最大高度'
235
+ },
236
+
237
+ {
238
+ type: 'input-number',
239
+ name: 'limit.minWidth',
240
+ label: '限制最小宽度'
241
+ },
242
+
243
+ {
244
+ type: 'input-number',
245
+ name: 'limit.minHeight',
246
+ label: '限制最小高度'
247
+ },
248
+
249
+ {
250
+ type: 'input-number',
251
+ name: 'limit.aspectRatio',
252
+ label: '限制宽高比率'
253
+ },
254
+
255
+ {
256
+ type: 'input-text',
257
+ name: 'limit.限制最小高度',
258
+ label: '宽高比描述',
259
+ description: '当宽高比没有满足条件时,此描述将作为提示信息显示'
260
+ }
261
+ ]
262
+ }
263
+ ];
264
+ }
265
+
266
+ registerEditorPlugin(ImageControlPlugin);
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @file input-kv 组件的素项目部
3
+ */
4
+ import {
5
+ defaultValue,
6
+ getSchemaTpl,
7
+ valuePipeOut
8
+ } from '../../component/schemaTpl';
9
+ import {registerEditorPlugin} from '../../manager';
10
+ import {
11
+ BasePlugin,
12
+ BasicSubRenderInfo,
13
+ RendererEventContext,
14
+ SubRendererInfo
15
+ } from '../../plugin';
16
+
17
+ export class KVControlPlugin extends BasePlugin {
18
+ // 关联渲染器名字
19
+ rendererName = 'input-kv';
20
+ $schema = '/schemas/KVControlSchema.json';
21
+
22
+ // 组件名称
23
+ name = 'KV 键值对';
24
+ isBaseComponent = true;
25
+ icon = 'fa fa-eyedropper';
26
+ description = '用于编辑键值对类型的数据';
27
+ docLink = '/amis/zh-CN/components/form/input-kv';
28
+ tags = ['表单项'];
29
+ scaffold = {
30
+ type: 'input-kv',
31
+ label: 'KV',
32
+ name: 'kv'
33
+ };
34
+ previewSchema: any = {
35
+ type: 'form',
36
+ className: 'text-left',
37
+ mode: 'horizontal',
38
+ wrapWithPanel: false,
39
+ body: [
40
+ {
41
+ ...this.scaffold
42
+ }
43
+ ]
44
+ };
45
+ panelTitle = 'KV 键值对';
46
+ panelBody = [
47
+ {
48
+ type: 'input-text',
49
+ name: 'valueType',
50
+ label: '值类型',
51
+ pipeIn: defaultValue('input-text')
52
+ },
53
+ {
54
+ type: 'input-text',
55
+ name: 'keyPlaceholder',
56
+ label: 'key 的提示信息'
57
+ },
58
+ {
59
+ type: 'input-text',
60
+ name: 'valuePlaceholder',
61
+ label: 'value 的提示信息'
62
+ },
63
+ {
64
+ type: 'switch',
65
+ name: 'draggable',
66
+ label: '是否可排序',
67
+ pipeIn: defaultValue(true)
68
+ }
69
+ ];
70
+ }
71
+
72
+ registerEditorPlugin(KVControlPlugin);
@@ -0,0 +1,35 @@
1
+ import {registerEditorPlugin} from '../../manager';
2
+
3
+ import {DateControlPlugin} from './InputDate';
4
+
5
+ export class MonthControlPlugin extends DateControlPlugin {
6
+ // 关联渲染器名字
7
+ rendererName = 'input-month';
8
+ $schema = '/schemas/MonthControlSchema.json';
9
+
10
+ // 组件名称
11
+ name = 'Month';
12
+ isBaseComponent = true;
13
+ icon = 'fa fa-calendar';
14
+ description = `月份选择`;
15
+ docLink = '/amis/zh-CN/components/form/input-month';
16
+ tags = ['表单项'];
17
+ // @ts-ignore
18
+ scaffold = {
19
+ type: 'input-month',
20
+ name: 'month'
21
+ };
22
+ previewSchema: any = {
23
+ type: 'form',
24
+ wrapWithPanel: false,
25
+ body: [
26
+ {
27
+ ...this.scaffold
28
+ }
29
+ ]
30
+ };
31
+
32
+ panelTitle = 'Month';
33
+ }
34
+
35
+ registerEditorPlugin(MonthControlPlugin);