amis 1.4.2-beta.11 → 1.4.2-beta.16

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 (200) hide show
  1. package/lib/Schema.d.ts +4 -3
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/AssociatedSelection.js +2 -2
  4. package/lib/components/AssociatedSelection.js.map +2 -2
  5. package/lib/components/Checkbox.d.ts +20 -20
  6. package/lib/components/Collapse.d.ts +51 -23
  7. package/lib/components/Collapse.js +69 -11
  8. package/lib/components/Collapse.js.map +2 -2
  9. package/lib/components/CollapseGroup.d.ts +88 -0
  10. package/lib/components/CollapseGroup.js +81 -0
  11. package/lib/components/CollapseGroup.js.map +13 -0
  12. package/lib/components/Editor.d.ts +84 -84
  13. package/lib/components/GridNav.d.ts +52 -0
  14. package/lib/components/GridNav.js +123 -0
  15. package/lib/components/GridNav.js.map +13 -0
  16. package/lib/components/InputBox.d.ts +22 -21
  17. package/lib/components/InputBox.js +10 -2
  18. package/lib/components/InputBox.js.map +2 -2
  19. package/lib/components/ListGroup.d.ts +21 -21
  20. package/lib/components/PickerColumn.js +3 -3
  21. package/lib/components/PickerColumn.js.map +2 -2
  22. package/lib/components/ResultBox.d.ts +84 -84
  23. package/lib/components/ResultBox.js +10 -2
  24. package/lib/components/ResultBox.js.map +2 -2
  25. package/lib/components/Select.js +1 -1
  26. package/lib/components/Select.js.map +2 -2
  27. package/lib/components/Selection.js +1 -1
  28. package/lib/components/Selection.js.map +2 -2
  29. package/lib/components/Tabs.d.ts +20 -20
  30. package/lib/components/TabsTransfer.d.ts +84 -84
  31. package/lib/components/Toast.d.ts +86 -85
  32. package/lib/components/Toast.js +6 -3
  33. package/lib/components/Toast.js.map +2 -2
  34. package/lib/components/Transfer.d.ts +84 -84
  35. package/lib/components/TransferDropDown.d.ts +85 -84
  36. package/lib/components/TransferDropDown.js +2 -2
  37. package/lib/components/TransferDropDown.js.map +2 -2
  38. package/lib/components/TransferPicker.d.ts +4 -0
  39. package/lib/components/TransferPicker.js +2 -2
  40. package/lib/components/TransferPicker.js.map +2 -2
  41. package/lib/components/Tree.d.ts +115 -84
  42. package/lib/components/Tree.js +183 -30
  43. package/lib/components/Tree.js.map +2 -2
  44. package/lib/components/icons.js +2 -0
  45. package/lib/components/icons.js.map +2 -2
  46. package/lib/envOverwrite.d.ts +1 -1
  47. package/lib/envOverwrite.js +24 -9
  48. package/lib/envOverwrite.js.map +2 -2
  49. package/lib/factory.d.ts +11 -1
  50. package/lib/factory.js +31 -4
  51. package/lib/factory.js.map +2 -2
  52. package/lib/icons/download.js +7 -0
  53. package/lib/icons/drag-bar.js +10 -3
  54. package/lib/index.d.ts +2 -0
  55. package/lib/index.js +3 -1
  56. package/lib/index.js.map +2 -2
  57. package/lib/locale/en-US.js +1 -0
  58. package/lib/locale/en-US.js.map +2 -2
  59. package/lib/locale/zh-CN.js +1 -0
  60. package/lib/locale/zh-CN.js.map +2 -2
  61. package/lib/renderers/Collapse.d.ts +25 -20
  62. package/lib/renderers/Collapse.js +10 -73
  63. package/lib/renderers/Collapse.js.map +2 -2
  64. package/lib/renderers/CollapseGroup.d.ts +42 -0
  65. package/lib/renderers/CollapseGroup.js +33 -0
  66. package/lib/renderers/CollapseGroup.js.map +13 -0
  67. package/lib/renderers/Form/InputCity.d.ts +84 -84
  68. package/lib/renderers/Form/InputFile.d.ts +6 -0
  69. package/lib/renderers/Form/InputFile.js +18 -4
  70. package/lib/renderers/Form/InputFile.js.map +2 -2
  71. package/lib/renderers/Form/Item.js +2 -1
  72. package/lib/renderers/Form/Item.js.map +2 -2
  73. package/lib/renderers/Form/Select.d.ts +1 -0
  74. package/lib/renderers/Form/Select.js +16 -2
  75. package/lib/renderers/Form/Select.js.map +2 -2
  76. package/lib/renderers/Form/Transfer.js +15 -1
  77. package/lib/renderers/Form/Transfer.js.map +2 -2
  78. package/lib/renderers/Form/TransferPicker.d.ts +4 -0
  79. package/lib/renderers/Form/TransferPicker.js +17 -3
  80. package/lib/renderers/Form/TransferPicker.js.map +2 -2
  81. package/lib/renderers/Form/index.d.ts +5 -0
  82. package/lib/renderers/Form/index.js +4 -2
  83. package/lib/renderers/Form/index.js.map +2 -2
  84. package/lib/renderers/GridNav.d.ts +99 -0
  85. package/lib/renderers/GridNav.js +82 -0
  86. package/lib/renderers/GridNav.js.map +13 -0
  87. package/lib/renderers/Table/index.js +1 -1
  88. package/lib/renderers/Table/index.js.map +2 -2
  89. package/lib/store/formItem.js +44 -4
  90. package/lib/store/formItem.js.map +2 -2
  91. package/lib/store/table.d.ts +1 -0
  92. package/lib/store/table.js +35 -12
  93. package/lib/store/table.js.map +2 -2
  94. package/lib/themes/ang-ie11.css +272 -31
  95. package/lib/themes/ang.css +272 -31
  96. package/lib/themes/ang.css.map +1 -1
  97. package/lib/themes/antd-ie11.css +272 -31
  98. package/lib/themes/antd.css +272 -31
  99. package/lib/themes/antd.css.map +1 -1
  100. package/lib/themes/cxd-ie11.css +279 -38
  101. package/lib/themes/cxd.css +279 -38
  102. package/lib/themes/cxd.css.map +1 -1
  103. package/lib/themes/dark-ie11.css +272 -31
  104. package/lib/themes/dark.css +272 -31
  105. package/lib/themes/dark.css.map +1 -1
  106. package/lib/themes/default.css +279 -38
  107. package/lib/themes/default.css.map +1 -1
  108. package/lib/types.d.ts +1 -1
  109. package/lib/types.js.map +1 -1
  110. package/lib/utils/api.d.ts +1 -0
  111. package/lib/utils/api.js +77 -6
  112. package/lib/utils/api.js.map +2 -2
  113. package/lib/utils/helper.d.ts +6 -0
  114. package/lib/utils/helper.js +18 -1
  115. package/lib/utils/helper.js.map +2 -2
  116. package/package.json +1 -1
  117. package/schema.json +297 -55
  118. package/scss/base/_common.scss +3 -0
  119. package/scss/components/_anchor-nav.scss +1 -0
  120. package/scss/components/_collapse-group.scss +11 -0
  121. package/scss/components/_collapse.scss +33 -22
  122. package/scss/components/_grid-nav.scss +128 -0
  123. package/scss/components/_input-box.scss +1 -0
  124. package/scss/components/_nav.scss +1 -1
  125. package/scss/components/_picker-columns.scss +1 -0
  126. package/scss/components/_popover.scss +0 -4
  127. package/scss/components/_result-box.scss +1 -0
  128. package/scss/components/_spinner.scss +5 -4
  129. package/scss/components/_table.scss +6 -0
  130. package/scss/components/form/_combo.scss +4 -0
  131. package/scss/components/form/_file.scss +11 -0
  132. package/scss/components/form/_form.scss +48 -0
  133. package/scss/components/form/_tree.scss +42 -0
  134. package/scss/themes/_common.scss +3 -0
  135. package/scss/themes/_cxd-variables.scss +6 -7
  136. package/scss/themes/cxd.scss +1 -0
  137. package/sdk/ang-ie11.css +317 -32
  138. package/sdk/ang.css +312 -31
  139. package/sdk/antd-ie11.css +317 -32
  140. package/sdk/antd.css +312 -31
  141. package/sdk/charts.js +13 -13
  142. package/sdk/color-picker.js +65 -65
  143. package/sdk/cropperjs.js +2 -2
  144. package/sdk/cxd-ie11.css +323 -36
  145. package/sdk/cxd.css +319 -38
  146. package/sdk/dark-ie11.css +317 -32
  147. package/sdk/dark.css +312 -31
  148. package/sdk/exceljs.js +1 -1
  149. package/sdk/iconfont.svg +2513 -0
  150. package/sdk/iconfont.ttf +0 -0
  151. package/sdk/iconfont.woff +0 -0
  152. package/sdk/markdown.js +69 -69
  153. package/sdk/papaparse.js +1 -1
  154. package/sdk/renderers/Form/CityDB.js +1 -1
  155. package/sdk/rest.js +18 -18
  156. package/sdk/rich-text.js +62 -62
  157. package/sdk/sdk-ie11.css +323 -36
  158. package/sdk/sdk.css +319 -38
  159. package/sdk/sdk.js +1247 -1211
  160. package/sdk/thirds/hls.js/hls.js +1 -1
  161. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  162. package/sdk/tinymce.js +57 -57
  163. package/src/Schema.ts +5 -1
  164. package/src/components/AssociatedSelection.tsx +3 -1
  165. package/src/components/Collapse.tsx +144 -20
  166. package/src/components/CollapseGroup.tsx +130 -0
  167. package/src/components/GridNav.tsx +233 -0
  168. package/src/components/InputBox.tsx +10 -9
  169. package/src/components/PickerColumn.tsx +1 -1
  170. package/src/components/ResultBox.tsx +9 -9
  171. package/src/components/Select.tsx +1 -1
  172. package/src/components/Selection.tsx +1 -1
  173. package/src/components/Toast.tsx +23 -16
  174. package/src/components/TransferDropDown.tsx +4 -1
  175. package/src/components/TransferPicker.tsx +7 -0
  176. package/src/components/Tree.tsx +194 -8
  177. package/src/components/icons.tsx +2 -0
  178. package/src/envOverwrite.ts +20 -7
  179. package/src/factory.tsx +52 -6
  180. package/src/icons/download.svg +4 -0
  181. package/src/icons/drag-bar.svg +12 -6
  182. package/src/index.tsx +2 -0
  183. package/src/locale/en-US.ts +1 -0
  184. package/src/locale/zh-CN.ts +1 -0
  185. package/src/renderers/Collapse.tsx +70 -117
  186. package/src/renderers/CollapseGroup.tsx +80 -0
  187. package/src/renderers/Form/InputFile.tsx +36 -4
  188. package/src/renderers/Form/Item.tsx +2 -1
  189. package/src/renderers/Form/Select.tsx +22 -4
  190. package/src/renderers/Form/Transfer.tsx +16 -2
  191. package/src/renderers/Form/TransferPicker.tsx +25 -3
  192. package/src/renderers/Form/index.tsx +14 -1
  193. package/src/renderers/GridNav.tsx +204 -0
  194. package/src/renderers/Table/index.tsx +1 -2
  195. package/src/store/formItem.ts +94 -2
  196. package/src/store/table.ts +55 -14
  197. package/src/types.ts +1 -1
  198. package/src/utils/api.ts +93 -6
  199. package/src/utils/helper.ts +19 -0
  200. package/tsconfig-for-declaration.json +1 -1
@@ -1,7 +1,13 @@
1
- <svg viewBox="0 0 428 684" version="1.1"
2
- xmlns="http://www.w3.org/2000/svg"
3
- xmlns:xlink="http://www.w3.org/1999/xlink">
4
- <g id="drag-bar" fill="currentColor" fill-rule="nonzero">
5
- <path d="M171.333333,86 C171.333333,133.128298 133.128298,171.333333 86,171.333333 C38.8717015,171.333333 0.666667,133.128298 0.666667,86 C0.666667,38.8717015 38.8717015,0.666667 86,0.666667 C133.128298,0.666667 171.333333,38.8717015 171.333333,86 L171.333333,86 Z M86,256.666667 C38.8717015,256.666667 0.666667,294.871702 0.666667,342 C0.666667,389.128298 38.8717015,427.333333 86,427.333333 C133.128298,427.333333 171.333333,389.128298 171.333333,342 C171.333333,294.871702 133.128298,256.666667 86,256.666667 L86,256.666667 Z M86,512.666667 C38.8717015,512.666667 0.666667,550.871702 0.666667,598 C0.666667,645.128298 38.8717015,683.333333 86,683.333333 C133.128298,683.333333 171.333333,645.128298 171.333333,598 C171.333333,550.871702 133.128298,512.666667 86,512.666667 L86,512.666667 Z M342,171.333333 C389.128298,171.333333 427.333333,133.128298 427.333333,86 C427.333333,38.8717015 389.128298,0.666667 342,0.666667 C294.871702,0.666667 256.666667,38.8717015 256.666667,86 C256.666667,133.128298 294.871702,171.333333 342,171.333333 L342,171.333333 Z M342,256.666667 C294.871702,256.666667 256.666667,294.871702 256.666667,342 C256.666667,389.128298 294.871702,427.333333 342,427.333333 C389.128298,427.333333 427.333333,389.128298 427.333333,342 C427.333333,294.871702 389.128298,256.666667 342,256.666667 L342,256.666667 Z M342,512.666667 C294.871702,512.666667 256.666667,550.871702 256.666667,598 C256.666667,645.128298 294.871702,683.333333 342,683.333333 C389.128298,683.333333 427.333333,645.128298 427.333333,598 C427.333333,575.368193 418.342883,553.663326 402.339778,537.660222 C386.336674,521.657117 364.631807,512.666667 342,512.666667 L342,512.666667 Z" id="形状"></path>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <g transform="translate(5.000000, 1.000000)" stroke-width="1" stroke="currentColor">
4
+ <circle cx="1" cy="1" r="1"></circle>
5
+ <circle cx="5" cy="1" r="1"></circle>
6
+ <circle cx="1" cy="5" r="1"></circle>
7
+ <circle cx="5" cy="5" r="1"></circle>
8
+ <circle cx="1" cy="9" r="1"></circle>
9
+ <circle cx="5" cy="9" r="1"></circle>
10
+ <circle cx="1" cy="13" r="1"></circle>
11
+ <circle cx="5" cy="13" r="1"></circle>
6
12
  </g>
7
- </svg>
13
+ </svg>
package/src/index.tsx CHANGED
@@ -56,6 +56,7 @@ import './renderers/Form/ButtonToolbar';
56
56
  import './renderers/Breadcrumb';
57
57
  import './renderers/DropDownButton';
58
58
  import './renderers/Collapse';
59
+ import './renderers/CollapseGroup';
59
60
  import './renderers/Color';
60
61
  import './renderers/CRUD';
61
62
  import './renderers/Pagination';
@@ -167,6 +168,7 @@ import './renderers/Markdown';
167
168
  import './renderers/TableView';
168
169
  import './renderers/Code';
169
170
  import './renderers/WebComponent';
171
+ import './renderers/GridNav';
170
172
 
171
173
  import Scoped, {ScopedContext} from './Scoped';
172
174
 
@@ -85,6 +85,7 @@ register('en-US', {
85
85
  'Excel.placeholder': `Drag 'n' drop excel here, or click to select`,
86
86
  'fetchFailed': 'Fetch api failed',
87
87
  'File.continueAdd': 'Continue add',
88
+ 'File.downloadTpl': 'Download template',
88
89
  'File.dragDrop': `Drag 'n' drop some files here`,
89
90
  'File.errorRetry': 'File upload failed, please try again',
90
91
  'File.failed': 'Failed files.',
@@ -87,6 +87,7 @@ register('zh-CN', {
87
87
  'Excel.placeholder': '拖拽 Excel 到这,或点击上传',
88
88
  'fetchFailed': '初始化失败',
89
89
  'File.continueAdd': '继续添加',
90
+ 'File.downloadTpl': '下载模板',
90
91
  'File.dragDrop': '将文件拖拽到此处',
91
92
  'File.errorRetry': '文件上传失败请重试',
92
93
  'File.failed': '失败文件',
@@ -3,11 +3,10 @@ import {Renderer, RendererProps} from '../factory';
3
3
  import {Collapse as BasicCollapse} from '../components/Collapse';
4
4
  import {
5
5
  BaseSchema,
6
- SchemaClassName,
7
6
  SchemaCollection,
8
- SchemaTpl
7
+ SchemaTpl,
8
+ SchemaObject
9
9
  } from '../Schema';
10
- import {isClickOnInput} from '../utils/helper';
11
10
 
12
11
  /**
13
12
  * Collapse 折叠渲染器,格式说明。
@@ -19,10 +18,20 @@ export interface CollapseSchema extends BaseSchema {
19
18
  */
20
19
  type: 'collapse';
21
20
 
21
+ /**
22
+ * 标识
23
+ */
24
+ key?: string;
25
+
22
26
  /**
23
27
  * 标题展示位置
24
28
  */
25
- titlePosition: 'top' | 'bottom';
29
+ headerPosition?: 'top' | 'bottom';
30
+
31
+ /**
32
+ * 标题
33
+ */
34
+ header?: string | SchemaCollection;
26
35
 
27
36
  /**
28
37
  * 内容区域
@@ -32,7 +41,12 @@ export interface CollapseSchema extends BaseSchema {
32
41
  /**
33
42
  * 配置 Body 容器 className
34
43
  */
35
- bodyClassName?: SchemaClassName;
44
+ bodyClassName?: string;
45
+
46
+ /**
47
+ * 是否禁用
48
+ */
49
+ disabled?: boolean;
36
50
 
37
51
  /**
38
52
  * 是否可折叠
@@ -45,19 +59,24 @@ export interface CollapseSchema extends BaseSchema {
45
59
  collapsed?: boolean;
46
60
 
47
61
  /**
48
- * 标题 CSS 类名
62
+ * 图标是否展示
49
63
  */
50
- headingClassName?: string;
64
+ showArrow?: boolean;
65
+
66
+ /**
67
+ * 自定义切换图标
68
+ */
69
+ expandIcon?: SchemaObject;
51
70
 
52
71
  /**
53
- * 标题
72
+ * 标题 CSS 类名
54
73
  */
55
- title?: SchemaTpl;
74
+ headingClassName?: string;
56
75
 
57
76
  /**
58
77
  * 收起的标题
59
78
  */
60
- collapseTitle?: SchemaTpl;
79
+ collapseHeader?: SchemaTpl;
61
80
 
62
81
  /**
63
82
  * 控件大小
@@ -85,143 +104,77 @@ export interface CollapseProps
85
104
  children?: JSX.Element | ((props?: any) => JSX.Element);
86
105
  }
87
106
 
88
- export interface CollapseState {
89
- collapsed: boolean;
90
- }
91
-
92
107
  export default class Collapse extends React.Component<
93
108
  CollapseProps,
94
- CollapseState
109
+ {}
95
110
  > {
96
- static propsList: Array<string> = [
97
- 'wrapperComponent',
98
- 'headingComponent',
99
- 'bodyClassName',
100
- 'collapsed',
101
- 'headingClassName',
102
- 'title',
103
- 'mountOnEnter',
104
- 'unmountOnExit'
105
- ];
106
-
107
- static defaultProps: Partial<CollapseProps> = {
108
- titlePosition: 'top',
109
- wrapperComponent: 'div',
110
- headingComponent: 'h4',
111
- className: '',
112
- headingClassName: '',
113
- bodyClassName: '',
114
- collapsable: true
115
- };
116
-
117
- state = {
118
- collapsed: false
119
- };
120
-
121
- constructor(props: CollapseProps) {
122
- super(props);
123
-
124
- this.toggleCollapsed = this.toggleCollapsed.bind(this);
125
- this.state.collapsed = !!props.collapsed;
126
- }
127
-
128
- componentDidUpdate(prevProps: CollapseProps) {
129
- const props = this.props;
130
-
131
- if (prevProps.collapsed !== props.collapsed) {
132
- this.setState({
133
- collapsed: !!props.collapsed
134
- });
135
- }
136
- }
137
-
138
- toggleCollapsed(e: React.MouseEvent<HTMLElement>) {
139
- if (isClickOnInput(e)) {
140
- return;
141
- }
142
- this.props.collapsable !== false &&
143
- this.setState({
144
- collapsed: !this.state.collapsed
145
- });
146
- }
147
111
 
148
112
  render() {
149
113
  const {
114
+ key,
115
+ id,
150
116
  classPrefix: ns,
151
117
  classnames: cx,
152
118
  size,
153
- wrapperComponent: WrapperComponent,
154
- headingComponent: HeadingComponent,
119
+ wrapperComponent,
120
+ headingComponent,
155
121
  className,
156
122
  headingClassName,
157
123
  children,
158
124
  titlePosition,
125
+ headerPosition,
159
126
  title,
160
127
  collapseTitle,
128
+ collapseHeader,
129
+ header,
161
130
  body,
162
131
  bodyClassName,
163
132
  render,
164
133
  collapsable,
165
134
  translate: __,
166
135
  mountOnEnter,
167
- unmountOnExit
136
+ unmountOnExit,
137
+ showArrow,
138
+ expandIcon,
139
+ disabled,
140
+ collapsed,
141
+ propsUpdate,
142
+ onCollapse
168
143
  } = this.props;
169
- // 默认给个 title,不然没法点
170
- const finalTitle = this.state.collapsed ? title : collapseTitle || title;
171
-
172
- let dom = [
173
- finalTitle ? (
174
- <HeadingComponent
175
- key="title"
176
- onClick={this.toggleCollapsed}
177
- className={cx(`Collapse-header`, headingClassName)}
178
- >
179
- <div className={cx('Collapse-header-wrapper')}>
180
- {render('heading', finalTitle, {className: 'Collapse-header-tpl'})}
181
- {collapsable && <span className={cx('Collapse-arrow')} />}
182
- </div>
183
- </HeadingComponent>
184
- ) : null,
185
144
 
145
+ return (
186
146
  <BasicCollapse
187
- show={collapsable ? !this.state.collapsed : true}
147
+ key={key}
148
+ id={id}
188
149
  classnames={cx}
189
150
  classPrefix={ns}
190
- key="body"
191
151
  mountOnEnter={mountOnEnter}
192
152
  unmountOnExit={unmountOnExit}
153
+ size={size}
154
+ wrapperComponent={wrapperComponent}
155
+ headingComponent={headingComponent}
156
+ className={className}
157
+ headingClassName={headingClassName}
158
+ bodyClassName={bodyClassName}
159
+ headerPosition={titlePosition || headerPosition}
160
+ collapsable={collapsable}
161
+ collapsed={collapsed}
162
+ showArrow={showArrow}
163
+ disabled={disabled}
164
+ propsUpdate={propsUpdate}
165
+ expandIcon={expandIcon ? render('arrow-icon', expandIcon || '', {className: cx('Collapse-icon-tranform')}) : null}
166
+ collapseHeader={collapseTitle || collapseHeader ? render('heading', collapseTitle || collapseHeader) : null}
167
+ header={render('heading', title || header || '')}
168
+ body={children
169
+ ? typeof children === 'function'
170
+ ? children(this.props)
171
+ : children
172
+ : body
173
+ ? render('body', body)
174
+ : null}
175
+ onCollapse={onCollapse}
193
176
  >
194
- <div className={cx(`Collapse-body`, bodyClassName)}>
195
- {children
196
- ? typeof children === 'function'
197
- ? children(this.props)
198
- : children
199
- : body
200
- ? render('body', body)
201
- : null}
202
- </div>
203
177
  </BasicCollapse>
204
- ];
205
-
206
- if (titlePosition === 'bottom') {
207
- dom.reverse();
208
- }
209
-
210
- return (
211
- <WrapperComponent
212
- className={cx(
213
- `Collapse`,
214
- {
215
- 'is-collapsed': this.state.collapsed,
216
- [`Collapse--${size}`]: size,
217
- 'Collapse--collapsable': collapsable,
218
- 'Collapse--title-bottom': titlePosition === 'bottom'
219
- },
220
- className
221
- )}
222
- >
223
- {dom}
224
- </WrapperComponent>
225
178
  );
226
179
  }
227
180
  }
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import {Renderer, RendererProps} from '../factory';
3
+ import {BaseSchema, SchemaCollection, SchemaObject} from '../Schema';
4
+ import CollapseGroup from '../components/CollapseGroup';
5
+
6
+ /**
7
+ * CollapseGroup 折叠渲染器,格式说明。
8
+ * 文档:https://baidu.gitee.io/amis/docs/components/collapse
9
+ */
10
+ export interface CollapseGroupSchema extends BaseSchema {
11
+ /**
12
+ * 指定为折叠器类型
13
+ */
14
+ type: 'collapse-group';
15
+
16
+ /**
17
+ * 激活面板
18
+ */
19
+ activeKey?: Array<string | number | never> | string | number;
20
+
21
+ /**
22
+ * 手风琴模式
23
+ */
24
+ accordion?: boolean;
25
+
26
+ /**
27
+ * 自定义切换图标
28
+ */
29
+ expandIcon?: SchemaObject;
30
+
31
+ /**
32
+ * 设置图标位置
33
+ */
34
+ expandIconPosition?: 'left' | 'right';
35
+
36
+ /**
37
+ * 内容区域
38
+ */
39
+ body?: SchemaCollection;
40
+ }
41
+ export interface CollapseGroupProps
42
+ extends RendererProps,
43
+ Omit<CollapseGroupSchema, 'type' | 'className'> {
44
+
45
+ children?: JSX.Element | ((props?: any) => JSX.Element);
46
+ }
47
+
48
+ export class CollapseGroupRender extends React.Component<CollapseGroupProps, {}> {
49
+ constructor(props: CollapseGroupProps) {
50
+ super(props);
51
+ }
52
+ render() {
53
+ const {
54
+ defaultActiveKey,
55
+ accordion,
56
+ expandIcon,
57
+ expandIconPosition,
58
+ body,
59
+ className,
60
+ render
61
+ } = this.props;
62
+ return (
63
+ <CollapseGroup
64
+ defaultActiveKey={defaultActiveKey}
65
+ accordion={accordion}
66
+ expandIcon={expandIcon}
67
+ expandIconPosition={expandIconPosition}
68
+ className={className}
69
+ >
70
+ {render('body', body || '')}
71
+ </CollapseGroup>
72
+ )
73
+ }
74
+ }
75
+
76
+
77
+ @Renderer({
78
+ type: 'collapse-group'
79
+ })
80
+ export class CollapseGroupRenderer extends CollapseGroupRender {}
@@ -18,7 +18,8 @@ import {dataMapping} from '../../utils/tpl-builtin';
18
18
  import {
19
19
  SchemaApi,
20
20
  SchemaClassName,
21
- SchemaTokenizeableString
21
+ SchemaTokenizeableString,
22
+ SchemaUrlPath
22
23
  } from '../../Schema';
23
24
  import merge from 'lodash/merge';
24
25
 
@@ -89,6 +90,11 @@ export interface FileControlSchema extends FormBaseControl {
89
90
  */
90
91
  downloadUrl?: SchemaApi;
91
92
 
93
+ /**
94
+ * 模板下载地址
95
+ */
96
+ templateUrl?: SchemaApi;
97
+
92
98
  /**
93
99
  * 默认 `file`, 如果你不想自己存储,则可以忽略此属性。
94
100
  * @default file
@@ -276,6 +282,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
276
282
  extractValue: false,
277
283
  delimiter: ',',
278
284
  downloadUrl: '', // '/api/file/'
285
+ templateUrl: '',
279
286
  useChunk: 'auto',
280
287
  chunkSize: 5 * 1024 * 1024, // 文件大于5M, 自动分块上传
281
288
  startChunkApi: '/api/upload/startChunk',
@@ -388,6 +395,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
388
395
  this.uploadBigFile = this.uploadBigFile.bind(this);
389
396
  this.handleSelect = this.handleSelect.bind(this);
390
397
  this.syncAutoFill = this.syncAutoFill.bind(this);
398
+ this.downloadTpl = this.downloadTpl.bind(this);
391
399
  }
392
400
 
393
401
  componentDidMount() {
@@ -535,7 +543,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
535
543
  e.preventDefault();
536
544
  e.stopPropagation();
537
545
 
538
- const {data, env, downloadUrl} = this.props;
546
+ const {downloadUrl} = this.props;
539
547
  const urlField = this.props.urlField || 'url';
540
548
  const valueField = this.props.valueField || 'value';
541
549
 
@@ -550,10 +558,23 @@ export default class FileControl extends React.Component<FileProps, FileState> {
550
558
  ? downloadUrl
551
559
  : `${fileUrl}`;
552
560
 
561
+ this.handleApi(api, file);
562
+ }
563
+
564
+ downloadTpl(e: React.MouseEvent) {
565
+ e.preventDefault();
566
+ e.stopPropagation();
567
+
568
+ this.handleApi(this.props.templateUrl || '');
569
+ }
570
+
571
+ handleApi(api: SchemaApi, payload?: object) {
572
+ const {data, env} = this.props;
553
573
  if (api) {
554
574
  const ctx = createObject(data, {
555
- ...file
575
+ ...payload
556
576
  });
577
+
557
578
  const apiObject = normalizeApi(api);
558
579
 
559
580
  if (apiObject.method?.toLowerCase() === 'get' && !apiObject.data) {
@@ -1171,7 +1192,8 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1171
1192
  classnames: cx,
1172
1193
  translate: __,
1173
1194
  render,
1174
- downloadUrl
1195
+ downloadUrl,
1196
+ templateUrl
1175
1197
  } = this.props;
1176
1198
  let {files, uploading, error} = this.state;
1177
1199
  const nameField = this.props.nameField || 'name';
@@ -1194,6 +1216,16 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1194
1216
 
1195
1217
  return (
1196
1218
  <div className={cx('FileControl', className)}>
1219
+ {templateUrl ? (
1220
+ <a
1221
+ className={cx('FileControl-templateInfo')}
1222
+ onClick={this.downloadTpl.bind(this)}
1223
+ >
1224
+ <Icon icon="download" className="icon" />
1225
+ <span>{__('File.downloadTpl')}</span>
1226
+ </a>
1227
+ ) : null}
1228
+
1197
1229
  <DropZone
1198
1230
  disabled={disabled}
1199
1231
  key="drop-zone"
@@ -1089,7 +1089,8 @@ export const detectProps = [
1089
1089
  'items',
1090
1090
  'showCounter',
1091
1091
  'minLength',
1092
- 'maxLength'
1092
+ 'maxLength',
1093
+ 'embed'
1093
1094
  ];
1094
1095
 
1095
1096
  export function asFormItem(config: Omit<FormItemConfig, 'component'>) {
@@ -344,14 +344,15 @@ export interface TransferDropDownProps
344
344
  | 'inputClassName'
345
345
  | 'className'
346
346
  | 'descriptionClassName'
347
- > {}
347
+ > {
348
+ borderMode?: 'full' | 'half' | 'none';
349
+ }
348
350
 
349
351
  class TransferDropdownRenderer extends BaseTransferRenderer<TransferDropDownProps> {
350
352
  render() {
351
353
  const {
352
354
  className,
353
355
  classnames: cx,
354
- options,
355
356
  selectedOptions,
356
357
  sortable,
357
358
  loading,
@@ -363,11 +364,27 @@ class TransferDropdownRenderer extends BaseTransferRenderer<TransferDropDownProp
363
364
  selectTitle,
364
365
  selectMode,
365
366
  multiple,
367
+ columns,
366
368
  leftMode,
367
- leftOptions,
368
- columns
369
+ borderMode
369
370
  } = this.props;
370
371
 
372
+ // 目前 LeftOptions 没有接口可以动态加载
373
+ // 为了方便可以快速实现动态化,让选项的第一个成员携带
374
+ // LeftOptions 信息
375
+ let {options, leftOptions, leftDefaultValue} = this.props;
376
+ if (
377
+ selectMode === 'associated' &&
378
+ options &&
379
+ options.length === 1 &&
380
+ options[0].leftOptions &&
381
+ Array.isArray(options[0].children)
382
+ ) {
383
+ leftOptions = options[0].leftOptions;
384
+ leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;
385
+ options = options[0].children;
386
+ }
387
+
371
388
  return (
372
389
  <>
373
390
  <TransferDropDown
@@ -388,6 +405,7 @@ class TransferDropdownRenderer extends BaseTransferRenderer<TransferDropDownProp
388
405
  columns={columns}
389
406
  leftMode={leftMode}
390
407
  leftOptions={leftOptions}
408
+ borderMode={borderMode}
391
409
  />
392
410
 
393
411
  <Spinner overlay key="info" show={loading} />
@@ -249,7 +249,6 @@ export class BaseTransferRenderer<
249
249
  const {
250
250
  className,
251
251
  classnames: cx,
252
- options,
253
252
  selectedOptions,
254
253
  showArrow,
255
254
  sortable,
@@ -260,7 +259,6 @@ export class BaseTransferRenderer<
260
259
  searchResultMode,
261
260
  searchResultColumns,
262
261
  deferLoad,
263
- leftOptions,
264
262
  leftMode,
265
263
  rightMode,
266
264
  disabled,
@@ -270,6 +268,22 @@ export class BaseTransferRenderer<
270
268
  resultItemRender
271
269
  } = this.props;
272
270
 
271
+ // 目前 LeftOptions 没有接口可以动态加载
272
+ // 为了方便可以快速实现动态化,让选项的第一个成员携带
273
+ // LeftOptions 信息
274
+ let {options, leftOptions, leftDefaultValue} = this.props;
275
+ if (
276
+ selectMode === 'associated' &&
277
+ options &&
278
+ options.length === 1 &&
279
+ options[0].leftOptions &&
280
+ Array.isArray(options[0].children)
281
+ ) {
282
+ leftOptions = options[0].leftOptions;
283
+ leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;
284
+ options = options[0].children;
285
+ }
286
+
273
287
  return (
274
288
  <div className={cx('TransferControl', className)}>
275
289
  <Transfer
@@ -17,6 +17,10 @@ import TransferPicker from '../../components/TransferPicker';
17
17
  */
18
18
  export interface TransferPickerControlSchema extends FormOptionsControl {
19
19
  type: 'transfer-picker';
20
+ /**
21
+ * 边框模式,全边框,还是半边框,或者没边框。
22
+ */
23
+ borderMode?: 'full' | 'half' | 'none';
20
24
 
21
25
  /**
22
26
  * 是否显示剪头
@@ -78,7 +82,6 @@ export class TransferPickerRenderer extends BaseTransferRenderer<TabsTransferPro
78
82
  const {
79
83
  className,
80
84
  classnames: cx,
81
- options,
82
85
  selectedOptions,
83
86
  sortable,
84
87
  loading,
@@ -92,12 +95,31 @@ export class TransferPickerRenderer extends BaseTransferRenderer<TabsTransferPro
92
95
  pickerSize,
93
96
  columns,
94
97
  leftMode,
95
- leftOptions
98
+ selectMode,
99
+ borderMode
96
100
  } = this.props;
97
101
 
102
+ // 目前 LeftOptions 没有接口可以动态加载
103
+ // 为了方便可以快速实现动态化,让选项的第一个成员携带
104
+ // LeftOptions 信息
105
+ let {options, leftOptions, leftDefaultValue} = this.props;
106
+ if (
107
+ selectMode === 'associated' &&
108
+ options &&
109
+ options.length === 1 &&
110
+ options[0].leftOptions &&
111
+ Array.isArray(options[0].children)
112
+ ) {
113
+ leftOptions = options[0].leftOptions;
114
+ leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;
115
+ options = options[0].children;
116
+ }
117
+
98
118
  return (
99
- <div className={cx('TabsTransferControl', className)}>
119
+ <div className={cx('TransferControl', className)}>
100
120
  <TransferPicker
121
+ borderMode={borderMode}
122
+ selectMode={selectMode}
101
123
  value={selectedOptions}
102
124
  disabled={disabled}
103
125
  options={options}