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.
- package/lib/Schema.d.ts +4 -3
- package/lib/Schema.js.map +1 -1
- package/lib/components/AssociatedSelection.js +2 -2
- package/lib/components/AssociatedSelection.js.map +2 -2
- package/lib/components/Checkbox.d.ts +20 -20
- package/lib/components/Collapse.d.ts +51 -23
- package/lib/components/Collapse.js +69 -11
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/CollapseGroup.d.ts +88 -0
- package/lib/components/CollapseGroup.js +81 -0
- package/lib/components/CollapseGroup.js.map +13 -0
- package/lib/components/Editor.d.ts +84 -84
- package/lib/components/GridNav.d.ts +52 -0
- package/lib/components/GridNav.js +123 -0
- package/lib/components/GridNav.js.map +13 -0
- package/lib/components/InputBox.d.ts +22 -21
- package/lib/components/InputBox.js +10 -2
- package/lib/components/InputBox.js.map +2 -2
- package/lib/components/ListGroup.d.ts +21 -21
- package/lib/components/PickerColumn.js +3 -3
- package/lib/components/PickerColumn.js.map +2 -2
- package/lib/components/ResultBox.d.ts +84 -84
- package/lib/components/ResultBox.js +10 -2
- package/lib/components/ResultBox.js.map +2 -2
- package/lib/components/Select.js +1 -1
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Selection.js +1 -1
- package/lib/components/Selection.js.map +2 -2
- package/lib/components/Tabs.d.ts +20 -20
- package/lib/components/TabsTransfer.d.ts +84 -84
- package/lib/components/Toast.d.ts +86 -85
- package/lib/components/Toast.js +6 -3
- package/lib/components/Toast.js.map +2 -2
- package/lib/components/Transfer.d.ts +84 -84
- package/lib/components/TransferDropDown.d.ts +85 -84
- package/lib/components/TransferDropDown.js +2 -2
- package/lib/components/TransferDropDown.js.map +2 -2
- package/lib/components/TransferPicker.d.ts +4 -0
- package/lib/components/TransferPicker.js +2 -2
- package/lib/components/TransferPicker.js.map +2 -2
- package/lib/components/Tree.d.ts +115 -84
- package/lib/components/Tree.js +183 -30
- package/lib/components/Tree.js.map +2 -2
- package/lib/components/icons.js +2 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/envOverwrite.d.ts +1 -1
- package/lib/envOverwrite.js +24 -9
- package/lib/envOverwrite.js.map +2 -2
- package/lib/factory.d.ts +11 -1
- package/lib/factory.js +31 -4
- package/lib/factory.js.map +2 -2
- package/lib/icons/download.js +7 -0
- package/lib/icons/drag-bar.js +10 -3
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +2 -2
- package/lib/locale/en-US.js +1 -0
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +1 -0
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Collapse.d.ts +25 -20
- package/lib/renderers/Collapse.js +10 -73
- package/lib/renderers/Collapse.js.map +2 -2
- package/lib/renderers/CollapseGroup.d.ts +42 -0
- package/lib/renderers/CollapseGroup.js +33 -0
- package/lib/renderers/CollapseGroup.js.map +13 -0
- package/lib/renderers/Form/InputCity.d.ts +84 -84
- package/lib/renderers/Form/InputFile.d.ts +6 -0
- package/lib/renderers/Form/InputFile.js +18 -4
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/Item.js +2 -1
- package/lib/renderers/Form/Item.js.map +2 -2
- package/lib/renderers/Form/Select.d.ts +1 -0
- package/lib/renderers/Form/Select.js +16 -2
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/Transfer.js +15 -1
- package/lib/renderers/Form/Transfer.js.map +2 -2
- package/lib/renderers/Form/TransferPicker.d.ts +4 -0
- package/lib/renderers/Form/TransferPicker.js +17 -3
- package/lib/renderers/Form/TransferPicker.js.map +2 -2
- package/lib/renderers/Form/index.d.ts +5 -0
- package/lib/renderers/Form/index.js +4 -2
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/GridNav.d.ts +99 -0
- package/lib/renderers/GridNav.js +82 -0
- package/lib/renderers/GridNav.js.map +13 -0
- package/lib/renderers/Table/index.js +1 -1
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/store/formItem.js +44 -4
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/table.d.ts +1 -0
- package/lib/store/table.js +35 -12
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +272 -31
- package/lib/themes/ang.css +272 -31
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +272 -31
- package/lib/themes/antd.css +272 -31
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +279 -38
- package/lib/themes/cxd.css +279 -38
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +272 -31
- package/lib/themes/dark.css +272 -31
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +279 -38
- package/lib/themes/default.css.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/api.d.ts +1 -0
- package/lib/utils/api.js +77 -6
- package/lib/utils/api.js.map +2 -2
- package/lib/utils/helper.d.ts +6 -0
- package/lib/utils/helper.js +18 -1
- package/lib/utils/helper.js.map +2 -2
- package/package.json +1 -1
- package/schema.json +297 -55
- package/scss/base/_common.scss +3 -0
- package/scss/components/_anchor-nav.scss +1 -0
- package/scss/components/_collapse-group.scss +11 -0
- package/scss/components/_collapse.scss +33 -22
- package/scss/components/_grid-nav.scss +128 -0
- package/scss/components/_input-box.scss +1 -0
- package/scss/components/_nav.scss +1 -1
- package/scss/components/_picker-columns.scss +1 -0
- package/scss/components/_popover.scss +0 -4
- package/scss/components/_result-box.scss +1 -0
- package/scss/components/_spinner.scss +5 -4
- package/scss/components/_table.scss +6 -0
- package/scss/components/form/_combo.scss +4 -0
- package/scss/components/form/_file.scss +11 -0
- package/scss/components/form/_form.scss +48 -0
- package/scss/components/form/_tree.scss +42 -0
- package/scss/themes/_common.scss +3 -0
- package/scss/themes/_cxd-variables.scss +6 -7
- package/scss/themes/cxd.scss +1 -0
- package/sdk/ang-ie11.css +317 -32
- package/sdk/ang.css +312 -31
- package/sdk/antd-ie11.css +317 -32
- package/sdk/antd.css +312 -31
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +323 -36
- package/sdk/cxd.css +319 -38
- package/sdk/dark-ie11.css +317 -32
- package/sdk/dark.css +312 -31
- package/sdk/exceljs.js +1 -1
- package/sdk/iconfont.svg +2513 -0
- package/sdk/iconfont.ttf +0 -0
- package/sdk/iconfont.woff +0 -0
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +18 -18
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +323 -36
- package/sdk/sdk.css +319 -38
- package/sdk/sdk.js +1247 -1211
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/Schema.ts +5 -1
- package/src/components/AssociatedSelection.tsx +3 -1
- package/src/components/Collapse.tsx +144 -20
- package/src/components/CollapseGroup.tsx +130 -0
- package/src/components/GridNav.tsx +233 -0
- package/src/components/InputBox.tsx +10 -9
- package/src/components/PickerColumn.tsx +1 -1
- package/src/components/ResultBox.tsx +9 -9
- package/src/components/Select.tsx +1 -1
- package/src/components/Selection.tsx +1 -1
- package/src/components/Toast.tsx +23 -16
- package/src/components/TransferDropDown.tsx +4 -1
- package/src/components/TransferPicker.tsx +7 -0
- package/src/components/Tree.tsx +194 -8
- package/src/components/icons.tsx +2 -0
- package/src/envOverwrite.ts +20 -7
- package/src/factory.tsx +52 -6
- package/src/icons/download.svg +4 -0
- package/src/icons/drag-bar.svg +12 -6
- package/src/index.tsx +2 -0
- package/src/locale/en-US.ts +1 -0
- package/src/locale/zh-CN.ts +1 -0
- package/src/renderers/Collapse.tsx +70 -117
- package/src/renderers/CollapseGroup.tsx +80 -0
- package/src/renderers/Form/InputFile.tsx +36 -4
- package/src/renderers/Form/Item.tsx +2 -1
- package/src/renderers/Form/Select.tsx +22 -4
- package/src/renderers/Form/Transfer.tsx +16 -2
- package/src/renderers/Form/TransferPicker.tsx +25 -3
- package/src/renderers/Form/index.tsx +14 -1
- package/src/renderers/GridNav.tsx +204 -0
- package/src/renderers/Table/index.tsx +1 -2
- package/src/store/formItem.ts +94 -2
- package/src/store/table.ts +55 -14
- package/src/types.ts +1 -1
- package/src/utils/api.ts +93 -6
- package/src/utils/helper.ts +19 -0
- package/tsconfig-for-declaration.json +1 -1
package/src/icons/drag-bar.svg
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
<
|
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
|
|
package/src/locale/en-US.ts
CHANGED
@@ -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.',
|
package/src/locale/zh-CN.ts
CHANGED
@@ -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
|
-
|
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?:
|
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
|
-
*
|
62
|
+
* 图标是否展示
|
49
63
|
*/
|
50
|
-
|
64
|
+
showArrow?: boolean;
|
65
|
+
|
66
|
+
/**
|
67
|
+
* 自定义切换图标
|
68
|
+
*/
|
69
|
+
expandIcon?: SchemaObject;
|
51
70
|
|
52
71
|
/**
|
53
|
-
* 标题
|
72
|
+
* 标题 CSS 类名
|
54
73
|
*/
|
55
|
-
|
74
|
+
headingClassName?: string;
|
56
75
|
|
57
76
|
/**
|
58
77
|
* 收起的标题
|
59
78
|
*/
|
60
|
-
|
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
|
-
|
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
|
154
|
-
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
|
-
|
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 {
|
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
|
-
...
|
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"
|
@@ -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
|
-
|
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
|
-
|
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('
|
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}
|