amis 1.5.2 → 1.5.6-beta.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/README.md +5 -0
- package/lib/RootRenderer.d.ts +1 -1
- package/lib/RootRenderer.js +4 -3
- package/lib/RootRenderer.js.map +2 -2
- package/lib/components/Card.d.ts +96 -0
- package/lib/components/Card.js +85 -0
- package/lib/components/Card.js.map +13 -0
- package/lib/components/Collapse.js +1 -1
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/DatePicker.d.ts +179 -84
- package/lib/components/DatePicker.js +25 -4
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +84 -84
- package/lib/components/MonthRangePicker.d.ts +84 -84
- package/lib/components/Picker.d.ts +503 -0
- package/lib/components/Picker.js +65 -0
- package/lib/components/Picker.js.map +13 -0
- package/lib/components/PickerColumn.d.ts +29 -459
- package/lib/components/PickerColumn.js +35 -44
- package/lib/components/PickerColumn.js.map +2 -2
- package/lib/components/Progress.js +1 -1
- package/lib/components/Progress.js.map +2 -2
- package/lib/components/Select.d.ts +238 -238
- package/lib/components/Select.js +9 -2
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Selection.js +1 -4
- package/lib/components/Selection.js.map +2 -2
- package/lib/components/Switch.d.ts +6 -6
- package/lib/components/Switch.js.map +2 -2
- package/lib/components/calendar/Calendar.d.ts +8 -0
- package/lib/components/calendar/Calendar.js +19 -1
- package/lib/components/calendar/Calendar.js.map +2 -2
- package/lib/components/calendar/DaysView.d.ts +8 -0
- package/lib/components/calendar/DaysView.js +71 -0
- package/lib/components/calendar/DaysView.js.map +2 -2
- package/lib/components/calendar/TimeView.d.ts +10 -0
- package/lib/components/calendar/TimeView.js +55 -2
- package/lib/components/calendar/TimeView.js.map +2 -2
- package/lib/components/calendar/YearsView.d.ts +9 -0
- package/lib/components/calendar/YearsView.js +19 -0
- package/lib/components/calendar/YearsView.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/renderers/CRUD.d.ts +1 -1
- package/lib/renderers/CRUD.js +4 -3
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Card.d.ts +81 -13
- package/lib/renderers/Card.js +178 -81
- package/lib/renderers/Card.js.map +2 -2
- package/lib/renderers/Dialog.d.ts +2 -2
- package/lib/renderers/Dialog.js +7 -7
- package/lib/renderers/Dialog.js.map +2 -2
- package/lib/renderers/Drawer.js +2 -2
- package/lib/renderers/Drawer.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +145 -37
- package/lib/renderers/Form/Editor.d.ts +144 -36
- package/lib/renderers/Form/Formula.js +5 -5
- package/lib/renderers/Form/Formula.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +84 -84
- package/lib/renderers/Form/InputDate.d.ts +25 -0
- package/lib/renderers/Form/InputDate.js +48 -3
- package/lib/renderers/Form/InputDate.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +3 -3
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputImage.js +1 -1
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +1 -1
- package/lib/renderers/Form/Item.js +4 -3
- package/lib/renderers/Form/Item.js.map +2 -2
- package/lib/renderers/Form/index.d.ts +1 -1
- package/lib/renderers/Form/index.js +13 -2
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +3 -2
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/Page.d.ts +3 -3
- package/lib/renderers/Page.js +4 -3
- package/lib/renderers/Page.js.map +2 -2
- package/lib/renderers/Status.js +1 -1
- package/lib/renderers/Status.js.map +2 -2
- package/lib/renderers/Wizard.d.ts +1 -1
- package/lib/renderers/Wizard.js +93 -36
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/store/combo.d.ts +160 -40
- package/lib/store/form.d.ts +64 -16
- package/lib/store/formItem.d.ts +4 -2
- package/lib/store/formItem.js +11 -6
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/table.d.ts +128 -32
- package/lib/themes/ang-ie11.css +255 -31
- package/lib/themes/ang.css +255 -31
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +255 -32
- package/lib/themes/antd.css +255 -32
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +263 -31
- package/lib/themes/cxd.css +263 -31
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +255 -31
- package/lib/themes/dark.css +255 -31
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +263 -31
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/helper.d.ts +7 -0
- package/lib/utils/helper.js +33 -1
- package/lib/utils/helper.js.map +2 -2
- package/package.json +2 -2
- package/schema.json +209 -20
- package/scss/_properties.scss +14 -3
- package/scss/components/_calendar.scss +81 -0
- package/scss/components/_card.scss +155 -15
- package/scss/components/_nav.scss +1 -1
- package/scss/components/_picker-columns.scss +20 -14
- package/scss/components/_toast.scss +3 -0
- package/scss/components/form/_file.scss +2 -2
- package/scss/components/form/_selection.scss +4 -0
- package/scss/components/form/_switch.scss +6 -0
- package/scss/themes/_antd-variables.scss +0 -2
- package/scss/themes/_common.scss +1 -0
- package/scss/themes/_cxd-variables.scss +9 -0
- package/sdk/ang-ie11.css +296 -33
- package/sdk/ang.css +306 -33
- package/sdk/antd-ie11.css +295 -32
- package/sdk/antd.css +306 -34
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +296 -33
- package/sdk/cxd.css +314 -33
- package/sdk/dark-ie11.css +296 -33
- package/sdk/dark.css +306 -33
- 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 +18 -18
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +296 -33
- package/sdk/sdk.css +314 -33
- package/sdk/sdk.js +1190 -1186
- 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/RootRenderer.tsx +3 -3
- package/src/components/Card.tsx +203 -0
- package/src/components/Collapse.tsx +1 -1
- package/src/components/DatePicker.tsx +44 -3
- package/src/components/Picker.tsx +145 -0
- package/src/components/PickerColumn.tsx +58 -95
- package/src/components/Progress.tsx +1 -1
- package/src/components/Select.tsx +17 -12
- package/src/components/Selection.tsx +1 -4
- package/src/components/Switch.tsx +7 -7
- package/src/components/calendar/Calendar.tsx +30 -1
- package/src/components/calendar/DaysView.tsx +91 -0
- package/src/components/calendar/TimeView.tsx +80 -5
- package/src/components/calendar/YearsView.tsx +44 -1
- package/src/renderers/CRUD.tsx +3 -3
- package/src/renderers/Card.tsx +299 -191
- package/src/renderers/Dialog.tsx +8 -8
- package/src/renderers/Drawer.tsx +2 -2
- package/src/renderers/Form/Formula.tsx +7 -5
- package/src/renderers/Form/InputDate.tsx +83 -2
- package/src/renderers/Form/InputFile.tsx +7 -3
- package/src/renderers/Form/InputImage.tsx +1 -1
- package/src/renderers/Form/Item.tsx +2 -2
- package/src/renderers/Form/index.tsx +14 -2
- package/src/renderers/Form/wrapControl.tsx +5 -2
- package/src/renderers/Page.tsx +11 -10
- package/src/renderers/Status.tsx +3 -1
- package/src/renderers/Wizard.tsx +52 -12
- package/src/store/formItem.ts +12 -6
- package/src/utils/helper.ts +34 -0
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
4
4
|
/**
|
5
5
|
* @file Picker
|
6
|
-
* @description
|
6
|
+
* @description 移动端列滚动选择器
|
7
7
|
*/
|
8
8
|
var react_1 = tslib_1.__importStar(require("react"));
|
9
9
|
var isObject_1 = (0, tslib_1.__importDefault)(require("lodash/isObject"));
|
@@ -12,9 +12,8 @@ var uncontrollable_1 = require("uncontrollable");
|
|
12
12
|
var hooks_1 = require("../hooks");
|
13
13
|
var helper_1 = require("../utils/helper");
|
14
14
|
var theme_1 = require("../theme");
|
15
|
-
var locale_1 = require("../locale");
|
16
15
|
var use_touch_1 = (0, tslib_1.__importDefault)(require("../hooks/use-touch"));
|
17
|
-
|
16
|
+
;
|
18
17
|
var DEFAULT_DURATION = 200;
|
19
18
|
var MOMENTUM_LIMIT_TIME = 300;
|
20
19
|
var MOMENTUM_LIMIT_DISTANCE = 15;
|
@@ -32,9 +31,7 @@ function isOptionDisabled(option) {
|
|
32
31
|
return (0, isObject_1.default)(option) && option.disabled;
|
33
32
|
}
|
34
33
|
var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
35
|
-
var
|
36
|
-
var itemHeight = 24;
|
37
|
-
var defaultIndex = options.findIndex(function (item) { return item === value; });
|
34
|
+
var _a = props.visibleItemCount, visibleItemCount = _a === void 0 ? 5 : _a, _b = props.itemHeight, itemHeight = _b === void 0 ? 30 : _b, value = props.value, _c = props.swipeDuration, swipeDuration = _c === void 0 ? 1000 : _c, _d = props.labelField, labelField = _d === void 0 ? 'text' : _d, _e = props.options, options = _e === void 0 ? [] : _e, cx = props.classnames;
|
38
35
|
var root = (0, react_1.useRef)(null);
|
39
36
|
var menuItemRef = (0, react_1.useRef)(null);
|
40
37
|
var wrapper = (0, react_1.useRef)(null);
|
@@ -43,37 +40,34 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
43
40
|
var transitionEndTrigger = (0, react_1.useRef)(null);
|
44
41
|
var touchStartTime = (0, react_1.useRef)(0);
|
45
42
|
var momentumOffset = (0, react_1.useRef)(0);
|
46
|
-
if (menuItemRef.current) {
|
47
|
-
//@ts-ignore
|
48
|
-
itemHeight = menuItemRef.current.getBoundingClientRect().height;
|
49
|
-
}
|
50
|
-
var _e = (0, hooks_1.useSetState)({
|
51
|
-
index: defaultIndex,
|
52
|
-
offset: 0,
|
53
|
-
duration: 0,
|
54
|
-
options: (0, cloneDeep_1.default)(options)
|
55
|
-
}), state = _e[0], updateState = _e[1];
|
56
43
|
var touch = (0, use_touch_1.default)();
|
57
|
-
var count =
|
44
|
+
var count = options.length;
|
45
|
+
var defaultIndex = options.findIndex(function (item) { return item === value; });
|
58
46
|
var baseOffset = (0, react_1.useMemo)(function () {
|
59
47
|
// 默认转入第一个选项的位置
|
60
48
|
return (itemHeight * (+visibleItemCount - 1)) / 2;
|
61
49
|
}, [itemHeight, visibleItemCount]);
|
62
50
|
var adjustIndex = function (index) {
|
63
51
|
index = (0, helper_1.range)(index, 0, count);
|
64
|
-
if (!
|
52
|
+
if (!options) {
|
65
53
|
return;
|
66
54
|
}
|
67
55
|
for (var i = index; i < count; i += 1) {
|
68
|
-
if (!isOptionDisabled(
|
56
|
+
if (!isOptionDisabled(options[i]))
|
69
57
|
return i;
|
70
58
|
}
|
71
59
|
for (var i = index - 1; i >= 0; i -= 1) {
|
72
|
-
if (!isOptionDisabled(
|
60
|
+
if (!isOptionDisabled(options[i]))
|
73
61
|
return i;
|
74
62
|
}
|
75
63
|
return null;
|
76
64
|
};
|
65
|
+
var _f = (0, hooks_1.useSetState)({
|
66
|
+
index: adjustIndex(defaultIndex) || 0,
|
67
|
+
offset: 0,
|
68
|
+
duration: 0,
|
69
|
+
options: (0, cloneDeep_1.default)(options)
|
70
|
+
}), state = _f[0], updateState = _f[1];
|
77
71
|
/**
|
78
72
|
*
|
79
73
|
* @param index 索引
|
@@ -86,10 +80,13 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
86
80
|
var trigger = function () {
|
87
81
|
updateState({ index: index });
|
88
82
|
if (emitChange && props.onChange) {
|
89
|
-
|
83
|
+
requestAnimationFrame(function () {
|
90
84
|
var _a;
|
91
85
|
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, options[index], index, confirm);
|
92
|
-
}
|
86
|
+
});
|
87
|
+
// setTimeout(() => {
|
88
|
+
// props.onChange?.(options[index], index, confirm);
|
89
|
+
// }, 0);
|
93
90
|
}
|
94
91
|
};
|
95
92
|
// trigger the change event after transitionend when moving
|
@@ -105,7 +102,8 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
105
102
|
var setOptions = function (options) {
|
106
103
|
if (JSON.stringify(options) !== JSON.stringify(state.options)) {
|
107
104
|
updateState({ options: options });
|
108
|
-
|
105
|
+
var index = options.findIndex(function (item) { return item === value; }) || 0;
|
106
|
+
setIndex(index, true, true);
|
109
107
|
}
|
110
108
|
};
|
111
109
|
var onClickItem = function (index) {
|
@@ -117,7 +115,7 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
117
115
|
setIndex(index, true, true);
|
118
116
|
};
|
119
117
|
var getOptionText = function (option) {
|
120
|
-
if ((0, isObject_1.default)(option) &&
|
118
|
+
if ((0, isObject_1.default)(option) && labelField in option) {
|
121
119
|
//@ts-ignore
|
122
120
|
return option[labelField];
|
123
121
|
}
|
@@ -201,12 +199,17 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
201
199
|
}, 0);
|
202
200
|
};
|
203
201
|
var renderOptions = function () {
|
202
|
+
var style = {
|
203
|
+
height: itemHeight + "px",
|
204
|
+
lineHeight: itemHeight + "px"
|
205
|
+
};
|
204
206
|
return state.options.map(function (option, index) {
|
205
207
|
var text = getOptionText(option);
|
206
208
|
var disabled = isOptionDisabled(option);
|
207
209
|
var data = {
|
208
210
|
role: 'button',
|
209
211
|
key: index,
|
212
|
+
style: style,
|
210
213
|
tabIndex: disabled ? -1 : 0,
|
211
214
|
className: props.classnames("PickerColumns-columnItem", {
|
212
215
|
'is-disabled': disabled,
|
@@ -226,7 +229,7 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
226
229
|
var setValue = function (value) {
|
227
230
|
var options = state.options;
|
228
231
|
for (var i = 0; i < options.length; i += 1) {
|
229
|
-
if (
|
232
|
+
if (options[i] === value) {
|
230
233
|
return setIndex(i);
|
231
234
|
}
|
232
235
|
}
|
@@ -234,7 +237,7 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
234
237
|
};
|
235
238
|
var getValue = (0, react_1.useCallback)(function () { return state.options[state.index]; }, [state.index, state.options]);
|
236
239
|
(0, react_1.useEffect)(function () {
|
237
|
-
setIndex(defaultIndex
|
240
|
+
setIndex(defaultIndex);
|
238
241
|
}, [defaultIndex]);
|
239
242
|
(0, hooks_1.useUpdateEffect)(function () {
|
240
243
|
setOptions((0, cloneDeep_1.default)(options));
|
@@ -252,28 +255,16 @@ var PickerColumn = (0, react_1.forwardRef)(function (props, ref) {
|
|
252
255
|
transitionDuration: state.duration + "ms",
|
253
256
|
transitionProperty: state.duration ? 'all' : 'none'
|
254
257
|
};
|
255
|
-
|
256
|
-
|
257
|
-
var columnsStyle = { height: wrapHeight + "px" };
|
258
|
-
var maskStyle = {
|
259
|
-
backgroundSize: "100% " + (wrapHeight - itemHeight) / 2 + "px"
|
260
|
-
};
|
261
|
-
return (react_1.default.createElement("div", { className: cx(mobileClassName, 'PickerColumns', 'PickerColumns-popOver') },
|
262
|
-
react_1.default.createElement("div", { className: cx('PickerColumns-toolbar') },
|
263
|
-
react_1.default.createElement(Button_1.default, { level: "default", onClick: onClose }, __('cancel')),
|
264
|
-
react_1.default.createElement(Button_1.default, { level: "primary", onClick: onConfirm }, __('confirm'))),
|
265
|
-
react_1.default.createElement("div", { className: cx('PickerColumns-columns'), style: columnsStyle },
|
266
|
-
react_1.default.createElement("div", { ref: root, className: props.classnames(props.className), onTouchStart: onTouchStart, onTouchMove: onTouchMove, onTouchEnd: onTouchEnd, onTouchCancel: onTouchEnd },
|
267
|
-
react_1.default.createElement("ul", { ref: wrapper, style: wrapperStyle, className: props.classnames('PickerColumns-columnWrapper'), onTransitionEnd: stopMomentum }, renderOptions())),
|
268
|
-
react_1.default.createElement("div", { className: cx('PickerColumns-mask'), style: maskStyle }),
|
269
|
-
react_1.default.createElement("div", { className: cx('PickerColumns-frame'), style: frameStyle }))));
|
258
|
+
return (react_1.default.createElement("div", { ref: root, className: props.classnames('PickerColumns', props.className), onTouchStart: onTouchStart, onTouchMove: onTouchMove, onTouchEnd: onTouchEnd, onTouchCancel: onTouchEnd },
|
259
|
+
react_1.default.createElement("ul", { ref: wrapper, style: wrapperStyle, className: props.classnames('PickerColumns-columnWrapper'), onTransitionEnd: stopMomentum }, renderOptions())));
|
270
260
|
});
|
271
261
|
PickerColumn.defaultProps = {
|
272
262
|
options: [],
|
273
263
|
visibleItemCount: 5,
|
274
|
-
swipeDuration: 1000
|
264
|
+
swipeDuration: 1000,
|
265
|
+
itemHeight: 30
|
275
266
|
};
|
276
|
-
exports.default = (0, theme_1.themeable)((0,
|
267
|
+
exports.default = (0, theme_1.themeable)((0, uncontrollable_1.uncontrollable)(PickerColumn, {
|
277
268
|
value: 'onChange'
|
278
|
-
}))
|
269
|
+
}));
|
279
270
|
//# sourceMappingURL=./components/PickerColumn.js.map
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/PickerColumn.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;AAAA;;;GAGG;AACH,
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * @file Picker\n * @description 移动端选择器\n */\nimport React, {\n useEffect,\n useMemo,\n useRef,\n useImperativeHandle,\n useCallback,\n forwardRef,\n CSSProperties\n} from 'react';\nimport isObject from 'lodash/isObject';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {uncontrollable} from 'uncontrollable';\n\nimport {useSetState, useUpdateEffect} from '../hooks';\nimport {range} from '../utils/helper';\nimport {themeable, ThemeProps} from '../theme';\nimport {localeable, LocaleProps} from '../locale';\nimport useTouch from '../hooks/use-touch';\nimport Button from './Button';\n\nexport interface PickerColumnProps extends ThemeProps, LocaleProps {\n mobileClassName?: string;\n style?: CSSProperties;\n index?: number;\n labelField: string;\n readonly?: boolean;\n value: any;\n swipeDuration?: number | string;\n visibleItemCount?: number | string;\n options?: PickerOption[];\n children?: any;\n optionRender?: (option: string | object | PickerOption) => React.ReactNode;\n onChange?: (\n value?: PickerOption | string,\n index?: number,\n confirm?: boolean\n ) => void;\n onClose?: () => void;\n onConfirm?: () => void;\n}\n\nexport interface Column {\n values?: string[];\n className?: string;\n children?: Column[];\n disabled?: boolean;\n}\n\nexport type PickerOption = string | number | PickerObjectOption;\n\nexport type PickerObjectOption = {\n value?: string | number;\n text?: string | number;\n disabled?: boolean;\n} & Record<string, {}>;\n\nconst DEFAULT_DURATION = 200;\nconst MOMENTUM_LIMIT_TIME = 300;\nconst MOMENTUM_LIMIT_DISTANCE = 15;\n\nfunction getElementTranslateY(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n const style = window.getComputedStyle(element);\n const transform = style.transform || style.webkitTransform;\n // 格式如:matrix( scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY() );\n const translateY = transform.slice(7, transform.length - 1).split(', ')[5];\n\n return Number(translateY);\n}\n\nfunction isOptionDisabled(option: PickerOption) {\n return isObject(option) && option.disabled;\n}\n\nconst PickerColumn = forwardRef<{}, PickerColumnProps>((props, ref) => {\n const {\n onClose,\n onConfirm,\n mobileClassName,\n visibleItemCount = 5,\n value,\n swipeDuration = 1000,\n labelField = 'value',\n translate: __,\n options = [],\n classnames: cx\n } = props;\n let itemHeight = 24;\n\n const defaultIndex = options.findIndex(item => item === value);\n\n const root = useRef(null);\n const menuItemRef = useRef(null);\n const wrapper = useRef(null);\n\n const moving = useRef(false);\n const startOffset = useRef(0);\n const transitionEndTrigger = useRef(null);\n const touchStartTime = useRef(0);\n const momentumOffset = useRef(0);\n\n if (menuItemRef.current) {\n //@ts-ignore\n itemHeight = menuItemRef.current.getBoundingClientRect().height;\n }\n\n const [state, updateState] = useSetState({\n index: defaultIndex,\n offset: 0,\n duration: 0,\n options: cloneDeep(options)\n });\n\n const touch = useTouch();\n\n const count = state.options.length;\n\n const baseOffset = useMemo(() => {\n // 默认转入第一个选项的位置\n return (itemHeight * (+visibleItemCount - 1)) / 2;\n }, [itemHeight, visibleItemCount]);\n\n const adjustIndex = (index: number) => {\n index = range(index, 0, count);\n if (!state.options) {\n return;\n }\n\n for (let i = index; i < count; i += 1) {\n if (!isOptionDisabled(state.options[i])) return i;\n }\n for (let i = index - 1; i >= 0; i -= 1) {\n if (!isOptionDisabled(state.options[i])) return i;\n }\n\n return null;\n };\n\n /**\n *\n * @param index 索引\n * @param emitChange 是否派发变动消息\n * @param confirm 是否为确认类型,为真时触发value改变\n */\n const setIndex = (index: number, emitChange?: boolean, confirm?: boolean) => {\n index = adjustIndex(index) || 0;\n\n const offset = -index * itemHeight;\n const trigger = () => {\n updateState({index});\n\n if (emitChange && props.onChange) {\n setTimeout(() => {\n props.onChange?.(options[index], index, confirm);\n }, 0);\n }\n };\n\n // trigger the change event after transitionend when moving\n if (moving.current && offset !== state.offset) {\n //@ts-ignore\n transitionEndTrigger.current = trigger;\n } else {\n trigger();\n }\n updateState({offset});\n };\n\n const setOptions = (options: Array<PickerOption>) => {\n if (JSON.stringify(options) !== JSON.stringify(state.options)) {\n updateState({options});\n setIndex(defaultIndex, true);\n }\n };\n\n const onClickItem = (index: number) => {\n if (moving.current || props.readonly) {\n return;\n }\n transitionEndTrigger.current = null;\n updateState({duration: DEFAULT_DURATION});\n setIndex(index, true, true);\n };\n\n const getOptionText = (option: [] | PickerOption) => {\n if (isObject(option) && props.labelField in option) {\n //@ts-ignore\n return option[labelField];\n }\n return option;\n };\n\n const getIndexByOffset = (offset: number) =>\n range(Math.round(-offset / itemHeight), 0, count - 1);\n\n const momentum = (distance: number, duration: number) => {\n const speed = Math.abs(distance / duration);\n\n distance = state.offset + (speed / 0.003) * (distance < 0 ? -1 : 1);\n\n const index = getIndexByOffset(distance);\n updateState({duration: +swipeDuration});\n setIndex(index, true);\n };\n\n const stopMomentum = () => {\n moving.current = false;\n updateState({duration: 0});\n\n if (transitionEndTrigger.current) {\n //@ts-ignore\n transitionEndTrigger.current();\n transitionEndTrigger.current = null;\n }\n };\n\n const onTouchStart = (event: any) => {\n if (props.readonly) {\n return;\n }\n\n touch.start(event);\n let {offset} = state;\n\n if (moving.current) {\n const translateY = getElementTranslateY(wrapper.current);\n offset = Math.min(0, translateY - baseOffset);\n startOffset.current = offset;\n } else {\n startOffset.current = offset;\n }\n\n updateState({duration: 0, offset});\n touchStartTime.current = Date.now();\n momentumOffset.current = startOffset.current;\n transitionEndTrigger.current = null;\n };\n\n const onTouchMove = (event: TouchEvent | React.TouchEvent) => {\n if (props.readonly) {\n return;\n }\n\n touch.move(event as TouchEvent);\n\n if (touch.isVertical()) {\n moving.current = true;\n }\n\n const offset = range(\n startOffset.current + touch.deltaY,\n -(count * itemHeight),\n itemHeight\n );\n\n updateState({\n offset\n });\n\n const now = Date.now();\n if (now - touchStartTime.current > MOMENTUM_LIMIT_TIME) {\n touchStartTime.current = now;\n momentumOffset.current = offset;\n }\n };\n\n const onTouchEnd = () => {\n if (props.readonly) {\n return;\n }\n const distance = state.offset - momentumOffset.current;\n const duration = Date.now() - touchStartTime.current;\n\n const allowMomentum =\n duration < MOMENTUM_LIMIT_TIME &&\n Math.abs(distance) > MOMENTUM_LIMIT_DISTANCE;\n\n if (allowMomentum) {\n momentum(distance, duration);\n return;\n }\n\n const index = getIndexByOffset(state.offset);\n updateState({duration: DEFAULT_DURATION});\n setIndex(index, true);\n\n // compatible with desktop scenario\n // use setTimeout to skip the click event triggered after touchstart\n setTimeout(() => {\n moving.current = false;\n }, 0);\n };\n\n const renderOptions = () => {\n return state.options.map((option, index: number) => {\n const text: string | PickerOption = getOptionText(option);\n const disabled = isOptionDisabled(option);\n\n const data = {\n role: 'button',\n key: index,\n tabIndex: disabled ? -1 : 0,\n className: props.classnames(`PickerColumns-columnItem`, {\n 'is-disabled': disabled,\n 'is-selected': index === state.index\n }),\n onClick: () => {\n onClickItem(index);\n }\n };\n\n const childData = {\n className: 'text-ellipsis',\n children: text\n };\n\n return (\n <li {...data} ref={menuItemRef}>\n {props.optionRender ? (\n props.optionRender(option)\n ) : (\n <div {...childData} />\n )}\n </li>\n );\n });\n };\n\n const setValue = (value: string) => {\n const {options} = state;\n for (let i = 0; i < options.length; i += 1) {\n if (getOptionText(options[i]) === value) {\n return setIndex(i);\n }\n }\n return null;\n };\n\n const getValue = useCallback<() => PickerOption>(\n () => state.options[state.index],\n [state.index, state.options]\n );\n\n useEffect(() => {\n setIndex(defaultIndex, true);\n }, [defaultIndex]);\n\n useUpdateEffect(() => {\n setOptions(cloneDeep(options));\n }, [options]);\n\n useImperativeHandle(ref, () => ({\n state,\n setIndex,\n getValue,\n setValue,\n setOptions,\n stopMomentum\n }));\n\n const wrapperStyle = {\n transform: `translate3d(0, ${state.offset + baseOffset}px, 0)`,\n transitionDuration: `${state.duration}ms`,\n transitionProperty: state.duration ? 'all' : 'none'\n };\n\n const wrapHeight = itemHeight * +visibleItemCount;\n const frameStyle = {height: `${itemHeight}px`};\n const columnsStyle = {height: `${wrapHeight}px`};\n const maskStyle = {\n backgroundSize: `100% ${(wrapHeight - itemHeight) / 2}px`\n };\n\n return (\n <div\n className={cx(mobileClassName, 'PickerColumns', 'PickerColumns-popOver')}\n >\n <div className={cx('PickerColumns-toolbar')}>\n <Button level=\"default\" onClick={onClose}>\n {__('cancel')}\n </Button>\n <Button level=\"primary\" onClick={onConfirm}>\n {__('confirm')}\n </Button>\n </div>\n <div className={cx('PickerColumns-columns')} style={columnsStyle}>\n <div\n ref={root}\n className={props.classnames(props.className)}\n onTouchStart={onTouchStart}\n onTouchMove={onTouchMove}\n onTouchEnd={onTouchEnd}\n onTouchCancel={onTouchEnd}\n >\n <ul\n ref={wrapper}\n style={wrapperStyle}\n className={props.classnames('PickerColumns-columnWrapper')}\n onTransitionEnd={stopMomentum}\n >\n {renderOptions()}\n </ul>\n </div>\n <div className={cx('PickerColumns-mask')} style={maskStyle}></div>\n <div className={cx('PickerColumns-frame')} style={frameStyle}></div>\n </div>\n </div>\n );\n});\n\nPickerColumn.defaultProps = {\n options: [],\n visibleItemCount: 5,\n swipeDuration: 1000\n};\n\nexport default themeable(\n localeable(\n uncontrollable(PickerColumn, {\n value: 'onChange'\n })\n )\n);\n"
|
11
|
+
"/**\n * @file Picker\n * @description 移动端列滚动选择器\n */\nimport React, {\n useEffect,\n useMemo,\n useRef,\n useImperativeHandle,\n useCallback,\n forwardRef\n} from 'react';\nimport isObject from 'lodash/isObject';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {uncontrollable} from 'uncontrollable';\n\nimport {useSetState, useUpdateEffect} from '../hooks';\nimport {range} from '../utils/helper';\nimport {themeable, ThemeProps} from '../theme';\nimport useTouch from '../hooks/use-touch';\n\nexport interface PickerColumnItem {\n labelField?: string;\n readonly?: boolean;\n value?: PickerOption;\n swipeDuration?: number;\n visibleItemCount?: number;\n itemHeight?: number;\n options?: PickerOption[];\n optionRender?: (option: string | object | PickerOption) => React.ReactNode;\n onChange?: (\n value?: PickerOption | string,\n index?: number,\n confirm?: boolean\n ) => void;\n};\n\nexport interface PickerColumnProps extends PickerColumnItem, ThemeProps {}\n\nexport type PickerOption = string | number | PickerObjectOption;\n\nexport type PickerObjectOption = {\n value?: string | number;\n text?: string | number;\n disabled?: boolean;\n} & Record<string, {}>;\n\nconst DEFAULT_DURATION = 200;\nconst MOMENTUM_LIMIT_TIME = 300;\nconst MOMENTUM_LIMIT_DISTANCE = 15;\n\nfunction getElementTranslateY(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n const style = window.getComputedStyle(element);\n const transform = style.transform || style.webkitTransform;\n // 格式如:matrix( scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY() );\n const translateY = transform.slice(7, transform.length - 1).split(', ')[5];\n\n return Number(translateY);\n}\n\nfunction isOptionDisabled(option: PickerOption) {\n return isObject(option) && option.disabled;\n}\n \nconst PickerColumn = forwardRef<{}, PickerColumnProps>((props, ref) => {\n const {\n visibleItemCount = 5,\n itemHeight = 30,\n value,\n swipeDuration = 1000,\n labelField = 'text',\n options = [],\n classnames: cx\n } = props;\n\n const root = useRef(null);\n const menuItemRef = useRef(null);\n const wrapper = useRef(null);\n\n const moving = useRef(false);\n const startOffset = useRef(0);\n const transitionEndTrigger = useRef(null);\n const touchStartTime = useRef(0);\n const momentumOffset = useRef(0);\n\n const touch = useTouch();\n const count = options.length;\n const defaultIndex = options.findIndex(item => item === value);\n\n const baseOffset = useMemo(() => {\n // 默认转入第一个选项的位置\n return (itemHeight * (+visibleItemCount - 1)) / 2;\n }, [itemHeight, visibleItemCount]);\n\n const adjustIndex = (index: number) => {\n index = range(index, 0, count);\n if (!options) {\n return;\n }\n\n for (let i = index; i < count; i += 1) {\n if (!isOptionDisabled(options[i])) return i;\n }\n for (let i = index - 1; i >= 0; i -= 1) {\n if (!isOptionDisabled(options[i])) return i;\n }\n\n return null;\n };\n\n const [state, updateState] = useSetState({\n index: adjustIndex(defaultIndex) || 0,\n offset: 0,\n duration: 0,\n options: cloneDeep(options)\n });\n\n /**\n *\n * @param index 索引\n * @param emitChange 是否派发变动消息\n * @param confirm 是否为确认类型,为真时触发value改变\n */\n const setIndex = (index: number, emitChange?: boolean, confirm?: boolean) => {\n index = adjustIndex(index) || 0;\n\n const offset = -index * itemHeight;\n const trigger = () => {\n updateState({index});\n\n if (emitChange && props.onChange) {\n requestAnimationFrame(\n () => {\n props.onChange?.(options[index], index, confirm);\n }\n );\n // setTimeout(() => {\n // props.onChange?.(options[index], index, confirm);\n // }, 0);\n }\n };\n\n // trigger the change event after transitionend when moving\n if (moving.current && offset !== state.offset) {\n //@ts-ignore\n transitionEndTrigger.current = trigger;\n } else {\n trigger();\n }\n updateState({offset});\n };\n\n const setOptions = (options: Array<PickerOption>) => {\n if (JSON.stringify(options) !== JSON.stringify(state.options)) {\n updateState({options});\n const index = options.findIndex(item => item === value) || 0;\n setIndex(index, true, true);\n }\n };\n\n const onClickItem = (index: number) => {\n if (moving.current || props.readonly) {\n return;\n }\n transitionEndTrigger.current = null;\n updateState({duration: DEFAULT_DURATION});\n setIndex(index, true, true);\n };\n\n const getOptionText = (option: [] | PickerOption) => {\n if (isObject(option) && labelField in option) {\n //@ts-ignore\n return option[labelField];\n }\n return option;\n };\n\n const getIndexByOffset = (offset: number) =>\n range(Math.round(-offset / itemHeight), 0, count - 1);\n\n const momentum = (distance: number, duration: number) => {\n const speed = Math.abs(distance / duration);\n\n distance = state.offset + (speed / 0.003) * (distance < 0 ? -1 : 1);\n\n const index = getIndexByOffset(distance);\n updateState({duration: +swipeDuration});\n setIndex(index, true);\n };\n\n const stopMomentum = () => {\n moving.current = false;\n updateState({duration: 0});\n\n if (transitionEndTrigger.current) {\n //@ts-ignore\n transitionEndTrigger.current();\n transitionEndTrigger.current = null;\n }\n };\n\n const onTouchStart = (event: any) => {\n if (props.readonly) {\n return;\n }\n\n touch.start(event);\n let {offset} = state;\n\n if (moving.current) {\n const translateY = getElementTranslateY(wrapper.current);\n offset = Math.min(0, translateY - baseOffset);\n startOffset.current = offset;\n } else {\n startOffset.current = offset;\n }\n\n updateState({duration: 0, offset});\n touchStartTime.current = Date.now();\n momentumOffset.current = startOffset.current;\n transitionEndTrigger.current = null;\n };\n\n const onTouchMove = (event: TouchEvent | React.TouchEvent) => {\n if (props.readonly) {\n return;\n }\n\n touch.move(event as TouchEvent);\n\n if (touch.isVertical()) {\n moving.current = true;\n }\n\n const offset = range(\n startOffset.current + touch.deltaY,\n -(count * itemHeight),\n itemHeight\n );\n\n updateState({\n offset\n });\n\n const now = Date.now();\n if (now - touchStartTime.current > MOMENTUM_LIMIT_TIME) {\n touchStartTime.current = now;\n momentumOffset.current = offset;\n }\n };\n\n const onTouchEnd = () => {\n if (props.readonly) {\n return;\n }\n const distance = state.offset - momentumOffset.current;\n const duration = Date.now() - touchStartTime.current;\n\n const allowMomentum =\n duration < MOMENTUM_LIMIT_TIME &&\n Math.abs(distance) > MOMENTUM_LIMIT_DISTANCE;\n\n if (allowMomentum) {\n momentum(distance, duration);\n return;\n }\n\n const index = getIndexByOffset(state.offset);\n updateState({duration: DEFAULT_DURATION});\n setIndex(index, true);\n\n // compatible with desktop scenario\n // use setTimeout to skip the click event triggered after touchstart\n setTimeout(() => {\n moving.current = false;\n }, 0);\n };\n\n const renderOptions = () => {\n const style = {\n height: `${itemHeight}px`,\n lineHeight: `${itemHeight}px`\n };\n return state.options.map((option, index: number) => {\n const text: string | PickerOption = getOptionText(option);\n const disabled = isOptionDisabled(option);\n\n const data = {\n role: 'button',\n key: index,\n style,\n tabIndex: disabled ? -1 : 0,\n className: props.classnames(`PickerColumns-columnItem`, {\n 'is-disabled': disabled,\n 'is-selected': index === state.index\n }),\n onClick: () => {\n onClickItem(index);\n }\n };\n \n const childData = {\n className: 'text-ellipsis',\n children: text\n };\n\n return (\n <li {...data} ref={menuItemRef}>\n {props.optionRender ? (\n props.optionRender(option)\n ) : (\n <div {...childData} />\n )}\n </li>\n );\n });\n };\n\n const setValue = (value: string) => {\n const {options} = state;\n for (let i = 0; i < options.length; i += 1) {\n if (options[i] === value) {\n return setIndex(i);\n }\n }\n return null;\n };\n\n const getValue = useCallback<() => PickerOption>(\n () => state.options[state.index],\n [state.index, state.options]\n );\n\n useEffect(() => {\n setIndex(defaultIndex);\n }, [defaultIndex]);\n\n useUpdateEffect(() => {\n setOptions(cloneDeep(options));\n }, [options]);\n\n useImperativeHandle(ref, () => ({\n state,\n setIndex,\n getValue,\n setValue,\n setOptions,\n stopMomentum\n }));\n\n const wrapperStyle = {\n transform: `translate3d(0, ${state.offset + baseOffset}px, 0)`,\n transitionDuration: `${state.duration}ms`,\n transitionProperty: state.duration ? 'all' : 'none'\n };\n return (\n <div\n ref={root}\n className={props.classnames('PickerColumns', props.className)}\n onTouchStart={onTouchStart}\n onTouchMove={onTouchMove}\n onTouchEnd={onTouchEnd}\n onTouchCancel={onTouchEnd}\n >\n <ul\n ref={wrapper}\n style={wrapperStyle}\n className={props.classnames('PickerColumns-columnWrapper')}\n onTransitionEnd={stopMomentum}\n >\n {renderOptions()}\n </ul>\n </div>\n );\n});\n\nPickerColumn.defaultProps = {\n options: [],\n visibleItemCount: 5,\n swipeDuration: 1000,\n itemHeight: 30\n};\n\nexport default themeable(\n uncontrollable(PickerColumn, {\n value: 'onChange'\n })\n);\n\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -59,7 +59,7 @@ var Progress = /** @class */ (function (_super) {
|
|
59
59
|
return undefined;
|
60
60
|
};
|
61
61
|
viewValue = [
|
62
|
-
react_1.default.createElement("div", { className: cx(prefixCls) },
|
62
|
+
react_1.default.createElement("div", { className: cx(prefixCls), key: "circle" },
|
63
63
|
react_1.default.createElement(rc_progress_1.Circle, { percent: value, strokeColor: "", strokeWidth: circleWidth, trailWidth: circleWidth, prefixCls: this.autoClassName(value), gapDegree: getGapDegree(), gapPosition: gapPos }),
|
64
64
|
this.getLabel(prefixCls))
|
65
65
|
];
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/components/Progress.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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
|
9
|
+
"mappings": ";;;;AAAA,6DAA0B;AAE1B,2CAAmC;AACnC,kCAA6D;AAmB7D;IAA8B,yCAAsC;IAApE;;IAmHA,CAAC;IAzGC,gCAAa,GAAb,UAAc,KAAa;QACzB,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACvB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QACnD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,2BAAQ,GAAR,UAAS,SAAiB;QAClB,IAAA,KAA6C,IAAI,CAAC,KAAK,EAAtD,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,SAAS,eAAA,EAAc,EAAE,gBAAc,CAAC;QAC9D,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,IAAI,CAAC;SACb;QACD,IAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAA,KAAK,IAAI,OAAG,KAAK,MAAG,EAAX,CAAW,CAAC,CAAC;QACvD,IAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,CACL,wCAAM,SAAS,EAAE,EAAE,CAAI,SAAS,UAAO,CAAC,EAAE,GAAG,EAAC,OAAO,IAClD,OAAO,CACH,CACR,CAAC;IACJ,CAAC;IAED,yBAAM,GAAN;;QACQ,IAAA,KAcF,IAAI,CAAC,KAAK,EAbZ,UAAU,gBAAA,EACV,iBAAiB,uBAAA,EACjB,oBAAoB,0BAAA,EACpB,IAAI,UAAA,EACJ,KAAK,WAAA,EACL,WAAW,iBAAA,EACX,MAAM,YAAA,EACN,OAAO,aAAA,EACP,SAAS,eAAA,EACT,SAAS,eAAA,EACT,WAAW,iBAAA,EACX,WAAW,iBAAA,EACC,EAAE,gBACF,CAAC;QAEf,IAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC;QACnC,IAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAEnE,IAAI,SAAS,GAAoB,CAC/B,wCAAM,SAAS,EAAC,YAAY,IAAE,WAAW,CAAQ,CAClD,CAAC;QAEF,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,SAAS,GAAG;gBACV,uCACE,GAAG,EAAC,UAAU,EACd,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,iBAAiB;wBACxC,GAAI,SAAS,cAAW,IAAG,CAAC,SAAS;4BACrC;oBAEF,uCAAK,SAAS,EAAE,EAAE,CAAI,SAAS,WAAQ,CAAC;wBACtC,uCACE,SAAS,EAAE,EAAE,CACR,SAAS,SAAM,EAClB,oBAAoB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAChD,GAAI,SAAS,iBAAc,IAAG,MAAM,iBACpC,GAAI,SAAS,kBAAe,IAAG,OAAO,IAAI,CAAC,MAAM,iBACjD,GAAI,SAAS,yBAAsB,IAAG,OAAO,IAAI,MAAM,MACzD,EACD,KAAK,EAAK,KAAK,MAAG,EAClB,KAAK,EAAE;gCACL,KAAK,EAAK,KAAK,MAAG;6BACnB,GACD,CACE,CACF;gBACN,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;aACzB,CAAC;SACH;aAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,EAAE;YACpD,IAAM,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;YACrC,IAAM,MAAM,GAAG,WAAW,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAC1E,IAAM,YAAY,GAAG;gBACnB,IAAI,SAAS,IAAI,SAAS,KAAK,CAAC,EAAE;oBAChC,OAAO,SAAS,CAAC;iBAClB;gBACD,IAAI,IAAI,KAAK,WAAW,EAAE;oBACxB,OAAO,EAAE,CAAC;iBACX;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC;YAEF,SAAS,GAAG;gBACV,uCAAK,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAC,QAAQ;oBACzC,8BAAC,oBAAM,IACL,OAAO,EAAE,KAAK,EACd,WAAW,EAAC,EAAE,EACd,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EACpC,SAAS,EAAE,YAAY,EAAE,EACzB,WAAW,EAAE,MAAM,GACnB;oBACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CACrB;aACP,CAAC;SACH;QAED,OAAO,uCAAK,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,IAAG,SAAS,CAAO,CAAC;IACvE,CAAC;IAjHM,qBAAY,GAA2B;QAC5C,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,GAAG;QAChB,iBAAiB,EAAE,EAAE;QACrB,oBAAoB,EAAE,EAAE;QACxB,GAAG,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC;QACvE,SAAS,EAAE,IAAI;KAChB,CAAC;IA2GJ,eAAC;CAAA,AAnHD,CAA8B,eAAK,CAAC,SAAS,GAmH5C;AAnHY,4BAAQ;AAqHrB,kBAAe,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport cx from 'classnames';\nimport {Circle} from 'rc-progress';\nimport {ClassNamesFn, themeable, ThemeProps} from '../theme';\nimport {SchemaClassName} from '../Schema';\ninterface ProgressProps extends ThemeProps {\n type: 'line' | 'circle' | 'dashboard';\n showLabel: boolean;\n value: number;\n stripe?: boolean;\n animate?: boolean;\n map?: Array<string>;\n placeholder?: string;\n format?: (value?: number) => JSX.Element;\n gapDegree?: number;\n gapPosition?: 'top' | 'bottom' | 'left' | 'right';\n strokeWidth?: number;\n classNames?: string;\n progressClassName?: SchemaClassName;\n progressBarClassName?: SchemaClassName;\n classnames: ClassNamesFn;\n}\nexport class Progress extends React.Component<ProgressProps, Object> {\n static defaultProps: Partial<ProgressProps> = {\n type: 'line',\n placeholder: '-',\n progressClassName: '',\n progressBarClassName: '',\n map: ['bg-danger', 'bg-warning', 'bg-info', 'bg-success', 'bg-success'],\n showLabel: true\n };\n\n autoClassName(value: number) {\n const map = this.props.map;\n if (!map || !map.length) {\n return '';\n }\n let index = Math.floor((value * map.length) / 100);\n index = Math.max(0, Math.min(map.length - 1, index));\n return map[index];\n }\n\n getLabel(prefixCls: string) {\n const {value, format, showLabel, classnames: cx} = this.props;\n if (!showLabel) {\n return null;\n }\n const textFormatter = format || (value => `${value}%`);\n const content = textFormatter(value);\n return (\n <span className={cx(`${prefixCls}-text`)} key=\"value\">\n {content}\n </span>\n );\n }\n\n render() {\n const {\n classNames,\n progressClassName,\n progressBarClassName,\n type,\n value,\n placeholder,\n stripe,\n animate,\n showLabel,\n gapDegree,\n gapPosition,\n strokeWidth,\n classnames: cx\n } = this.props;\n\n const isLineType = type === 'line';\n const prefixCls = isLineType ? 'Progress-line' : 'Progress-circle';\n\n let viewValue: React.ReactNode = (\n <span className=\"text-muted\">{placeholder}</span>\n );\n\n if (type === 'line') {\n viewValue = [\n <div\n key=\"progress\"\n className={cx(prefixCls, progressClassName, {\n [`${prefixCls}-no-label`]: !showLabel\n })}\n >\n <div className={cx(`${prefixCls}-inter`)}>\n <div\n className={cx(\n `${prefixCls}-bar`,\n progressBarClassName || this.autoClassName(value),\n {[`${prefixCls}-bar--stripe`]: stripe},\n {[`${prefixCls}-bar--animate`]: animate && !stripe},\n {[`${prefixCls}-bar--stripe-animate`]: animate && stripe}\n )}\n title={`${value}%`}\n style={{\n width: `${value}%`\n }}\n />\n </div>\n </div>,\n this.getLabel(prefixCls)\n ];\n } else if (type === 'circle' || type === 'dashboard') {\n const circleWidth = strokeWidth || 6;\n const gapPos = gapPosition || (type === 'dashboard' && 'bottom') || 'top';\n const getGapDegree = () => {\n if (gapDegree || gapDegree === 0) {\n return gapDegree;\n }\n if (type === 'dashboard') {\n return 75;\n }\n return undefined;\n };\n\n viewValue = [\n <div className={cx(prefixCls)}>\n <Circle\n percent={value}\n strokeColor=\"\"\n strokeWidth={circleWidth}\n trailWidth={circleWidth}\n prefixCls={this.autoClassName(value)}\n gapDegree={getGapDegree()}\n gapPosition={gapPos}\n />\n {this.getLabel(prefixCls)}\n </div>\n ];\n }\n\n return <div className={cx('Progress', classNames)}>{viewValue}</div>;\n }\n}\n\nexport default themeable(Progress);\n"
|
11
|
+
"import React from 'react';\nimport cx from 'classnames';\nimport {Circle} from 'rc-progress';\nimport {ClassNamesFn, themeable, ThemeProps} from '../theme';\nimport {SchemaClassName} from '../Schema';\ninterface ProgressProps extends ThemeProps {\n type: 'line' | 'circle' | 'dashboard';\n showLabel: boolean;\n value: number;\n stripe?: boolean;\n animate?: boolean;\n map?: Array<string>;\n placeholder?: string;\n format?: (value?: number) => JSX.Element;\n gapDegree?: number;\n gapPosition?: 'top' | 'bottom' | 'left' | 'right';\n strokeWidth?: number;\n classNames?: string;\n progressClassName?: SchemaClassName;\n progressBarClassName?: SchemaClassName;\n classnames: ClassNamesFn;\n}\nexport class Progress extends React.Component<ProgressProps, Object> {\n static defaultProps: Partial<ProgressProps> = {\n type: 'line',\n placeholder: '-',\n progressClassName: '',\n progressBarClassName: '',\n map: ['bg-danger', 'bg-warning', 'bg-info', 'bg-success', 'bg-success'],\n showLabel: true\n };\n\n autoClassName(value: number) {\n const map = this.props.map;\n if (!map || !map.length) {\n return '';\n }\n let index = Math.floor((value * map.length) / 100);\n index = Math.max(0, Math.min(map.length - 1, index));\n return map[index];\n }\n\n getLabel(prefixCls: string) {\n const {value, format, showLabel, classnames: cx} = this.props;\n if (!showLabel) {\n return null;\n }\n const textFormatter = format || (value => `${value}%`);\n const content = textFormatter(value);\n return (\n <span className={cx(`${prefixCls}-text`)} key=\"value\">\n {content}\n </span>\n );\n }\n\n render() {\n const {\n classNames,\n progressClassName,\n progressBarClassName,\n type,\n value,\n placeholder,\n stripe,\n animate,\n showLabel,\n gapDegree,\n gapPosition,\n strokeWidth,\n classnames: cx\n } = this.props;\n\n const isLineType = type === 'line';\n const prefixCls = isLineType ? 'Progress-line' : 'Progress-circle';\n\n let viewValue: React.ReactNode = (\n <span className=\"text-muted\">{placeholder}</span>\n );\n\n if (type === 'line') {\n viewValue = [\n <div\n key=\"progress\"\n className={cx(prefixCls, progressClassName, {\n [`${prefixCls}-no-label`]: !showLabel\n })}\n >\n <div className={cx(`${prefixCls}-inter`)}>\n <div\n className={cx(\n `${prefixCls}-bar`,\n progressBarClassName || this.autoClassName(value),\n {[`${prefixCls}-bar--stripe`]: stripe},\n {[`${prefixCls}-bar--animate`]: animate && !stripe},\n {[`${prefixCls}-bar--stripe-animate`]: animate && stripe}\n )}\n title={`${value}%`}\n style={{\n width: `${value}%`\n }}\n />\n </div>\n </div>,\n this.getLabel(prefixCls)\n ];\n } else if (type === 'circle' || type === 'dashboard') {\n const circleWidth = strokeWidth || 6;\n const gapPos = gapPosition || (type === 'dashboard' && 'bottom') || 'top';\n const getGapDegree = () => {\n if (gapDegree || gapDegree === 0) {\n return gapDegree;\n }\n if (type === 'dashboard') {\n return 75;\n }\n return undefined;\n };\n\n viewValue = [\n <div className={cx(prefixCls)} key=\"circle\">\n <Circle\n percent={value}\n strokeColor=\"\"\n strokeWidth={circleWidth}\n trailWidth={circleWidth}\n prefixCls={this.autoClassName(value)}\n gapDegree={getGapDegree()}\n gapPosition={gapPos}\n />\n {this.getLabel(prefixCls)}\n </div>\n ];\n }\n\n return <div className={cx('Progress', classNames)}>{viewValue}</div>;\n }\n}\n\nexport default themeable(Progress);\n"
|
12
12
|
]
|
13
13
|
}
|