@qn-pandora/pandora-component 4.0.2 → 4.0.4
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/CHANGELOG.json +43 -0
- package/CHANGELOG.md +17 -1
- package/es/components/AutoComplete/index.js +21 -1
- package/es/components/DateTimePicker/transform.d.ts +4 -1
- package/es/components/DateTimePicker/transform.js +2 -2
- package/es/components/Drawer/index.d.ts +30 -2
- package/es/components/Drawer/index.js +165 -5
- package/es/components/Drawer/style.css +18 -1
- package/es/components/Drawer/style.less +23 -1
- package/es/components/FileResumable/constants.d.ts +33 -0
- package/es/components/FileResumable/constants.js +0 -0
- package/es/components/FileResumable/index.d.ts +13 -0
- package/es/components/FileResumable/index.js +327 -0
- package/es/components/FileResumable/style.css +777 -0
- package/es/components/FileResumable/style.less +94 -0
- package/es/components/FileResumable/utils.d.ts +1 -0
- package/es/components/FileResumable/utils.js +17 -0
- package/es/components/Selector/SelectorWidthChildren.d.ts +15 -0
- package/es/components/Selector/SelectorWidthChildren.js +59 -0
- package/es/components/Selector/index.d.ts +2 -0
- package/es/components/Selector/index.js +17 -3
- package/es/components/TreeSelector/index.js +1 -1
- package/es/constants/language/en.js +3 -1
- package/es/constants/language/type.d.ts +2 -0
- package/es/constants/language/upload/en.d.ts +3 -0
- package/es/constants/language/upload/en.js +20 -0
- package/es/constants/language/upload/type.d.ts +20 -0
- package/es/constants/language/upload/type.js +4 -0
- package/es/constants/language/upload/zh.d.ts +3 -0
- package/es/constants/language/upload/zh.js +20 -0
- package/es/constants/language/zh.js +3 -1
- package/es/index.css +1282 -498
- package/es/index.d.ts +2 -0
- package/es/index.js +2 -0
- package/es/index.less +12 -11
- package/es/style/theme.less +1 -0
- package/lib/components/AutoComplete/index.js +21 -1
- package/lib/components/DateTimePicker/transform.d.ts +4 -1
- package/lib/components/DateTimePicker/transform.js +2 -0
- package/lib/components/Drawer/index.d.ts +30 -2
- package/lib/components/Drawer/index.js +164 -12
- package/lib/components/Drawer/style.css +18 -1
- package/lib/components/Drawer/style.less +23 -1
- package/lib/components/FileResumable/constants.d.ts +33 -0
- package/lib/components/FileResumable/constants.js +2 -0
- package/lib/components/FileResumable/index.d.ts +13 -0
- package/lib/components/FileResumable/index.js +340 -0
- package/lib/components/FileResumable/style.css +777 -0
- package/lib/components/FileResumable/style.less +94 -0
- package/lib/components/FileResumable/utils.d.ts +1 -0
- package/lib/components/FileResumable/utils.js +19 -0
- package/lib/components/Selector/SelectorWidthChildren.d.ts +15 -0
- package/lib/components/Selector/SelectorWidthChildren.js +72 -0
- package/lib/components/Selector/index.d.ts +2 -0
- package/lib/components/Selector/index.js +16 -2
- package/lib/components/TreeSelector/index.js +1 -1
- package/lib/constants/language/en.js +6 -1
- package/lib/constants/language/type.d.ts +2 -0
- package/lib/constants/language/upload/en.d.ts +3 -0
- package/lib/constants/language/upload/en.js +22 -0
- package/lib/constants/language/upload/type.d.ts +20 -0
- package/lib/constants/language/upload/type.js +9 -0
- package/lib/constants/language/upload/zh.d.ts +3 -0
- package/lib/constants/language/upload/zh.js +22 -0
- package/lib/constants/language/zh.js +6 -1
- package/lib/index.css +977 -193
- package/lib/index.d.ts +2 -0
- package/lib/index.js +4 -0
- package/lib/index.less +9 -8
- package/lib/style/theme.less +1 -0
- package/package.json +6 -4
@@ -0,0 +1,94 @@
|
|
1
|
+
@import 'antd/lib/upload/style/index.less';
|
2
|
+
@import '../../style/theme.less';
|
3
|
+
|
4
|
+
.@{sdk-prefix}-file-resumable {
|
5
|
+
cursor: pointer;
|
6
|
+
}
|
7
|
+
|
8
|
+
.@{sdk-prefix}-file-resumable-run-container {
|
9
|
+
text-align: right;
|
10
|
+
.@{sdk-prefix}-file-resumable-run-container-icon {
|
11
|
+
color: @theme-color;
|
12
|
+
cursor: pointer;
|
13
|
+
font-size: 14px;
|
14
|
+
margin: 0 6px;
|
15
|
+
}
|
16
|
+
|
17
|
+
.@{sdk-prefix}-file-resumable-run-container-icon-disabled {
|
18
|
+
color: @font-disable-color;
|
19
|
+
&:hover {
|
20
|
+
cursor: not-allowed;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
.@{sdk-prefix}-file-resumable-upload-icon {
|
26
|
+
font-size: 50px;
|
27
|
+
color: @icon-color;
|
28
|
+
}
|
29
|
+
|
30
|
+
.downloadIcon {
|
31
|
+
color: @theme-color;
|
32
|
+
cursor: pointer;
|
33
|
+
font-size: 20px;
|
34
|
+
}
|
35
|
+
|
36
|
+
.@{sdk-prefix}-file-resumable:hover {
|
37
|
+
border-color: @theme-color;
|
38
|
+
}
|
39
|
+
|
40
|
+
.@{sdk-prefix}-file-resumable-img-container {
|
41
|
+
background: @normal-color;
|
42
|
+
border: 1px dashed @border-color-1;
|
43
|
+
width: 50px;
|
44
|
+
height: 50px;
|
45
|
+
padding: 4px;
|
46
|
+
border-radius: 2px;
|
47
|
+
align-items: center;
|
48
|
+
cursor: pointer;
|
49
|
+
position: relative;
|
50
|
+
font-size: 16px;
|
51
|
+
display: flex;
|
52
|
+
justify-content: center;
|
53
|
+
.@{sdk-prefix}-file-resumable-img-operator {
|
54
|
+
display: flex;
|
55
|
+
justify-content: center;
|
56
|
+
align-items: center;
|
57
|
+
position: absolute;
|
58
|
+
top: 4px;
|
59
|
+
left: 4px;
|
60
|
+
right: 4px;
|
61
|
+
bottom: 4px;
|
62
|
+
.anticon {
|
63
|
+
font-size: 16px;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
.@{sdk-prefix}-file-resumable-img-hidden-plus-icon {
|
67
|
+
display: none;
|
68
|
+
}
|
69
|
+
|
70
|
+
.@{sdk-prefix}-file-resumable-img-box {
|
71
|
+
max-width: 100%;
|
72
|
+
max-height: 100%;
|
73
|
+
padding: 4px;
|
74
|
+
}
|
75
|
+
|
76
|
+
&:hover {
|
77
|
+
.@{sdk-prefix}-file-resumable-img-operator {
|
78
|
+
background: @image-operator-hover-bg;
|
79
|
+
display: flex;
|
80
|
+
.anticon {
|
81
|
+
font-size: 16px;
|
82
|
+
color: @normal-color;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
87
|
+
.@{sdk-prefix}-file-resumable-img.ant-upload.ant-upload-drag {
|
88
|
+
width: 50px;
|
89
|
+
height: 50px;
|
90
|
+
border: none;
|
91
|
+
.@{ant-prefix}-upload-btn {
|
92
|
+
padding: 0;
|
93
|
+
}
|
94
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const isJpgOrPngOrSvg: (type?: string, hexValue?: string) => boolean;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { includes } from 'lodash';
|
2
|
+
var MIME_IMAGE_TYPE = [
|
3
|
+
'image/png',
|
4
|
+
'image/jpeg',
|
5
|
+
'image/jpeg',
|
6
|
+
'image/svg+xml',
|
7
|
+
'image/vnd.microsoft.icon'
|
8
|
+
];
|
9
|
+
export var isJpgOrPngOrSvg = function (type, hexValue) {
|
10
|
+
if (type === void 0) { type = ''; }
|
11
|
+
if (hexValue === void 0) { hexValue = ''; }
|
12
|
+
return (includes(MIME_IMAGE_TYPE, type.toLocaleLowerCase()) &&
|
13
|
+
(includes(hexValue.toLowerCase(), '100') || // ico
|
14
|
+
includes(hexValue.toLowerCase(), 'ffd8ff') ||
|
15
|
+
includes(hexValue.toLowerCase(), '3c3f786d') || // svg
|
16
|
+
includes(hexValue.toLowerCase(), '89504e47')));
|
17
|
+
};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { ISelectorProps, SelectValue } from './index';
|
3
|
+
declare type IValue = string | number;
|
4
|
+
export interface ISelectorOption {
|
5
|
+
key?: string;
|
6
|
+
text: string | React.ReactNode;
|
7
|
+
value: IValue;
|
8
|
+
disabled?: boolean;
|
9
|
+
filterText?: string;
|
10
|
+
}
|
11
|
+
export interface ISelectorWidthChildrenProps<VT> extends ISelectorProps<VT> {
|
12
|
+
options?: ISelectorOption[];
|
13
|
+
}
|
14
|
+
export default function SelectorWidthChildren<VT extends SelectValue>(props: ISelectorWidthChildrenProps<VT>): JSX.Element;
|
15
|
+
export {};
|
@@ -0,0 +1,59 @@
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
2
|
+
__assign = Object.assign || function(t) {
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
4
|
+
s = arguments[i];
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
6
|
+
t[p] = s[p];
|
7
|
+
}
|
8
|
+
return t;
|
9
|
+
};
|
10
|
+
return __assign.apply(this, arguments);
|
11
|
+
};
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
13
|
+
var t = {};
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
15
|
+
t[p] = s[p];
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
19
|
+
t[p[i]] = s[p[i]];
|
20
|
+
}
|
21
|
+
return t;
|
22
|
+
};
|
23
|
+
var __read = (this && this.__read) || function (o, n) {
|
24
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
25
|
+
if (!m) return o;
|
26
|
+
var i = m.call(o), r, ar = [], e;
|
27
|
+
try {
|
28
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
29
|
+
}
|
30
|
+
catch (error) { e = { error: error }; }
|
31
|
+
finally {
|
32
|
+
try {
|
33
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
34
|
+
}
|
35
|
+
finally { if (e) throw e.error; }
|
36
|
+
}
|
37
|
+
return ar;
|
38
|
+
};
|
39
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
40
|
+
import { includes } from 'lodash';
|
41
|
+
import Selector from './index';
|
42
|
+
// 下拉选项的是element时用于筛选过滤options
|
43
|
+
export default function SelectorWidthChildren(props) {
|
44
|
+
var _a = __read(useState(''), 2), prefix = _a[0], setPrefix = _a[1];
|
45
|
+
var options = props.options, rest = __rest(props, ["options"]);
|
46
|
+
useEffect(function () {
|
47
|
+
setPrefix('');
|
48
|
+
}, []);
|
49
|
+
var filterOptions = useMemo(function () {
|
50
|
+
var search = prefix.toLowerCase();
|
51
|
+
return prefix && options
|
52
|
+
? options.filter(function (option) {
|
53
|
+
return option.filterText &&
|
54
|
+
includes(option.filterText.toLowerCase(), search);
|
55
|
+
})
|
56
|
+
: options;
|
57
|
+
}, [prefix, options]);
|
58
|
+
return (React.createElement(Selector, __assign({}, rest, { onSearch: setPrefix, searchValue: prefix, options: filterOptions, isCustomFilter: true })));
|
59
|
+
}
|
@@ -52,6 +52,7 @@ export interface ISelectorProps<VT> extends Omit<SelectProps<VT>, 'options'> {
|
|
52
52
|
* 下拉选项超出时用 '...' 来表示,默认 true
|
53
53
|
*/
|
54
54
|
ellipsis?: boolean;
|
55
|
+
isCustomFilter?: boolean;
|
55
56
|
}
|
56
57
|
/**
|
57
58
|
* 下拉选择组件封装
|
@@ -64,5 +65,6 @@ export default class Selector<VT extends SelectValue> extends React.Component<IS
|
|
64
65
|
ellipsis: boolean;
|
65
66
|
};
|
66
67
|
handleCreateClick(e: any): void;
|
68
|
+
handleFilter(inputValue: string, option: any): boolean;
|
67
69
|
render(): JSX.Element;
|
68
70
|
}
|
@@ -43,7 +43,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
43
43
|
return t;
|
44
44
|
};
|
45
45
|
import * as React from 'react';
|
46
|
-
import { isArray, concat, isNumber, toString } from 'lodash';
|
46
|
+
import { isArray, concat, isNumber, toString, isString } from 'lodash';
|
47
47
|
import classnames from 'classnames';
|
48
48
|
import { Checkbox, Select } from 'antd';
|
49
49
|
import PropTypes from 'prop-types';
|
@@ -117,10 +117,18 @@ var Selector = /** @class */ (function (_super) {
|
|
117
117
|
createOptionClick();
|
118
118
|
}
|
119
119
|
};
|
120
|
+
Selector.prototype.handleFilter = function (inputValue, option) {
|
121
|
+
if (this.props.isCustomFilter) {
|
122
|
+
return true;
|
123
|
+
}
|
124
|
+
return isString(option === null || option === void 0 ? void 0 : option.children)
|
125
|
+
? (option === null || option === void 0 ? void 0 : option.children.toLowerCase().indexOf(inputValue.toLowerCase())) >= 0
|
126
|
+
: true;
|
127
|
+
};
|
120
128
|
Selector.prototype.render = function () {
|
121
129
|
var _a;
|
122
|
-
var _b = this.props, options = _b.options, groupOptions = _b.groupOptions, createOptionText = _b.createOptionText, selectAllOptionText = _b.selectAllOptionText, className = _b.className, dropdownClassName = _b.dropdownClassName, getPopupContainer = _b.getPopupContainer, ellipsis = _b.ellipsis, _c = _b.showArrow, showArrow = _c === void 0 ? true : _c, otherProps = __rest(_b, ["options", "groupOptions", "createOptionText", "selectAllOptionText", "className", "dropdownClassName", "getPopupContainer", "ellipsis", "showArrow"]);
|
123
|
-
return (React.createElement(Select, __assign({ className: classnames(SDK_PREFIX + "-selector", className), dropdownClassName: classnames(SDK_PREFIX + "-selector-dropdown", (_a = {}, _a[SDK_PREFIX + "-selector-no-ellipsis"] = !ellipsis, _a), dropdownClassName), getPopupContainer: getPopupContainer || this.context.getPopupContainer }, otherProps, { removeIcon: React.createElement(Icon, { type: "close-circle", theme: "filled", className: SDK_PREFIX + "-close-icon" }), showArrow: showArrow }),
|
130
|
+
var _b = this.props, options = _b.options, groupOptions = _b.groupOptions, createOptionText = _b.createOptionText, selectAllOptionText = _b.selectAllOptionText, className = _b.className, dropdownClassName = _b.dropdownClassName, getPopupContainer = _b.getPopupContainer, ellipsis = _b.ellipsis, _c = _b.showArrow, showArrow = _c === void 0 ? true : _c, isCustomFilter = _b.isCustomFilter, otherProps = __rest(_b, ["options", "groupOptions", "createOptionText", "selectAllOptionText", "className", "dropdownClassName", "getPopupContainer", "ellipsis", "showArrow", "isCustomFilter"]);
|
131
|
+
return (React.createElement(Select, __assign({ className: classnames(SDK_PREFIX + "-selector", className), dropdownClassName: classnames(SDK_PREFIX + "-selector-dropdown", (_a = {}, _a[SDK_PREFIX + "-selector-no-ellipsis"] = !ellipsis, _a), dropdownClassName), getPopupContainer: getPopupContainer || this.context.getPopupContainer, filterOption: this.handleFilter }, otherProps, { removeIcon: React.createElement(Icon, { type: "close-circle", theme: "filled", className: SDK_PREFIX + "-close-icon" }), showArrow: showArrow, showSearch: true }),
|
124
132
|
createOptionText && (React.createElement(Select.Option, __assign({}, { className: SDK_PREFIX + "-selector-create-option" }, { key: "selector_create", disabled: true }, noneValueOption),
|
125
133
|
React.createElement("a", { className: SDK_PREFIX + "-selector-create-lint", onClick: this.handleCreateClick }, createOptionText))),
|
126
134
|
selectAllOptionText && (React.createElement(Select.Option, __assign({}, { className: SDK_PREFIX + "-selector-create-option" }, { key: "selector_select_all", disabled: true }, noneValueOption),
|
@@ -139,6 +147,12 @@ var Selector = /** @class */ (function (_super) {
|
|
139
147
|
__metadata("design:paramtypes", [Object]),
|
140
148
|
__metadata("design:returntype", void 0)
|
141
149
|
], Selector.prototype, "handleCreateClick", null);
|
150
|
+
__decorate([
|
151
|
+
bind,
|
152
|
+
__metadata("design:type", Function),
|
153
|
+
__metadata("design:paramtypes", [String, Object]),
|
154
|
+
__metadata("design:returntype", void 0)
|
155
|
+
], Selector.prototype, "handleFilter", null);
|
142
156
|
return Selector;
|
143
157
|
}(React.Component));
|
144
158
|
export default Selector;
|
@@ -26,7 +26,7 @@ import { TreeSelect } from 'antd';
|
|
26
26
|
import { SDK_PREFIX } from '../../constants/style';
|
27
27
|
export function TreeSelector(props) {
|
28
28
|
var className = props.className, dropdownClassName = props.dropdownClassName, restProps = __rest(props, ["className", "dropdownClassName"]);
|
29
|
-
return (React.createElement(TreeSelect, __assign({ className: classnames(SDK_PREFIX + "-tree-select", className), dropdownClassName: classnames(SDK_PREFIX + "-tree-select-dropdown", dropdownClassName) }, restProps)));
|
29
|
+
return (React.createElement(TreeSelect, __assign({ className: classnames(SDK_PREFIX + "-tree-select", className), dropdownClassName: classnames(SDK_PREFIX + "-tree-select-dropdown", dropdownClassName), showSearch: true, treeNodeFilterProp: "title" }, restProps)));
|
30
30
|
}
|
31
31
|
export default TreeSelector;
|
32
32
|
TreeSelector.SHOW_ALL = TreeSelect.SHOW_ALL;
|
@@ -4,11 +4,13 @@ import { range_input_en } from './range_input/en';
|
|
4
4
|
import { steps_en } from './steps/en';
|
5
5
|
import { table_en } from './table/en';
|
6
6
|
import { transfer_en } from './transfer/en';
|
7
|
+
import upload_en from './upload/en';
|
7
8
|
export var component_en = {
|
8
9
|
check_transform_list: check_transform_list_en,
|
9
10
|
datetime: datetime_en,
|
10
11
|
range_input: range_input_en,
|
11
12
|
steps: steps_en,
|
12
13
|
table: table_en,
|
13
|
-
transfer: transfer_en
|
14
|
+
transfer: transfer_en,
|
15
|
+
upload: upload_en
|
14
16
|
};
|
@@ -4,6 +4,7 @@ import { IRangeInputLocale } from './range_input/type';
|
|
4
4
|
import { IStepsLocale } from './steps/type';
|
5
5
|
import { ITableLocale } from './table/type';
|
6
6
|
import { ITransferLocale } from './transfer/type';
|
7
|
+
import { IUploadLocale } from './upload/type';
|
7
8
|
export interface IComponentLocal {
|
8
9
|
check_transform_list: ICheckTransformListLocale;
|
9
10
|
datetime: IDateTimeLocale;
|
@@ -11,5 +12,6 @@ export interface IComponentLocal {
|
|
11
12
|
steps: IStepsLocale;
|
12
13
|
table: ITableLocale;
|
13
14
|
transfer: ITransferLocale;
|
15
|
+
upload: IUploadLocale;
|
14
16
|
}
|
15
17
|
export declare const ComponentLocale: IComponentLocal;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
var upload_en = {
|
2
|
+
play: 'Play',
|
3
|
+
pause: 'Pause',
|
4
|
+
stop: 'Stop',
|
5
|
+
error: 'Upload failed, try again later',
|
6
|
+
text: 'Drop file here to upload',
|
7
|
+
file: {
|
8
|
+
content: 'Drop your data file here',
|
9
|
+
steps: {
|
10
|
+
upload: 'Uploading',
|
11
|
+
complete: 'Done'
|
12
|
+
}
|
13
|
+
},
|
14
|
+
select_file: 'Selected',
|
15
|
+
min_size_error_msg: 'File size cannot be smaller than',
|
16
|
+
max_size_error_msg: 'File size cannot be larger than',
|
17
|
+
empty_file_error_msg: 'Cannot upload empty files',
|
18
|
+
byte: 'bytes'
|
19
|
+
};
|
20
|
+
export default upload_en;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
export interface IUploadLocale {
|
2
|
+
text: string;
|
3
|
+
play: string;
|
4
|
+
pause: string;
|
5
|
+
stop: string;
|
6
|
+
error: string;
|
7
|
+
file: {
|
8
|
+
content: string;
|
9
|
+
steps: {
|
10
|
+
upload: string;
|
11
|
+
complete: string;
|
12
|
+
};
|
13
|
+
};
|
14
|
+
select_file: string;
|
15
|
+
min_size_error_msg: string;
|
16
|
+
max_size_error_msg: string;
|
17
|
+
empty_file_error_msg: string;
|
18
|
+
byte: string;
|
19
|
+
}
|
20
|
+
export declare const UploadLocale: IUploadLocale;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
var upload_zh = {
|
2
|
+
play: '恢复',
|
3
|
+
pause: '暂停',
|
4
|
+
stop: '停止',
|
5
|
+
error: '上传文件失败,请稍后重试',
|
6
|
+
text: '点击或将配置文件拖拽到这里上传',
|
7
|
+
file: {
|
8
|
+
content: '点击或将文件拖拽到这里上传',
|
9
|
+
steps: {
|
10
|
+
upload: '上传文件',
|
11
|
+
complete: '完成'
|
12
|
+
}
|
13
|
+
},
|
14
|
+
select_file: '选择文件',
|
15
|
+
min_size_error_msg: '文件大小不能小于',
|
16
|
+
max_size_error_msg: '文件大小不能大于',
|
17
|
+
empty_file_error_msg: '不能上传空文件',
|
18
|
+
byte: '字节'
|
19
|
+
};
|
20
|
+
export default upload_zh;
|
@@ -4,11 +4,13 @@ import { range_input_zh } from './range_input/zh';
|
|
4
4
|
import { steps_zh } from './steps/zh';
|
5
5
|
import { table_zh } from './table/zh';
|
6
6
|
import { transfer_zh } from './transfer/zh';
|
7
|
+
import upload_zh from './upload/zh';
|
7
8
|
export var component_zh = {
|
8
9
|
check_transform_list: check_transform_list_zh,
|
9
10
|
datetime: datetime_zh,
|
10
11
|
range_input: range_input_zh,
|
11
12
|
steps: steps_zh,
|
12
13
|
table: table_zh,
|
13
|
-
transfer: transfer_zh
|
14
|
+
transfer: transfer_zh,
|
15
|
+
upload: upload_zh
|
14
16
|
};
|