amis 1.5.5 → 1.5.6
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/Root.js +1 -1
- package/lib/Root.js.map +2 -2
- package/lib/Schema.d.ts +1 -1
- package/lib/Schema.js.map +1 -1
- package/lib/SchemaRenderer.js +4 -4
- package/lib/SchemaRenderer.js.map +2 -2
- package/lib/components/AsideNav.d.ts +1 -1
- package/lib/components/AsideNav.js.map +1 -1
- package/lib/components/Card.d.ts +20 -20
- package/lib/components/Card.js +1 -1
- package/lib/components/Card.js.map +2 -2
- package/lib/components/CodeMirror.d.ts +26 -0
- package/lib/components/CodeMirror.js +104 -0
- package/lib/components/CodeMirror.js.map +13 -0
- package/lib/components/Collapse.d.ts +22 -21
- package/lib/components/Collapse.js +5 -7
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/CollapseGroup.d.ts +20 -20
- package/lib/components/CollapseGroup.js +5 -3
- package/lib/components/CollapseGroup.js.map +2 -2
- package/lib/components/ColorPicker.d.ts +85 -84
- package/lib/components/ColorPicker.js +15 -3
- package/lib/components/ColorPicker.js.map +2 -2
- package/lib/components/DatePicker.d.ts +84 -84
- package/lib/components/DatePicker.js +7 -3
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +85 -84
- package/lib/components/DateRangePicker.js +5 -3
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/LocationPicker.d.ts +84 -84
- package/lib/components/MonthRangePicker.d.ts +85 -84
- package/lib/components/MonthRangePicker.js +5 -3
- package/lib/components/MonthRangePicker.js.map +2 -2
- package/lib/components/PickerContainer.d.ts +2 -1
- package/lib/components/PickerContainer.js +3 -3
- package/lib/components/PickerContainer.js.map +2 -2
- package/lib/components/PopUp.d.ts +93 -0
- package/lib/components/PopUp.js +58 -0
- package/lib/components/PopUp.js.map +13 -0
- package/lib/components/Rating.d.ts +203 -73
- package/lib/components/Rating.js +147 -31
- package/lib/components/Rating.js.map +2 -2
- package/lib/components/Select.d.ts +237 -237
- package/lib/components/Steps.d.ts +1 -0
- package/lib/components/Steps.js +5 -3
- package/lib/components/Steps.js.map +2 -2
- package/lib/components/Tabs.d.ts +20 -20
- package/lib/components/TabsTransferPicker.js +1 -1
- package/lib/components/TabsTransferPicker.js.map +2 -2
- package/lib/components/TransferPicker.d.ts +0 -1
- package/lib/components/TransferPicker.js +2 -15
- package/lib/components/TransferPicker.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +560 -0
- package/lib/components/formula/Editor.js +186 -0
- package/lib/components/formula/Editor.js.map +13 -0
- package/lib/components/formula/FuncList.d.ts +67 -0
- package/lib/components/formula/FuncList.js +35 -0
- package/lib/components/formula/FuncList.js.map +13 -0
- package/lib/components/formula/Picker.d.ts +493 -0
- package/lib/components/formula/Picker.js +48 -0
- package/lib/components/formula/Picker.js.map +13 -0
- package/lib/components/formula/VariableList.d.ts +9 -0
- package/lib/components/formula/VariableList.js +15 -0
- package/lib/components/formula/VariableList.js.map +13 -0
- package/lib/components/formula/plugin.d.ts +18 -0
- package/lib/components/formula/plugin.js +136 -0
- package/lib/components/formula/plugin.js.map +13 -0
- package/lib/components/icons.js +2 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +4 -2
- package/lib/components/index.js.map +2 -2
- package/lib/helper.css +57 -57
- package/lib/helper.css.map +1 -1
- package/lib/icons/star.js +12 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +2 -2
- package/lib/renderers/Collapse.js +8 -2
- package/lib/renderers/Collapse.js.map +2 -2
- package/lib/renderers/CollapseGroup.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +84 -84
- package/lib/renderers/Form/InputColor.d.ts +84 -84
- package/lib/renderers/Form/InputColor.js +2 -2
- package/lib/renderers/Form/InputColor.js.map +2 -2
- package/lib/renderers/Form/InputDate.js +2 -2
- package/lib/renderers/Form/InputDate.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.js +2 -2
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +1 -1
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputFormula.d.ts +35 -0
- package/lib/renderers/Form/InputFormula.js +25 -0
- package/lib/renderers/Form/InputFormula.js.map +13 -0
- package/lib/renderers/Form/InputImage.js +1 -1
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputMonthRange.js +2 -2
- package/lib/renderers/Form/InputMonthRange.js.map +2 -2
- package/lib/renderers/Form/InputQuarterRange.js +2 -2
- package/lib/renderers/Form/InputQuarterRange.js.map +2 -2
- package/lib/renderers/Form/InputRating.d.ts +37 -0
- package/lib/renderers/Form/InputRating.js +6 -2
- package/lib/renderers/Form/InputRating.js.map +2 -2
- package/lib/renderers/Form/InputYearRange.js +2 -2
- package/lib/renderers/Form/InputYearRange.js.map +2 -2
- package/lib/renderers/Form/TreeSelect.d.ts +1 -0
- package/lib/renderers/Form/TreeSelect.js +11 -8
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Json.js +7 -0
- package/lib/renderers/Json.js.map +2 -2
- package/lib/renderers/Steps.js +2 -2
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/store/formItem.js +11 -1
- package/lib/store/formItem.js.map +2 -2
- package/lib/themes/ang-ie11.css +305 -10
- package/lib/themes/ang.css +305 -10
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +305 -10
- package/lib/themes/antd.css +305 -10
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +306 -10
- package/lib/themes/cxd.css +306 -10
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +305 -10
- package/lib/themes/dark.css +305 -10
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +306 -10
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/api.js +2 -2
- package/lib/utils/api.js.map +2 -2
- package/lib/utils/helper.js +2 -7
- package/lib/utils/helper.js.map +2 -2
- package/package.json +5 -3
- package/schema.json +59 -7
- package/scss/_properties.scss +3 -1
- package/scss/_variables.scss +1 -1
- package/scss/components/_formula.scss +122 -0
- package/scss/components/_popup.scss +123 -0
- package/scss/components/_steps.scss +60 -0
- package/scss/components/form/_color.scss +4 -0
- package/scss/components/form/_date-range.scss +4 -0
- package/scss/components/form/_date.scss +3 -0
- package/scss/components/form/_rating.scss +60 -21
- package/scss/components/form/_tree-select.scss +4 -0
- package/scss/helper/background/_background-color.scss +1 -1
- package/scss/helper/border/_border-color.scss +1 -1
- package/scss/helper/typography/_text-color.scss +1 -1
- package/scss/themes/_common.scss +2 -0
- package/scss/themes/_cxd-variables.scss +2 -0
- package/sdk/ang-ie11.css +922 -8
- package/sdk/ang.css +926 -10
- package/sdk/antd-ie11.css +922 -8
- package/sdk/antd.css +926 -10
- package/sdk/charts.js +17 -17
- package/sdk/codemirror.js +14 -0
- package/sdk/color-picker.js +65 -69
- package/sdk/cropperjs.js +3 -3
- package/sdk/cxd-ie11.css +922 -8
- package/sdk/cxd.css +927 -10
- package/sdk/dark-ie11.css +922 -8
- package/sdk/dark.css +926 -10
- package/sdk/exceljs.js +1 -1
- package/sdk/helper.css +57 -57
- package/sdk/helper.css.map +1 -1
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +20 -16
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +922 -8
- package/sdk/sdk.css +927 -10
- package/sdk/sdk.js +1345 -1235
- package/sdk/thirds/hls.js/hls.js +18 -18
- package/sdk/thirds/mpegts.js/mpegts.js +2 -2
- package/sdk/tinymce.js +57 -57
- package/src/Root.tsx +1 -0
- package/src/Schema.ts +1 -0
- package/src/SchemaRenderer.tsx +4 -0
- package/src/components/AsideNav.tsx +1 -1
- package/src/components/Card.tsx +2 -2
- package/src/components/CodeMirror.tsx +99 -0
- package/src/components/Collapse.tsx +22 -14
- package/src/components/CollapseGroup.tsx +9 -11
- package/src/components/ColorPicker.tsx +45 -3
- package/src/components/DatePicker.tsx +33 -3
- package/src/components/DateRangePicker.tsx +17 -3
- package/src/components/MonthRangePicker.tsx +18 -4
- package/src/components/PickerContainer.tsx +10 -6
- package/src/components/PopUp.tsx +133 -0
- package/src/components/Rating.tsx +235 -47
- package/src/components/Steps.tsx +8 -3
- package/src/components/TabsTransferPicker.tsx +1 -1
- package/src/components/TransferPicker.tsx +1 -11
- package/src/components/formula/Editor.tsx +261 -0
- package/src/components/formula/FuncList.tsx +82 -0
- package/src/components/formula/Picker.tsx +86 -0
- package/src/components/formula/VariableList.tsx +49 -0
- package/src/components/formula/plugin.ts +177 -0
- package/src/components/icons.tsx +2 -0
- package/src/components/index.tsx +2 -0
- package/src/icons/star.svg +12 -0
- package/src/index.tsx +1 -0
- package/src/renderers/Collapse.tsx +27 -27
- package/src/renderers/CollapseGroup.tsx +13 -12
- package/src/renderers/Form/InputColor.tsx +2 -3
- package/src/renderers/Form/InputDate.tsx +2 -0
- package/src/renderers/Form/InputDateRange.tsx +2 -0
- package/src/renderers/Form/InputFile.tsx +1 -1
- package/src/renderers/Form/InputFormula.tsx +75 -0
- package/src/renderers/Form/InputImage.tsx +1 -1
- package/src/renderers/Form/InputMonthRange.tsx +2 -0
- package/src/renderers/Form/InputQuarterRange.tsx +2 -0
- package/src/renderers/Form/InputRating.tsx +66 -3
- package/src/renderers/Form/InputYearRange.tsx +2 -0
- package/src/renderers/Form/TreeSelect.tsx +82 -63
- package/src/renderers/Json.tsx +5 -0
- package/src/renderers/Steps.tsx +4 -2
- package/src/store/formItem.ts +15 -0
- package/src/utils/api.ts +5 -2
- package/src/utils/helper.ts +5 -14
@@ -16,10 +16,10 @@ var ColorControl = /** @class */ (function (_super) {
|
|
16
16
|
return _this;
|
17
17
|
}
|
18
18
|
ColorControl.prototype.render = function () {
|
19
|
-
var _a = this.props, className = _a.className, ns = _a.classPrefix, value = _a.value, rest = (0, tslib_1.__rest)(_a, ["className", "classPrefix", "value"]);
|
19
|
+
var _a = this.props, className = _a.className, ns = _a.classPrefix, value = _a.value, env = _a.env, rest = (0, tslib_1.__rest)(_a, ["className", "classPrefix", "value", "env"]);
|
20
20
|
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(ns + "ColorControl", className) },
|
21
21
|
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("div", null, "...") },
|
22
|
-
react_1.default.createElement(exports.ColorPicker, (0, tslib_1.__assign)({ classPrefix: ns }, rest, { value: value || '' })))));
|
22
|
+
react_1.default.createElement(exports.ColorPicker, (0, tslib_1.__assign)({ classPrefix: ns }, rest, { value: value || '', useMobileUI: env.useMobileUI })))));
|
23
23
|
};
|
24
24
|
ColorControl.defaultProps = {
|
25
25
|
format: 'hex',
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputColor.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,0DAAsC;AACtC,uEAA4B;AAE5B,+BAAmE;AAGtD,QAAA,WAAW,GAAG,eAAK,CAAC,IAAI,CACnC,cAAM,qFAAO,8BAA8B,QAArC,CAAsC,CAC7C,CAAC;AAiDF;IAA0C,6CAGzC;IAHD;QAAA,
|
9
|
+
"mappings": ";;;;AAAA,0DAAsC;AACtC,uEAA4B;AAE5B,+BAAmE;AAGtD,QAAA,WAAW,GAAG,eAAK,CAAC,IAAI,CACnC,cAAM,qFAAO,8BAA8B,QAArC,CAAsC,CAC7C,CAAC;AAiDF;IAA0C,6CAGzC;IAHD;QAAA,qEAsBC;QAdC,WAAK,GAAsB;YACzB,IAAI,EAAE,KAAK;SACZ,CAAC;;IAYJ,CAAC;IAVC,6BAAM,GAAN;QACE,IAAM,KAAoD,IAAI,CAAC,KAAK,EAA7D,SAAS,eAAA,EAAe,EAAE,iBAAA,EAAE,KAAK,WAAA,EAAE,GAAG,SAAA,EAAK,IAAI,2BAAhD,4CAAiD,CAAa,CAAC;QACrE,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,oBAAE,EAAI,EAAE,iBAAc,EAAE,SAAS,CAAC;YAChD,8BAAC,gBAAQ,IAAC,QAAQ,EAAE,iDAAc;gBAChC,8BAAC,mBAAW,0BAAC,WAAW,EAAE,EAAE,IAAM,IAAI,IAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,IAAG,CAClF,CACP,CACP,CAAC;IACJ,CAAC;IAjBM,yBAAY,GAAwB;QACzC,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,IAAI;KAChB,CAAC;IAeJ,mBAAC;CAAA,AAtBD,CAA0C,eAAK,CAAC,aAAa,GAsB5D;kBAtBoB,YAAY;AA2BjC;IAA0C,qDAAY;IAAtD;;IAAwD,CAAC;IAA5C,oBAAoB;QAHhC,IAAA,eAAQ,EAAC;YACR,IAAI,EAAE,aAAa;SACpB,CAAC;OACW,oBAAoB,CAAwB;IAAD,2BAAC;CAAA,AAAzD,CAA0C,YAAY,GAAG;AAA5C,oDAAoB",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React, {Suspense} from 'react';\nimport cx from 'classnames';\n\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport type {PresetColor} from '../../components/ColorPicker';\n\nexport const ColorPicker = React.lazy(\n () => import('../../components/ColorPicker')\n);\n\n/**\n * Color 颜色选择框\n * 文档:https://baidu.gitee.io/amis/docs/components/form/color\n */\nexport interface InputColorControlSchema extends FormBaseControl {\n /**\n * 指定为颜色选择框\n */\n type: 'input-color';\n\n /**\n * 是否显示清除按钮\n */\n clearable?: boolean;\n\n /**\n * 颜色格式\n */\n format?: 'hex' | 'rgb' | 'rgba' | 'hsl';\n\n /**\n * 选中颜色后是否关闭弹出层。\n */\n closeOnSelect?: boolean;\n\n /**\n * 预设颜色,用户可以直接从预设中选。\n */\n presetColors?: Array<PresetColor>;\n\n /**\n * 是否允许用户输入颜色。\n */\n allowCustomColor?: boolean;\n}\n\nexport interface ColorProps\n extends FormControlProps,\n Omit<\n InputColorControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {}\n\nexport interface ColorControlState {\n open: boolean;\n}\n\nexport default class ColorControl extends React.PureComponent<\n ColorProps,\n ColorControlState\n> {\n static defaultProps: Partial<ColorProps> = {\n format: 'hex',\n clearable: true\n };\n state: ColorControlState = {\n open: false\n };\n\n render() {\n const {className, classPrefix: ns, value, ...rest} = this.props;\n
|
11
|
+
"import React, {Suspense} from 'react';\nimport cx from 'classnames';\n\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport type {PresetColor} from '../../components/ColorPicker';\n\nexport const ColorPicker = React.lazy(\n () => import('../../components/ColorPicker')\n);\n\n/**\n * Color 颜色选择框\n * 文档:https://baidu.gitee.io/amis/docs/components/form/color\n */\nexport interface InputColorControlSchema extends FormBaseControl {\n /**\n * 指定为颜色选择框\n */\n type: 'input-color';\n\n /**\n * 是否显示清除按钮\n */\n clearable?: boolean;\n\n /**\n * 颜色格式\n */\n format?: 'hex' | 'rgb' | 'rgba' | 'hsl';\n\n /**\n * 选中颜色后是否关闭弹出层。\n */\n closeOnSelect?: boolean;\n\n /**\n * 预设颜色,用户可以直接从预设中选。\n */\n presetColors?: Array<PresetColor>;\n\n /**\n * 是否允许用户输入颜色。\n */\n allowCustomColor?: boolean;\n}\n\nexport interface ColorProps\n extends FormControlProps,\n Omit<\n InputColorControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {}\n\nexport interface ColorControlState {\n open: boolean;\n}\n\nexport default class ColorControl extends React.PureComponent<\n ColorProps,\n ColorControlState\n> {\n static defaultProps: Partial<ColorProps> = {\n format: 'hex',\n clearable: true\n };\n state: ColorControlState = {\n open: false\n };\n\n render() {\n const {className, classPrefix: ns, value, env, ...rest} = this.props;\n return (\n <div className={cx(`${ns}ColorControl`, className)}>\n <Suspense fallback={<div>...</div>}>\n <ColorPicker classPrefix={ns} {...rest} value={value || ''} useMobileUI={env.useMobileUI}/>\n </Suspense>\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-color'\n})\nexport class ColorControlRenderer extends ColorControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -88,12 +88,12 @@ var DateControl = /** @class */ (function (_super) {
|
|
88
88
|
onAction && onAction(null, scheduleAction || defaultscheduleAction, (0, helper_1.createObject)(data, scheduleData));
|
89
89
|
};
|
90
90
|
DateControl.prototype.render = function () {
|
91
|
-
var _a = this.props, className = _a.className, defaultValue = _a.defaultValue, defaultData = _a.defaultData, cx = _a.classnames, minDate = _a.minDate, maxDate = _a.maxDate, type = _a.type, format = _a.format, timeFormat = _a.timeFormat, valueFormat = _a.valueFormat, largeMode = _a.largeMode, render = _a.render, rest = (0, tslib_1.__rest)(_a, ["className", "defaultValue", "defaultData", "classnames", "minDate", "maxDate", "type", "format", "timeFormat", "valueFormat", "largeMode", "render"]);
|
91
|
+
var _a = this.props, className = _a.className, defaultValue = _a.defaultValue, defaultData = _a.defaultData, cx = _a.classnames, minDate = _a.minDate, maxDate = _a.maxDate, type = _a.type, format = _a.format, timeFormat = _a.timeFormat, valueFormat = _a.valueFormat, env = _a.env, largeMode = _a.largeMode, render = _a.render, rest = (0, tslib_1.__rest)(_a, ["className", "defaultValue", "defaultData", "classnames", "minDate", "maxDate", "type", "format", "timeFormat", "valueFormat", "env", "largeMode", "render"]);
|
92
92
|
if (type === 'time' && timeFormat) {
|
93
93
|
format = timeFormat;
|
94
94
|
}
|
95
95
|
return (react_1.default.createElement("div", { className: cx("DateControl", className) },
|
96
|
-
react_1.default.createElement(DatePicker_1.default, (0, tslib_1.__assign)({}, rest, { timeFormat: timeFormat, format: valueFormat || format }, this.state, { classnames: cx, schedules: this.state.schedules, largeMode: largeMode, onScheduleClick: this.onScheduleClick.bind(this) }))));
|
96
|
+
react_1.default.createElement(DatePicker_1.default, (0, tslib_1.__assign)({}, rest, { timeFormat: timeFormat, format: valueFormat || format }, this.state, { classnames: cx, useMobileUI: env.useMobileUI, schedules: this.state.schedules, largeMode: largeMode, onScheduleClick: this.onScheduleClick.bind(this) }))));
|
97
97
|
};
|
98
98
|
DateControl.defaultProps = {
|
99
99
|
format: 'X',
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputDate.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport cx from 'classnames';\nimport {filterDate, isPureVariable, resolveVariableAndFilter} from '../../utils/tpl-builtin';\nimport moment from 'moment';\nimport 'moment/locale/zh-cn';\nimport DatePicker from '../../components/DatePicker';\nimport {SchemaObject} from '../../Schema';\nimport {createObject, anyChanged} from '../../utils/helper';\n\nexport interface InputDateBaseControlSchema extends FormBaseControl {\n /**\n * 指定为日期选择控件\n */\n type:\n | 'input-date'\n | 'input-datetime'\n | 'input-time'\n | 'input-month'\n | 'input-quarter'\n | 'input-year';\n\n /**\n * 是否显示清除按钮\n */\n clearable?: boolean;\n\n /**\n * 日期存储格式\n */\n format?: string;\n\n /**\n * 日期展示格式\n */\n inputFormat?: string;\n\n /**\n * 设定是否存储 utc 时间。\n */\n utc?: boolean;\n\n /**\n * 是否为内联模式?\n */\n emebed?: boolean;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n}\n\n/**\n * Date日期选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/date\n */\nexport interface DateControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为日期选择控件\n */\n type: 'input-date';\n\n /**\n * 日期存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 日期展示格式\n * @default YYYY-MM-DD\n */\n inputFormat?: string;\n\n /**\n * 点选日期后是否关闭弹窗\n */\n closeOnSelect?: boolean;\n\n /**\n * 限制最小日期\n */\n minDate?: string;\n\n /**\n * 限制最大日期\n */\n maxDate?: string;\n\n /**\n * 日程\n */\n schedules?: Array<{\n startTime: Date,\n endTime: Date,\n content: any,\n className?: string\n }> | string;\n /**\n * 日程显示颜色自定义\n */\n scheduleClassNames?: Array<string>;\n /**\n * 日程点击展示\n */\n scheduleAction?: SchemaObject;\n}\n\n/**\n * Datetime日期时间选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/datetime\n */\nexport interface DateTimeControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为日期时间选择控件\n */\n type: 'input-datetime';\n\n /**\n * 日期存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 日期展示格式\n * @default YYYY-MM-DD HH:mm\n */\n inputFormat?: string;\n\n /**\n * 时间的格式。\n *\n * @default HH:mm\n */\n timeFormat?: string;\n\n /**\n * 限制最小日期\n */\n minDate?: string;\n\n /**\n * 限制最大日期\n */\n maxDate?: string;\n\n /**\n * 不记得了\n */\n timeConstraints?: any;\n}\n\n/**\n * Time 时间选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/time\n */\nexport interface TimeControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为日期时间选择控件\n */\n type: 'input-time';\n\n /**\n * 日期存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 日期展示格式\n * @default YYYY-MM-DD HH:mm\n */\n inputFormat?: string;\n\n /**\n * 时间的格式。\n *\n * @default HH:mm\n */\n timeFormat?: string;\n\n /**\n * 不记得了\n */\n timeConstraints?: any;\n}\n\n/**\n * Month 月份选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/Month\n */\nexport interface MonthControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为月份时间选择控件\n */\n type: 'input-month';\n\n /**\n * 月份存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 月份展示格式\n * @default YYYY-MM\n */\n inputFormat?: string;\n}\n\n/**\n * 季度选择控件\n */\nexport interface QuarterControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为月份时间选择控件\n */\n type: 'input-quarter';\n\n /**\n * 月份存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 月份展示格式\n * @default YYYY-MM\n */\n inputFormat?: string;\n}\n\n/**\n * 年份选择控件\n */\nexport interface YearControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为月份时间选择控件\n */\n type: 'input-year';\n\n /**\n * 月份存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 月份展示格式\n * @default YYYY-MM\n */\n inputFormat?: string;\n}\n\nexport interface DateProps extends FormControlProps {\n inputFormat?: string;\n timeFormat?: string;\n format?: string;\n valueFormat?: string;\n timeConstraints?: {\n hours?: {\n min: number;\n max: number;\n step: number;\n };\n minutes?: {\n min: number;\n max: number;\n step: number;\n };\n seconds: {\n min: number;\n max: number;\n step: number;\n };\n };\n closeOnSelect?: boolean;\n disabled: boolean;\n iconClassName?: string;\n utc?: boolean; // 设定是否存储 utc 时间。\n minDate?: string;\n maxDate?: string;\n}\n\ninterface DateControlState {\n minDate?: moment.Moment;\n maxDate?: moment.Moment;\n schedules?: Array<{\n startTime: Date,\n endTime: Date,\n content: any,\n className?: string\n }>;\n}\n\nexport default class DateControl extends React.PureComponent<\n DateProps,\n DateControlState\n> {\n static defaultProps = {\n format: 'X',\n viewMode: 'days',\n inputFormat: 'YYYY-MM-DD',\n timeConstraints: {\n minutes: {\n step: 1\n }\n },\n clearable: true\n };\n\n constructor(props: DateProps) {\n super(props);\n\n const {\n minDate,\n maxDate,\n value,\n defaultValue,\n setPrinstineValue,\n data,\n format,\n utc\n } = props;\n\n if (defaultValue && value === defaultValue) {\n const date = filterDate(defaultValue, data, format);\n setPrinstineValue((utc ? moment.utc(date) : date).format(format));\n }\n\n let schedulesData = props.schedules;\n if (typeof schedulesData === 'string') {\n const resolved = resolveVariableAndFilter(schedulesData, data, '| raw');\n if (Array.isArray(resolved)) {\n schedulesData = resolved;\n }\n }\n\n this.state = {\n minDate: minDate ? filterDate(minDate, data, format) : undefined,\n maxDate: maxDate ? filterDate(maxDate, data, format) : undefined,\n schedules: schedulesData\n };\n }\n\n componentDidUpdate(prevProps: DateProps) {\n const props = this.props;\n\n if (prevProps.defaultValue !== props.defaultValue) {\n const date = filterDate(props.defaultValue, props.data, props.format);\n props.setPrinstineValue(\n (props.utc ? moment.utc(date) : date).format(props.format)\n );\n }\n\n if (\n prevProps.minDate !== props.minDate ||\n prevProps.maxDate !== props.maxDate ||\n prevProps.data !== props.data\n ) {\n this.setState({\n minDate: props.minDate\n ? filterDate(props.minDate, props.data, this.props.format)\n : undefined,\n maxDate: props.maxDate\n ? filterDate(props.maxDate, props.data, this.props.format)\n : undefined\n });\n }\n\n if (anyChanged(['schedules', 'data'], prevProps, props)\n && (typeof props.schedules === 'string' && isPureVariable(props.schedules))\n ) {\n const schedulesData = resolveVariableAndFilter(props.schedules, props.data, '| raw');\n const preSchedulesData = resolveVariableAndFilter(prevProps.schedules, prevProps.data, '| raw');\n if (Array.isArray(schedulesData) && preSchedulesData !== schedulesData) {\n this.setState({\n schedules: schedulesData\n })\n }\n }\n }\n\n // 日程点击事件\n onScheduleClick(scheduleData: any) {\n const {scheduleAction, onAction, data, translate: __} = this.props;\n const defaultscheduleAction = {\n actionType: 'dialog',\n dialog: {\n title: __('Schedule'),\n actions: [],\n body: {\n type: 'table',\n columns: [\n {\n name: 'time',\n label: __('Time')\n },\n {\n name: 'content',\n label: __('Content')\n }\n ],\n data: '${scheduleData}'\n }\n }\n };\n\n onAction && onAction(null, scheduleAction || defaultscheduleAction, createObject(data, scheduleData));\n\n }\n\n render() {\n let {\n className,\n defaultValue,\n defaultData,\n classnames: cx,\n minDate,\n maxDate,\n type,\n format,\n timeFormat,\n valueFormat,\n largeMode,\n render,\n ...rest\n } = this.props;\n\n if (type === 'time' && timeFormat) {\n format = timeFormat;\n }\n\n return (\n <div className={cx(`DateControl`, className)}>\n <DatePicker\n {...rest}\n timeFormat={timeFormat}\n format={valueFormat || format}\n {...this.state}\n classnames={cx}\n schedules={this.state.schedules}\n largeMode={largeMode}\n onScheduleClick={this.onScheduleClick.bind(this)}\n />\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-date',\n weight: -150\n})\nexport class DateControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Date.placeholder',\n dateFormat: 'YYYY-MM-DD',\n timeFormat: '',\n strictMode: false\n };\n}\n\n@FormItem({\n type: 'input-datetime'\n})\nexport class DatetimeControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'DateTime.placeholder',\n inputFormat: 'YYYY-MM-DD HH:mm:ss',\n dateFormat: 'LL',\n timeFormat: 'HH:mm:ss',\n closeOnSelect: false,\n strictMode: false\n };\n}\n\n@FormItem({\n type: 'input-time'\n})\nexport class TimeControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Time.placeholder',\n inputFormat: 'HH:mm',\n dateFormat: '',\n timeFormat: 'HH:mm',\n viewMode: 'time',\n closeOnSelect: false\n };\n}\n\n@FormItem({\n type: 'input-month'\n})\nexport class MonthControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Month.placeholder',\n inputFormat: 'YYYY-MM',\n dateFormat: 'MM',\n timeFormat: '',\n viewMode: 'months',\n closeOnSelect: true\n };\n}\n\n@FormItem({\n type: 'input-quarter'\n})\nexport class QuarterControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Quarter.placeholder',\n inputFormat: 'YYYY [Q]Q',\n dateFormat: 'YYYY [Q]Q',\n timeFormat: '',\n viewMode: 'quarters',\n closeOnSelect: true\n };\n}\n\n@FormItem({\n type: 'input-year'\n})\nexport class YearControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Year.placeholder',\n inputFormat: 'YYYY',\n dateFormat: 'YYYY',\n timeFormat: '',\n viewMode: 'years',\n closeOnSelect: true\n };\n}\n"
|
11
|
+
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport cx from 'classnames';\nimport {filterDate, isPureVariable, resolveVariableAndFilter} from '../../utils/tpl-builtin';\nimport moment from 'moment';\nimport 'moment/locale/zh-cn';\nimport DatePicker from '../../components/DatePicker';\nimport {SchemaObject} from '../../Schema';\nimport {createObject, anyChanged} from '../../utils/helper';\n\nexport interface InputDateBaseControlSchema extends FormBaseControl {\n /**\n * 指定为日期选择控件\n */\n type:\n | 'input-date'\n | 'input-datetime'\n | 'input-time'\n | 'input-month'\n | 'input-quarter'\n | 'input-year';\n\n /**\n * 是否显示清除按钮\n */\n clearable?: boolean;\n\n /**\n * 日期存储格式\n */\n format?: string;\n\n /**\n * 日期展示格式\n */\n inputFormat?: string;\n\n /**\n * 设定是否存储 utc 时间。\n */\n utc?: boolean;\n\n /**\n * 是否为内联模式?\n */\n emebed?: boolean;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n}\n\n/**\n * Date日期选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/date\n */\nexport interface DateControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为日期选择控件\n */\n type: 'input-date';\n\n /**\n * 日期存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 日期展示格式\n * @default YYYY-MM-DD\n */\n inputFormat?: string;\n\n /**\n * 点选日期后是否关闭弹窗\n */\n closeOnSelect?: boolean;\n\n /**\n * 限制最小日期\n */\n minDate?: string;\n\n /**\n * 限制最大日期\n */\n maxDate?: string;\n\n /**\n * 日程\n */\n schedules?: Array<{\n startTime: Date,\n endTime: Date,\n content: any,\n className?: string\n }> | string;\n /**\n * 日程显示颜色自定义\n */\n scheduleClassNames?: Array<string>;\n /**\n * 日程点击展示\n */\n scheduleAction?: SchemaObject;\n}\n\n/**\n * Datetime日期时间选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/datetime\n */\nexport interface DateTimeControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为日期时间选择控件\n */\n type: 'input-datetime';\n\n /**\n * 日期存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 日期展示格式\n * @default YYYY-MM-DD HH:mm\n */\n inputFormat?: string;\n\n /**\n * 时间的格式。\n *\n * @default HH:mm\n */\n timeFormat?: string;\n\n /**\n * 限制最小日期\n */\n minDate?: string;\n\n /**\n * 限制最大日期\n */\n maxDate?: string;\n\n /**\n * 不记得了\n */\n timeConstraints?: any;\n}\n\n/**\n * Time 时间选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/time\n */\nexport interface TimeControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为日期时间选择控件\n */\n type: 'input-time';\n\n /**\n * 日期存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 日期展示格式\n * @default YYYY-MM-DD HH:mm\n */\n inputFormat?: string;\n\n /**\n * 时间的格式。\n *\n * @default HH:mm\n */\n timeFormat?: string;\n\n /**\n * 不记得了\n */\n timeConstraints?: any;\n}\n\n/**\n * Month 月份选择控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/Month\n */\nexport interface MonthControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为月份时间选择控件\n */\n type: 'input-month';\n\n /**\n * 月份存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 月份展示格式\n * @default YYYY-MM\n */\n inputFormat?: string;\n}\n\n/**\n * 季度选择控件\n */\nexport interface QuarterControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为月份时间选择控件\n */\n type: 'input-quarter';\n\n /**\n * 月份存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 月份展示格式\n * @default YYYY-MM\n */\n inputFormat?: string;\n}\n\n/**\n * 年份选择控件\n */\nexport interface YearControlSchema extends InputDateBaseControlSchema {\n /**\n * 指定为月份时间选择控件\n */\n type: 'input-year';\n\n /**\n * 月份存储格式\n * @default X\n */\n format?: string;\n\n /**\n * 月份展示格式\n * @default YYYY-MM\n */\n inputFormat?: string;\n}\n\nexport interface DateProps extends FormControlProps {\n inputFormat?: string;\n timeFormat?: string;\n format?: string;\n valueFormat?: string;\n timeConstraints?: {\n hours?: {\n min: number;\n max: number;\n step: number;\n };\n minutes?: {\n min: number;\n max: number;\n step: number;\n };\n seconds: {\n min: number;\n max: number;\n step: number;\n };\n };\n closeOnSelect?: boolean;\n disabled: boolean;\n iconClassName?: string;\n utc?: boolean; // 设定是否存储 utc 时间。\n minDate?: string;\n maxDate?: string;\n}\n\ninterface DateControlState {\n minDate?: moment.Moment;\n maxDate?: moment.Moment;\n schedules?: Array<{\n startTime: Date,\n endTime: Date,\n content: any,\n className?: string\n }>;\n}\n\nexport default class DateControl extends React.PureComponent<\n DateProps,\n DateControlState\n> {\n static defaultProps = {\n format: 'X',\n viewMode: 'days',\n inputFormat: 'YYYY-MM-DD',\n timeConstraints: {\n minutes: {\n step: 1\n }\n },\n clearable: true\n };\n\n constructor(props: DateProps) {\n super(props);\n\n const {\n minDate,\n maxDate,\n value,\n defaultValue,\n setPrinstineValue,\n data,\n format,\n utc\n } = props;\n\n if (defaultValue && value === defaultValue) {\n const date = filterDate(defaultValue, data, format);\n setPrinstineValue((utc ? moment.utc(date) : date).format(format));\n }\n\n let schedulesData = props.schedules;\n if (typeof schedulesData === 'string') {\n const resolved = resolveVariableAndFilter(schedulesData, data, '| raw');\n if (Array.isArray(resolved)) {\n schedulesData = resolved;\n }\n }\n\n this.state = {\n minDate: minDate ? filterDate(minDate, data, format) : undefined,\n maxDate: maxDate ? filterDate(maxDate, data, format) : undefined,\n schedules: schedulesData\n };\n }\n\n componentDidUpdate(prevProps: DateProps) {\n const props = this.props;\n\n if (prevProps.defaultValue !== props.defaultValue) {\n const date = filterDate(props.defaultValue, props.data, props.format);\n props.setPrinstineValue(\n (props.utc ? moment.utc(date) : date).format(props.format)\n );\n }\n\n if (\n prevProps.minDate !== props.minDate ||\n prevProps.maxDate !== props.maxDate ||\n prevProps.data !== props.data\n ) {\n this.setState({\n minDate: props.minDate\n ? filterDate(props.minDate, props.data, this.props.format)\n : undefined,\n maxDate: props.maxDate\n ? filterDate(props.maxDate, props.data, this.props.format)\n : undefined\n });\n }\n\n if (anyChanged(['schedules', 'data'], prevProps, props)\n && (typeof props.schedules === 'string' && isPureVariable(props.schedules))\n ) {\n const schedulesData = resolveVariableAndFilter(props.schedules, props.data, '| raw');\n const preSchedulesData = resolveVariableAndFilter(prevProps.schedules, prevProps.data, '| raw');\n if (Array.isArray(schedulesData) && preSchedulesData !== schedulesData) {\n this.setState({\n schedules: schedulesData\n })\n }\n }\n }\n\n // 日程点击事件\n onScheduleClick(scheduleData: any) {\n const {scheduleAction, onAction, data, translate: __} = this.props;\n const defaultscheduleAction = {\n actionType: 'dialog',\n dialog: {\n title: __('Schedule'),\n actions: [],\n body: {\n type: 'table',\n columns: [\n {\n name: 'time',\n label: __('Time')\n },\n {\n name: 'content',\n label: __('Content')\n }\n ],\n data: '${scheduleData}'\n }\n }\n };\n\n onAction && onAction(null, scheduleAction || defaultscheduleAction, createObject(data, scheduleData));\n\n }\n\n render() {\n let {\n className,\n defaultValue,\n defaultData,\n classnames: cx,\n minDate,\n maxDate,\n type,\n format,\n timeFormat,\n valueFormat,\n env,\n largeMode,\n render,\n ...rest\n } = this.props;\n\n if (type === 'time' && timeFormat) {\n format = timeFormat;\n }\n\n return (\n <div className={cx(`DateControl`, className)}>\n <DatePicker\n {...rest}\n timeFormat={timeFormat}\n format={valueFormat || format}\n {...this.state}\n classnames={cx}\n useMobileUI={env.useMobileUI}\n schedules={this.state.schedules}\n largeMode={largeMode}\n onScheduleClick={this.onScheduleClick.bind(this)}\n />\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-date',\n weight: -150\n})\nexport class DateControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Date.placeholder',\n dateFormat: 'YYYY-MM-DD',\n timeFormat: '',\n strictMode: false\n };\n}\n\n@FormItem({\n type: 'input-datetime'\n})\nexport class DatetimeControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'DateTime.placeholder',\n inputFormat: 'YYYY-MM-DD HH:mm:ss',\n dateFormat: 'LL',\n timeFormat: 'HH:mm:ss',\n closeOnSelect: false,\n strictMode: false\n };\n}\n\n@FormItem({\n type: 'input-time'\n})\nexport class TimeControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Time.placeholder',\n inputFormat: 'HH:mm',\n dateFormat: '',\n timeFormat: 'HH:mm',\n viewMode: 'time',\n closeOnSelect: false\n };\n}\n\n@FormItem({\n type: 'input-month'\n})\nexport class MonthControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Month.placeholder',\n inputFormat: 'YYYY-MM',\n dateFormat: 'MM',\n timeFormat: '',\n viewMode: 'months',\n closeOnSelect: true\n };\n}\n\n@FormItem({\n type: 'input-quarter'\n})\nexport class QuarterControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Quarter.placeholder',\n inputFormat: 'YYYY [Q]Q',\n dateFormat: 'YYYY [Q]Q',\n timeFormat: '',\n viewMode: 'quarters',\n closeOnSelect: true\n };\n}\n\n@FormItem({\n type: 'input-year'\n})\nexport class YearControlRenderer extends DateControl {\n static defaultProps = {\n ...DateControl.defaultProps,\n placeholder: 'Year.placeholder',\n inputFormat: 'YYYY',\n dateFormat: 'YYYY',\n timeFormat: '',\n viewMode: 'years',\n closeOnSelect: true\n };\n}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -39,9 +39,9 @@ var DateRangeControl = /** @class */ (function (_super) {
|
|
39
39
|
}
|
40
40
|
};
|
41
41
|
DateRangeControl.prototype.render = function () {
|
42
|
-
var _a = this.props, className = _a.className, ns = _a.classPrefix, defaultValue = _a.defaultValue, defaultData = _a.defaultData, minDate = _a.minDate, maxDate = _a.maxDate, minDuration = _a.minDuration, maxDuration = _a.maxDuration, data = _a.data, format = _a.format, rest = (0, tslib_1.__rest)(_a, ["className", "classPrefix", "defaultValue", "defaultData", "minDate", "maxDate", "minDuration", "maxDuration", "data", "format"]);
|
42
|
+
var _a = this.props, className = _a.className, ns = _a.classPrefix, defaultValue = _a.defaultValue, defaultData = _a.defaultData, minDate = _a.minDate, maxDate = _a.maxDate, minDuration = _a.minDuration, maxDuration = _a.maxDuration, data = _a.data, format = _a.format, env = _a.env, rest = (0, tslib_1.__rest)(_a, ["className", "classPrefix", "defaultValue", "defaultData", "minDate", "maxDate", "minDuration", "maxDuration", "data", "format", "env"]);
|
43
43
|
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(ns + "DateRangeControl", className) },
|
44
|
-
react_1.default.createElement(DateRangePicker_1.default, (0, tslib_1.__assign)({}, rest, { classPrefix: ns, data: data, format: format, minDate: minDate ? (0, tpl_builtin_1.filterDate)(minDate, data, format) : undefined, maxDate: maxDate ? (0, tpl_builtin_1.filterDate)(maxDate, data, format) : undefined, minDuration: minDuration ? (0, tpl_builtin_1.parseDuration)(minDuration) : undefined, maxDuration: maxDuration ? (0, tpl_builtin_1.parseDuration)(maxDuration) : undefined }))));
|
44
|
+
react_1.default.createElement(DateRangePicker_1.default, (0, tslib_1.__assign)({}, rest, { classPrefix: ns, data: data, format: format, minDate: minDate ? (0, tpl_builtin_1.filterDate)(minDate, data, format) : undefined, maxDate: maxDate ? (0, tpl_builtin_1.filterDate)(maxDate, data, format) : undefined, minDuration: minDuration ? (0, tpl_builtin_1.parseDuration)(minDuration) : undefined, maxDuration: maxDuration ? (0, tpl_builtin_1.parseDuration)(maxDuration) : undefined, useMobileUI: env.useMobileUI }))));
|
45
45
|
};
|
46
46
|
DateRangeControl.defaultProps = {
|
47
47
|
format: 'X',
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputDateRange.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,+BAAmE;AACnE,uEAA4B;AAC5B,uDAAkE;AAClE,+BAA6B;AAC7B,+FAE0C;AAgF1C;IAA8C,iDAA+B;IAO3E,0BAAY,KAAqB;QAAjC,YACE,kBAAM,KAAK,CAAC,SA+Bb;QA5BG,IAAA,YAAY,GAQV,KAAK,aARK,EACZ,iBAAiB,GAOf,KAAK,kBAPU,EACjB,SAAS,GAMP,KAAK,UANE,EACT,MAAM,GAKJ,KAAK,OALD,EACN,IAAI,GAIF,KAAK,KAJH,EACJ,KAAK,GAGH,KAAK,MAHF,EACL,UAAU,GAER,KAAK,WAFG,EACV,GAAG,GACD,KAAK,IADJ,CACK;QAEV,IAAI,YAAY,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1C,IAAI,GAAG,GACL,OAAO,YAAY,KAAK,QAAQ;gBAC9B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC;YACnB,iBAAiB,CACf,iCAAmB,CAAC,WAAW,CAC7B;gBACE,SAAS,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;gBAC3C,OAAO,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;aAC1C,EACD,MAAM,EACN,UAAU,EACV,SAAS,EACT,GAAG,CACJ,CACF,CAAC;SACH;;IACH,CAAC;IAED,6CAAkB,GAAlB,UAAmB,SAAyB;QACpC,IAAA,KAQF,IAAI,CAAC,KAAK,EAPZ,YAAY,kBAAA,EACZ,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,iBAAiB,uBAAA,EACjB,IAAI,UAAA,EACJ,GAAG,SAAA,EACH,MAAM,YACM,CAAC;QAEf,IAAI,SAAS,CAAC,YAAY,KAAK,YAAY,EAAE;YAC3C,IAAI,GAAG,GACL,OAAO,YAAY,KAAK,QAAQ;gBAC9B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC;YAEnB,iBAAiB,CACf,GAAG;gBACD,CAAC,CAAC,iCAAmB,CAAC,WAAW,CAC7B;oBACE,SAAS,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;oBAC3C,OAAO,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;iBAC1C,EACD,MAAM,EACN,UAAU,EACV,SAAS,EACT,GAAG,CACJ;gBACH,CAAC,CAAC,SAAS,CACd,CAAC;SACH;IACH,CAAC;IAED,iCAAM,GAAN;QACE,IAAM,
|
9
|
+
"mappings": ";;;;AAAA,6DAA0B;AAC1B,+BAAmE;AACnE,uEAA4B;AAC5B,uDAAkE;AAClE,+BAA6B;AAC7B,+FAE0C;AAgF1C;IAA8C,iDAA+B;IAO3E,0BAAY,KAAqB;QAAjC,YACE,kBAAM,KAAK,CAAC,SA+Bb;QA5BG,IAAA,YAAY,GAQV,KAAK,aARK,EACZ,iBAAiB,GAOf,KAAK,kBAPU,EACjB,SAAS,GAMP,KAAK,UANE,EACT,MAAM,GAKJ,KAAK,OALD,EACN,IAAI,GAIF,KAAK,KAJH,EACJ,KAAK,GAGH,KAAK,MAHF,EACL,UAAU,GAER,KAAK,WAFG,EACV,GAAG,GACD,KAAK,IADJ,CACK;QAEV,IAAI,YAAY,IAAI,KAAK,KAAK,YAAY,EAAE;YAC1C,IAAI,GAAG,GACL,OAAO,YAAY,KAAK,QAAQ;gBAC9B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC;YACnB,iBAAiB,CACf,iCAAmB,CAAC,WAAW,CAC7B;gBACE,SAAS,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;gBAC3C,OAAO,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;aAC1C,EACD,MAAM,EACN,UAAU,EACV,SAAS,EACT,GAAG,CACJ,CACF,CAAC;SACH;;IACH,CAAC;IAED,6CAAkB,GAAlB,UAAmB,SAAyB;QACpC,IAAA,KAQF,IAAI,CAAC,KAAK,EAPZ,YAAY,kBAAA,EACZ,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,iBAAiB,uBAAA,EACjB,IAAI,UAAA,EACJ,GAAG,SAAA,EACH,MAAM,YACM,CAAC;QAEf,IAAI,SAAS,CAAC,YAAY,KAAK,YAAY,EAAE;YAC3C,IAAI,GAAG,GACL,OAAO,YAAY,KAAK,QAAQ;gBAC9B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC;YAEnB,iBAAiB,CACf,GAAG;gBACD,CAAC,CAAC,iCAAmB,CAAC,WAAW,CAC7B;oBACE,SAAS,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;oBAC3C,OAAO,EAAE,IAAA,wBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;iBAC1C,EACD,MAAM,EACN,UAAU,EACV,SAAS,EACT,GAAG,CACJ;gBACH,CAAC,CAAC,SAAS,CACd,CAAC;SACH;IACH,CAAC;IAED,iCAAM,GAAN;QACE,IAAM,KAaF,IAAI,CAAC,KAAK,EAZZ,SAAS,eAAA,EACI,EAAE,iBAAA,EACf,YAAY,kBAAA,EACZ,WAAW,iBAAA,EACX,OAAO,aAAA,EACP,OAAO,aAAA,EACP,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,IAAI,UAAA,EACJ,MAAM,YAAA,EACN,GAAG,SAAA,EACA,IAAI,2BAZH,wIAaL,CAAa,CAAC;QAEf,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,oBAAE,EAAI,EAAE,qBAAkB,EAAE,SAAS,CAAC;YACpD,8BAAC,yBAAe,4BACV,IAAI,IACR,WAAW,EAAE,EAAE,EACf,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAU,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAChE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAU,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAChE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,IAAA,2BAAa,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,EACjE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,IAAA,2BAAa,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,EACjE,WAAW,EAAE,GAAG,CAAC,WAAW,IAC5B,CACE,CACP,CAAC;IACJ,CAAC;IAzGM,6BAAY,GAAG;QACpB,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,GAAG;KACf,CAAC;IAsGJ,uBAAC;CAAA,AA3GD,CAA8C,eAAK,CAAC,SAAS,GA2G5D;kBA3GoB,gBAAgB;AAgHrC;IAA8C,yDAAgB;IAA9D;;IAKA,CAAC;IAJQ,qCAAY,mDACd,gBAAgB,CAAC,YAAY,KAChC,UAAU,EAAE,EAAE,IACd;IAJS,wBAAwB;QAHpC,IAAA,eAAQ,EAAC;YACR,IAAI,EAAE,kBAAkB;SACzB,CAAC;OACW,wBAAwB,CAKpC;IAAD,+BAAC;CAAA,AALD,CAA8C,gBAAgB,GAK7D;AALY,4DAAwB;AAWrC;IAAkD,6DAAgB;IAAlE;;IAMA,CAAC;IALQ,yCAAY,mDACd,gBAAgB,CAAC,YAAY,KAChC,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,kBAAkB,IAC/B;IALS,4BAA4B;QAJxC,IAAA,eAAQ,EAAC;YACR,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,KAAK;SACnB,CAAC;OACW,4BAA4B,CAMxC;IAAD,mCAAC;CAAA,AAND,CAAkD,gBAAgB,GAMjE;AANY,oEAA4B;AAYzC;IAA8C,yDAAgB;IAA9D;;IASA,CAAC;IARQ,qCAAY,mDACd,gBAAgB,CAAC,YAAY,KAChC,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,EAAE,IACV;IARS,wBAAwB;QAJpC,IAAA,eAAQ,EAAC;YACR,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,KAAK;SACnB,CAAC;OACW,wBAAwB,CASpC;IAAD,+BAAC;CAAA,AATD,CAA8C,gBAAgB,GAS7D;AATY,4DAAwB",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport cx from 'classnames';\nimport {filterDate, parseDuration} from '../../utils/tpl-builtin';\nimport 'moment/locale/zh-cn';\nimport DateRangePicker, {\n DateRangePicker as BaseDateRangePicker\n} from '../../components/DateRangePicker';\n\n/**\n * DateRange 日期范围控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/date-range\n */\nexport interface DateRangeControlSchema extends FormBaseControl {\n /**\n * 指定为日期范围控件\n */\n type: 'input-date-range' | 'input-datetime-range' | 'input-time-range';\n\n /**\n * 分割符, 因为有两个值,开始时间和结束时间,所以要有连接符。默认为英文逗号。\n *\n */\n delimiter?: string;\n\n /**\n * 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.\n */\n format?: string;\n\n /**\n * 默认 `YYYY-MM-DD` 用来配置显示的时间格式。\n */\n inputFormat?: string;\n\n /**\n * 开启后将选中的选项 value 的值用连接符拼接起来,作为当前表单项的值。如: `value1,value2` 否则为 `[value1, value2]`\n */\n joinValues?: boolean;\n\n /**\n * 最大日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n maxDate?: string;\n\n /**\n * 最小日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n minDate?: string;\n\n /**\n * 最大跨度,比如 2days\n */\n maxDuration?: string;\n\n /**\n * 最小跨度,比如 2days\n */\n minDuration?: string;\n\n /**\n * 这里面 value 需要特殊说明一下,因为支持相对值。* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n value?: any;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 开启后变成非弹出模式,即内联模式。\n */\n embed?: boolean;\n}\n\nexport interface DateRangeProps\n extends FormControlProps,\n Omit<\n DateRangeControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n delimiter: string;\n format: string;\n joinValues: boolean;\n}\n\nexport default class DateRangeControl extends React.Component<DateRangeProps> {\n static defaultProps = {\n format: 'X',\n joinValues: true,\n delimiter: ','\n };\n\n constructor(props: DateRangeProps) {\n super(props);\n\n const {\n defaultValue,\n setPrinstineValue,\n delimiter,\n format,\n data,\n value,\n joinValues,\n utc\n } = props;\n\n if (defaultValue && value === defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n setPrinstineValue(\n BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n );\n }\n }\n\n componentDidUpdate(prevProps: DateRangeProps) {\n const {\n defaultValue,\n delimiter,\n joinValues,\n setPrinstineValue,\n data,\n utc,\n format\n } = this.props;\n\n if (prevProps.defaultValue !== defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n\n setPrinstineValue(\n arr\n ? BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n : undefined\n );\n }\n }\n\n render() {\n const {\n className,\n classPrefix: ns,\n defaultValue,\n defaultData,\n minDate,\n maxDate,\n minDuration,\n maxDuration,\n data,\n format,\n ...rest\n } = this.props;\n\n return (\n <div className={cx(`${ns}DateRangeControl`, className)}>\n <DateRangePicker\n {...rest}\n classPrefix={ns}\n data={data}\n format={format}\n minDate={minDate ? filterDate(minDate, data, format) : undefined}\n maxDate={maxDate ? filterDate(maxDate, data, format) : undefined}\n minDuration={minDuration ? parseDuration(minDuration) : undefined}\n maxDuration={maxDuration ? parseDuration(maxDuration) : undefined}\n />\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-date-range'\n})\nexport class DateRangeControlRenderer extends DateRangeControl {\n static defaultProps = {\n ...DateRangeControl.defaultProps,\n timeFormat: ''\n };\n}\n\n@FormItem({\n type: 'input-datetime-range',\n sizeMutable: false\n})\nexport class DateTimeRangeControlRenderer extends DateRangeControl {\n static defaultProps = {\n ...DateRangeControl.defaultProps,\n timeFormat: 'HH:mm',\n inputFormat: 'YYYY-MM-DD HH:mm'\n };\n}\n\n@FormItem({\n type: 'input-time-range',\n sizeMutable: false\n})\nexport class TimeRangeControlRenderer extends DateRangeControl {\n static defaultProps = {\n ...DateRangeControl.defaultProps,\n format: 'HH:mm',\n timeFormat: 'HH:mm',\n inputFormat: 'HH:mm',\n viewMode: 'time',\n ranges: ''\n };\n}\n"
|
11
|
+
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport cx from 'classnames';\nimport {filterDate, parseDuration} from '../../utils/tpl-builtin';\nimport 'moment/locale/zh-cn';\nimport DateRangePicker, {\n DateRangePicker as BaseDateRangePicker\n} from '../../components/DateRangePicker';\n\n/**\n * DateRange 日期范围控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/date-range\n */\nexport interface DateRangeControlSchema extends FormBaseControl {\n /**\n * 指定为日期范围控件\n */\n type: 'input-date-range' | 'input-datetime-range' | 'input-time-range';\n\n /**\n * 分割符, 因为有两个值,开始时间和结束时间,所以要有连接符。默认为英文逗号。\n *\n */\n delimiter?: string;\n\n /**\n * 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.\n */\n format?: string;\n\n /**\n * 默认 `YYYY-MM-DD` 用来配置显示的时间格式。\n */\n inputFormat?: string;\n\n /**\n * 开启后将选中的选项 value 的值用连接符拼接起来,作为当前表单项的值。如: `value1,value2` 否则为 `[value1, value2]`\n */\n joinValues?: boolean;\n\n /**\n * 最大日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n maxDate?: string;\n\n /**\n * 最小日期限制,支持变量 $xxx 来取值,或者用相对值如:* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n minDate?: string;\n\n /**\n * 最大跨度,比如 2days\n */\n maxDuration?: string;\n\n /**\n * 最小跨度,比如 2days\n */\n minDuration?: string;\n\n /**\n * 这里面 value 需要特殊说明一下,因为支持相对值。* `-2mins` 2分钟前\\n * `+2days` 2天后\\n* `-10week` 十周前\\n可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。\n */\n value?: any;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 开启后变成非弹出模式,即内联模式。\n */\n embed?: boolean;\n}\n\nexport interface DateRangeProps\n extends FormControlProps,\n Omit<\n DateRangeControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n delimiter: string;\n format: string;\n joinValues: boolean;\n}\n\nexport default class DateRangeControl extends React.Component<DateRangeProps> {\n static defaultProps = {\n format: 'X',\n joinValues: true,\n delimiter: ','\n };\n\n constructor(props: DateRangeProps) {\n super(props);\n\n const {\n defaultValue,\n setPrinstineValue,\n delimiter,\n format,\n data,\n value,\n joinValues,\n utc\n } = props;\n\n if (defaultValue && value === defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n setPrinstineValue(\n BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n );\n }\n }\n\n componentDidUpdate(prevProps: DateRangeProps) {\n const {\n defaultValue,\n delimiter,\n joinValues,\n setPrinstineValue,\n data,\n utc,\n format\n } = this.props;\n\n if (prevProps.defaultValue !== defaultValue) {\n let arr =\n typeof defaultValue === 'string'\n ? defaultValue.split(delimiter)\n : defaultValue;\n\n setPrinstineValue(\n arr\n ? BaseDateRangePicker.formatValue(\n {\n startDate: filterDate(arr[0], data, format),\n endDate: filterDate(arr[1], data, format)\n },\n format,\n joinValues,\n delimiter,\n utc\n )\n : undefined\n );\n }\n }\n\n render() {\n const {\n className,\n classPrefix: ns,\n defaultValue,\n defaultData,\n minDate,\n maxDate,\n minDuration,\n maxDuration,\n data,\n format,\n env,\n ...rest\n } = this.props;\n\n return (\n <div className={cx(`${ns}DateRangeControl`, className)}>\n <DateRangePicker\n {...rest}\n classPrefix={ns}\n data={data}\n format={format}\n minDate={minDate ? filterDate(minDate, data, format) : undefined}\n maxDate={maxDate ? filterDate(maxDate, data, format) : undefined}\n minDuration={minDuration ? parseDuration(minDuration) : undefined}\n maxDuration={maxDuration ? parseDuration(maxDuration) : undefined}\n useMobileUI={env.useMobileUI}\n />\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-date-range'\n})\nexport class DateRangeControlRenderer extends DateRangeControl {\n static defaultProps = {\n ...DateRangeControl.defaultProps,\n timeFormat: ''\n };\n}\n\n@FormItem({\n type: 'input-datetime-range',\n sizeMutable: false\n})\nexport class DateTimeRangeControlRenderer extends DateRangeControl {\n static defaultProps = {\n ...DateRangeControl.defaultProps,\n timeFormat: 'HH:mm',\n inputFormat: 'YYYY-MM-DD HH:mm'\n };\n}\n\n@FormItem({\n type: 'input-time-range',\n sizeMutable: false\n})\nexport class TimeRangeControlRenderer extends DateRangeControl {\n static defaultProps = {\n ...DateRangeControl.defaultProps,\n format: 'HH:mm',\n timeFormat: 'HH:mm',\n inputFormat: 'HH:mm',\n viewMode: 'time',\n ranges: ''\n };\n}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -374,7 +374,7 @@ var FileControl = /** @class */ (function (_super) {
|
|
374
374
|
data: data
|
375
375
|
}, onProgress)
|
376
376
|
.then(function (ret) {
|
377
|
-
if (ret.status || !ret.data) {
|
377
|
+
if ((ret.status && ret.status !== '0') || !ret.data) {
|
378
378
|
throw new Error(ret.msg || __('File.errorRetry'));
|
379
379
|
}
|
380
380
|
onProgress(1);
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputFile.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport find from 'lodash/find';\nimport isPlainObject from 'lodash/isPlainObject';\n// @ts-ignore\nimport mapLimit from 'async/mapLimit';\nimport ImageControl from './InputImage';\nimport {Payload, ApiObject, ApiString} from '../../types';\nimport {filter} from '../../utils/tpl';\nimport Alert from '../../components/Alert2';\nimport {qsstringify, createObject, guid, isEmpty} from '../../utils/helper';\nimport {buildApi, normalizeApi} from '../../utils/api';\nimport Button from '../../components/Button';\nimport {Icon} from '../../components/icons';\nimport DropZone from 'react-dropzone';\nimport {FileRejection} from 'react-dropzone';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {\n SchemaApi,\n SchemaClassName,\n SchemaTokenizeableString,\n SchemaUrlPath\n} from '../../Schema';\nimport merge from 'lodash/merge';\n\n/**\n * File 文件上传控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/file\n */\nexport interface FileControlSchema extends FormBaseControl {\n /**\n * 指定为文件上传\n */\n type: 'input-file';\n\n /**\n * 上传文件按钮说明\n * @default 请选择文件\n */\n btnLabel?: string;\n\n /**\n * 默认只支持纯文本,要支持其他类型,请配置此属性。建议直接填写文件后缀\n * 如:.txt,.csv\n *\n * 多个类型用逗号隔开。\n *\n * @default text/plain\n */\n accept?: string;\n\n /**\n * 如果上传的文件比较小可以设置此选项来简单的把文件 base64 的值给 form 一起提交,目前不支持多选。\n */\n asBase64?: boolean;\n\n /**\n * 如果不希望 File 组件上传,可以配置 `asBlob` 或者 `asBase64`,采用这种方式后,组件不再自己上传了,而是直接把文件数据作为表单项的值,文件内容会在 Form 表单提交的接口里面一起带上。\n */\n asBlob?: boolean;\n\n /**\n * 是否自动开始上传\n */\n autoUpload?: boolean;\n\n /**\n * 默认 `/api/upload/chunk` 想自己存储时才需要关注。\n */\n chunkApi?: SchemaApi;\n\n /**\n * 分块大小,默认为 5M.\n *\n * @default 5242880\n */\n chunkSize?: number;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 默认显示文件路径的时候会支持直接下载,\n * 可以支持加前缀如:`http://xx.dom/filename=` ,\n * 如果不希望这样,可以把当前配置项设置为 `false`。\n *\n * 1.1.6 版本开始将支持变量 ${xxx} 来自己拼凑个下载地址,并且支持配置成 post.\n */\n downloadUrl?: SchemaApi;\n\n /**\n * 模板下载地址\n */\n templateUrl?: SchemaApi;\n\n /**\n * 默认 `file`, 如果你不想自己存储,则可以忽略此属性。\n * @default file\n */\n fileField?: string;\n\n /**\n * 默认 `/api/upload/finishChunkApi` 想自己存储时才需要关注。\n *\n * @default /api/upload/finishChunkApi\n */\n finishChunkApi?: SchemaApi;\n\n /**\n * 是否隐藏上传按钮\n */\n hideUploadButton?: boolean;\n\n /**\n * 最多的个数\n */\n maxLength?: number;\n\n /**\n * 默认没有限制,当设置后,文件大小大于此值将不允许上传。\n */\n maxSize?: number;\n\n /**\n * 默认 `/api/upload/file` 如果想自己存储,请设置此选项。\n *\n * @default /api/upload/file\n */\n receiver?: SchemaApi;\n\n /**\n * 默认 `/api/upload/startChunk` 想自己存储时才需要关注。\n *\n * @default /api/upload/startChunk\n */\n startChunkApi?: string;\n\n /**\n * 默认为 'auto' amis 所在服务器,限制了文件上传大小不得超出10M,所以 amis 在用户选择大文件的时候,自动会改成分块上传模式。\n */\n useChunk?: 'auto' | boolean;\n\n /**\n * 按钮 CSS 类名\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 上传按钮 CSS 类名\n */\n btnUploadClassName?: SchemaClassName;\n\n /**\n * 是否为多选\n */\n multiple?: boolean;\n\n /**\n * 1. 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,\n * 否则,整个选项对象都会作为该表单项的值提交。\n * 2. 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,\n * 否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 清除时设置的值\n */\n resetValue?: any;\n\n /**\n * 上传后把其他字段同步到表单内部。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n\n /**\n * 接口返回的数据中,哪个用来当做值\n */\n valueField?: string;\n\n /**\n * 接口返回的数据中,哪个用来展示文件名\n */\n nameField?: string;\n\n /**\n * 接口返回的数据中哪个用来作为下载地址。\n */\n urlField?: string;\n\n /**\n * 按钮状态文案配置。\n */\n stateTextMap?: {\n init: string;\n pending: string;\n uploading: string;\n error: string;\n uploaded: string;\n ready: string;\n };\n}\n\nexport interface FileProps\n extends FormControlProps,\n Omit<\n FileControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n stateTextMap: {\n init: string;\n pending: string;\n uploading: string;\n error: string;\n uploaded: string;\n ready: string;\n };\n}\n\nexport interface FileX extends File {\n state?:\n | 'init'\n | 'error'\n | 'pending'\n | 'uploading'\n | 'uploaded'\n | 'invalid'\n | 'ready';\n progress?: number;\n id?: any;\n}\n\nexport interface FileValue {\n filename?: string;\n value?: any;\n name?: string;\n url?: string;\n state:\n | 'init'\n | 'error'\n | 'pending'\n | 'uploading'\n | 'uploaded'\n | 'invalid'\n | 'ready';\n id?: any;\n [propName: string]: any;\n}\n\nexport interface FileState {\n uploading: boolean;\n files: Array<FileX | FileValue>;\n error?: string | null;\n}\nlet preventEvent = (e: any) => e.stopPropagation();\n\nexport function getNameFromUrl(url: string) {\n if (/(?:\\/|^)([^\\/]+?)$/.test(url)) {\n return decodeURIComponent(RegExp.$1);\n }\n\n return url;\n}\n\nexport default class FileControl extends React.Component<FileProps, FileState> {\n static defaultProps: Partial<FileProps> = {\n maxSize: 0,\n maxLength: 0,\n placeholder: '',\n receiver: '/api/upload/file',\n fileField: 'file',\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n downloadUrl: '', // '/api/file/'\n templateUrl: '',\n useChunk: 'auto',\n chunkSize: 5 * 1024 * 1024, // 文件大于5M, 自动分块上传\n startChunkApi: '/api/upload/startChunk',\n chunkApi: '/api/upload/chunk',\n finishChunkApi: '/api/upload/finishChunk',\n accept: '',\n multiple: false,\n autoUpload: true,\n hideUploadButton: false,\n stateTextMap: {\n init: '',\n pending: '等待上传',\n uploading: '上传中',\n error: '上传出错',\n uploaded: '已上传',\n ready: ''\n },\n asBase64: false\n };\n\n state: FileState;\n current: FileValue | FileX | null;\n resolve?: (value?: any) => void;\n emitValue: any;\n fileUploadCancelExecutors: Array<{\n file: any;\n executor: () => void;\n }> = [];\n\n static valueToFile(\n value: string | FileValue,\n props: FileProps,\n files?: Array<FileX | FileValue>\n ): FileValue | undefined {\n let file: FileValue | FileX | undefined =\n files && typeof value === 'string'\n ? find(files, item => (item as FileValue).value === value)\n : undefined;\n const valueField = props.valueField || 'value';\n const urlField = props.urlField || 'url';\n const nameField = props.nameField || 'name';\n return value\n ? value instanceof File\n ? {\n state: 'ready',\n [valueField]: value,\n [urlField]: value,\n [nameField]: value.name,\n id: guid()\n }\n : {\n ...(typeof value === 'string'\n ? {\n state: file && file.state ? file.state : 'init',\n [valueField]: value,\n [urlField]: value,\n [nameField]:\n (file && file.name) ||\n (/^data:/.test(value)\n ? 'base64数据'\n : getNameFromUrl(value)),\n id: guid()\n }\n : (value as FileValue))\n }\n : undefined;\n }\n\n dropzone = React.createRef<any>();\n constructor(props: FileProps) {\n super(props);\n\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const valueField = props.valueField || 'value';\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n\n if (value && value instanceof Blob) {\n files = [value as any];\n } else if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues\n ? `${(value as any)[valueField] || value}`.split(delimiter)\n : [value as any]\n )\n .map(item => FileControl.valueToFile(item, props) as FileValue)\n .filter(item => item);\n }\n\n this.state = {\n files,\n uploading: false\n };\n\n this.sendFile = this.sendFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.clearError = this.clearError.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleDropRejected = this.handleDropRejected.bind(this);\n this.startUpload = this.startUpload.bind(this);\n this.stopUpload = this.stopUpload.bind(this);\n this.retry = this.retry.bind(this);\n this.toggleUpload = this.toggleUpload.bind(this);\n this.tick = this.tick.bind(this);\n this.onChange = this.onChange.bind(this);\n this.uploadFile = this.uploadFile.bind(this);\n this.uploadBigFile = this.uploadBigFile.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.syncAutoFill = this.syncAutoFill.bind(this);\n this.downloadTpl = this.downloadTpl.bind(this);\n }\n\n componentDidMount() {\n this.syncAutoFill();\n }\n\n componentDidUpdate(prevProps: FileProps) {\n const props = this.props;\n\n if (prevProps.value !== props.value && this.emitValue !== props.value) {\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n\n if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string'\n ? value.split(delimiter)\n : [value as any]\n )\n .map(item => {\n let obj = FileControl.valueToFile(\n item,\n props,\n this.state.files\n ) as FileValue;\n let org;\n\n if (\n obj &&\n ((org = find(\n this.state.files,\n (item: FileValue) => item.value === obj.value\n )) as FileValue)\n ) {\n obj = {\n ...org,\n ...obj,\n id: obj.id || org!.id\n };\n }\n\n return obj;\n })\n .filter(item => item);\n }\n\n this.setState(\n {\n files: files\n },\n this.syncAutoFill\n );\n }\n }\n\n handleDrop(files: Array<FileX>) {\n if (!files.length) {\n return;\n }\n\n const {maxSize, multiple, maxLength, translate: __} = this.props;\n const nameField = this.props.nameField || 'name';\n let allowed =\n multiple && maxLength\n ? maxLength - this.state.files.length\n : files.length;\n\n const inputFiles: Array<FileX> = [];\n\n [].slice.call(files, 0, allowed).forEach((file: FileX) => {\n if (maxSize && file.size > maxSize) {\n this.props.env.alert(\n __('File.maxSize', {\n filename: file[nameField as keyof typeof file] || file.name,\n actualSize: ImageControl.formatFileSize(file.size),\n maxSize: ImageControl.formatFileSize(maxSize)\n })\n );\n file.state = 'invalid';\n } else {\n file.state = 'pending';\n }\n\n file.id = guid();\n inputFiles.push(file);\n });\n\n if (!inputFiles.length) {\n return;\n }\n\n this.setState(\n {\n error: null,\n files: multiple ? this.state.files.concat(inputFiles) : inputFiles\n },\n () => {\n const {autoUpload} = this.props;\n\n if (autoUpload) {\n this.startUpload();\n }\n }\n );\n }\n\n handleDropRejected(\n rejectedFiles: FileRejection[],\n evt: React.DragEvent<any>\n ) {\n if (evt.type !== 'change' && evt.type !== 'drop') {\n return;\n }\n const {multiple, env, accept, translate: __} = this.props;\n const nameField = this.props.nameField || 'name';\n\n const files = rejectedFiles.map(fileRejection => ({\n ...fileRejection.file,\n state: 'invalid',\n id: guid(),\n [nameField]: fileRejection.file.name\n }));\n\n // this.setState({\n // files: multiple\n // ? this.state.files.concat(files)\n // : this.state.files.length\n // ? this.state.files\n // : files.slice(0, 1)\n // });\n\n env.alert(\n __('File.invalidType', {\n files: files.map((item: any) => `「${item[nameField]}」`).join(' '),\n accept\n })\n );\n }\n\n handleClickFile(file: FileX | FileValue, e: React.MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n const {downloadUrl} = this.props;\n const urlField = this.props.urlField || 'url';\n const valueField = this.props.valueField || 'value';\n\n const fileUrl =\n file[urlField as keyof typeof file] ||\n file[valueField as keyof typeof file];\n\n let api =\n typeof downloadUrl === 'string' && !~downloadUrl.indexOf('$')\n ? `${downloadUrl}${fileUrl}`\n : downloadUrl\n ? downloadUrl\n : `${fileUrl}`;\n\n this.handleApi(api, file);\n }\n\n downloadTpl(e: React.MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n this.handleApi(this.props.templateUrl || '');\n }\n\n handleApi(api: SchemaApi, payload?: object) {\n const {data, env} = this.props;\n if (api) {\n const ctx = createObject(data, {\n ...payload\n });\n\n const apiObject = normalizeApi(api);\n\n if (apiObject.method?.toLowerCase() === 'get' && !apiObject.data) {\n window.open(buildApi(apiObject, ctx).url);\n } else {\n apiObject.responseType = apiObject.responseType ?? 'blob';\n env.fetcher(apiObject, ctx, {\n responseType: 'blob'\n });\n }\n }\n }\n\n handleSelect() {\n this.dropzone.current && this.dropzone.current.open();\n }\n\n startUpload(retry: boolean = false) {\n if (this.state.uploading) {\n return;\n }\n\n this.setState(\n {\n uploading: true,\n files: this.state.files.map(file => {\n if (retry && file.state === 'error') {\n file.state = 'pending';\n file.progress = 0;\n }\n\n return file;\n })\n },\n this.tick\n );\n }\n\n toggleUpload(e: React.MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n return this.state.uploading ? this.stopUpload() : this.startUpload();\n }\n\n stopUpload() {\n if (!this.state.uploading) {\n return;\n }\n\n this.setState({\n uploading: false\n });\n }\n\n retry() {\n this.startUpload(true);\n }\n\n tick() {\n if (this.current || !this.state.uploading) {\n return;\n }\n\n const {translate: __} = this.props;\n const nameField = this.props.nameField || 'name';\n const file = find(\n this.state.files,\n item => item.state === 'pending'\n ) as FileX;\n if (file) {\n this.current = file;\n\n file.state = 'uploading';\n\n this.setState(\n {\n files: this.state.files.concat()\n },\n () =>\n this.sendFile(\n file,\n (error, file, obj) => {\n const files = this.state.files.concat();\n const idx = files.indexOf(file as FileX);\n\n if (!~idx) {\n return;\n }\n\n let newFile: FileValue = file as FileValue;\n\n if (error) {\n newFile.state = 'error';\n newFile.error = error;\n } else {\n newFile = obj as FileValue;\n newFile[nameField] = newFile[nameField] || file!.name;\n }\n files.splice(idx, 1, newFile);\n this.current = null;\n this.setState(\n {\n error: error ? error : null,\n files: files\n },\n this.tick\n );\n },\n progress => {\n const files = this.state.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n // file 是个非 File 对象,先不copy了直接改。\n file.progress = progress;\n this.setState({\n files\n });\n }\n )\n );\n } else {\n this.setState(\n {\n uploading: false\n },\n () => {\n this.onChange(!!this.resolve);\n\n if (this.resolve) {\n this.resolve(\n this.state.files.some(file => file.state === 'error')\n ? __('File.errorRetry')\n : null\n );\n this.resolve = undefined;\n }\n }\n );\n }\n }\n\n sendFile(\n file: FileX,\n cb: (error: null | string, file?: FileX, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const {\n receiver,\n fileField,\n useChunk,\n chunkSize,\n startChunkApi,\n chunkApi,\n finishChunkApi,\n asBase64,\n asBlob,\n data,\n translate: __\n } = this.props;\n const nameField = this.props.nameField || 'name';\n const valueField = this.props.valueField || 'value';\n\n if (asBase64) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n file.state = 'ready';\n cb(null, file, {\n [valueField]: reader.result as string,\n [nameField]: file.name,\n state: 'ready',\n id: file.id\n });\n };\n reader.onerror = (error: any) => cb(error.message);\n return;\n } else if (asBlob) {\n file.state = 'ready';\n setTimeout(\n () =>\n cb(null, file, {\n [nameField]: file.name,\n [valueField]: file,\n state: 'ready',\n id: file.id\n }),\n 4\n );\n return;\n }\n\n let fn =\n (useChunk === 'auto' && chunkSize && file.size > chunkSize) ||\n useChunk === true\n ? this.uploadBigFile\n : this.uploadFile;\n\n fn(\n file,\n receiver as string,\n {},\n {\n fieldName: fileField,\n chunkSize,\n startChunkApi,\n chunkApi,\n finishChunkApi,\n data\n },\n onProgress\n )\n .then(ret => {\n if (ret.status || !ret.data) {\n throw new Error(ret.msg || __('File.errorRetry'));\n }\n\n onProgress(1);\n let value =\n (ret.data as any).value || (ret.data as any).url || ret.data;\n\n cb(null, file, {\n ...(isPlainObject(ret.data) ? ret.data : null),\n value: value,\n state: 'uploaded',\n id: file.id\n });\n })\n .catch(error => {\n cb(error.message || __('File.errorRetry'), file);\n });\n }\n\n removeFile(file: FileX | FileValue, index: number) {\n const files = this.state.files.concat();\n\n this.removeFileCanelExecutor(file, true);\n files.splice(index, 1);\n\n const isUploading = this.current === file;\n if (isUploading) {\n this.current = null;\n }\n\n this.setState(\n {\n files: files\n },\n isUploading ? this.tick : this.onChange\n );\n }\n\n clearError() {\n this.setState({\n error: null\n });\n }\n\n onChange(changeImmediately?: boolean) {\n const {\n multiple,\n onChange,\n joinValues,\n extractValue,\n valueField,\n delimiter,\n resetValue,\n asBlob,\n autoFill,\n onBulkChange\n } = this.props;\n\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n let value: any = multiple ? files : files[0];\n\n if (value) {\n if (extractValue || asBlob) {\n value = Array.isArray(value)\n ? value.map((item: any) => item[valueField || 'value'])\n : value[valueField || 'value'];\n } else if (joinValues) {\n value = Array.isArray(value)\n ? value\n .map((item: any) => item[valueField || 'value'])\n .join(delimiter || ',')\n : value[valueField || 'value'];\n }\n } else {\n value = typeof resetValue === 'undefined' ? '' : resetValue;\n }\n\n onChange((this.emitValue = value), undefined, changeImmediately);\n this.syncAutoFill();\n }\n\n syncAutoFill() {\n const {autoFill, multiple, onBulkChange, data} = this.props;\n if (!isEmpty(autoFill) && onBulkChange) {\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: files\n }\n : files[0]\n );\n Object.keys(toSync).forEach(key => {\n if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {\n toSync[key] = merge({}, data[key], toSync[key]);\n }\n });\n onBulkChange(toSync);\n }\n }\n\n async uploadFile(\n file: FileX,\n receiver: string,\n params: object,\n config: Partial<FileProps> = {},\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const fd = new FormData();\n const api = buildApi(receiver, createObject(config.data, params), {\n method: 'post'\n });\n\n qsstringify({...api.data, ...params})\n .split('&')\n .filter(i => !!i)\n .forEach(item => {\n const parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(config.fieldName || 'file', file);\n\n try {\n return await this._send(file, api, fd, {}, onProgress);\n } finally {\n this.removeFileCanelExecutor(file);\n }\n }\n\n uploadBigFile(\n file: FileX,\n receiver: string,\n params: object,\n config: Partial<FileProps> = {},\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const chunkSize = config.chunkSize || 5 * 1024 * 1024;\n const self = this;\n let startProgress = 0.2;\n let endProgress = 0.9;\n let progressArr: Array<number>;\n const __ = this.props.translate;\n const nameField = this.props.nameField || 'name';\n\n interface ObjectState {\n key: string;\n uploadId: string;\n loaded: number;\n total: number;\n [propName: string]: any;\n }\n\n interface Task {\n file: File;\n partNumber: number;\n partSize: number;\n start: number;\n stop: number;\n [propName: string]: any;\n }\n\n return new Promise((resolve, reject) => {\n let state: ObjectState;\n const startApi = buildApi(\n config.startChunkApi!,\n createObject(config.data, {\n ...params,\n filename: file.name,\n [nameField]: file.name\n }),\n {\n method: 'post',\n autoAppend: true\n }\n );\n\n self._send(file, startApi).then(startChunk).catch(reject);\n\n function startChunk(ret: Payload) {\n onProgress(startProgress);\n const tasks = getTasks(file);\n progressArr = tasks.map(() => 0);\n\n if (!ret.data) {\n throw new Error(__('File.uploadFailed'));\n }\n\n state = {\n key: (ret.data as any).key,\n uploadId: (ret.data as any).uploadId,\n loaded: 0,\n total: tasks.length\n };\n\n mapLimit(\n tasks,\n 3,\n uploadPartFile(state, config),\n function (err: any, results: any) {\n if (err) {\n reject(err);\n } else {\n finishChunk(results, state);\n }\n }\n );\n }\n\n function updateProgress(partNumber: number, progress: number) {\n progressArr[partNumber - 1] = progress;\n onProgress(\n startProgress +\n (endProgress - startProgress) *\n (progressArr.reduce((count, progress) => count + progress, 0) /\n progressArr.length)\n );\n }\n\n async function finishChunk(\n partList: Array<any> | undefined,\n state: ObjectState\n ) {\n onProgress(endProgress);\n const endApi = buildApi(\n config.finishChunkApi!,\n createObject(config.data, {\n ...params,\n uploadId: state.uploadId,\n key: state.key,\n [nameField]: file.name,\n filename: file.name,\n partList\n }),\n {\n method: 'post',\n autoAppend: true\n }\n );\n\n try {\n const ret = await self._send(file, endApi);\n resolve(ret);\n } catch (err) {\n reject(err);\n } finally {\n self.removeFileCanelExecutor(file);\n }\n }\n\n function uploadPartFile(state: ObjectState, conf: Partial<FileProps>) {\n return (task: Task, callback: (error: any, value?: any) => void) => {\n const api = buildApi(\n conf.chunkApi!,\n createObject(config.data, params),\n {\n method: 'post'\n }\n );\n\n const fd = new FormData();\n let blob = task.file.slice(task.start, task.stop + 1);\n\n qsstringify({...api.data, ...params})\n .split('&')\n .forEach(item => {\n const parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n\n fd.append('key', state.key);\n fd.append('uploadId', state.uploadId);\n fd.append('partNumber', task.partNumber.toString());\n fd.append('partSize', task.partSize.toString());\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(config.fieldName || 'file', blob, file.name);\n\n return self\n ._send(file, api, fd, {}, progress =>\n updateProgress(task.partNumber, progress)\n )\n .then(ret => {\n state.loaded++;\n callback(null, {\n partNumber: task.partNumber,\n eTag: (ret.data as any).eTag\n });\n })\n .catch(callback);\n };\n }\n\n function getTasks(file: FileX): Array<Task> {\n let leftSize = file.size;\n let offset = 0;\n let partNumber = 1;\n\n let tasks: Array<Task> = [];\n\n while (leftSize > 0) {\n let partSize = Math.min(leftSize, chunkSize);\n tasks.push({\n file: file,\n partNumber: partNumber,\n partSize: partSize,\n start: offset,\n stop: offset + partSize - 1\n });\n\n leftSize -= partSize;\n offset += partSize;\n partNumber += 1;\n }\n\n return tasks;\n }\n });\n }\n\n _send(\n file: FileX,\n api: ApiObject | ApiString,\n data?: any,\n options?: object,\n onProgress?: (progress: number) => void\n ): Promise<Payload> {\n const env = this.props.env;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n return env.fetcher(api, data, {\n method: 'post',\n ...options,\n withCredentials: true,\n cancelExecutor: (cancelExecutor: () => void) => {\n // 记录取消器,取消的时候要调用\n this.fileUploadCancelExecutors.push({\n file: file,\n executor: cancelExecutor\n });\n },\n onUploadProgress: onProgress\n ? (event: {loaded: number; total: number}) =>\n onProgress(event.loaded / event.total)\n : undefined\n });\n }\n\n removeFileCanelExecutor(file: any, execute = false) {\n this.fileUploadCancelExecutors = this.fileUploadCancelExecutors.filter(\n item => {\n if (execute && item.file === file) {\n item.executor();\n }\n\n return item.file !== file;\n }\n );\n }\n\n validate(): any {\n const __ = this.props.translate;\n\n if (\n this.state.uploading ||\n this.state.files.some(item => item.state === 'pending')\n ) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.startUpload();\n });\n } else if (this.state.files.some(item => item.state === 'error')) {\n return __('File.errorRetry');\n }\n }\n\n render() {\n const {\n btnLabel,\n accept,\n disabled,\n maxLength,\n multiple,\n autoUpload,\n description,\n descriptionClassName,\n hideUploadButton,\n className,\n btnClassName,\n btnUploadClassName,\n classnames: cx,\n translate: __,\n render,\n downloadUrl,\n templateUrl\n } = this.props;\n let {files, uploading, error} = this.state;\n const nameField = this.props.nameField || 'name';\n const valueField = this.props.valueField || 'value';\n const urlField = this.props.urlField || 'url';\n\n const hasPending = files.some(file => file.state == 'pending');\n\n let uploaded = 0;\n let failed = 0;\n\n this.state.uploading ||\n this.state.files.forEach(item => {\n if (item.state === 'error') {\n failed++;\n } else if (item.state === 'uploaded') {\n uploaded++;\n }\n });\n\n return (\n <div className={cx('FileControl', className)}>\n {templateUrl ? (\n <a\n className={cx('FileControl-templateInfo')}\n onClick={this.downloadTpl.bind(this)}\n >\n <Icon icon=\"download\" className=\"icon\" />\n <span>{__('File.downloadTpl')}</span>\n </a>\n ) : null}\n\n <DropZone\n disabled={disabled}\n key=\"drop-zone\"\n ref={this.dropzone}\n onDrop={this.handleDrop}\n onDropRejected={this.handleDropRejected}\n accept={accept === '*' ? '' : accept}\n multiple={multiple}\n >\n {({getRootProps, getInputProps, isDragActive}) => (\n <div\n {...getRootProps({\n onClick: preventEvent\n })}\n className={cx('FileControl-dropzone', {\n disabled,\n 'is-empty': !files.length,\n 'is-active': isDragActive\n })}\n >\n <input disabled={disabled} {...getInputProps()} />\n\n {isDragActive ? (\n <div className={cx('FileControl-acceptTip')}>\n {__('File.dragDrop')}\n </div>\n ) : (\n <>\n {(multiple && (!maxLength || files.length < maxLength)) ||\n !multiple ? (\n <Button\n level=\"default\"\n disabled={disabled}\n className={cx('FileControl-selectBtn', btnClassName)}\n onClick={this.handleSelect}\n >\n <Icon icon=\"upload\" className=\"icon\" />\n <span>\n {!multiple && files.length\n ? __('File.repick')\n : multiple && files.length\n ? __('File.continueAdd')\n : btnLabel\n ? btnLabel\n : __('File.upload')}\n </span>\n </Button>\n ) : null}\n\n {description\n ? render('desc', description!, {\n className: cx(\n 'FileControl-description',\n descriptionClassName\n )\n })\n : null}\n\n {Array.isArray(files) ? (\n <ul className={cx('FileControl-list')}>\n {files.map((file, index) => (\n <li key={file.id}>\n <div\n className={cx('FileControl-itemInfo', {\n 'is-invalid':\n file.state === 'invalid' ||\n file.state === 'error'\n })}\n >\n <Icon icon=\"file\" className=\"icon\" />\n {(file as FileValue)[urlField] ||\n (file as FileValue)[valueField] ||\n downloadUrl ? (\n <a\n className={cx('FileControl-itemInfoText')}\n target=\"_blank\"\n rel=\"noopener\"\n href=\"#\"\n onClick={this.handleClickFile.bind(this, file)}\n >\n {file[nameField as keyof typeof file] ||\n (file as FileValue).filename}\n </a>\n ) : (\n <span className={cx('FileControl-itemInfoText')}>\n {file[nameField as keyof typeof file] ||\n (file as FileValue).filename}\n </span>\n )}\n\n {file.state === 'invalid' ||\n file.state === 'error' ? (\n <>\n <Icon icon=\"fail\" className=\"icon\" />\n <span className=\"text-danger\">\n {(file as FileValue).error || null}\n </span>\n </>\n ) : null}\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n className={cx('FileControl-clear')}\n onClick={() => this.removeFile(file, index)}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n {file.state === 'uploading' ||\n file.state === 'uploaded' ? (\n <div className={cx('FileControl-progressInfo')}>\n <div className={cx('FileControl-progress')}>\n <span\n style={{\n width: `${\n file.state === 'uploaded'\n ? 100\n : (file.progress || 0) * 100\n }%`\n }}\n />\n </div>\n\n {file.state === 'uploaded' ? (\n <Icon icon=\"success\" className=\"icon\" />\n ) : (\n <span>\n {Math.round((file.progress || 0) * 100)}%\n </span>\n )}\n </div>\n ) : null}\n </li>\n ))}\n </ul>\n ) : null}\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {failed ? (\n <div className={cx('FileControl-sum')}>\n {__('File.result', {\n uploaded,\n failed\n })}\n <a onClick={this.retry}>{__('File.retry')}</a>\n {__('File.failed')}\n </div>\n ) : null}\n\n {!autoUpload && !hideUploadButton && files.length ? (\n <Button\n level=\"default\"\n disabled={!hasPending}\n className={cx('FileControl-uploadBtn', btnUploadClassName)}\n onClick={this.toggleUpload}\n >\n {__(uploading ? 'File.pause' : 'File.start')}\n </Button>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-file',\n sizeMutable: false,\n renderDescription: false\n})\nexport class FileControlRenderer extends FileControl {}\n"
|
11
|
+
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport find from 'lodash/find';\nimport isPlainObject from 'lodash/isPlainObject';\n// @ts-ignore\nimport mapLimit from 'async/mapLimit';\nimport ImageControl from './InputImage';\nimport {Payload, ApiObject, ApiString} from '../../types';\nimport {filter} from '../../utils/tpl';\nimport Alert from '../../components/Alert2';\nimport {qsstringify, createObject, guid, isEmpty} from '../../utils/helper';\nimport {buildApi, normalizeApi} from '../../utils/api';\nimport Button from '../../components/Button';\nimport {Icon} from '../../components/icons';\nimport DropZone from 'react-dropzone';\nimport {FileRejection} from 'react-dropzone';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {\n SchemaApi,\n SchemaClassName,\n SchemaTokenizeableString,\n SchemaUrlPath\n} from '../../Schema';\nimport merge from 'lodash/merge';\n\n/**\n * File 文件上传控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/file\n */\nexport interface FileControlSchema extends FormBaseControl {\n /**\n * 指定为文件上传\n */\n type: 'input-file';\n\n /**\n * 上传文件按钮说明\n * @default 请选择文件\n */\n btnLabel?: string;\n\n /**\n * 默认只支持纯文本,要支持其他类型,请配置此属性。建议直接填写文件后缀\n * 如:.txt,.csv\n *\n * 多个类型用逗号隔开。\n *\n * @default text/plain\n */\n accept?: string;\n\n /**\n * 如果上传的文件比较小可以设置此选项来简单的把文件 base64 的值给 form 一起提交,目前不支持多选。\n */\n asBase64?: boolean;\n\n /**\n * 如果不希望 File 组件上传,可以配置 `asBlob` 或者 `asBase64`,采用这种方式后,组件不再自己上传了,而是直接把文件数据作为表单项的值,文件内容会在 Form 表单提交的接口里面一起带上。\n */\n asBlob?: boolean;\n\n /**\n * 是否自动开始上传\n */\n autoUpload?: boolean;\n\n /**\n * 默认 `/api/upload/chunk` 想自己存储时才需要关注。\n */\n chunkApi?: SchemaApi;\n\n /**\n * 分块大小,默认为 5M.\n *\n * @default 5242880\n */\n chunkSize?: number;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 默认显示文件路径的时候会支持直接下载,\n * 可以支持加前缀如:`http://xx.dom/filename=` ,\n * 如果不希望这样,可以把当前配置项设置为 `false`。\n *\n * 1.1.6 版本开始将支持变量 ${xxx} 来自己拼凑个下载地址,并且支持配置成 post.\n */\n downloadUrl?: SchemaApi;\n\n /**\n * 模板下载地址\n */\n templateUrl?: SchemaApi;\n\n /**\n * 默认 `file`, 如果你不想自己存储,则可以忽略此属性。\n * @default file\n */\n fileField?: string;\n\n /**\n * 默认 `/api/upload/finishChunkApi` 想自己存储时才需要关注。\n *\n * @default /api/upload/finishChunkApi\n */\n finishChunkApi?: SchemaApi;\n\n /**\n * 是否隐藏上传按钮\n */\n hideUploadButton?: boolean;\n\n /**\n * 最多的个数\n */\n maxLength?: number;\n\n /**\n * 默认没有限制,当设置后,文件大小大于此值将不允许上传。\n */\n maxSize?: number;\n\n /**\n * 默认 `/api/upload/file` 如果想自己存储,请设置此选项。\n *\n * @default /api/upload/file\n */\n receiver?: SchemaApi;\n\n /**\n * 默认 `/api/upload/startChunk` 想自己存储时才需要关注。\n *\n * @default /api/upload/startChunk\n */\n startChunkApi?: string;\n\n /**\n * 默认为 'auto' amis 所在服务器,限制了文件上传大小不得超出10M,所以 amis 在用户选择大文件的时候,自动会改成分块上传模式。\n */\n useChunk?: 'auto' | boolean;\n\n /**\n * 按钮 CSS 类名\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 上传按钮 CSS 类名\n */\n btnUploadClassName?: SchemaClassName;\n\n /**\n * 是否为多选\n */\n multiple?: boolean;\n\n /**\n * 1. 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,\n * 否则,整个选项对象都会作为该表单项的值提交。\n * 2. 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,\n * 否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 清除时设置的值\n */\n resetValue?: any;\n\n /**\n * 上传后把其他字段同步到表单内部。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n\n /**\n * 接口返回的数据中,哪个用来当做值\n */\n valueField?: string;\n\n /**\n * 接口返回的数据中,哪个用来展示文件名\n */\n nameField?: string;\n\n /**\n * 接口返回的数据中哪个用来作为下载地址。\n */\n urlField?: string;\n\n /**\n * 按钮状态文案配置。\n */\n stateTextMap?: {\n init: string;\n pending: string;\n uploading: string;\n error: string;\n uploaded: string;\n ready: string;\n };\n}\n\nexport interface FileProps\n extends FormControlProps,\n Omit<\n FileControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n stateTextMap: {\n init: string;\n pending: string;\n uploading: string;\n error: string;\n uploaded: string;\n ready: string;\n };\n}\n\nexport interface FileX extends File {\n state?:\n | 'init'\n | 'error'\n | 'pending'\n | 'uploading'\n | 'uploaded'\n | 'invalid'\n | 'ready';\n progress?: number;\n id?: any;\n}\n\nexport interface FileValue {\n filename?: string;\n value?: any;\n name?: string;\n url?: string;\n state:\n | 'init'\n | 'error'\n | 'pending'\n | 'uploading'\n | 'uploaded'\n | 'invalid'\n | 'ready';\n id?: any;\n [propName: string]: any;\n}\n\nexport interface FileState {\n uploading: boolean;\n files: Array<FileX | FileValue>;\n error?: string | null;\n}\nlet preventEvent = (e: any) => e.stopPropagation();\n\nexport function getNameFromUrl(url: string) {\n if (/(?:\\/|^)([^\\/]+?)$/.test(url)) {\n return decodeURIComponent(RegExp.$1);\n }\n\n return url;\n}\n\nexport default class FileControl extends React.Component<FileProps, FileState> {\n static defaultProps: Partial<FileProps> = {\n maxSize: 0,\n maxLength: 0,\n placeholder: '',\n receiver: '/api/upload/file',\n fileField: 'file',\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n downloadUrl: '', // '/api/file/'\n templateUrl: '',\n useChunk: 'auto',\n chunkSize: 5 * 1024 * 1024, // 文件大于5M, 自动分块上传\n startChunkApi: '/api/upload/startChunk',\n chunkApi: '/api/upload/chunk',\n finishChunkApi: '/api/upload/finishChunk',\n accept: '',\n multiple: false,\n autoUpload: true,\n hideUploadButton: false,\n stateTextMap: {\n init: '',\n pending: '等待上传',\n uploading: '上传中',\n error: '上传出错',\n uploaded: '已上传',\n ready: ''\n },\n asBase64: false\n };\n\n state: FileState;\n current: FileValue | FileX | null;\n resolve?: (value?: any) => void;\n emitValue: any;\n fileUploadCancelExecutors: Array<{\n file: any;\n executor: () => void;\n }> = [];\n\n static valueToFile(\n value: string | FileValue,\n props: FileProps,\n files?: Array<FileX | FileValue>\n ): FileValue | undefined {\n let file: FileValue | FileX | undefined =\n files && typeof value === 'string'\n ? find(files, item => (item as FileValue).value === value)\n : undefined;\n const valueField = props.valueField || 'value';\n const urlField = props.urlField || 'url';\n const nameField = props.nameField || 'name';\n return value\n ? value instanceof File\n ? {\n state: 'ready',\n [valueField]: value,\n [urlField]: value,\n [nameField]: value.name,\n id: guid()\n }\n : {\n ...(typeof value === 'string'\n ? {\n state: file && file.state ? file.state : 'init',\n [valueField]: value,\n [urlField]: value,\n [nameField]:\n (file && file.name) ||\n (/^data:/.test(value)\n ? 'base64数据'\n : getNameFromUrl(value)),\n id: guid()\n }\n : (value as FileValue))\n }\n : undefined;\n }\n\n dropzone = React.createRef<any>();\n constructor(props: FileProps) {\n super(props);\n\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const valueField = props.valueField || 'value';\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n\n if (value && value instanceof Blob) {\n files = [value as any];\n } else if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues\n ? `${(value as any)[valueField] || value}`.split(delimiter)\n : [value as any]\n )\n .map(item => FileControl.valueToFile(item, props) as FileValue)\n .filter(item => item);\n }\n\n this.state = {\n files,\n uploading: false\n };\n\n this.sendFile = this.sendFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.clearError = this.clearError.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleDropRejected = this.handleDropRejected.bind(this);\n this.startUpload = this.startUpload.bind(this);\n this.stopUpload = this.stopUpload.bind(this);\n this.retry = this.retry.bind(this);\n this.toggleUpload = this.toggleUpload.bind(this);\n this.tick = this.tick.bind(this);\n this.onChange = this.onChange.bind(this);\n this.uploadFile = this.uploadFile.bind(this);\n this.uploadBigFile = this.uploadBigFile.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.syncAutoFill = this.syncAutoFill.bind(this);\n this.downloadTpl = this.downloadTpl.bind(this);\n }\n\n componentDidMount() {\n this.syncAutoFill();\n }\n\n componentDidUpdate(prevProps: FileProps) {\n const props = this.props;\n\n if (prevProps.value !== props.value && this.emitValue !== props.value) {\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n\n if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string'\n ? value.split(delimiter)\n : [value as any]\n )\n .map(item => {\n let obj = FileControl.valueToFile(\n item,\n props,\n this.state.files\n ) as FileValue;\n let org;\n\n if (\n obj &&\n ((org = find(\n this.state.files,\n (item: FileValue) => item.value === obj.value\n )) as FileValue)\n ) {\n obj = {\n ...org,\n ...obj,\n id: obj.id || org!.id\n };\n }\n\n return obj;\n })\n .filter(item => item);\n }\n\n this.setState(\n {\n files: files\n },\n this.syncAutoFill\n );\n }\n }\n\n handleDrop(files: Array<FileX>) {\n if (!files.length) {\n return;\n }\n\n const {maxSize, multiple, maxLength, translate: __} = this.props;\n const nameField = this.props.nameField || 'name';\n let allowed =\n multiple && maxLength\n ? maxLength - this.state.files.length\n : files.length;\n\n const inputFiles: Array<FileX> = [];\n\n [].slice.call(files, 0, allowed).forEach((file: FileX) => {\n if (maxSize && file.size > maxSize) {\n this.props.env.alert(\n __('File.maxSize', {\n filename: file[nameField as keyof typeof file] || file.name,\n actualSize: ImageControl.formatFileSize(file.size),\n maxSize: ImageControl.formatFileSize(maxSize)\n })\n );\n file.state = 'invalid';\n } else {\n file.state = 'pending';\n }\n\n file.id = guid();\n inputFiles.push(file);\n });\n\n if (!inputFiles.length) {\n return;\n }\n\n this.setState(\n {\n error: null,\n files: multiple ? this.state.files.concat(inputFiles) : inputFiles\n },\n () => {\n const {autoUpload} = this.props;\n\n if (autoUpload) {\n this.startUpload();\n }\n }\n );\n }\n\n handleDropRejected(\n rejectedFiles: FileRejection[],\n evt: React.DragEvent<any>\n ) {\n if (evt.type !== 'change' && evt.type !== 'drop') {\n return;\n }\n const {multiple, env, accept, translate: __} = this.props;\n const nameField = this.props.nameField || 'name';\n\n const files = rejectedFiles.map(fileRejection => ({\n ...fileRejection.file,\n state: 'invalid',\n id: guid(),\n [nameField]: fileRejection.file.name\n }));\n\n // this.setState({\n // files: multiple\n // ? this.state.files.concat(files)\n // : this.state.files.length\n // ? this.state.files\n // : files.slice(0, 1)\n // });\n\n env.alert(\n __('File.invalidType', {\n files: files.map((item: any) => `「${item[nameField]}」`).join(' '),\n accept\n })\n );\n }\n\n handleClickFile(file: FileX | FileValue, e: React.MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n const {downloadUrl} = this.props;\n const urlField = this.props.urlField || 'url';\n const valueField = this.props.valueField || 'value';\n\n const fileUrl =\n file[urlField as keyof typeof file] ||\n file[valueField as keyof typeof file];\n\n let api =\n typeof downloadUrl === 'string' && !~downloadUrl.indexOf('$')\n ? `${downloadUrl}${fileUrl}`\n : downloadUrl\n ? downloadUrl\n : `${fileUrl}`;\n\n this.handleApi(api, file);\n }\n\n downloadTpl(e: React.MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n this.handleApi(this.props.templateUrl || '');\n }\n\n handleApi(api: SchemaApi, payload?: object) {\n const {data, env} = this.props;\n if (api) {\n const ctx = createObject(data, {\n ...payload\n });\n\n const apiObject = normalizeApi(api);\n\n if (apiObject.method?.toLowerCase() === 'get' && !apiObject.data) {\n window.open(buildApi(apiObject, ctx).url);\n } else {\n apiObject.responseType = apiObject.responseType ?? 'blob';\n env.fetcher(apiObject, ctx, {\n responseType: 'blob'\n });\n }\n }\n }\n\n handleSelect() {\n this.dropzone.current && this.dropzone.current.open();\n }\n\n startUpload(retry: boolean = false) {\n if (this.state.uploading) {\n return;\n }\n\n this.setState(\n {\n uploading: true,\n files: this.state.files.map(file => {\n if (retry && file.state === 'error') {\n file.state = 'pending';\n file.progress = 0;\n }\n\n return file;\n })\n },\n this.tick\n );\n }\n\n toggleUpload(e: React.MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n return this.state.uploading ? this.stopUpload() : this.startUpload();\n }\n\n stopUpload() {\n if (!this.state.uploading) {\n return;\n }\n\n this.setState({\n uploading: false\n });\n }\n\n retry() {\n this.startUpload(true);\n }\n\n tick() {\n if (this.current || !this.state.uploading) {\n return;\n }\n\n const {translate: __} = this.props;\n const nameField = this.props.nameField || 'name';\n const file = find(\n this.state.files,\n item => item.state === 'pending'\n ) as FileX;\n if (file) {\n this.current = file;\n\n file.state = 'uploading';\n\n this.setState(\n {\n files: this.state.files.concat()\n },\n () =>\n this.sendFile(\n file,\n (error, file, obj) => {\n const files = this.state.files.concat();\n const idx = files.indexOf(file as FileX);\n\n if (!~idx) {\n return;\n }\n\n let newFile: FileValue = file as FileValue;\n\n if (error) {\n newFile.state = 'error';\n newFile.error = error;\n } else {\n newFile = obj as FileValue;\n newFile[nameField] = newFile[nameField] || file!.name;\n }\n files.splice(idx, 1, newFile);\n this.current = null;\n this.setState(\n {\n error: error ? error : null,\n files: files\n },\n this.tick\n );\n },\n progress => {\n const files = this.state.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n // file 是个非 File 对象,先不copy了直接改。\n file.progress = progress;\n this.setState({\n files\n });\n }\n )\n );\n } else {\n this.setState(\n {\n uploading: false\n },\n () => {\n this.onChange(!!this.resolve);\n\n if (this.resolve) {\n this.resolve(\n this.state.files.some(file => file.state === 'error')\n ? __('File.errorRetry')\n : null\n );\n this.resolve = undefined;\n }\n }\n );\n }\n }\n\n sendFile(\n file: FileX,\n cb: (error: null | string, file?: FileX, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const {\n receiver,\n fileField,\n useChunk,\n chunkSize,\n startChunkApi,\n chunkApi,\n finishChunkApi,\n asBase64,\n asBlob,\n data,\n translate: __\n } = this.props;\n const nameField = this.props.nameField || 'name';\n const valueField = this.props.valueField || 'value';\n\n if (asBase64) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n file.state = 'ready';\n cb(null, file, {\n [valueField]: reader.result as string,\n [nameField]: file.name,\n state: 'ready',\n id: file.id\n });\n };\n reader.onerror = (error: any) => cb(error.message);\n return;\n } else if (asBlob) {\n file.state = 'ready';\n setTimeout(\n () =>\n cb(null, file, {\n [nameField]: file.name,\n [valueField]: file,\n state: 'ready',\n id: file.id\n }),\n 4\n );\n return;\n }\n\n let fn =\n (useChunk === 'auto' && chunkSize && file.size > chunkSize) ||\n useChunk === true\n ? this.uploadBigFile\n : this.uploadFile;\n\n fn(\n file,\n receiver as string,\n {},\n {\n fieldName: fileField,\n chunkSize,\n startChunkApi,\n chunkApi,\n finishChunkApi,\n data\n },\n onProgress\n )\n .then(ret => {\n if ((ret.status && (ret as any).status !== '0') || !ret.data) {\n throw new Error(ret.msg || __('File.errorRetry'));\n }\n\n onProgress(1);\n let value =\n (ret.data as any).value || (ret.data as any).url || ret.data;\n\n cb(null, file, {\n ...(isPlainObject(ret.data) ? ret.data : null),\n value: value,\n state: 'uploaded',\n id: file.id\n });\n })\n .catch(error => {\n cb(error.message || __('File.errorRetry'), file);\n });\n }\n\n removeFile(file: FileX | FileValue, index: number) {\n const files = this.state.files.concat();\n\n this.removeFileCanelExecutor(file, true);\n files.splice(index, 1);\n\n const isUploading = this.current === file;\n if (isUploading) {\n this.current = null;\n }\n\n this.setState(\n {\n files: files\n },\n isUploading ? this.tick : this.onChange\n );\n }\n\n clearError() {\n this.setState({\n error: null\n });\n }\n\n onChange(changeImmediately?: boolean) {\n const {\n multiple,\n onChange,\n joinValues,\n extractValue,\n valueField,\n delimiter,\n resetValue,\n asBlob,\n autoFill,\n onBulkChange\n } = this.props;\n\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n let value: any = multiple ? files : files[0];\n\n if (value) {\n if (extractValue || asBlob) {\n value = Array.isArray(value)\n ? value.map((item: any) => item[valueField || 'value'])\n : value[valueField || 'value'];\n } else if (joinValues) {\n value = Array.isArray(value)\n ? value\n .map((item: any) => item[valueField || 'value'])\n .join(delimiter || ',')\n : value[valueField || 'value'];\n }\n } else {\n value = typeof resetValue === 'undefined' ? '' : resetValue;\n }\n\n onChange((this.emitValue = value), undefined, changeImmediately);\n this.syncAutoFill();\n }\n\n syncAutoFill() {\n const {autoFill, multiple, onBulkChange, data} = this.props;\n if (!isEmpty(autoFill) && onBulkChange) {\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: files\n }\n : files[0]\n );\n Object.keys(toSync).forEach(key => {\n if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {\n toSync[key] = merge({}, data[key], toSync[key]);\n }\n });\n onBulkChange(toSync);\n }\n }\n\n async uploadFile(\n file: FileX,\n receiver: string,\n params: object,\n config: Partial<FileProps> = {},\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const fd = new FormData();\n const api = buildApi(receiver, createObject(config.data, params), {\n method: 'post'\n });\n\n qsstringify({...api.data, ...params})\n .split('&')\n .filter(i => !!i)\n .forEach(item => {\n const parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(config.fieldName || 'file', file);\n\n try {\n return await this._send(file, api, fd, {}, onProgress);\n } finally {\n this.removeFileCanelExecutor(file);\n }\n }\n\n uploadBigFile(\n file: FileX,\n receiver: string,\n params: object,\n config: Partial<FileProps> = {},\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const chunkSize = config.chunkSize || 5 * 1024 * 1024;\n const self = this;\n let startProgress = 0.2;\n let endProgress = 0.9;\n let progressArr: Array<number>;\n const __ = this.props.translate;\n const nameField = this.props.nameField || 'name';\n\n interface ObjectState {\n key: string;\n uploadId: string;\n loaded: number;\n total: number;\n [propName: string]: any;\n }\n\n interface Task {\n file: File;\n partNumber: number;\n partSize: number;\n start: number;\n stop: number;\n [propName: string]: any;\n }\n\n return new Promise((resolve, reject) => {\n let state: ObjectState;\n const startApi = buildApi(\n config.startChunkApi!,\n createObject(config.data, {\n ...params,\n filename: file.name,\n [nameField]: file.name\n }),\n {\n method: 'post',\n autoAppend: true\n }\n );\n\n self._send(file, startApi).then(startChunk).catch(reject);\n\n function startChunk(ret: Payload) {\n onProgress(startProgress);\n const tasks = getTasks(file);\n progressArr = tasks.map(() => 0);\n\n if (!ret.data) {\n throw new Error(__('File.uploadFailed'));\n }\n\n state = {\n key: (ret.data as any).key,\n uploadId: (ret.data as any).uploadId,\n loaded: 0,\n total: tasks.length\n };\n\n mapLimit(\n tasks,\n 3,\n uploadPartFile(state, config),\n function (err: any, results: any) {\n if (err) {\n reject(err);\n } else {\n finishChunk(results, state);\n }\n }\n );\n }\n\n function updateProgress(partNumber: number, progress: number) {\n progressArr[partNumber - 1] = progress;\n onProgress(\n startProgress +\n (endProgress - startProgress) *\n (progressArr.reduce((count, progress) => count + progress, 0) /\n progressArr.length)\n );\n }\n\n async function finishChunk(\n partList: Array<any> | undefined,\n state: ObjectState\n ) {\n onProgress(endProgress);\n const endApi = buildApi(\n config.finishChunkApi!,\n createObject(config.data, {\n ...params,\n uploadId: state.uploadId,\n key: state.key,\n [nameField]: file.name,\n filename: file.name,\n partList\n }),\n {\n method: 'post',\n autoAppend: true\n }\n );\n\n try {\n const ret = await self._send(file, endApi);\n resolve(ret);\n } catch (err) {\n reject(err);\n } finally {\n self.removeFileCanelExecutor(file);\n }\n }\n\n function uploadPartFile(state: ObjectState, conf: Partial<FileProps>) {\n return (task: Task, callback: (error: any, value?: any) => void) => {\n const api = buildApi(\n conf.chunkApi!,\n createObject(config.data, params),\n {\n method: 'post'\n }\n );\n\n const fd = new FormData();\n let blob = task.file.slice(task.start, task.stop + 1);\n\n qsstringify({...api.data, ...params})\n .split('&')\n .forEach(item => {\n const parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n\n fd.append('key', state.key);\n fd.append('uploadId', state.uploadId);\n fd.append('partNumber', task.partNumber.toString());\n fd.append('partSize', task.partSize.toString());\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(config.fieldName || 'file', blob, file.name);\n\n return self\n ._send(file, api, fd, {}, progress =>\n updateProgress(task.partNumber, progress)\n )\n .then(ret => {\n state.loaded++;\n callback(null, {\n partNumber: task.partNumber,\n eTag: (ret.data as any).eTag\n });\n })\n .catch(callback);\n };\n }\n\n function getTasks(file: FileX): Array<Task> {\n let leftSize = file.size;\n let offset = 0;\n let partNumber = 1;\n\n let tasks: Array<Task> = [];\n\n while (leftSize > 0) {\n let partSize = Math.min(leftSize, chunkSize);\n tasks.push({\n file: file,\n partNumber: partNumber,\n partSize: partSize,\n start: offset,\n stop: offset + partSize - 1\n });\n\n leftSize -= partSize;\n offset += partSize;\n partNumber += 1;\n }\n\n return tasks;\n }\n });\n }\n\n _send(\n file: FileX,\n api: ApiObject | ApiString,\n data?: any,\n options?: object,\n onProgress?: (progress: number) => void\n ): Promise<Payload> {\n const env = this.props.env;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n return env.fetcher(api, data, {\n method: 'post',\n ...options,\n withCredentials: true,\n cancelExecutor: (cancelExecutor: () => void) => {\n // 记录取消器,取消的时候要调用\n this.fileUploadCancelExecutors.push({\n file: file,\n executor: cancelExecutor\n });\n },\n onUploadProgress: onProgress\n ? (event: {loaded: number; total: number}) =>\n onProgress(event.loaded / event.total)\n : undefined\n });\n }\n\n removeFileCanelExecutor(file: any, execute = false) {\n this.fileUploadCancelExecutors = this.fileUploadCancelExecutors.filter(\n item => {\n if (execute && item.file === file) {\n item.executor();\n }\n\n return item.file !== file;\n }\n );\n }\n\n validate(): any {\n const __ = this.props.translate;\n\n if (\n this.state.uploading ||\n this.state.files.some(item => item.state === 'pending')\n ) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.startUpload();\n });\n } else if (this.state.files.some(item => item.state === 'error')) {\n return __('File.errorRetry');\n }\n }\n\n render() {\n const {\n btnLabel,\n accept,\n disabled,\n maxLength,\n multiple,\n autoUpload,\n description,\n descriptionClassName,\n hideUploadButton,\n className,\n btnClassName,\n btnUploadClassName,\n classnames: cx,\n translate: __,\n render,\n downloadUrl,\n templateUrl\n } = this.props;\n let {files, uploading, error} = this.state;\n const nameField = this.props.nameField || 'name';\n const valueField = this.props.valueField || 'value';\n const urlField = this.props.urlField || 'url';\n\n const hasPending = files.some(file => file.state == 'pending');\n\n let uploaded = 0;\n let failed = 0;\n\n this.state.uploading ||\n this.state.files.forEach(item => {\n if (item.state === 'error') {\n failed++;\n } else if (item.state === 'uploaded') {\n uploaded++;\n }\n });\n\n return (\n <div className={cx('FileControl', className)}>\n {templateUrl ? (\n <a\n className={cx('FileControl-templateInfo')}\n onClick={this.downloadTpl.bind(this)}\n >\n <Icon icon=\"download\" className=\"icon\" />\n <span>{__('File.downloadTpl')}</span>\n </a>\n ) : null}\n\n <DropZone\n disabled={disabled}\n key=\"drop-zone\"\n ref={this.dropzone}\n onDrop={this.handleDrop}\n onDropRejected={this.handleDropRejected}\n accept={accept === '*' ? '' : accept}\n multiple={multiple}\n >\n {({getRootProps, getInputProps, isDragActive}) => (\n <div\n {...getRootProps({\n onClick: preventEvent\n })}\n className={cx('FileControl-dropzone', {\n disabled,\n 'is-empty': !files.length,\n 'is-active': isDragActive\n })}\n >\n <input disabled={disabled} {...getInputProps()} />\n\n {isDragActive ? (\n <div className={cx('FileControl-acceptTip')}>\n {__('File.dragDrop')}\n </div>\n ) : (\n <>\n {(multiple && (!maxLength || files.length < maxLength)) ||\n !multiple ? (\n <Button\n level=\"default\"\n disabled={disabled}\n className={cx('FileControl-selectBtn', btnClassName)}\n onClick={this.handleSelect}\n >\n <Icon icon=\"upload\" className=\"icon\" />\n <span>\n {!multiple && files.length\n ? __('File.repick')\n : multiple && files.length\n ? __('File.continueAdd')\n : btnLabel\n ? btnLabel\n : __('File.upload')}\n </span>\n </Button>\n ) : null}\n\n {description\n ? render('desc', description!, {\n className: cx(\n 'FileControl-description',\n descriptionClassName\n )\n })\n : null}\n\n {Array.isArray(files) ? (\n <ul className={cx('FileControl-list')}>\n {files.map((file, index) => (\n <li key={file.id}>\n <div\n className={cx('FileControl-itemInfo', {\n 'is-invalid':\n file.state === 'invalid' ||\n file.state === 'error'\n })}\n >\n <Icon icon=\"file\" className=\"icon\" />\n {(file as FileValue)[urlField] ||\n (file as FileValue)[valueField] ||\n downloadUrl ? (\n <a\n className={cx('FileControl-itemInfoText')}\n target=\"_blank\"\n rel=\"noopener\"\n href=\"#\"\n onClick={this.handleClickFile.bind(this, file)}\n >\n {file[nameField as keyof typeof file] ||\n (file as FileValue).filename}\n </a>\n ) : (\n <span className={cx('FileControl-itemInfoText')}>\n {file[nameField as keyof typeof file] ||\n (file as FileValue).filename}\n </span>\n )}\n\n {file.state === 'invalid' ||\n file.state === 'error' ? (\n <>\n <Icon icon=\"fail\" className=\"icon\" />\n <span className=\"text-danger\">\n {(file as FileValue).error || null}\n </span>\n </>\n ) : null}\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n className={cx('FileControl-clear')}\n onClick={() => this.removeFile(file, index)}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n {file.state === 'uploading' ||\n file.state === 'uploaded' ? (\n <div className={cx('FileControl-progressInfo')}>\n <div className={cx('FileControl-progress')}>\n <span\n style={{\n width: `${\n file.state === 'uploaded'\n ? 100\n : (file.progress || 0) * 100\n }%`\n }}\n />\n </div>\n\n {file.state === 'uploaded' ? (\n <Icon icon=\"success\" className=\"icon\" />\n ) : (\n <span>\n {Math.round((file.progress || 0) * 100)}%\n </span>\n )}\n </div>\n ) : null}\n </li>\n ))}\n </ul>\n ) : null}\n </>\n )}\n </div>\n )}\n </DropZone>\n\n {failed ? (\n <div className={cx('FileControl-sum')}>\n {__('File.result', {\n uploaded,\n failed\n })}\n <a onClick={this.retry}>{__('File.retry')}</a>\n {__('File.failed')}\n </div>\n ) : null}\n\n {!autoUpload && !hideUploadButton && files.length ? (\n <Button\n level=\"default\"\n disabled={!hasPending}\n className={cx('FileControl-uploadBtn', btnUploadClassName)}\n onClick={this.toggleUpload}\n >\n {__(uploading ? 'File.pause' : 'File.start')}\n </Button>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-file',\n sizeMutable: false,\n renderDescription: false\n})\nexport class FileControlRenderer extends FileControl {}\n"
|
12
12
|
]
|
13
13
|
}
|