amis 1.6.5-beta.4 → 1.7.0
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/components/PopUp.js +2 -1
- package/lib/components/PopUp.js.map +2 -2
- package/lib/components/Range.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/renderers/Form/InputColor.js +3 -1
- package/lib/renderers/Form/InputColor.js.map +2 -2
- package/lib/renderers/Form/InputDate.js +3 -1
- package/lib/renderers/Form/InputDate.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.js +3 -1
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputExcel.d.ts +4 -0
- package/lib/renderers/Form/InputExcel.js +33 -6
- package/lib/renderers/Form/InputExcel.js.map +2 -2
- package/lib/renderers/Form/InputFile.d.ts +4 -1
- package/lib/renderers/Form/InputFile.js +9 -0
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.d.ts +4 -1
- package/lib/renderers/Form/InputImage.js +12 -2
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputRange.d.ts +27 -9
- package/lib/renderers/Form/InputRange.js +88 -23
- package/lib/renderers/Form/InputRange.js.map +2 -2
- package/lib/renderers/Form/Select.js +3 -1
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/Switch.d.ts +7 -6
- package/lib/renderers/Form/Switch.js +4 -1
- package/lib/renderers/Form/Switch.js.map +2 -2
- package/lib/renderers/Log.js +2 -1
- package/lib/renderers/Log.js.map +2 -2
- package/lib/renderers/PopOver.js +1 -1
- package/lib/renderers/PopOver.js.map +2 -2
- package/lib/renderers/Tabs.js +1 -1
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Video.d.ts +6 -0
- package/lib/renderers/Video.js +13 -6
- package/lib/renderers/Video.js.map +2 -2
- package/lib/store/table.js +1 -1
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +16 -6
- package/lib/themes/ang.css +16 -6
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +16 -6
- package/lib/themes/antd.css +16 -6
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +16 -6
- package/lib/themes/cxd.css +16 -6
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +16 -6
- package/lib/themes/dark.css +16 -6
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +16 -6
- package/lib/themes/default.css +16 -6
- package/lib/themes/default.css.map +1 -1
- package/package.json +1 -1
- package/schema.json +15521 -504
- package/scss/components/_city-area.scss +2 -0
- package/scss/components/_popup.scss +13 -3
- package/scss/components/form/_switch.scss +1 -3
- package/sdk/ang-ie11.css +18 -6
- package/sdk/ang.css +18 -6
- package/sdk/antd-ie11.css +18 -6
- package/sdk/antd.css +18 -6
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +18 -6
- package/sdk/cxd.css +18 -6
- package/sdk/dark-ie11.css +18 -6
- package/sdk/dark.css +18 -6
- package/sdk/exceljs.js +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 +17 -17
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +18 -6
- package/sdk/sdk.css +18 -6
- package/sdk/sdk.js +1246 -1246
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/components/PopUp.tsx +6 -5
- package/src/components/Range.tsx +7 -1
- package/src/renderers/Form/InputColor.tsx +2 -0
- package/src/renderers/Form/InputDate.tsx +2 -0
- package/src/renderers/Form/InputDateRange.tsx +2 -0
- package/src/renderers/Form/InputExcel.tsx +27 -5
- package/src/renderers/Form/InputFile.tsx +13 -1
- package/src/renderers/Form/InputImage.tsx +32 -12
- package/src/renderers/Form/InputRange.tsx +99 -40
- package/src/renderers/Form/Select.tsx +2 -0
- package/src/renderers/Form/Switch.tsx +16 -9
- package/src/renderers/Log.tsx +2 -1
- package/src/renderers/PopOver.tsx +1 -1
- package/src/renderers/Tabs.tsx +1 -1
- package/src/renderers/Video.tsx +21 -6
- package/src/store/table.ts +1 -1
@@ -6,6 +6,7 @@ var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
6
6
|
var isNumber_1 = (0, tslib_1.__importDefault)(require("lodash/isNumber"));
|
7
7
|
var isObject_1 = (0, tslib_1.__importDefault)(require("lodash/isObject"));
|
8
8
|
var isEqual_1 = (0, tslib_1.__importDefault)(require("lodash/isEqual"));
|
9
|
+
var forEach_1 = (0, tslib_1.__importDefault)(require("lodash/forEach"));
|
9
10
|
var Item_1 = require("./Item");
|
10
11
|
var Range_1 = (0, tslib_1.__importDefault)(require("../../components/Range"));
|
11
12
|
var NumberInput_1 = (0, tslib_1.__importDefault)(require("../../components/NumberInput"));
|
@@ -130,6 +131,20 @@ var Input = /** @class */ (function (_super) {
|
|
130
131
|
return (_value < min && min) || (_value > max && max) || _value;
|
131
132
|
}
|
132
133
|
};
|
134
|
+
/**
|
135
|
+
* 失焦事件
|
136
|
+
*/
|
137
|
+
Input.prototype.onBlur = function () {
|
138
|
+
var _a = this.props, data = _a.data, dispatchEvent = _a.dispatchEvent;
|
139
|
+
dispatchEvent('blur', data);
|
140
|
+
};
|
141
|
+
/**
|
142
|
+
* 聚焦事件
|
143
|
+
*/
|
144
|
+
Input.prototype.onFocus = function () {
|
145
|
+
var _a = this.props, data = _a.data, dispatchEvent = _a.dispatchEvent;
|
146
|
+
dispatchEvent('focus', data);
|
147
|
+
};
|
133
148
|
Input.prototype.render = function () {
|
134
149
|
var _a = this.props, cx = _a.classnames, value = _a.value, multiple = _a.multiple, type = _a.type, step = _a.step, ns = _a.classPrefix, disabled = _a.disabled, max = _a.max, min = _a.min;
|
135
150
|
var _value = multiple
|
@@ -138,7 +153,7 @@ var Input = /** @class */ (function (_super) {
|
|
138
153
|
: Math.max(value.min, value.max)
|
139
154
|
: value;
|
140
155
|
return (react_1.default.createElement("div", { className: cx("".concat(ns, "InputRange-input")) },
|
141
|
-
react_1.default.createElement(NumberInput_1.default, { value: +_value, step: step, max: this.checkNum(max), min: this.checkNum(min), onChange: this.onChange, disabled: disabled })));
|
156
|
+
react_1.default.createElement(NumberInput_1.default, { value: +_value, step: step, max: this.checkNum(max), min: this.checkNum(min), onChange: this.onChange, disabled: disabled, onBlur: this.onBlur, onFocus: this.onFocus })));
|
142
157
|
};
|
143
158
|
(0, tslib_1.__decorate)([
|
144
159
|
helper_1.autobind,
|
@@ -152,6 +167,18 @@ var Input = /** @class */ (function (_super) {
|
|
152
167
|
(0, tslib_1.__metadata)("design:paramtypes", [Number]),
|
153
168
|
(0, tslib_1.__metadata)("design:returntype", void 0)
|
154
169
|
], Input.prototype, "onUpdateValue", null);
|
170
|
+
(0, tslib_1.__decorate)([
|
171
|
+
helper_1.autobind,
|
172
|
+
(0, tslib_1.__metadata)("design:type", Function),
|
173
|
+
(0, tslib_1.__metadata)("design:paramtypes", []),
|
174
|
+
(0, tslib_1.__metadata)("design:returntype", void 0)
|
175
|
+
], Input.prototype, "onBlur", null);
|
176
|
+
(0, tslib_1.__decorate)([
|
177
|
+
helper_1.autobind,
|
178
|
+
(0, tslib_1.__metadata)("design:type", Function),
|
179
|
+
(0, tslib_1.__metadata)("design:paramtypes", []),
|
180
|
+
(0, tslib_1.__metadata)("design:returntype", void 0)
|
181
|
+
], Input.prototype, "onFocus", null);
|
155
182
|
return Input;
|
156
183
|
}(react_1.default.Component));
|
157
184
|
exports.Input = Input;
|
@@ -186,6 +213,11 @@ var RangeControl = /** @class */ (function (_super) {
|
|
186
213
|
});
|
187
214
|
}
|
188
215
|
};
|
216
|
+
RangeControl.prototype.doAction = function (action, data, throwErrors) {
|
217
|
+
if (action.actionType === 'clear') {
|
218
|
+
this.clearValue();
|
219
|
+
}
|
220
|
+
};
|
189
221
|
RangeControl.prototype.clearValue = function () {
|
190
222
|
var _a = this.props, multiple = _a.multiple, min = _a.min, max = _a.max;
|
191
223
|
if (multiple) {
|
@@ -209,46 +241,73 @@ var RangeControl = /** @class */ (function (_super) {
|
|
209
241
|
* @param value
|
210
242
|
*/
|
211
243
|
RangeControl.prototype.updateValue = function (value) {
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
244
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
245
|
+
var _a, onChange, data, dispatchEvent, result, rendererEvent;
|
246
|
+
return (0, tslib_1.__generator)(this, function (_b) {
|
247
|
+
switch (_b.label) {
|
248
|
+
case 0:
|
249
|
+
this.setState({ value: this.getValue(value) });
|
250
|
+
_a = this.props, onChange = _a.onChange, data = _a.data, dispatchEvent = _a.dispatchEvent;
|
251
|
+
result = this.getFormatValue(value);
|
252
|
+
return [4 /*yield*/, dispatchEvent('change', (0, helper_1.createObject)(data, {
|
253
|
+
value: result
|
254
|
+
}))];
|
255
|
+
case 1:
|
256
|
+
rendererEvent = _b.sent();
|
257
|
+
if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
|
258
|
+
return [2 /*return*/];
|
259
|
+
}
|
260
|
+
onChange && onChange(result);
|
261
|
+
return [2 /*return*/];
|
220
262
|
}
|
221
|
-
|
263
|
+
});
|
264
|
+
});
|
222
265
|
};
|
223
266
|
/**
|
224
267
|
* 鼠标松开事件
|
225
268
|
*/
|
226
269
|
RangeControl.prototype.onAfterChange = function () {
|
227
270
|
var value = this.state.value;
|
228
|
-
var _a = this.props,
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
271
|
+
var _a = this.props, onAfterChange = _a.onAfterChange, dispatchEvent = _a.dispatchEvent, data = _a.data;
|
272
|
+
var result = this.getFormatValue(value);
|
273
|
+
onAfterChange && onAfterChange(result);
|
274
|
+
};
|
275
|
+
/**
|
276
|
+
* 获取导出格式数据
|
277
|
+
*/
|
278
|
+
RangeControl.prototype.getFormatValue = function (value) {
|
279
|
+
var _a = this.props, multiple = _a.multiple, joinValues = _a.joinValues, delimiter = _a.delimiter;
|
280
|
+
return multiple
|
281
|
+
? joinValues
|
282
|
+
? [value.min, value.max].join(delimiter || ',')
|
283
|
+
: {
|
284
|
+
min: value.min,
|
285
|
+
max: value.max
|
286
|
+
}
|
287
|
+
: value;
|
238
288
|
};
|
239
289
|
RangeControl.prototype.render = function () {
|
240
290
|
var _this = this;
|
241
291
|
var value = this.state.value;
|
242
292
|
var props = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.props), { value: value, updateValue: this.updateValue, onAfterChange: this.onAfterChange });
|
243
|
-
var ns = props.classPrefix, multiple = props.multiple, parts = props.parts, showInput = props.showInput, cx = props.classnames, className = props.className, disabled = props.disabled, clearable = props.clearable, min = props.min, max = props.max;
|
293
|
+
var ns = props.classPrefix, multiple = props.multiple, parts = props.parts, showInput = props.showInput, cx = props.classnames, className = props.className, disabled = props.disabled, clearable = props.clearable, min = props.min, max = props.max, render = props.render, marks = props.marks, region = props.region;
|
244
294
|
// 指定parts -> 重新计算步长
|
245
295
|
if (parts > 1) {
|
246
296
|
props.step = (props.max - props.min) / props.parts;
|
247
297
|
props.showSteps = true;
|
248
298
|
}
|
299
|
+
// 处理自定义json配置
|
300
|
+
var renderMarks = marks ? (0, tslib_1.__assign)({}, marks) : marks;
|
301
|
+
marks &&
|
302
|
+
(0, forEach_1.default)(marks, function (item, key) {
|
303
|
+
if ((0, isObject_1.default)(item) && item.type) {
|
304
|
+
renderMarks &&
|
305
|
+
(renderMarks[key] = render(region, item));
|
306
|
+
}
|
307
|
+
});
|
249
308
|
return (react_1.default.createElement("div", { className: cx('RangeControl', "".concat(ns, "InputRange"), { 'is-disabled': disabled }, className) },
|
250
309
|
showInput && multiple && react_1.default.createElement(Input, (0, tslib_1.__assign)({}, props, { type: "min" })),
|
251
|
-
react_1.default.createElement(Range_1.default, (0, tslib_1.__assign)({}, props)),
|
310
|
+
react_1.default.createElement(Range_1.default, (0, tslib_1.__assign)({}, props, { marks: renderMarks })),
|
252
311
|
showInput && react_1.default.createElement(Input, (0, tslib_1.__assign)({}, props, { type: "max" })),
|
253
312
|
clearable && !disabled && showInput ? (react_1.default.createElement("a", { onClick: function () { return _this.clearValue(); }, className: cx('InputRange-clear', {
|
254
313
|
'is-active': multiple
|
@@ -289,7 +348,7 @@ var RangeControl = /** @class */ (function (_super) {
|
|
289
348
|
helper_1.autobind,
|
290
349
|
(0, tslib_1.__metadata)("design:type", Function),
|
291
350
|
(0, tslib_1.__metadata)("design:paramtypes", [Object]),
|
292
|
-
(0, tslib_1.__metadata)("design:returntype",
|
351
|
+
(0, tslib_1.__metadata)("design:returntype", Promise)
|
293
352
|
], RangeControl.prototype, "updateValue", null);
|
294
353
|
(0, tslib_1.__decorate)([
|
295
354
|
helper_1.autobind,
|
@@ -297,6 +356,12 @@ var RangeControl = /** @class */ (function (_super) {
|
|
297
356
|
(0, tslib_1.__metadata)("design:paramtypes", []),
|
298
357
|
(0, tslib_1.__metadata)("design:returntype", void 0)
|
299
358
|
], RangeControl.prototype, "onAfterChange", null);
|
359
|
+
(0, tslib_1.__decorate)([
|
360
|
+
helper_1.autobind,
|
361
|
+
(0, tslib_1.__metadata)("design:type", Function),
|
362
|
+
(0, tslib_1.__metadata)("design:paramtypes", [Object]),
|
363
|
+
(0, tslib_1.__metadata)("design:returntype", void 0)
|
364
|
+
], RangeControl.prototype, "getFormatValue", null);
|
300
365
|
return RangeControl;
|
301
366
|
}(react_1.default.PureComponent));
|
302
367
|
exports.default = RangeControl;
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputRange.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAAsD;AACtD,0EAAuC;AACvC,0EAAuC;AACvC,wEAAqC;AAErC,+BAAmE;AACnE,8EAAgD;AAChD,0FAAuD;AACvD,gDAA4C;AAC5C,uDAAoD;AACpD,
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React, {CSSProperties, ReactNode} from 'react';\nimport isNumber from 'lodash/isNumber';\nimport isObject from 'lodash/isObject';\nimport isEqual from 'lodash/isEqual';\n\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport InputRange from '../../components/Range';\nimport NumberInput from '../../components/NumberInput';\nimport {Icon} from '../../components/icons';\nimport {stripNumber} from '../../utils/tpl-builtin';\nimport {autobind} from '../../utils/helper';\nimport {filter} from '../../utils/tpl';\n\n/**\n * Range\n * 文档:https://baidu.gitee.io/amis/docs/components/form/range\n */\n\nexport type Value = string | MultipleValue | number | [number, number];\nexport type FormatValue = MultipleValue | number;\nexport type TooltipPosType = 'auto' | 'top' | 'right' | 'bottom' | 'left';\nexport interface RangeControlSchema extends FormBaseControl {\n type: 'input-range';\n\n /**\n * 滑块值\n */\n value?: Value;\n\n /**\n * 最大值\n */\n max?: number;\n\n /**\n * 最小值\n */\n min?: number;\n\n /**\n * 步长\n */\n step?: number;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示步长\n */\n showSteps?: boolean;\n\n /**\n * 分割块数\n */\n parts?: number;\n\n /**\n * 刻度\n */\n // marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible?: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement?: TooltipPosType;\n\n /**\n * 是否为双滑块\n */\n multiple?: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues?: boolean;\n\n /**\n * 分隔符\n */\n delimiter?: string;\n\n /**\n * 是否展示输入框\n */\n showInput?: boolean;\n\n /**\n * 是否禁用\n */\n disabled?: boolean;\n}\n\nexport type MarksType = {\n [index: number | string]: Record<\n number,\n {style?: React.CSSProperties; label?: string} | any\n >;\n};\n\nexport interface RangeProps extends FormControlProps {\n /**\n * 滑块值\n */\n value: Value;\n\n /**\n * 最小值\n */\n min: number;\n\n /**\n * 最大值\n */\n max: number;\n\n /**\n * 步长\n */\n step: number;\n\n /**\n * 是否展示步长\n */\n showSteps: boolean;\n\n /**\n * 分割块数\n */\n parts: number;\n\n /**\n * 刻度\n *\n * todo 这里面存在 React.Compnonent 复杂定义,不能转成 json schema\n * 需要简化类型定义,json 中是不能定义复杂类型的,如 function\n */\n // marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement: TooltipPosType;\n\n /**\n * 控制滑块标签显隐函数\n */\n tipFormatter?: (value: Value) => boolean;\n\n /**\n * 是否为双滑块\n */\n multiple: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues: boolean;\n\n /**\n * 分隔符\n */\n delimiter: string;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示输入框\n */\n showInput: boolean;\n\n /**\n * 是否禁用\n */\n disabled: boolean;\n\n /**\n * value改变事件\n */\n onChange: (value: Value) => void;\n\n /**\n * 鼠标松开事件\n */\n onAfterChange?: (value: Value) => any;\n}\n\nexport interface MultipleValue {\n min: number;\n max: number;\n}\n\nexport interface DefaultProps {\n value: Value;\n max: number;\n min: number;\n step: number;\n unit: string;\n clearable: boolean;\n disabled: boolean;\n showInput: boolean;\n multiple: boolean;\n joinValues: boolean;\n delimiter: string;\n showSteps: boolean;\n parts: number;\n tooltipPlacement: TooltipPosType;\n}\n\nexport interface RangeItemProps extends RangeProps {\n value: FormatValue;\n updateValue: (value: Value) => void;\n onAfterChange: () => void;\n}\n\nexport interface RangeState {\n value: FormatValue;\n}\n\n/**\n * 格式化初始value值\n * @param value 初始value值 Value\n * @param props RangeProps\n * @returns number | {min: number, max: number}\n */\nexport function formatValue(\n value: Value,\n props: {\n multiple: boolean;\n delimiter: string;\n min: number;\n max: number;\n }\n): FormatValue {\n if (props.multiple) {\n let {min, max} = props;\n // value是字符串\n if (typeof value === 'string') {\n [min, max] = value.split(props.delimiter || ',').map(v => Number(v));\n }\n // value是数组\n else if (Array.isArray(value)) {\n [min, max] = value;\n }\n // value是对象\n else if (typeof value === 'object') {\n min = value.min;\n max = value.max;\n }\n return {\n min: min === undefined || min < props.min ? props.min : min,\n max: max === undefined || max > props.max ? props.max : max\n };\n }\n return +value ?? props.min;\n}\n\n/**\n * 输入框\n */\nexport class Input extends React.Component<RangeItemProps, any> {\n /**\n * onChange事件,只能输入数字\n * @param e React.ChangeEvent\n */\n @autobind\n onChange(value: number) {\n const {multiple, value: originValue, type} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple ? {...(originValue as MultipleValue), [type]: _value} : value\n );\n }\n\n /**\n * 双滑块 更新value\n * @param value 输入的value值\n */\n @autobind\n onUpdateValue(value: number) {\n const {multiple, value: originValue, type} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple ? {...(originValue as MultipleValue), [type]: _value} : value\n );\n }\n\n checkNum(value: number | string | undefined) {\n if (typeof value !== 'number') {\n value = filter(value, this.props.data);\n value = /^[-]?\\d+/.test(value) ? +value : undefined;\n }\n return value;\n }\n\n /**\n * 获取步长小数精度\n * @returns\n */\n getStepPrecision() {\n const {step} = this.props;\n const stepIsDecimal = /^\\d+\\.\\d+$/.test(step.toString());\n return !stepIsDecimal || step < 0\n ? 0\n : step.toString().split('.')[1]?.length;\n }\n\n /**\n * 处理数据\n * @param value input数据\n * @param type min | max 双滑块\n * @returns 处理之后数据\n */\n getValue(value: string | number, type?: string) {\n const {max, min, step, value: stateValue} = this.props as RangeItemProps;\n\n // 校正value为step的倍数\n let _value = Math.round(parseFloat(value + '') / step) * step;\n // 同步value与步长小数位数\n _value = parseFloat(_value.toFixed(this.getStepPrecision()));\n // 单滑块只用考虑 轨道边界 ,双滑块需要考虑 两端滑块边界\n switch (type) {\n case 'min': {\n if (isObject(stateValue) && isNumber(stateValue.max)) {\n // 如果 大于当前双滑块最大值 取 当前双滑块max值 - 步长\n if (_value >= stateValue.max) {\n return stateValue.max - step;\n }\n return _value;\n }\n return min;\n }\n case 'max':\n if (isObject(stateValue) && isNumber(stateValue.min)) {\n // 如果 小于当前双滑块最大值 取 当前双滑块min值 + 步长\n if (_value <= stateValue.min) {\n return stateValue.min + step;\n }\n return _value;\n }\n return max;\n default:\n // 轨道边界\n return (_value < min && min) || (_value > max && max) || _value;\n }\n }\n\n render() {\n const {\n classnames: cx,\n value,\n multiple,\n type,\n step,\n classPrefix: ns,\n disabled,\n max,\n min\n } = this.props;\n const _value = multiple\n ? type === 'min'\n ? Math.min((value as MultipleValue).min, (value as MultipleValue).max)\n : Math.max((value as MultipleValue).min, (value as MultipleValue).max)\n : value;\n return (\n <div className={cx(`${ns}InputRange-input`)}>\n <NumberInput\n value={+_value}\n step={step}\n max={this.checkNum(max)}\n min={this.checkNum(min)}\n onChange={this.onChange}\n disabled={disabled}\n />\n </div>\n );\n }\n}\n\nexport default class RangeControl extends React.PureComponent<\n RangeProps,\n RangeState\n> {\n midLabel?: HTMLSpanElement;\n\n static defaultProps: DefaultProps = {\n value: 0,\n max: 100,\n min: 0,\n step: 1,\n unit: '',\n clearable: true,\n disabled: false,\n showInput: false,\n multiple: false,\n joinValues: true,\n delimiter: ',',\n showSteps: false,\n parts: 1,\n tooltipPlacement: 'auto'\n };\n\n constructor(props: RangeProps) {\n super(props);\n const {value: propsValue, multiple, delimiter, min, max} = this.props;\n const value = formatValue(propsValue, {\n multiple,\n delimiter,\n min,\n max\n });\n\n this.state = {\n value: this.getValue(value)\n };\n }\n\n componentDidUpdate(prevProps: RangeProps) {\n const {value} = prevProps;\n const {\n value: nextPropsValue,\n multiple,\n delimiter,\n min,\n max,\n onChange\n } = this.props;\n if (value !== nextPropsValue) {\n const value = formatValue(nextPropsValue, {\n multiple,\n delimiter,\n min,\n max\n });\n this.setState({\n value: this.getValue(value)\n });\n }\n }\n\n @autobind\n clearValue() {\n const {multiple, min, max} = this.props;\n if (multiple) {\n this.updateValue({min, max});\n } else {\n this.updateValue(min);\n }\n }\n\n @autobind\n getValue(value: FormatValue) {\n const {multiple} = this.props;\n return multiple\n ? {\n max: stripNumber((value as MultipleValue).max),\n min: stripNumber((value as MultipleValue).min)\n }\n : stripNumber(value as number);\n }\n\n /**\n * 所有触发value变换 -> updateValue\n * @param value\n */\n @autobind\n updateValue(value: FormatValue) {\n this.setState({value: this.getValue(value)});\n const {multiple, joinValues, delimiter, onChange} = this.props;\n onChange(\n multiple\n ? joinValues\n ? [(value as MultipleValue).min, (value as MultipleValue).max].join(\n delimiter || ','\n )\n : {\n min: (value as MultipleValue).min,\n max: (value as MultipleValue).max\n }\n : value\n );\n }\n\n /**\n * 鼠标松开事件\n */\n @autobind\n onAfterChange() {\n const {value} = this.state;\n const {multiple, joinValues, delimiter, onAfterChange} = this.props;\n onAfterChange &&\n onAfterChange(\n multiple\n ? joinValues\n ? [(value as MultipleValue).min, (value as MultipleValue).max].join(\n delimiter || ','\n )\n : {\n min: (value as MultipleValue).min,\n max: (value as MultipleValue).max\n }\n : value\n );\n }\n\n render() {\n const {value} = this.state;\n const props: RangeItemProps = {\n ...this.props,\n value,\n updateValue: this.updateValue,\n onAfterChange: this.onAfterChange\n };\n\n const {\n classPrefix: ns,\n multiple,\n parts,\n showInput,\n classnames: cx,\n className,\n disabled,\n clearable,\n min,\n max\n } = props;\n\n // 指定parts -> 重新计算步长\n if (parts > 1) {\n props.step = (props.max - props.min) / props.parts;\n props.showSteps = true;\n }\n\n return (\n <div\n className={cx(\n 'RangeControl',\n `${ns}InputRange`,\n {'is-disabled': disabled},\n className\n )}\n >\n {showInput && multiple && <Input {...props} type=\"min\" />}\n <InputRange {...props} />\n {showInput && <Input {...props} type=\"max\" />}\n {clearable && !disabled && showInput ? (\n <a\n onClick={() => this.clearValue()}\n className={cx('InputRange-clear', {\n 'is-active': multiple\n ? isEqual(this.state.value, {min: min, max: max})\n : this.state.value !== min\n })}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-range'\n})\nexport class RangeControlRenderer extends RangeControl {}\n"
|
11
|
+
"import React, {CSSProperties, ReactNode} from 'react';\nimport isNumber from 'lodash/isNumber';\nimport isObject from 'lodash/isObject';\nimport isEqual from 'lodash/isEqual';\nimport forEach from 'lodash/forEach';\n\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport InputRange from '../../components/Range';\nimport NumberInput from '../../components/NumberInput';\nimport {Icon} from '../../components/icons';\nimport {stripNumber} from '../../utils/tpl-builtin';\nimport {autobind, createObject} from '../../utils/helper';\nimport {filter} from '../../utils/tpl';\nimport {SchemaObject} from '../../Schema';\nimport {Action} from '../../types';\n\n/**\n * Range\n * 文档:https://baidu.gitee.io/amis/docs/components/form/range\n */\n\nexport type Value = string | MultipleValue | number | [number, number];\nexport type FormatValue = MultipleValue | number;\nexport type TooltipPosType = 'auto' | 'top' | 'right' | 'bottom' | 'left';\nexport type InputTextRendererEvent =\n | 'change'\n | 'afterChange'\n | 'blur'\n | 'focus';\nexport type InputTextRendererAction = 'clear';\nexport interface RangeControlSchema extends FormBaseControl {\n type: 'input-range';\n\n /**\n * 滑块值\n */\n value?: Value;\n\n /**\n * 最大值\n */\n max?: number;\n\n /**\n * 最小值\n */\n min?: number;\n\n /**\n * 步长\n */\n step?: number;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示步长\n */\n showSteps?: boolean;\n\n /**\n * 分割块数\n */\n parts?: number;\n\n /**\n * 刻度\n */\n marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible?: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement?: TooltipPosType;\n\n /**\n * 是否为双滑块\n */\n multiple?: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues?: boolean;\n\n /**\n * 分隔符\n */\n delimiter?: string;\n\n /**\n * 是否展示输入框\n */\n showInput?: boolean;\n\n /**\n * 是否禁用\n */\n disabled?: boolean;\n}\n\ntype MarksType = {\n [index: number | string]: MarksValue;\n};\n\ntype MarksValue = Record<\n number,\n SchemaObject | {style?: React.CSSProperties; label?: string}\n>;\n\nexport interface RangeProps extends FormControlProps {\n /**\n * 滑块值\n */\n value: Value;\n\n /**\n * 最小值\n */\n min: number;\n\n /**\n * 最大值\n */\n max: number;\n\n /**\n * 步长\n */\n step: number;\n\n /**\n * 是否展示步长\n */\n showSteps: boolean;\n\n /**\n * 分割块数\n */\n parts: number;\n\n /**\n * 刻度\n */\n marks?: MarksType;\n\n /**\n * 是否展示标签\n */\n tooltipVisible: boolean;\n\n /**\n * 标签方向\n */\n tooltipPlacement: TooltipPosType;\n\n /**\n * 控制滑块标签显隐函数\n */\n tipFormatter?: (value: Value) => boolean;\n\n /**\n * 是否为双滑块\n */\n multiple: boolean;\n\n /**\n * 是否通过分隔符连接\n */\n joinValues: boolean;\n\n /**\n * 分隔符\n */\n delimiter: string;\n\n /**\n * 单位\n */\n unit?: string;\n\n /**\n * 是否展示输入框\n */\n showInput: boolean;\n\n /**\n * 是否禁用\n */\n disabled: boolean;\n\n /**\n * value改变事件\n */\n onChange: (value: Value) => void;\n\n /**\n * 鼠标松开事件\n */\n onAfterChange?: (value: Value) => any;\n}\n\nexport interface MultipleValue {\n min: number;\n max: number;\n}\n\nexport interface DefaultProps {\n value: Value;\n max: number;\n min: number;\n step: number;\n unit: string;\n clearable: boolean;\n disabled: boolean;\n showInput: boolean;\n multiple: boolean;\n joinValues: boolean;\n delimiter: string;\n showSteps: boolean;\n parts: number;\n tooltipPlacement: TooltipPosType;\n}\n\nexport interface RangeItemProps extends RangeProps {\n value: FormatValue;\n updateValue: (value: Value) => void;\n onAfterChange: () => void;\n}\n\nexport interface RangeState {\n value: FormatValue;\n}\n\n/**\n * 格式化初始value值\n * @param value 初始value值 Value\n * @param props RangeProps\n * @returns number | {min: number, max: number}\n */\nexport function formatValue(\n value: Value,\n props: {\n multiple: boolean;\n delimiter: string;\n min: number;\n max: number;\n }\n): FormatValue {\n if (props.multiple) {\n let {min, max} = props;\n // value是字符串\n if (typeof value === 'string') {\n [min, max] = value.split(props.delimiter || ',').map(v => Number(v));\n }\n // value是数组\n else if (Array.isArray(value)) {\n [min, max] = value;\n }\n // value是对象\n else if (typeof value === 'object') {\n min = value.min;\n max = value.max;\n }\n return {\n min: min === undefined || min < props.min ? props.min : min,\n max: max === undefined || max > props.max ? props.max : max\n };\n }\n return +value ?? props.min;\n}\n\n/**\n * 输入框\n */\nexport class Input extends React.Component<RangeItemProps, any> {\n /**\n * onChange事件,只能输入数字\n * @param e React.ChangeEvent\n */\n @autobind\n onChange(value: number) {\n const {multiple, value: originValue, type} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple ? {...(originValue as MultipleValue), [type]: _value} : value\n );\n }\n\n /**\n * 双滑块 更新value\n * @param value 输入的value值\n */\n @autobind\n onUpdateValue(value: number) {\n const {multiple, value: originValue, type} = this.props;\n const _value = this.getValue(value, type);\n\n this.props.updateValue(\n multiple ? {...(originValue as MultipleValue), [type]: _value} : value\n );\n }\n\n checkNum(value: number | string | undefined) {\n if (typeof value !== 'number') {\n value = filter(value, this.props.data);\n value = /^[-]?\\d+/.test(value) ? +value : undefined;\n }\n return value;\n }\n\n /**\n * 获取步长小数精度\n * @returns\n */\n getStepPrecision() {\n const {step} = this.props;\n const stepIsDecimal = /^\\d+\\.\\d+$/.test(step.toString());\n return !stepIsDecimal || step < 0\n ? 0\n : step.toString().split('.')[1]?.length;\n }\n\n /**\n * 处理数据\n * @param value input数据\n * @param type min | max 双滑块\n * @returns 处理之后数据\n */\n getValue(value: string | number, type?: string) {\n const {max, min, step, value: stateValue} = this.props as RangeItemProps;\n\n // 校正value为step的倍数\n let _value = Math.round(parseFloat(value + '') / step) * step;\n // 同步value与步长小数位数\n _value = parseFloat(_value.toFixed(this.getStepPrecision()));\n // 单滑块只用考虑 轨道边界 ,双滑块需要考虑 两端滑块边界\n switch (type) {\n case 'min': {\n if (isObject(stateValue) && isNumber(stateValue.max)) {\n // 如果 大于当前双滑块最大值 取 当前双滑块max值 - 步长\n if (_value >= stateValue.max) {\n return stateValue.max - step;\n }\n return _value;\n }\n return min;\n }\n case 'max':\n if (isObject(stateValue) && isNumber(stateValue.min)) {\n // 如果 小于当前双滑块最大值 取 当前双滑块min值 + 步长\n if (_value <= stateValue.min) {\n return stateValue.min + step;\n }\n return _value;\n }\n return max;\n default:\n // 轨道边界\n return (_value < min && min) || (_value > max && max) || _value;\n }\n }\n\n /**\n * 失焦事件\n */\n @autobind\n onBlur() {\n const {data, dispatchEvent} = this.props;\n dispatchEvent('blur', data);\n }\n\n /**\n * 聚焦事件\n */\n @autobind\n onFocus() {\n const {data, dispatchEvent} = this.props;\n dispatchEvent('focus', data);\n }\n\n render() {\n const {\n classnames: cx,\n value,\n multiple,\n type,\n step,\n classPrefix: ns,\n disabled,\n max,\n min\n } = this.props;\n const _value = multiple\n ? type === 'min'\n ? Math.min((value as MultipleValue).min, (value as MultipleValue).max)\n : Math.max((value as MultipleValue).min, (value as MultipleValue).max)\n : value;\n return (\n <div className={cx(`${ns}InputRange-input`)}>\n <NumberInput\n value={+_value}\n step={step}\n max={this.checkNum(max)}\n min={this.checkNum(min)}\n onChange={this.onChange}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n />\n </div>\n );\n }\n}\n\nexport default class RangeControl extends React.PureComponent<\n RangeProps,\n RangeState\n> {\n midLabel?: HTMLSpanElement;\n\n static defaultProps: DefaultProps = {\n value: 0,\n max: 100,\n min: 0,\n step: 1,\n unit: '',\n clearable: true,\n disabled: false,\n showInput: false,\n multiple: false,\n joinValues: true,\n delimiter: ',',\n showSteps: false,\n parts: 1,\n tooltipPlacement: 'auto'\n };\n\n constructor(props: RangeProps) {\n super(props);\n const {value: propsValue, multiple, delimiter, min, max} = this.props;\n const value = formatValue(propsValue, {\n multiple,\n delimiter,\n min,\n max\n });\n\n this.state = {\n value: this.getValue(value)\n };\n }\n\n componentDidUpdate(prevProps: RangeProps) {\n const {value} = prevProps;\n const {\n value: nextPropsValue,\n multiple,\n delimiter,\n min,\n max,\n onChange\n } = this.props;\n if (value !== nextPropsValue) {\n const value = formatValue(nextPropsValue, {\n multiple,\n delimiter,\n min,\n max\n });\n this.setState({\n value: this.getValue(value)\n });\n }\n }\n\n doAction(action: Action, data: object, throwErrors: boolean) {\n if (action.actionType === 'clear') {\n this.clearValue();\n }\n }\n\n @autobind\n clearValue() {\n const {multiple, min, max} = this.props;\n if (multiple) {\n this.updateValue({min, max});\n } else {\n this.updateValue(min);\n }\n }\n\n @autobind\n getValue(value: FormatValue) {\n const {multiple} = this.props;\n return multiple\n ? {\n max: stripNumber((value as MultipleValue).max),\n min: stripNumber((value as MultipleValue).min)\n }\n : stripNumber(value as number);\n }\n\n /**\n * 所有触发value变换 -> updateValue\n * @param value\n */\n @autobind\n async updateValue(value: FormatValue) {\n this.setState({value: this.getValue(value)});\n const {onChange, data, dispatchEvent} = this.props;\n const result = this.getFormatValue(value);\n\n const rendererEvent = await dispatchEvent(\n 'change',\n createObject(data, {\n value: result\n })\n );\n\n if (rendererEvent?.prevented) {\n return;\n }\n\n onChange && onChange(result);\n }\n\n /**\n * 鼠标松开事件\n */\n @autobind\n onAfterChange() {\n const {value} = this.state;\n const {onAfterChange, dispatchEvent, data} = this.props;\n const result = this.getFormatValue(value);\n onAfterChange && onAfterChange(result);\n }\n\n /**\n * 获取导出格式数据\n */\n @autobind\n getFormatValue(value: FormatValue) {\n const {multiple, joinValues, delimiter} = this.props;\n return multiple\n ? joinValues\n ? [(value as MultipleValue).min, (value as MultipleValue).max].join(\n delimiter || ','\n )\n : {\n min: (value as MultipleValue).min,\n max: (value as MultipleValue).max\n }\n : value;\n }\n\n render() {\n const {value} = this.state;\n const props: RangeItemProps = {\n ...this.props,\n value,\n updateValue: this.updateValue,\n onAfterChange: this.onAfterChange\n };\n\n const {\n classPrefix: ns,\n multiple,\n parts,\n showInput,\n classnames: cx,\n className,\n disabled,\n clearable,\n min,\n max,\n render,\n marks,\n region\n } = props;\n\n // 指定parts -> 重新计算步长\n if (parts > 1) {\n props.step = (props.max - props.min) / props.parts;\n props.showSteps = true;\n }\n\n // 处理自定义json配置\n let renderMarks:\n | MarksType\n | {[index: number | string]: ReactNode}\n | undefined = marks ? {...marks} : marks;\n marks &&\n forEach(marks, (item, key) => {\n if (isObject(item) && (item as SchemaObject).type) {\n renderMarks &&\n (renderMarks[key] = render(region, item as SchemaObject));\n }\n });\n\n return (\n <div\n className={cx(\n 'RangeControl',\n `${ns}InputRange`,\n {'is-disabled': disabled},\n className\n )}\n >\n {showInput && multiple && <Input {...props} type=\"min\" />}\n <InputRange {...props} marks={renderMarks} />\n {showInput && <Input {...props} type=\"max\" />}\n {clearable && !disabled && showInput ? (\n <a\n onClick={() => this.clearValue()}\n className={cx('InputRange-clear', {\n 'is-active': multiple\n ? isEqual(this.state.value, {min: min, max: max})\n : this.state.value !== min\n })}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-range'\n})\nexport class RangeControlRenderer extends RangeControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -209,7 +209,9 @@ var SelectControl = /** @class */ (function (_super) {
|
|
209
209
|
var mobileUI = useMobileUI && (0, helper_1.isMobile)();
|
210
210
|
return (react_1.default.createElement("div", { className: (0, classnames_1.default)("".concat(classPrefix, "SelectControl"), className) }, ['table', 'list', 'group', 'tree', 'chained', 'associated'].includes(selectMode) ? (this.renderOtherMode()) : (react_1.default.createElement(Select_1.default, (0, tslib_1.__assign)({}, rest, { useMobileUI: useMobileUI, popOverContainer: mobileUI && env && env.getModalContainer
|
211
211
|
? env.getModalContainer
|
212
|
-
:
|
212
|
+
: mobileUI
|
213
|
+
? undefined
|
214
|
+
: rest.popOverContainer, borderMode: borderMode, placeholder: placeholder, multiple: multiple || multi, ref: this.inputRef, value: selectedOptions, options: options, loadOptions: (0, api_1.isEffectiveApi)(autoComplete) ? this.lazyloadRemote : undefined, creatable: creatable, searchable: searchable || !!autoComplete, onChange: this.changeValue, onBlur: function (e) { return _this.dispatchEvent('blur', e); }, onFocus: function (e) { return _this.dispatchEvent('focus', e); }, onAdd: function () { return _this.dispatchEvent('add'); }, onEdit: function (item) { return _this.dispatchEvent('edit', item); }, onDelete: function (item) { return _this.dispatchEvent('delete', item); }, loading: loading, noResultsText: noResultsText, renderMenu: menuTpl ? this.renderMenu : undefined })))));
|
213
215
|
};
|
214
216
|
var _a;
|
215
217
|
SelectControl.defaultProps = {
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/Select.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 cx from 'classnames';\nimport {\n OptionsControl,\n OptionsControlProps,\n Option,\n FormOptionsControl\n} from './Options';\nimport Select, {normalizeOptions} from '../../components/Select';\nimport find from 'lodash/find';\nimport debouce from 'lodash/debounce';\nimport {Api, Action} from '../../types';\nimport {isEffectiveApi, isApiOutdated} from '../../utils/api';\nimport {isEmpty, createObject, autobind, isMobile} from '../../utils/helper';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {SchemaApi} from '../../Schema';\nimport Spinner from '../../components/Spinner';\nimport {BaseTransferRenderer, TransferControlSchema} from './Transfer';\nimport TransferDropDown from '../../components/TransferDropDown';\n\n/**\n * Select 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/select\n */\nexport interface SelectControlSchema extends FormOptionsControl {\n type: 'select' | 'multi-select';\n\n /**\n * 自动完成 API,当输入部分文字的时候,会将这些文字通过 ${term} 可以取到,发送给接口。\n * 接口可以返回匹配到的选项,帮助用户输入。\n */\n autoComplete?: SchemaApi;\n\n /**\n * 可以自定义菜单展示。\n */\n menuTpl?: string;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 勾选展示模式\n */\n selectMode?: 'table' | 'group' | 'tree' | 'chained' | 'associated';\n\n /**\n * 当 selectMode 为 associated 时用来定义左侧的选项\n */\n leftOptions?: Array<Option>;\n\n /**\n * 当 selectMode 为 associated 时用来定义左侧的选择模式\n */\n leftMode?: 'tree' | 'list';\n\n /**\n * 当 selectMode 为 associated 时用来定义右侧的选择模式\n */\n rightMode?: 'table' | 'list' | 'tree' | 'chained';\n\n /**\n * 搜索结果展示模式\n */\n searchResultMode?: 'table' | 'list' | 'tree' | 'chained';\n\n /**\n * 当 selectMode 为 table 时定义表格列信息。\n */\n columns?: Array<any>;\n\n /**\n * 当 searchResultMode 为 table 时定义表格列信息。\n */\n searchResultColumns?: Array<any>;\n\n /**\n * 可搜索?\n */\n searchable?: boolean;\n\n /**\n * 搜索 API\n */\n searchApi?: SchemaApi;\n}\n\nexport interface SelectProps extends OptionsControlProps {\n autoComplete?: Api;\n searchable?: boolean;\n defaultOpen?: boolean;\n useMobileUI?: boolean;\n}\n\nexport type SelectRendererEvent =\n | 'change'\n | 'blur'\n | 'focus'\n | 'add'\n | 'edit'\n | 'delete';\nexport default class SelectControl extends React.Component<SelectProps, any> {\n static defaultProps: Partial<SelectProps> = {\n clearable: false,\n searchable: false,\n multiple: false\n };\n\n input: any;\n unHook: Function;\n lazyloadRemote: Function;\n lastTerm: string = ''; // 用来记录上一次搜索时关键字\n constructor(props: SelectProps) {\n super(props);\n\n this.changeValue = this.changeValue.bind(this);\n this.lazyloadRemote = debouce(this.loadRemote.bind(this), 250, {\n trailing: true,\n leading: false\n });\n this.inputRef = this.inputRef.bind(this);\n }\n\n componentDidUpdate(prevProps: SelectProps) {\n const props = this.props;\n\n if (\n isEffectiveApi(props.autoComplete, props.data) &&\n isApiOutdated(\n prevProps.autoComplete,\n props.autoComplete,\n prevProps.data,\n props.data\n )\n ) {\n this.lazyloadRemote(this.lastTerm);\n }\n }\n\n componentWillUnmount() {\n this.unHook && this.unHook();\n }\n\n inputRef(ref: any) {\n this.input = ref;\n }\n\n foucs() {\n this.input && this.input.focus();\n }\n\n async dispatchEvent(eventName: SelectRendererEvent, eventData: any = {}) {\n const event = 'on' + eventName.charAt(0).toUpperCase() + eventName.slice(1);\n const {dispatchEvent, options, data} = this.props;\n // 触发渲染器事件\n const rendererEvent = await dispatchEvent(\n eventName,\n createObject(data, {\n options,\n ...eventData\n })\n );\n if (rendererEvent?.prevented) {\n return;\n }\n this.props[event](eventData);\n }\n\n async changeValue(value: Option | Array<Option> | string | void) {\n const {\n joinValues,\n extractValue,\n delimiter,\n multiple,\n type,\n valueField,\n onChange,\n setOptions,\n options,\n data,\n dispatchEvent\n } = this.props;\n\n let newValue: string | Option | Array<Option> | void = value;\n let additonalOptions: Array<any> = [];\n\n (Array.isArray(value) ? value : value ? [value] : []).forEach(\n (option: any) => {\n let resolved = find(\n options,\n (item: any) =>\n item[valueField || 'value'] == option[valueField || 'value']\n );\n resolved || additonalOptions.push(option);\n }\n );\n\n if (joinValues) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? (value\n .map(item => item[valueField || 'value'])\n .join(delimiter) as string)\n : value\n ? (value as Option)[valueField || 'value']\n : '';\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n } else if (extractValue) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? value.map(item => item[valueField || 'value'])\n : value\n ? [(value as Option)[valueField || 'value']]\n : [];\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n }\n\n // 不设置没法回显\n additonalOptions.length && setOptions(options.concat(additonalOptions));\n\n const rendererEvent = await dispatchEvent(\n 'change',\n createObject(data, {\n value: newValue,\n options,\n })\n );\n if (rendererEvent?.prevented) {\n return;\n }\n\n onChange(newValue);\n }\n\n async loadRemote(input: string) {\n const {\n autoComplete,\n env,\n data,\n setOptions,\n setLoading,\n formInited,\n addHook\n } = this.props;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n if (!formInited) {\n this.unHook && this.unHook();\n return (this.unHook = addHook(this.loadRemote.bind(this, input), 'init'));\n }\n\n this.lastTerm = input;\n const ctx = createObject(data, {\n term: input,\n value: input\n });\n\n if (!isEffectiveApi(autoComplete, ctx)) {\n return Promise.resolve({\n options: []\n });\n }\n\n setLoading(true);\n try {\n const ret = await env.fetcher(autoComplete, ctx);\n\n let options = (ret.data && (ret.data as any).options) || ret.data || [];\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return {\n options: combinedOptions\n };\n } finally {\n setLoading(false);\n }\n }\n\n mergeOptions(options: Array<object>) {\n const {selectedOptions, valueField = 'value'} = this.props;\n let combinedOptions = normalizeOptions(\n options,\n undefined,\n valueField\n ).concat();\n\n if (Array.isArray(selectedOptions) && selectedOptions.length) {\n selectedOptions.forEach(option => {\n if (\n !find(combinedOptions, (item: Option) => item.value == option.value)\n ) {\n combinedOptions.push({\n ...option,\n hidden: true\n });\n }\n });\n }\n return combinedOptions;\n }\n\n @autobind\n renderMenu(option: Option, state: any) {\n const {menuTpl, render, data} = this.props;\n\n return render(`menu/${state.index}`, menuTpl, {\n data: createObject(createObject(data, state), option)\n });\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n option2value() {}\n\n renderOtherMode() {\n const {selectMode, ...rest} = this.props;\n return (\n <TransferDropdownRenderer\n {...rest}\n selectMode={selectMode === 'group' ? 'list' : selectMode}\n />\n );\n }\n\n doAction(action: Action, data: object, throwErrors: boolean): any {\n const {resetValue} = this.props;\n const actionType = action?.actionType as string;\n\n if (!!~['clear', 'reset'].indexOf(actionType)) {\n this.changeValue(resetValue ?? '');\n }\n }\n\n render() {\n let {\n autoComplete,\n searchable,\n options,\n className,\n loading,\n value,\n selectedOptions,\n multi,\n multiple,\n placeholder,\n id,\n classPrefix,\n classnames,\n creatable,\n inline,\n noResultsText,\n render,\n menuTpl,\n borderMode,\n selectMode,\n env,\n useMobileUI,\n ...rest\n } = this.props;\n\n if (noResultsText) {\n noResultsText = render('noResultText', noResultsText);\n }\n\n const mobileUI = useMobileUI && isMobile();\n\n return (\n <div className={cx(`${classPrefix}SelectControl`, className)}>\n {['table', 'list', 'group', 'tree', 'chained', 'associated'].includes(\n selectMode\n ) ? (\n this.renderOtherMode()\n ) : (\n <Select\n {...rest}\n useMobileUI={useMobileUI}\n popOverContainer={\n mobileUI && env && env.getModalContainer\n ? env.getModalContainer\n : rest.popOverContainer\n }\n borderMode={borderMode}\n placeholder={placeholder}\n multiple={multiple || multi}\n ref={this.inputRef}\n value={selectedOptions}\n options={options}\n loadOptions={\n isEffectiveApi(autoComplete) ? this.lazyloadRemote : undefined\n }\n creatable={creatable}\n searchable={searchable || !!autoComplete}\n onChange={this.changeValue}\n onBlur={(e: any) => this.dispatchEvent('blur', e)}\n onFocus={(e: any) => this.dispatchEvent('focus', e)}\n onAdd={() => this.dispatchEvent('add')}\n onEdit={(item: any) => this.dispatchEvent('edit', item)}\n onDelete={(item: any) => this.dispatchEvent('delete', item)}\n loading={loading}\n noResultsText={noResultsText}\n renderMenu={menuTpl ? this.renderMenu : undefined}\n />\n )}\n </div>\n );\n }\n}\n\nexport interface TransferDropDownProps\n extends OptionsControlProps,\n Omit<\n TransferControlSchema,\n | 'type'\n | 'options'\n | 'inputClassName'\n | 'className'\n | 'descriptionClassName'\n > {\n borderMode?: 'full' | 'half' | 'none';\n useMobileUI?: boolean;\n}\n\nclass TransferDropdownRenderer extends BaseTransferRenderer<TransferDropDownProps> {\n render() {\n const {\n className,\n classnames: cx,\n selectedOptions,\n sortable,\n loading,\n searchable,\n searchResultMode,\n showArrow,\n deferLoad,\n disabled,\n clearable,\n selectTitle,\n selectMode,\n multiple,\n columns,\n leftMode,\n borderMode,\n useMobileUI,\n popOverContainer\n } = this.props;\n\n // 目前 LeftOptions 没有接口可以动态加载\n // 为了方便可以快速实现动态化,让选项的第一个成员携带\n // LeftOptions 信息\n let {options, leftOptions, leftDefaultValue} = this.props;\n if (\n selectMode === 'associated' &&\n options &&\n options.length === 1 &&\n options[0].leftOptions &&\n Array.isArray(options[0].children)\n ) {\n leftOptions = options[0].leftOptions;\n leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;\n options = options[0].children;\n }\n\n return (\n <>\n <TransferDropDown\n selectMode={selectMode}\n className={className}\n value={selectedOptions}\n disabled={disabled}\n clearable={clearable}\n options={options}\n onChange={this.handleChange}\n option2value={this.option2value}\n sortable={sortable}\n searchResultMode={searchResultMode}\n onSearch={searchable ? this.handleSearch : undefined}\n showArrow={showArrow}\n onDeferLoad={deferLoad}\n selectTitle={selectTitle}\n multiple={multiple}\n columns={columns}\n leftMode={leftMode}\n leftOptions={leftOptions}\n borderMode={borderMode}\n useMobileUI={useMobileUI}\n popOverContainer={popOverContainer}\n />\n\n <Spinner overlay key=\"info\" show={loading} />\n </>\n );\n }\n}\n\n@OptionsControl({\n type: 'select'\n})\nexport class SelectControlRenderer extends SelectControl {}\n\n@OptionsControl({\n type: 'multi-select'\n})\nexport class MultiSelectControlRenderer extends SelectControl {\n static defaultProps = {\n multiple: true\n };\n}\n"
|
11
|
+
"import React from 'react';\nimport cx from 'classnames';\nimport {\n OptionsControl,\n OptionsControlProps,\n Option,\n FormOptionsControl\n} from './Options';\nimport Select, {normalizeOptions} from '../../components/Select';\nimport find from 'lodash/find';\nimport debouce from 'lodash/debounce';\nimport {Api, Action} from '../../types';\nimport {isEffectiveApi, isApiOutdated} from '../../utils/api';\nimport {isEmpty, createObject, autobind, isMobile} from '../../utils/helper';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {SchemaApi} from '../../Schema';\nimport Spinner from '../../components/Spinner';\nimport {BaseTransferRenderer, TransferControlSchema} from './Transfer';\nimport TransferDropDown from '../../components/TransferDropDown';\n\n/**\n * Select 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/select\n */\nexport interface SelectControlSchema extends FormOptionsControl {\n type: 'select' | 'multi-select';\n\n /**\n * 自动完成 API,当输入部分文字的时候,会将这些文字通过 ${term} 可以取到,发送给接口。\n * 接口可以返回匹配到的选项,帮助用户输入。\n */\n autoComplete?: SchemaApi;\n\n /**\n * 可以自定义菜单展示。\n */\n menuTpl?: string;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 勾选展示模式\n */\n selectMode?: 'table' | 'group' | 'tree' | 'chained' | 'associated';\n\n /**\n * 当 selectMode 为 associated 时用来定义左侧的选项\n */\n leftOptions?: Array<Option>;\n\n /**\n * 当 selectMode 为 associated 时用来定义左侧的选择模式\n */\n leftMode?: 'tree' | 'list';\n\n /**\n * 当 selectMode 为 associated 时用来定义右侧的选择模式\n */\n rightMode?: 'table' | 'list' | 'tree' | 'chained';\n\n /**\n * 搜索结果展示模式\n */\n searchResultMode?: 'table' | 'list' | 'tree' | 'chained';\n\n /**\n * 当 selectMode 为 table 时定义表格列信息。\n */\n columns?: Array<any>;\n\n /**\n * 当 searchResultMode 为 table 时定义表格列信息。\n */\n searchResultColumns?: Array<any>;\n\n /**\n * 可搜索?\n */\n searchable?: boolean;\n\n /**\n * 搜索 API\n */\n searchApi?: SchemaApi;\n}\n\nexport interface SelectProps extends OptionsControlProps {\n autoComplete?: Api;\n searchable?: boolean;\n defaultOpen?: boolean;\n useMobileUI?: boolean;\n}\n\nexport type SelectRendererEvent =\n | 'change'\n | 'blur'\n | 'focus'\n | 'add'\n | 'edit'\n | 'delete';\nexport default class SelectControl extends React.Component<SelectProps, any> {\n static defaultProps: Partial<SelectProps> = {\n clearable: false,\n searchable: false,\n multiple: false\n };\n\n input: any;\n unHook: Function;\n lazyloadRemote: Function;\n lastTerm: string = ''; // 用来记录上一次搜索时关键字\n constructor(props: SelectProps) {\n super(props);\n\n this.changeValue = this.changeValue.bind(this);\n this.lazyloadRemote = debouce(this.loadRemote.bind(this), 250, {\n trailing: true,\n leading: false\n });\n this.inputRef = this.inputRef.bind(this);\n }\n\n componentDidUpdate(prevProps: SelectProps) {\n const props = this.props;\n\n if (\n isEffectiveApi(props.autoComplete, props.data) &&\n isApiOutdated(\n prevProps.autoComplete,\n props.autoComplete,\n prevProps.data,\n props.data\n )\n ) {\n this.lazyloadRemote(this.lastTerm);\n }\n }\n\n componentWillUnmount() {\n this.unHook && this.unHook();\n }\n\n inputRef(ref: any) {\n this.input = ref;\n }\n\n foucs() {\n this.input && this.input.focus();\n }\n\n async dispatchEvent(eventName: SelectRendererEvent, eventData: any = {}) {\n const event = 'on' + eventName.charAt(0).toUpperCase() + eventName.slice(1);\n const {dispatchEvent, options, data} = this.props;\n // 触发渲染器事件\n const rendererEvent = await dispatchEvent(\n eventName,\n createObject(data, {\n options,\n ...eventData\n })\n );\n if (rendererEvent?.prevented) {\n return;\n }\n this.props[event](eventData);\n }\n\n async changeValue(value: Option | Array<Option> | string | void) {\n const {\n joinValues,\n extractValue,\n delimiter,\n multiple,\n type,\n valueField,\n onChange,\n setOptions,\n options,\n data,\n dispatchEvent\n } = this.props;\n\n let newValue: string | Option | Array<Option> | void = value;\n let additonalOptions: Array<any> = [];\n\n (Array.isArray(value) ? value : value ? [value] : []).forEach(\n (option: any) => {\n let resolved = find(\n options,\n (item: any) =>\n item[valueField || 'value'] == option[valueField || 'value']\n );\n resolved || additonalOptions.push(option);\n }\n );\n\n if (joinValues) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? (value\n .map(item => item[valueField || 'value'])\n .join(delimiter) as string)\n : value\n ? (value as Option)[valueField || 'value']\n : '';\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n } else if (extractValue) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? value.map(item => item[valueField || 'value'])\n : value\n ? [(value as Option)[valueField || 'value']]\n : [];\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n }\n\n // 不设置没法回显\n additonalOptions.length && setOptions(options.concat(additonalOptions));\n\n const rendererEvent = await dispatchEvent(\n 'change',\n createObject(data, {\n value: newValue,\n options,\n })\n );\n if (rendererEvent?.prevented) {\n return;\n }\n\n onChange(newValue);\n }\n\n async loadRemote(input: string) {\n const {\n autoComplete,\n env,\n data,\n setOptions,\n setLoading,\n formInited,\n addHook\n } = this.props;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n if (!formInited) {\n this.unHook && this.unHook();\n return (this.unHook = addHook(this.loadRemote.bind(this, input), 'init'));\n }\n\n this.lastTerm = input;\n const ctx = createObject(data, {\n term: input,\n value: input\n });\n\n if (!isEffectiveApi(autoComplete, ctx)) {\n return Promise.resolve({\n options: []\n });\n }\n\n setLoading(true);\n try {\n const ret = await env.fetcher(autoComplete, ctx);\n\n let options = (ret.data && (ret.data as any).options) || ret.data || [];\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return {\n options: combinedOptions\n };\n } finally {\n setLoading(false);\n }\n }\n\n mergeOptions(options: Array<object>) {\n const {selectedOptions, valueField = 'value'} = this.props;\n let combinedOptions = normalizeOptions(\n options,\n undefined,\n valueField\n ).concat();\n\n if (Array.isArray(selectedOptions) && selectedOptions.length) {\n selectedOptions.forEach(option => {\n if (\n !find(combinedOptions, (item: Option) => item.value == option.value)\n ) {\n combinedOptions.push({\n ...option,\n hidden: true\n });\n }\n });\n }\n return combinedOptions;\n }\n\n @autobind\n renderMenu(option: Option, state: any) {\n const {menuTpl, render, data} = this.props;\n\n return render(`menu/${state.index}`, menuTpl, {\n data: createObject(createObject(data, state), option)\n });\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n option2value() {}\n\n renderOtherMode() {\n const {selectMode, ...rest} = this.props;\n return (\n <TransferDropdownRenderer\n {...rest}\n selectMode={selectMode === 'group' ? 'list' : selectMode}\n />\n );\n }\n\n doAction(action: Action, data: object, throwErrors: boolean): any {\n const {resetValue} = this.props;\n const actionType = action?.actionType as string;\n\n if (!!~['clear', 'reset'].indexOf(actionType)) {\n this.changeValue(resetValue ?? '');\n }\n }\n\n render() {\n let {\n autoComplete,\n searchable,\n options,\n className,\n loading,\n value,\n selectedOptions,\n multi,\n multiple,\n placeholder,\n id,\n classPrefix,\n classnames,\n creatable,\n inline,\n noResultsText,\n render,\n menuTpl,\n borderMode,\n selectMode,\n env,\n useMobileUI,\n ...rest\n } = this.props;\n\n if (noResultsText) {\n noResultsText = render('noResultText', noResultsText);\n }\n\n const mobileUI = useMobileUI && isMobile();\n\n return (\n <div className={cx(`${classPrefix}SelectControl`, className)}>\n {['table', 'list', 'group', 'tree', 'chained', 'associated'].includes(\n selectMode\n ) ? (\n this.renderOtherMode()\n ) : (\n <Select\n {...rest}\n useMobileUI={useMobileUI}\n popOverContainer={\n mobileUI && env && env.getModalContainer\n ? env.getModalContainer\n : mobileUI\n ? undefined\n : rest.popOverContainer\n }\n borderMode={borderMode}\n placeholder={placeholder}\n multiple={multiple || multi}\n ref={this.inputRef}\n value={selectedOptions}\n options={options}\n loadOptions={\n isEffectiveApi(autoComplete) ? this.lazyloadRemote : undefined\n }\n creatable={creatable}\n searchable={searchable || !!autoComplete}\n onChange={this.changeValue}\n onBlur={(e: any) => this.dispatchEvent('blur', e)}\n onFocus={(e: any) => this.dispatchEvent('focus', e)}\n onAdd={() => this.dispatchEvent('add')}\n onEdit={(item: any) => this.dispatchEvent('edit', item)}\n onDelete={(item: any) => this.dispatchEvent('delete', item)}\n loading={loading}\n noResultsText={noResultsText}\n renderMenu={menuTpl ? this.renderMenu : undefined}\n />\n )}\n </div>\n );\n }\n}\n\nexport interface TransferDropDownProps\n extends OptionsControlProps,\n Omit<\n TransferControlSchema,\n | 'type'\n | 'options'\n | 'inputClassName'\n | 'className'\n | 'descriptionClassName'\n > {\n borderMode?: 'full' | 'half' | 'none';\n useMobileUI?: boolean;\n}\n\nclass TransferDropdownRenderer extends BaseTransferRenderer<TransferDropDownProps> {\n render() {\n const {\n className,\n classnames: cx,\n selectedOptions,\n sortable,\n loading,\n searchable,\n searchResultMode,\n showArrow,\n deferLoad,\n disabled,\n clearable,\n selectTitle,\n selectMode,\n multiple,\n columns,\n leftMode,\n borderMode,\n useMobileUI,\n popOverContainer\n } = this.props;\n\n // 目前 LeftOptions 没有接口可以动态加载\n // 为了方便可以快速实现动态化,让选项的第一个成员携带\n // LeftOptions 信息\n let {options, leftOptions, leftDefaultValue} = this.props;\n if (\n selectMode === 'associated' &&\n options &&\n options.length === 1 &&\n options[0].leftOptions &&\n Array.isArray(options[0].children)\n ) {\n leftOptions = options[0].leftOptions;\n leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;\n options = options[0].children;\n }\n\n return (\n <>\n <TransferDropDown\n selectMode={selectMode}\n className={className}\n value={selectedOptions}\n disabled={disabled}\n clearable={clearable}\n options={options}\n onChange={this.handleChange}\n option2value={this.option2value}\n sortable={sortable}\n searchResultMode={searchResultMode}\n onSearch={searchable ? this.handleSearch : undefined}\n showArrow={showArrow}\n onDeferLoad={deferLoad}\n selectTitle={selectTitle}\n multiple={multiple}\n columns={columns}\n leftMode={leftMode}\n leftOptions={leftOptions}\n borderMode={borderMode}\n useMobileUI={useMobileUI}\n popOverContainer={popOverContainer}\n />\n\n <Spinner overlay key=\"info\" show={loading} />\n </>\n );\n }\n}\n\n@OptionsControl({\n type: 'select'\n})\nexport class SelectControlRenderer extends SelectControl {}\n\n@OptionsControl({\n type: 'multi-select'\n})\nexport class MultiSelectControlRenderer extends SelectControl {\n static defaultProps = {\n multiple: true\n };\n}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { FormControlProps, FormBaseControl } from './Item';
|
3
|
+
import { IconSchema } from "../Icon";
|
3
4
|
/**
|
4
5
|
* Switch
|
5
6
|
* 文档:https://baidu.gitee.io/amis/docs/components/form/switch
|
@@ -12,23 +13,23 @@ export interface SwitchControlSchema extends FormBaseControl {
|
|
12
13
|
/**
|
13
14
|
* 勾选值
|
14
15
|
*/
|
15
|
-
trueValue?:
|
16
|
+
trueValue?: boolean | string | number;
|
16
17
|
/**
|
17
18
|
* 未勾选值
|
18
19
|
*/
|
19
|
-
falseValue?:
|
20
|
+
falseValue?: boolean | string | number;
|
20
21
|
/**
|
21
22
|
* 选项说明
|
22
23
|
*/
|
23
24
|
option?: string;
|
24
25
|
/**
|
25
|
-
*
|
26
|
+
* 开启时显示的内容
|
26
27
|
*/
|
27
|
-
onText?: string;
|
28
|
+
onText?: string | IconSchema;
|
28
29
|
/**
|
29
|
-
*
|
30
|
+
* 关闭时显示的内容
|
30
31
|
*/
|
31
|
-
offText?: string;
|
32
|
+
offText?: string | IconSchema;
|
32
33
|
}
|
33
34
|
export interface SwitchProps extends FormControlProps {
|
34
35
|
option?: string;
|
@@ -6,6 +6,7 @@ var react_1 = (0, tslib_1.__importDefault)(require("react"));
|
|
6
6
|
var Item_1 = require("./Item");
|
7
7
|
var Switch_1 = (0, tslib_1.__importDefault)(require("../../components/Switch"));
|
8
8
|
var helper_1 = require("../../utils/helper");
|
9
|
+
var icon_1 = require("../../utils/icon");
|
9
10
|
var SwitchControl = /** @class */ (function (_super) {
|
10
11
|
(0, tslib_1.__extends)(SwitchControl, _super);
|
11
12
|
function SwitchControl() {
|
@@ -34,9 +35,11 @@ var SwitchControl = /** @class */ (function (_super) {
|
|
34
35
|
};
|
35
36
|
SwitchControl.prototype.render = function () {
|
36
37
|
var _a = this.props, className = _a.className, ns = _a.classPrefix, cx = _a.classnames, value = _a.value, trueValue = _a.trueValue, falseValue = _a.falseValue, onText = _a.onText, offText = _a.offText, option = _a.option, onChange = _a.onChange, disabled = _a.disabled, optionAtLeft = _a.optionAtLeft;
|
38
|
+
var on = (0, helper_1.isObject)(onText) ? (0, icon_1.generateIcon)(cx, onText.icon, 'Switch-icon') : onText;
|
39
|
+
var off = (0, helper_1.isObject)(offText) ? (0, icon_1.generateIcon)(cx, offText.icon, 'Switch-icon') : offText;
|
37
40
|
return (react_1.default.createElement("div", { className: cx("SwitchControl", className) },
|
38
41
|
optionAtLeft ? (react_1.default.createElement("span", { className: cx('Switch-option') }, option)) : null,
|
39
|
-
react_1.default.createElement(Switch_1.default, { classPrefix: ns, value: value, trueValue: trueValue, falseValue: falseValue, onText:
|
42
|
+
react_1.default.createElement(Switch_1.default, { classPrefix: ns, value: value, trueValue: trueValue, falseValue: falseValue, onText: on, offText: off, disabled: disabled, onChange: this.handleChange }),
|
40
43
|
optionAtLeft ? null : (react_1.default.createElement("span", { className: cx('Switch-option') }, option))));
|
41
44
|
};
|
42
45
|
SwitchControl.defaultProps = {
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/Switch.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,+BAAmE;AACnE,gFAA6C;AAC7C,
|
9
|
+
"mappings": ";;;;AAAA,6DAA0B;AAC1B,+BAAmE;AACnE,gFAA6C;AAC7C,6CAAoE;AACpE,yCAA8C;AAiD9C;IAA2C,8CAAiC;IAA5E;;IA8DA,CAAC;IAtDO,oCAAY,GAAlB,UAAmB,OAAkC;;;;;;wBAC7C,KAAkC,IAAI,CAAC,KAAK,EAA3C,aAAa,mBAAA,EAAE,IAAI,UAAA,EAAE,QAAQ,cAAA,CAAe;wBAC7B,qBAAM,aAAa,CAAC,QAAQ,EAAE,IAAA,qBAAY,EAAC,IAAI,EAAE;gCACrE,KAAK,EAAE,OAAO;6BACf,CAAC,CAAC,EAAA;;wBAFG,aAAa,GAAG,SAEnB;wBACH,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,EAAE;4BAC5B,sBAAO;yBACR;wBAED,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;;;;;KAC/B;IAED,8BAAM,GAAN;QACQ,IAAA,KAaF,IAAI,CAAC,KAAK,EAZZ,SAAS,eAAA,EACI,EAAE,iBAAA,EACH,EAAE,gBAAA,EACd,KAAK,WAAA,EACL,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,MAAM,YAAA,EACN,OAAO,aAAA,EACP,MAAM,YAAA,EACN,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,YAAY,kBACA,CAAC;QAEf,IAAM,EAAE,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAY,EAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,IAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAY,EAAC,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA,OAAO,CAAC;QAEvF,OAAO,CACL,uCAAK,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;YAC3C,YAAY,CAAC,CAAC,CAAC,CACd,wCAAM,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAAG,MAAM,CAAQ,CACtD,CAAC,CAAC,CAAC,IAAI;YAER,8BAAC,gBAAM,IACL,WAAW,EAAE,EAAE,EACf,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,EAAE,EACV,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,IAAI,CAAC,YAAY,GAC3B;YAED,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACrB,wCAAM,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAAG,MAAM,CAAQ,CACtD,CACG,CACP,CAAC;IACJ,CAAC;IA5DM,0BAAY,GAAG;QACpB,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;KACpB,CAAC;IAGF;QADC,iBAAQ;;;;qDAWR;IA4CH,oBAAC;CAAA,AA9DD,CAA2C,eAAK,CAAC,SAAS,GA8DzD;kBA9DoB,aAAa;AAoElC;IAA2C,sDAAa;IAAxD;;IAA0D,CAAC;IAA9C,qBAAqB;QAJjC,IAAA,eAAQ,EAAC;YACR,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,KAAK;SACnB,CAAC;OACW,qBAAqB,CAAyB;IAAD,4BAAC;CAAA,AAA3D,CAA2C,aAAa,GAAG;AAA9C,sDAAqB",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport Switch from '../../components/Switch';\nimport {createObject, autobind} from '../../utils/helper';\n\n/**\n * Switch\n * 文档:https://baidu.gitee.io/amis/docs/components/form/switch\n */\nexport interface SwitchControlSchema extends FormBaseControl {\n /**\n * 指定为多行文本输入框\n */\n type: 'switch';\n\n /**\n * 勾选值\n */\n trueValue?:
|
11
|
+
"import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport Switch from '../../components/Switch';\nimport {createObject, autobind, isObject} from '../../utils/helper';\nimport {generateIcon} from \"../../utils/icon\";\nimport {IconSchema} from \"../Icon\";\n\n/**\n * Switch\n * 文档:https://baidu.gitee.io/amis/docs/components/form/switch\n */\n\n\nexport interface SwitchControlSchema extends FormBaseControl {\n /**\n * 指定为多行文本输入框\n */\n type: 'switch';\n\n /**\n * 勾选值\n */\n trueValue?: boolean | string | number;\n\n /**\n * 未勾选值\n */\n falseValue?: boolean | string | number;\n\n /**\n * 选项说明\n */\n option?: string;\n\n /**\n * 开启时显示的内容\n */\n onText?: string | IconSchema;\n\n /**\n * 关闭时显示的内容\n */\n offText?: string | IconSchema;\n}\n\nexport interface SwitchProps extends FormControlProps {\n option?: string;\n trueValue?: any;\n falseValue?: any;\n}\n\nexport type SwitchRendererEvent = 'change';\n\nexport default class SwitchControl extends React.Component<SwitchProps, any> {\n static defaultProps = {\n trueValue: true,\n falseValue: false,\n optionAtLeft: false\n };\n\n @autobind\n async handleChange(checked: string | number | boolean) {\n const {dispatchEvent, data, onChange} = this.props;\n const rendererEvent = await dispatchEvent('change', createObject(data, {\n value: checked,\n }));\n if (rendererEvent?.prevented) {\n return;\n }\n\n onChange && onChange(checked);\n }\n\n render() {\n const {\n className,\n classPrefix: ns,\n classnames: cx,\n value,\n trueValue,\n falseValue,\n onText,\n offText,\n option,\n onChange,\n disabled,\n optionAtLeft\n } = this.props;\n\n const on = isObject(onText) ? generateIcon(cx, onText.icon, 'Switch-icon') : onText;\n const off = isObject(offText) ? generateIcon(cx, offText.icon, 'Switch-icon') :offText;\n\n return (\n <div className={cx(`SwitchControl`, className)}>\n {optionAtLeft ? (\n <span className={cx('Switch-option')}>{option}</span>\n ) : null}\n\n <Switch\n classPrefix={ns}\n value={value}\n trueValue={trueValue}\n falseValue={falseValue}\n onText={on}\n offText={off}\n disabled={disabled}\n onChange={this.handleChange}\n />\n\n {optionAtLeft ? null : (\n <span className={cx('Switch-option')}>{option}</span>\n )}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'switch',\n sizeMutable: false\n})\nexport class SwitchControlRenderer extends SwitchControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
package/lib/renderers/Log.js
CHANGED
@@ -67,7 +67,8 @@ var Log = /** @class */ (function (_super) {
|
|
67
67
|
return [4 /*yield*/, fetch(api.url, {
|
68
68
|
method: ((_a = api.method) === null || _a === void 0 ? void 0 : _a.toLocaleUpperCase()) || 'GET',
|
69
69
|
headers: api.headers || undefined,
|
70
|
-
body: api.data ? JSON.stringify(api.data) : undefined
|
70
|
+
body: api.data ? JSON.stringify(api.data) : undefined,
|
71
|
+
credentials: 'include'
|
71
72
|
})];
|
72
73
|
case 1:
|
73
74
|
res = _d.sent();
|
package/lib/renderers/Log.js.map
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Log.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * @file 用于显示日志的组件,比如显示命令行的输出结果\n */\nimport React from 'react';\nimport {Renderer, RendererProps} from '../factory';\nimport {BaseSchema, SchemaTpl} from '../Schema';\nimport Ansi from 'ansi-to-react';\nimport {filter} from '../utils/tpl';\nimport {buildApi, isApiOutdated} from '../utils/api';\n\n/**\n * 日志展示组件\n * 文档:https://baidu.gitee.io/amis/docs/components/log\n */\nexport interface LogSchema extends BaseSchema {\n /**\n * 指定为 log 链接展示控件\n */\n type: 'log';\n\n /**\n * 自定义 CSS 类名\n */\n className?: string;\n\n /**\n * 获取日志的地址\n */\n source: string;\n\n /**\n * 控件高度\n */\n height?: number;\n\n /**\n * 是否自动滚动到最底部\n */\n autoScroll?: boolean;\n\n /**\n * 返回内容字符编码\n */\n encoding?: string;\n}\n\nexport interface LogProps\n extends RendererProps,\n Omit<LogSchema, 'type' | 'className'> {}\n\nexport interface LogState {\n lastLine: string;\n logs: string[];\n}\n\nexport class Log extends React.Component<LogProps, LogState> {\n static defaultProps = {\n height: 500,\n autoScroll: true,\n placeholder: 'loading',\n encoding: 'utf-8'\n };\n\n isDone: boolean = false;\n\n autoScroll: boolean = false;\n\n logRef: React.RefObject<HTMLDivElement>;\n\n state: LogState = {\n lastLine: '',\n logs: []\n };\n\n constructor(props: LogProps) {\n super(props);\n this.logRef = React.createRef();\n this.autoScroll = props.autoScroll || false;\n this.pauseOrResumeScrolling = this.pauseOrResumeScrolling.bind(this);\n }\n\n componentWillUnmount() {\n if (this.logRef && this.logRef.current) {\n this.logRef.current.removeEventListener(\n 'scroll',\n this.pauseOrResumeScrolling\n );\n }\n }\n\n componentDidMount() {\n if (this.autoScroll && this.logRef && this.logRef.current) {\n this.logRef.current.addEventListener(\n 'scroll',\n this.pauseOrResumeScrolling\n );\n }\n if (this.props.source) {\n this.loadLogs();\n }\n }\n\n componentDidUpdate(prevProps: LogProps) {\n if (this.autoScroll && this.logRef && this.logRef.current) {\n this.logRef.current.scrollTop = this.logRef.current.scrollHeight;\n }\n if (\n isApiOutdated(\n prevProps.source,\n this.props.source,\n prevProps.data,\n this.props.data\n )\n ) {\n this.loadLogs();\n }\n }\n\n // 如果向上滚动就停止自动滚动,除非滚到底部\n pauseOrResumeScrolling() {\n if (this.logRef && this.logRef.current) {\n const {scrollHeight, scrollTop, offsetHeight} = this.logRef.current;\n this.autoScroll = scrollHeight - (scrollTop + offsetHeight) < 50;\n }\n }\n\n async loadLogs() {\n const {source, data, env, translate: __, encoding} = this.props;\n // 因为这里返回结果是流式的,和普通 api 请求不一样,如果直接用 fetcher 经过 responseAdaptor 可能会导致出错,所以就直接 fetch 了\n const api = buildApi(source, data);\n if (!api.url) {\n return;\n }\n const res = await fetch(api.url, {\n method: api.method?.toLocaleUpperCase() || 'GET',\n headers: (api.headers as Record<string, string>) || undefined,\n body: api.data ? JSON.stringify(api.data) : undefined\n });\n if (res.status === 200) {\n const body = res.body;\n if (!body) {\n return;\n }\n const reader = body.getReader();\n let lastline = '';\n let logs: string[] = [];\n for (;;) {\n let {done, value} = await reader.read();\n if (value) {\n let text = new TextDecoder(encoding).decode(value, {stream: true});\n // 不考虑只有 \\r 换行符的情况,几乎没人用\n const lines = text.split('\\n');\n // 如果没有换行符就只更新最后一行\n if (lines.length === 1) {\n lastline += lines[0];\n this.setState({\n lastLine: lastline\n });\n } else {\n // 将之前的数据补上\n lines[0] = lastline + lines[0];\n // 最后一个要么是空,要么是下一行的数据\n lastline = lines.pop() || '';\n logs = logs.concat(lines);\n this.setState({\n logs: logs,\n lastLine: lastline\n });\n }\n }\n\n if (done) {\n this.isDone = true;\n return;\n }\n }\n } else {\n env.notify('error', __('fetchFailed'));\n }\n }\n\n render() {\n const {\n source,\n className,\n classnames: cx,\n placeholder,\n height,\n translate: __\n } = this.props;\n\n let loading = __(placeholder);\n\n if (!source) {\n loading = __('Log.mustHaveSource');\n }\n\n const lines = this.state.logs.map((line, index) => {\n return (\n <div className={cx('Log-line')} key={index}>\n <Ansi useClasses>{line}</Ansi>\n </div>\n );\n });\n\n return (\n <div\n ref={this.logRef}\n className={cx('Log', className)}\n style={{height: height}}\n >\n {lines.length ? lines : loading}\n <div className={cx('Log-line')} key=\"last\">\n <code>{this.state.lastLine}</code>\n </div>\n </div>\n );\n }\n}\n\n@Renderer({\n type: 'log'\n})\nexport class LogRenderer extends Log {}\n"
|
11
|
+
"/**\n * @file 用于显示日志的组件,比如显示命令行的输出结果\n */\nimport React from 'react';\nimport {Renderer, RendererProps} from '../factory';\nimport {BaseSchema, SchemaTpl} from '../Schema';\nimport Ansi from 'ansi-to-react';\nimport {filter} from '../utils/tpl';\nimport {buildApi, isApiOutdated} from '../utils/api';\n\n/**\n * 日志展示组件\n * 文档:https://baidu.gitee.io/amis/docs/components/log\n */\nexport interface LogSchema extends BaseSchema {\n /**\n * 指定为 log 链接展示控件\n */\n type: 'log';\n\n /**\n * 自定义 CSS 类名\n */\n className?: string;\n\n /**\n * 获取日志的地址\n */\n source: string;\n\n /**\n * 控件高度\n */\n height?: number;\n\n /**\n * 是否自动滚动到最底部\n */\n autoScroll?: boolean;\n\n /**\n * 返回内容字符编码\n */\n encoding?: string;\n}\n\nexport interface LogProps\n extends RendererProps,\n Omit<LogSchema, 'type' | 'className'> {}\n\nexport interface LogState {\n lastLine: string;\n logs: string[];\n}\n\nexport class Log extends React.Component<LogProps, LogState> {\n static defaultProps = {\n height: 500,\n autoScroll: true,\n placeholder: 'loading',\n encoding: 'utf-8'\n };\n\n isDone: boolean = false;\n\n autoScroll: boolean = false;\n\n logRef: React.RefObject<HTMLDivElement>;\n\n state: LogState = {\n lastLine: '',\n logs: []\n };\n\n constructor(props: LogProps) {\n super(props);\n this.logRef = React.createRef();\n this.autoScroll = props.autoScroll || false;\n this.pauseOrResumeScrolling = this.pauseOrResumeScrolling.bind(this);\n }\n\n componentWillUnmount() {\n if (this.logRef && this.logRef.current) {\n this.logRef.current.removeEventListener(\n 'scroll',\n this.pauseOrResumeScrolling\n );\n }\n }\n\n componentDidMount() {\n if (this.autoScroll && this.logRef && this.logRef.current) {\n this.logRef.current.addEventListener(\n 'scroll',\n this.pauseOrResumeScrolling\n );\n }\n if (this.props.source) {\n this.loadLogs();\n }\n }\n\n componentDidUpdate(prevProps: LogProps) {\n if (this.autoScroll && this.logRef && this.logRef.current) {\n this.logRef.current.scrollTop = this.logRef.current.scrollHeight;\n }\n if (\n isApiOutdated(\n prevProps.source,\n this.props.source,\n prevProps.data,\n this.props.data\n )\n ) {\n this.loadLogs();\n }\n }\n\n // 如果向上滚动就停止自动滚动,除非滚到底部\n pauseOrResumeScrolling() {\n if (this.logRef && this.logRef.current) {\n const {scrollHeight, scrollTop, offsetHeight} = this.logRef.current;\n this.autoScroll = scrollHeight - (scrollTop + offsetHeight) < 50;\n }\n }\n\n async loadLogs() {\n const {source, data, env, translate: __, encoding} = this.props;\n // 因为这里返回结果是流式的,和普通 api 请求不一样,如果直接用 fetcher 经过 responseAdaptor 可能会导致出错,所以就直接 fetch 了\n const api = buildApi(source, data);\n if (!api.url) {\n return;\n }\n const res = await fetch(api.url, {\n method: api.method?.toLocaleUpperCase() || 'GET',\n headers: (api.headers as Record<string, string>) || undefined,\n body: api.data ? JSON.stringify(api.data) : undefined,\n credentials: 'include'\n });\n if (res.status === 200) {\n const body = res.body;\n if (!body) {\n return;\n }\n const reader = body.getReader();\n let lastline = '';\n let logs: string[] = [];\n for (;;) {\n let {done, value} = await reader.read();\n if (value) {\n let text = new TextDecoder(encoding).decode(value, {stream: true});\n // 不考虑只有 \\r 换行符的情况,几乎没人用\n const lines = text.split('\\n');\n // 如果没有换行符就只更新最后一行\n if (lines.length === 1) {\n lastline += lines[0];\n this.setState({\n lastLine: lastline\n });\n } else {\n // 将之前的数据补上\n lines[0] = lastline + lines[0];\n // 最后一个要么是空,要么是下一行的数据\n lastline = lines.pop() || '';\n logs = logs.concat(lines);\n this.setState({\n logs: logs,\n lastLine: lastline\n });\n }\n }\n\n if (done) {\n this.isDone = true;\n return;\n }\n }\n } else {\n env.notify('error', __('fetchFailed'));\n }\n }\n\n render() {\n const {\n source,\n className,\n classnames: cx,\n placeholder,\n height,\n translate: __\n } = this.props;\n\n let loading = __(placeholder);\n\n if (!source) {\n loading = __('Log.mustHaveSource');\n }\n\n const lines = this.state.logs.map((line, index) => {\n return (\n <div className={cx('Log-line')} key={index}>\n <Ansi useClasses>{line}</Ansi>\n </div>\n );\n });\n\n return (\n <div\n ref={this.logRef}\n className={cx('Log', className)}\n style={{height: height}}\n >\n {lines.length ? lines : loading}\n <div className={cx('Log-line')} key=\"last\">\n <code>{this.state.lastLine}</code>\n </div>\n </div>\n );\n }\n}\n\n@Renderer({\n type: 'log'\n})\nexport class LogRenderer extends Log {}\n"
|
12
12
|
]
|
13
13
|
}
|