amis 1.8.0-beta.0 → 1.8.0-beta.3
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/SchemaRenderer.js +19 -3
- package/lib/SchemaRenderer.js.map +2 -2
- package/lib/WithRootStore.d.ts +18 -0
- package/lib/WithStore.js +2 -1
- package/lib/WithStore.js.map +2 -2
- package/lib/actions/CmptAction.js +14 -3
- package/lib/actions/CmptAction.js.map +2 -2
- package/lib/components/BarCode.js +1 -1
- package/lib/components/BarCode.js.map +2 -2
- package/lib/components/DatePicker.d.ts +3 -0
- package/lib/components/DatePicker.js +56 -11
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +92 -84
- package/lib/components/DateRangePicker.js +198 -5
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/MonthRangePicker.d.ts +84 -84
- package/lib/components/Progress.js +12 -9
- package/lib/components/Progress.js.map +2 -2
- package/lib/components/Radios.d.ts +1 -1
- package/lib/components/Radios.js +3 -5
- package/lib/components/Radios.js.map +2 -2
- package/lib/components/Range.d.ts +2 -2
- package/lib/components/Range.js +24 -11
- package/lib/components/Range.js.map +2 -2
- package/lib/components/Steps.d.ts +6 -0
- package/lib/components/Steps.js +13 -9
- package/lib/components/Steps.js.map +2 -2
- package/lib/components/calendar/Calendar.js +16 -12
- package/lib/components/calendar/Calendar.js.map +2 -2
- package/lib/components/calendar/YearsView.js +3 -3
- package/lib/components/calendar/YearsView.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +3 -1
- package/lib/components/formula/Editor.js +20 -2
- package/lib/components/formula/Editor.js.map +2 -2
- package/lib/components/formula/Picker.d.ts +5 -0
- package/lib/components/formula/Picker.js +19 -4
- package/lib/components/formula/Picker.js.map +2 -2
- package/lib/factory.d.ts +4 -0
- package/lib/factory.js +8 -2
- package/lib/factory.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +13 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +13 -0
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +13 -0
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +2 -0
- package/lib/renderers/Action.js +23 -5
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/Carousel.d.ts +1 -0
- package/lib/renderers/Carousel.js +13 -1
- package/lib/renderers/Carousel.js.map +2 -2
- package/lib/renderers/Dialog.d.ts +4 -0
- package/lib/renderers/Dialog.js +4 -3
- package/lib/renderers/Dialog.js.map +2 -2
- package/lib/renderers/DropDownButton.d.ts +2 -0
- package/lib/renderers/DropDownButton.js +13 -4
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Form/Checkboxes.d.ts +2 -2
- package/lib/renderers/Form/Checkboxes.js +2 -6
- package/lib/renderers/Form/Checkboxes.js.map +2 -2
- package/lib/renderers/Form/Combo.js +3 -2
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +3 -0
- package/lib/renderers/Form/InputCity.js +44 -2
- package/lib/renderers/Form/InputCity.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.d.ts +5 -0
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +6 -3
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputFormula.d.ts +4 -0
- package/lib/renderers/Form/InputFormula.js +2 -2
- package/lib/renderers/Form/InputFormula.js.map +2 -2
- package/lib/renderers/Form/InputImage.js +6 -3
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputRange.js +13 -14
- package/lib/renderers/Form/InputRange.js.map +2 -2
- package/lib/renderers/Form/InputTable.js +4 -2
- package/lib/renderers/Form/InputTable.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +11 -6
- package/lib/renderers/Form/index.js +1 -1
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/Form/wrapControl.d.ts +9 -0
- package/lib/renderers/Form/wrapControl.js +1 -1
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/Nav.js +2 -2
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Page.js +2 -3
- package/lib/renderers/Page.js.map +2 -2
- package/lib/renderers/Progress.d.ts +1 -1
- package/lib/renderers/Progress.js +1 -1
- package/lib/renderers/Progress.js.map +2 -2
- package/lib/renderers/Steps.d.ts +8 -0
- package/lib/renderers/Steps.js +2 -2
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/TableRow.js +1 -1
- package/lib/renderers/Table/TableRow.js.map +2 -2
- package/lib/renderers/Table/index.js +7 -3
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/Tabs.d.ts +4 -0
- package/lib/renderers/Tabs.js +22 -6
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Wizard.d.ts +6 -3
- package/lib/renderers/Wizard.js +257 -152
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/store/index.d.ts +5 -0
- package/lib/store/index.js +14 -0
- package/lib/store/index.js.map +2 -2
- package/lib/store/table.js +4 -4
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +194 -23
- package/lib/themes/ang.css +193 -22
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +194 -23
- package/lib/themes/antd.css +193 -22
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +194 -23
- package/lib/themes/cxd.css +193 -22
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +194 -23
- package/lib/themes/dark.css +193 -22
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +194 -23
- package/lib/themes/default.css +193 -22
- package/lib/themes/default.css.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/columnsSplit.d.ts +1 -0
- package/lib/utils/columnsSplit.js +40 -0
- package/lib/utils/columnsSplit.js.map +13 -0
- package/lib/utils/debug.d.ts +1 -1
- package/lib/utils/debug.js +16 -22
- package/lib/utils/debug.js.map +2 -2
- package/package.json +1 -1
- package/schema.json +181 -30
- package/scss/_properties.scss +2 -2
- package/scss/components/_barcode.scss +1 -1
- package/scss/components/_carousel.scss +1 -0
- package/scss/components/_debug.scss +3 -3
- package/scss/components/_formula.scss +18 -0
- package/scss/components/_progress.scss +3 -8
- package/scss/components/_steps.scss +199 -8
- package/scss/components/form/_date.scss +14 -0
- package/scss/components/form/_editor.scss +2 -1
- package/sdk/ang-ie11.css +234 -25
- package/sdk/ang.css +233 -24
- package/sdk/antd-ie11.css +234 -25
- package/sdk/antd.css +233 -24
- 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 +234 -25
- package/sdk/cxd.css +233 -24
- package/sdk/dark-ie11.css +234 -25
- package/sdk/dark.css +233 -24
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +13 -0
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +17 -17
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +234 -25
- package/sdk/sdk.css +233 -24
- package/sdk/sdk.js +1290 -1288
- 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/SchemaRenderer.tsx +32 -14
- package/src/WithStore.tsx +3 -1
- package/src/actions/CmptAction.ts +18 -0
- package/src/components/BarCode.tsx +2 -2
- package/src/components/DatePicker.tsx +77 -22
- package/src/components/DateRangePicker.tsx +198 -4
- package/src/components/Progress.tsx +8 -12
- package/src/components/Radios.tsx +6 -17
- package/src/components/Range.tsx +26 -12
- package/src/components/Steps.tsx +28 -27
- package/src/components/calendar/Calendar.tsx +17 -12
- package/src/components/calendar/YearsView.tsx +3 -4
- package/src/components/formula/Editor.tsx +34 -3
- package/src/components/formula/Picker.tsx +28 -1
- package/src/factory.tsx +15 -2
- package/src/locale/de-DE.ts +13 -0
- package/src/locale/en-US.ts +13 -0
- package/src/locale/zh-CN.ts +13 -0
- package/src/renderers/Action.tsx +22 -1
- package/src/renderers/Carousel.tsx +8 -0
- package/src/renderers/Dialog.tsx +17 -3
- package/src/renderers/DropDownButton.tsx +14 -3
- package/src/renderers/Form/Checkboxes.tsx +5 -18
- package/src/renderers/Form/Combo.tsx +2 -3
- package/src/renderers/Form/InputCity.tsx +33 -4
- package/src/renderers/Form/InputDateRange.tsx +8 -1
- package/src/renderers/Form/InputFile.tsx +7 -3
- package/src/renderers/Form/InputFormula.tsx +7 -0
- package/src/renderers/Form/InputImage.tsx +7 -3
- package/src/renderers/Form/InputRange.tsx +18 -16
- package/src/renderers/Form/InputTable.tsx +6 -2
- package/src/renderers/Form/index.tsx +1 -1
- package/src/renderers/Form/wrapControl.tsx +1 -1
- package/src/renderers/Nav.tsx +1 -1
- package/src/renderers/Page.tsx +1 -2
- package/src/renderers/Progress.tsx +2 -2
- package/src/renderers/Steps.tsx +14 -0
- package/src/renderers/Table/TableRow.tsx +1 -1
- package/src/renderers/Table/index.tsx +11 -2
- package/src/renderers/Tabs.tsx +75 -28
- package/src/renderers/Wizard.tsx +154 -93
- package/src/store/index.ts +20 -0
- package/src/store/table.ts +4 -4
- package/src/types.ts +3 -1
- package/src/utils/columnsSplit.tsx +57 -0
- package/src/utils/debug.tsx +17 -24
package/src/components/Range.tsx
CHANGED
@@ -11,11 +11,11 @@ import difference from 'lodash/difference';
|
|
11
11
|
import React from 'react';
|
12
12
|
import {uncontrollable} from 'uncontrollable';
|
13
13
|
|
14
|
-
import {RendererProps} from '../factory';
|
15
14
|
import Overlay from './Overlay';
|
16
|
-
import {ThemeProps
|
15
|
+
import type { ThemeProps } from '../theme'
|
16
|
+
import {themeable} from '../theme';
|
17
17
|
import {autobind, camel} from '../utils/helper';
|
18
|
-
import {
|
18
|
+
import type {
|
19
19
|
MultipleValue,
|
20
20
|
Value,
|
21
21
|
FormatValue,
|
@@ -71,7 +71,7 @@ interface LabelProps extends ThemeProps {
|
|
71
71
|
* @returns position.left
|
72
72
|
*/
|
73
73
|
const valueToOffsetLeft = (value: any, min: number, max: number) =>
|
74
|
-
(value * 100) / (max - min) + '%';
|
74
|
+
((value - min) * 100) / (max - min) + '%';
|
75
75
|
|
76
76
|
/**
|
77
77
|
* 滑块handle
|
@@ -298,7 +298,7 @@ export class Range extends React.Component<RangeItemProps, any> {
|
|
298
298
|
pageXToValue(pageX: number) {
|
299
299
|
const {x, width} = this.getBoundingClient(this.trackRef.current as Element);
|
300
300
|
const {max, min} = this.props;
|
301
|
-
return ((pageX - x) * (max - min)) / width;
|
301
|
+
return ((pageX - x) * (max - min)) / width + min;
|
302
302
|
}
|
303
303
|
|
304
304
|
/**
|
@@ -366,16 +366,30 @@ export class Range extends React.Component<RangeItemProps, any> {
|
|
366
366
|
*/
|
367
367
|
@autobind
|
368
368
|
renderSteps() {
|
369
|
-
const {max, min, step, showSteps, classnames: cx} = this.props;
|
370
|
-
|
369
|
+
const {max, min, step, showSteps, classnames: cx, parts} = this.props;
|
370
|
+
let isShowSteps = showSteps;
|
371
|
+
// 只要设置了 parts 就展示分隔
|
372
|
+
if (parts > 1 || Array.isArray(parts)) {
|
373
|
+
isShowSteps = true;
|
374
|
+
}
|
375
|
+
// 总区间
|
376
|
+
const section = max - min;
|
377
|
+
// 总区间被平均分为多少块
|
378
|
+
const steps = parts > 1 ? parts : Math.floor(section / step);
|
379
|
+
// 平均分 每块的长度
|
380
|
+
const partLength = section / steps;
|
381
|
+
// parts为数组时,以0为起点(传入的值 - min)
|
382
|
+
const partLengthList = Array.isArray(parts)
|
383
|
+
? parts.map(item => item - min)
|
384
|
+
: range(steps - 1).map(item => (item + 1) * partLength);
|
371
385
|
return (
|
372
|
-
|
386
|
+
isShowSteps && (
|
373
387
|
<div>
|
374
|
-
{
|
388
|
+
{partLengthList.map(item => (
|
375
389
|
<span
|
376
390
|
key={item}
|
377
391
|
className={cx('InputRange-track-dot')}
|
378
|
-
style={{left: (
|
392
|
+
style={{left: (item * 100) / (max - min) + '%'}}
|
379
393
|
></span>
|
380
394
|
))}
|
381
395
|
</div>
|
@@ -437,13 +451,13 @@ export class Range extends React.Component<RangeItemProps, any> {
|
|
437
451
|
const traceActiveStyle = {
|
438
452
|
width: valueToOffsetLeft(
|
439
453
|
multiple
|
440
|
-
? (value as MultipleValue).max - (value as MultipleValue).min
|
454
|
+
? (value as MultipleValue).max - (value as MultipleValue).min + min
|
441
455
|
: value,
|
442
456
|
min,
|
443
457
|
max
|
444
458
|
),
|
445
459
|
left: valueToOffsetLeft(
|
446
|
-
multiple ? (value as MultipleValue).min :
|
460
|
+
multiple ? (value as MultipleValue).min : min,
|
447
461
|
min,
|
448
462
|
max
|
449
463
|
)
|
package/src/components/Steps.tsx
CHANGED
@@ -69,8 +69,12 @@ export interface StepsSchema extends BaseSchema {
|
|
69
69
|
* 展示模式
|
70
70
|
*/
|
71
71
|
mode?: 'horizontal' | 'vertical';
|
72
|
-
}
|
73
72
|
|
73
|
+
/**
|
74
|
+
* 标签放置位置
|
75
|
+
*/
|
76
|
+
labelPlacement?: 'horizontal' | 'vertical';
|
77
|
+
}
|
74
78
|
export interface StepsProps extends ThemeProps {
|
75
79
|
steps: StepSchema[];
|
76
80
|
className: string;
|
@@ -81,6 +85,8 @@ export interface StepsProps extends ThemeProps {
|
|
81
85
|
[propName: string]: StepStatus;
|
82
86
|
};
|
83
87
|
mode?: 'horizontal' | 'vertical';
|
88
|
+
labelPlacement?: 'horizontal' | 'vertical';
|
89
|
+
progressDot?: boolean;
|
84
90
|
useMobileUI?: boolean;
|
85
91
|
}
|
86
92
|
|
@@ -92,6 +98,8 @@ export function Steps(props: StepsProps) {
|
|
92
98
|
current,
|
93
99
|
status,
|
94
100
|
mode = 'horizontal',
|
101
|
+
labelPlacement = 'horizontal',
|
102
|
+
progressDot = false,
|
95
103
|
useMobileUI
|
96
104
|
} = props;
|
97
105
|
const FINISH_ICON = 'check';
|
@@ -129,48 +137,41 @@ export function Steps(props: StepsProps) {
|
|
129
137
|
|
130
138
|
const mobileUI = useMobileUI && isMobile();
|
131
139
|
return (
|
132
|
-
<ul
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
)}
|
139
|
-
>
|
140
|
+
<ul className={cx( // 纵向步骤条暂时不支持labelPlacement属性
|
141
|
+
'Steps',
|
142
|
+
`Steps--Placement-${(progressDot || (labelPlacement === 'vertical' && mode != 'vertical')) ? 'vertical' : ''}`,
|
143
|
+
`Steps--${progressDot ? 'ProgressDot' : ''}`,
|
144
|
+
`Steps--${mode}`,
|
145
|
+
mobileUI ? 'Steps-mobile' : '', className)}>
|
140
146
|
{stepsRow.map((step, i) => {
|
141
147
|
const {stepStatus, icon} = getStepStatus(step, i);
|
142
|
-
|
143
148
|
return (
|
144
149
|
<li
|
145
150
|
key={i}
|
146
|
-
className={cx('StepsItem', `is-${stepStatus}`, step.className)}
|
151
|
+
className={cx('StepsItem', `is-${stepStatus}`, step.className, `StepsItem-${progressDot ? 'ProgressDot' : ''}`)}
|
147
152
|
>
|
148
153
|
<div className={cx('StepsItem-container')}>
|
149
|
-
|
150
|
-
className={cx(
|
151
|
-
'StepsItem-containerIcon',
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
{icon ? <Icon icon={icon} className="icon" /> : i + 1}
|
157
|
-
</span>
|
158
|
-
</div>
|
154
|
+
<div className={cx('StepsItem-containerTail')}></div>
|
155
|
+
{progressDot ? <div className={cx('StepsItem-containerProgressDot')}></div>
|
156
|
+
: <div className={cx('StepsItem-containerIcon', i < current && 'is-success')}>
|
157
|
+
<span className={cx('StepsItem-icon')}>
|
158
|
+
{icon ? <Icon icon={icon} className="icon" /> : i + 1}
|
159
|
+
</span>
|
160
|
+
</div>}
|
159
161
|
<div className={cx('StepsItem-containerWrapper')}>
|
160
162
|
<div className={cx('StepsItem-body')}>
|
161
163
|
<div
|
162
164
|
className={cx(
|
163
165
|
'StepsItem-title',
|
166
|
+
`StepsItem-${progressDot ? 'vertical-ProgressDot' : ''}`,
|
164
167
|
i < current && 'is-success'
|
165
168
|
)}
|
166
169
|
>
|
167
|
-
<span>{step.title}</span>
|
168
|
-
<span className={cx('StepsItem-subTitle')}>
|
169
|
-
{step.subTitle}
|
170
|
-
</span>
|
170
|
+
<span className={cx('StepsItem-ellText')} title={String(step.title)}>{step.title}</span>
|
171
|
+
<span className={cx('StepsItem-subTitle', 'StepsItem-ellText')} title={String(step.subTitle)}>{step.subTitle}</span>
|
171
172
|
</div>
|
172
|
-
<div className={cx('StepsItem-description')}>
|
173
|
-
{step.description}
|
173
|
+
<div className={cx('StepsItem-description', 'StepsItem-ellText')} title={String(step.description)}>
|
174
|
+
<span>{step.description}</span>
|
174
175
|
</div>
|
175
176
|
</div>
|
176
177
|
</div>
|
@@ -161,18 +161,19 @@ class BaseDatePicker extends React.Component<
|
|
161
161
|
updatedState = this.getStateFromProps(props);
|
162
162
|
}
|
163
163
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
}
|
164
|
+
// open 是外部控制了
|
165
|
+
// if (updatedState.open === undefined) {
|
166
|
+
// if (typeof props.open !== 'undefined') {
|
167
|
+
// updatedState.open = props.open;
|
168
|
+
// } else if (
|
169
|
+
// prevProps.closeOnSelect &&
|
170
|
+
// this.state.currentView !== viewModes.TIME
|
171
|
+
// ) {
|
172
|
+
// updatedState.open = false;
|
173
|
+
// } else {
|
174
|
+
// updatedState.open = this.state.open;
|
175
|
+
// }
|
176
|
+
// }
|
176
177
|
|
177
178
|
if (props.viewMode !== prevProps.viewMode) {
|
178
179
|
updatedState.currentView = props.viewMode;
|
@@ -236,6 +237,10 @@ class BaseDatePicker extends React.Component<
|
|
236
237
|
updatedState.viewDate = moment(props.viewDate);
|
237
238
|
}
|
238
239
|
|
240
|
+
if (Object.keys(updatedState).length) {
|
241
|
+
this.setState(updatedState);
|
242
|
+
}
|
243
|
+
|
239
244
|
this.checkTZ(props);
|
240
245
|
}
|
241
246
|
|
@@ -75,10 +75,6 @@ export class CustomYearsView extends React.Component<CustomYearsViewProps> {
|
|
75
75
|
.clone()
|
76
76
|
.set({year: year, month: irrelevantMonth, date: irrelevantDate});
|
77
77
|
|
78
|
-
// Not sure what 'rdtOld' is for, commenting out for now as it's not working properly
|
79
|
-
// if ( i === -1 | i === 10 )
|
80
|
-
// classes += ' rdtOld';
|
81
|
-
|
82
78
|
noOfDaysInYear = parseInt(currentYear.endOf('year').format('DDD'), 10);
|
83
79
|
daysInYear = Array.from({length: noOfDaysInYear}, function (e, i) {
|
84
80
|
return i + 1;
|
@@ -95,6 +91,9 @@ export class CustomYearsView extends React.Component<CustomYearsViewProps> {
|
|
95
91
|
|
96
92
|
if (selectedDate && selectedDate.year() === year) classes += ' rdtActive';
|
97
93
|
|
94
|
+
// 第一个和最后一个置灰
|
95
|
+
if (i === -1 || i === 10) classes += ' text-muted';
|
96
|
+
|
98
97
|
props = {
|
99
98
|
'key': year,
|
100
99
|
'data-value': year,
|
@@ -10,7 +10,7 @@ import {FormulaPlugin, editorFactory} from './plugin';
|
|
10
10
|
import FuncList from './FuncList';
|
11
11
|
import {VariableList} from './VariableList';
|
12
12
|
import CodeMirrorEditor from '../CodeMirror';
|
13
|
-
import {autobind} from '../../utils/helper';
|
13
|
+
import {autobind, eachTree} from '../../utils/helper';
|
14
14
|
import {themeable, ThemeProps} from '../../theme';
|
15
15
|
import {localeable, LocaleProps} from '../../locale';
|
16
16
|
|
@@ -133,8 +133,39 @@ export class FormulaEditor extends React.Component<
|
|
133
133
|
variables: Array<VariableItem>,
|
134
134
|
functions: Array<FuncGroup>
|
135
135
|
) {
|
136
|
-
|
137
|
-
|
136
|
+
if (!Array.isArray(variables) || !variables.length || !value) {
|
137
|
+
return;
|
138
|
+
}
|
139
|
+
|
140
|
+
const varMap: {
|
141
|
+
[propname: string]: string;
|
142
|
+
} = {};
|
143
|
+
|
144
|
+
eachTree(
|
145
|
+
variables,
|
146
|
+
item => item.value && (varMap[item.value] = item.label)
|
147
|
+
);
|
148
|
+
const vars = Object.keys(varMap).sort((a, b) => b.length - a.length);
|
149
|
+
let content = value || '';
|
150
|
+
|
151
|
+
// 标记方法调用
|
152
|
+
content = content.replace(/([A-Z]+)\s*\(/g, (_, func, pos) => {
|
153
|
+
return _?.replace(func, `<span class="c-func">${func}</span>`);
|
154
|
+
});
|
155
|
+
|
156
|
+
vars.forEach(v => {
|
157
|
+
let from = 0;
|
158
|
+
let idx = -1;
|
159
|
+
while (~(idx = content.indexOf(v, from))) {
|
160
|
+
content = content.replace(
|
161
|
+
v,
|
162
|
+
`<span class="c-field">${varMap[v]}</span>`
|
163
|
+
);
|
164
|
+
from = idx + v.length;
|
165
|
+
}
|
166
|
+
});
|
167
|
+
|
168
|
+
return {html: content};
|
138
169
|
}
|
139
170
|
|
140
171
|
componentWillUnmount() {
|
@@ -69,6 +69,11 @@ export interface FormulaPickerProps extends FormulaEditorProps {
|
|
69
69
|
*/
|
70
70
|
disabled?: boolean;
|
71
71
|
|
72
|
+
/**
|
73
|
+
* 是否允许输入,否需要点击fx在弹窗中输入
|
74
|
+
*/
|
75
|
+
allowInput?: boolean;
|
76
|
+
|
72
77
|
/**
|
73
78
|
* 占位文本
|
74
79
|
*/
|
@@ -96,12 +101,28 @@ export class FormulaPicker extends React.Component<FormulaPickerProps> {
|
|
96
101
|
this.props.onChange?.(value);
|
97
102
|
}
|
98
103
|
|
104
|
+
@autobind
|
105
|
+
renderFormulaValue(item: any) {
|
106
|
+
const {allowInput, classnames: cx} = this.props;
|
107
|
+
const html = {__html: item.html};
|
108
|
+
if (allowInput) {
|
109
|
+
return '';
|
110
|
+
}
|
111
|
+
return (
|
112
|
+
<div
|
113
|
+
className={cx('FormulaPicker-ResultBox')}
|
114
|
+
dangerouslySetInnerHTML={html}
|
115
|
+
></div>
|
116
|
+
);
|
117
|
+
}
|
118
|
+
|
99
119
|
render() {
|
100
120
|
let {
|
101
121
|
classnames: cx,
|
102
122
|
value,
|
103
123
|
translate: __,
|
104
124
|
disabled,
|
125
|
+
allowInput,
|
105
126
|
className,
|
106
127
|
onChange,
|
107
128
|
size,
|
@@ -186,9 +207,15 @@ export class FormulaPicker extends React.Component<FormulaPickerProps> {
|
|
186
207
|
'FormulaPicker-input',
|
187
208
|
isOpened ? 'is-active' : ''
|
188
209
|
)}
|
189
|
-
allowInput
|
210
|
+
allowInput={allowInput}
|
190
211
|
clearable={clearable}
|
191
212
|
value={value}
|
213
|
+
result={FormulaEditor.highlightValue(
|
214
|
+
value,
|
215
|
+
variables,
|
216
|
+
functions
|
217
|
+
)}
|
218
|
+
itemRender={this.renderFormulaValue}
|
192
219
|
onResultChange={noop}
|
193
220
|
onChange={this.handleConfirm}
|
194
221
|
disabled={disabled}
|
package/src/factory.tsx
CHANGED
@@ -42,6 +42,7 @@ import {
|
|
42
42
|
RendererEvent
|
43
43
|
} from './utils/renderer-event';
|
44
44
|
import {runActions} from './actions/Action';
|
45
|
+
import {enableDebug} from './utils/debug';
|
45
46
|
|
46
47
|
export interface TestFunc {
|
47
48
|
(
|
@@ -152,6 +153,10 @@ export interface RenderOptions {
|
|
152
153
|
* 过滤 html 标签,可用来添加 xss 保护逻辑
|
153
154
|
*/
|
154
155
|
filterHtml?: (input: string) => string;
|
156
|
+
/**
|
157
|
+
* 是否开启 amis 调试
|
158
|
+
*/
|
159
|
+
enableAMISDebug?: boolean;
|
155
160
|
[propName: string]: any;
|
156
161
|
}
|
157
162
|
|
@@ -271,6 +276,10 @@ const defaultOptions: RenderOptions = {
|
|
271
276
|
affixOffsetBottom: 0,
|
272
277
|
richTextToken: '',
|
273
278
|
useMobileUI: true, // 是否启用移动端原生 UI
|
279
|
+
enableAMISDebug:
|
280
|
+
(window as any).enableAMISDebug ??
|
281
|
+
location.search.indexOf('amisDebug=1') !== -1 ??
|
282
|
+
false,
|
274
283
|
loadRenderer,
|
275
284
|
rendererEventListeners: [],
|
276
285
|
fetcher() {
|
@@ -492,6 +501,10 @@ export function render(
|
|
492
501
|
translate
|
493
502
|
} as any;
|
494
503
|
|
504
|
+
if (options.enableAMISDebug) {
|
505
|
+
enableDebug();
|
506
|
+
}
|
507
|
+
|
495
508
|
store = RendererStore.create({}, options);
|
496
509
|
stores[options.session || 'global'] = store;
|
497
510
|
}
|
@@ -518,13 +531,13 @@ export function render(
|
|
518
531
|
// 进行文本替换
|
519
532
|
if (env.replaceText && isObject(env.replaceText)) {
|
520
533
|
const replaceKeys = Object.keys(env.replaceText);
|
521
|
-
replaceKeys.sort().
|
534
|
+
replaceKeys.sort((a, b) => b.length - a.length); // 避免用户将短的放前面
|
522
535
|
const replaceTextIgnoreKeys = new Set(env.replaceTextIgnoreKeys || []);
|
523
536
|
JSONTraverse(schema, (value: any, key: string, object: any) => {
|
524
537
|
if (typeof value === 'string' && !replaceTextIgnoreKeys.has(key)) {
|
525
538
|
for (const replaceKey of replaceKeys) {
|
526
539
|
if (~value.indexOf(replaceKey)) {
|
527
|
-
object[key] = value.replaceAll(
|
540
|
+
value = object[key] = value.replaceAll(
|
528
541
|
replaceKey,
|
529
542
|
env.replaceText[replaceKey]
|
530
543
|
);
|
package/src/locale/de-DE.ts
CHANGED
@@ -75,6 +75,19 @@ register('de-DE', {
|
|
75
75
|
'Date.weekslater': '{{weeks}} Wochen später',
|
76
76
|
'Date.yesterday': 'Gestern',
|
77
77
|
'dateformat.year': 'YYYY',
|
78
|
+
'DateRange.daysago': 'letzten {{days}} Tage',
|
79
|
+
'DateRange.dayslater': 'innerhalb von {{days}} Tagen',
|
80
|
+
'DateRange.weeksago': 'letzten {{weeks}} Wochen',
|
81
|
+
'DateRange.weekslater': 'innerhalb von {{weeks}} Wochen',
|
82
|
+
'DateRange.monthsago': 'letzten {{months}} Monate',
|
83
|
+
'DateRange.monthslater': 'innerhalb von {{months}} Monaten',
|
84
|
+
'DateRange.quartersago': 'letzten {{quarters}} Quartale',
|
85
|
+
'DateRange.quarterslater': 'innerhalb von {{quarters}} Quartalen',
|
86
|
+
'DateRange.yearsago': 'letzten {{years}} Jahre',
|
87
|
+
'DateRange.yearslater': '{{years}} Jahren',
|
88
|
+
'DateRange.hoursago': 'letzten {{hours}} Stunden',
|
89
|
+
'DateRange.hourslater': 'innerhalb von {{hours}} Stunden',
|
90
|
+
'DateRange.1dayago': 'Vor 1 Tag',
|
78
91
|
'DateRange.1daysago': 'Vor 1 Tag',
|
79
92
|
'DateRange.7daysago': 'Vor 7 Tagen',
|
80
93
|
'DateRange.30daysago': 'Vor 30 Tagen',
|
package/src/locale/en-US.ts
CHANGED
@@ -72,6 +72,19 @@ register('en-US', {
|
|
72
72
|
'Date.weekslater': '{{weeks}} week(s) later',
|
73
73
|
'Date.yesterday': 'Yesterday',
|
74
74
|
'dateformat.year': 'YYYY',
|
75
|
+
'DateRange.daysago': 'Last {{days}} day(s)',
|
76
|
+
'DateRange.dayslater': 'Within {{days}} day(s)',
|
77
|
+
'DateRange.weeksago': 'Last {{weeks}} week(s)',
|
78
|
+
'DateRange.weekslater': 'Within {{weeks}} week(s)',
|
79
|
+
'DateRange.monthsago': 'Last {{months}} month(s)',
|
80
|
+
'DateRange.monthslater': 'Within {{months}} month(s)',
|
81
|
+
'DateRange.quartersago': 'Last {{quarters}} quarter(s)',
|
82
|
+
'DateRange.quarterslater': 'Within {{quarters}} quarter(s)',
|
83
|
+
'DateRange.yearsago': 'Last {{years}} year(s)',
|
84
|
+
'DateRange.yearslater': 'Within {{years}} year(s)',
|
85
|
+
'DateRange.hoursago': 'Last {{hours}} hour(s)',
|
86
|
+
'DateRange.hourslater': 'Within {{hours}} hour(s)',
|
87
|
+
'DateRange.1dayago': '1 day ago',
|
75
88
|
'DateRange.1daysago': '1 day ago',
|
76
89
|
'DateRange.7daysago': '7 days ago',
|
77
90
|
'DateRange.30daysago': '30 days ago',
|
package/src/locale/zh-CN.ts
CHANGED
@@ -75,7 +75,20 @@ register('zh-CN', {
|
|
75
75
|
'Date.weekslater': '{{weeks}}周后',
|
76
76
|
'Date.yesterday': '昨天',
|
77
77
|
'dateformat.year': 'YYYY年',
|
78
|
+
'DateRange.daysago': '最近{{days}}天',
|
79
|
+
'DateRange.dayslater': '{{days}}天以内',
|
80
|
+
'DateRange.weeksago': '最近{{weeks}}周',
|
81
|
+
'DateRange.weekslater': '{{weeks}}周以内',
|
82
|
+
'DateRange.monthsago': '最近{{months}}月',
|
83
|
+
'DateRange.monthslater': '{{months}}月以内',
|
84
|
+
'DateRange.quartersago': '最近{{quarters}}季度',
|
85
|
+
'DateRange.quarterslater': '{{quarters}}季度以内',
|
86
|
+
'DateRange.yearsago': '最近{{years}}年',
|
87
|
+
'DateRange.yearslater': '{{years}}年以内',
|
88
|
+
'DateRange.hoursago': '最近{{hours}}小时',
|
89
|
+
'DateRange.hourslater': '{{hours}}小时以内',
|
78
90
|
'DateRange.1daysago': '最近1天',
|
91
|
+
'DateRange.1dayago': '最近1天',
|
79
92
|
'DateRange.7daysago': '最近7天',
|
80
93
|
'DateRange.30daysago': '最近30天',
|
81
94
|
'DateRange.90daysago': '最近90天',
|
package/src/renderers/Action.tsx
CHANGED
@@ -753,6 +753,8 @@ export class Action extends React.Component<ActionProps, ActionState> {
|
|
753
753
|
loading,
|
754
754
|
body,
|
755
755
|
render,
|
756
|
+
onMouseEnter,
|
757
|
+
onMouseLeave,
|
756
758
|
classnames: cx,
|
757
759
|
classPrefix: ns
|
758
760
|
} = this.props;
|
@@ -768,7 +770,12 @@ export class Action extends React.Component<ActionProps, ActionState> {
|
|
768
770
|
trigger={tooltipTrigger}
|
769
771
|
rootClose={tooltipRootClose}
|
770
772
|
>
|
771
|
-
<div
|
773
|
+
<div
|
774
|
+
className={cx('Action', className)}
|
775
|
+
onClick={this.handleAction}
|
776
|
+
onMouseEnter={onMouseEnter}
|
777
|
+
onMouseLeave={onMouseLeave}
|
778
|
+
>
|
772
779
|
{render('body', body) as JSX.Element}
|
773
780
|
</div>
|
774
781
|
</TooltipWrapper>
|
@@ -814,6 +821,8 @@ export class Action extends React.Component<ActionProps, ActionState> {
|
|
814
821
|
loadingClassName={loadingClassName}
|
815
822
|
loading={loading}
|
816
823
|
onClick={this.handleAction}
|
824
|
+
onMouseEnter={onMouseEnter}
|
825
|
+
onMouseLeave={onMouseLeave}
|
817
826
|
type={type && ~allowedType.indexOf(type) ? type : 'button'}
|
818
827
|
disabled={disabled}
|
819
828
|
componentClass={isMenuItem ? 'a' : componentClass}
|
@@ -877,6 +886,16 @@ export class ActionRenderer extends React.Component<
|
|
877
886
|
}
|
878
887
|
}
|
879
888
|
|
889
|
+
@autobind
|
890
|
+
handleMouseEnter(e: React.MouseEvent<any>) {
|
891
|
+
this.props.dispatchEvent(e, this.props.data);
|
892
|
+
}
|
893
|
+
|
894
|
+
@autobind
|
895
|
+
handleMouseLeave(e: React.MouseEvent<any>) {
|
896
|
+
this.props.dispatchEvent(e, this.props.data);
|
897
|
+
}
|
898
|
+
|
880
899
|
@autobind
|
881
900
|
isCurrentAction(link: string) {
|
882
901
|
const {env, data} = this.props;
|
@@ -892,6 +911,8 @@ export class ActionRenderer extends React.Component<
|
|
892
911
|
env={env}
|
893
912
|
disabled={disabled || btnDisabled}
|
894
913
|
onAction={this.handleAction}
|
914
|
+
onMouseEnter={this.handleMouseEnter}
|
915
|
+
onMouseLeave={this.handleMouseLeave}
|
895
916
|
loading={loading}
|
896
917
|
isCurrentUrl={this.isCurrentAction}
|
897
918
|
tooltipContainer={
|
@@ -278,6 +278,13 @@ export class Carousel extends React.Component<CarouselProps, CarouselState> {
|
|
278
278
|
clearTimeout(this.durationTimeout as number);
|
279
279
|
}
|
280
280
|
|
281
|
+
@autobind
|
282
|
+
changeSlide(index: number) {
|
283
|
+
this.setState({
|
284
|
+
current: index
|
285
|
+
});
|
286
|
+
}
|
287
|
+
|
281
288
|
renderDots() {
|
282
289
|
const {classnames: cx} = this.props;
|
283
290
|
const {current, options} = this.state;
|
@@ -290,6 +297,7 @@ export class Carousel extends React.Component<CarouselProps, CarouselState> {
|
|
290
297
|
{Array.from({length: options.length}).map((_, i) => (
|
291
298
|
<span
|
292
299
|
key={i}
|
300
|
+
onClick={() => this.changeSlide(i)}
|
293
301
|
className={cx('Carousel-dot', current === i ? 'is-active' : '')}
|
294
302
|
/>
|
295
303
|
))}
|
package/src/renderers/Dialog.tsx
CHANGED
@@ -90,6 +90,11 @@ export interface DialogSchema extends BaseSchema {
|
|
90
90
|
* 是否显示错误信息
|
91
91
|
*/
|
92
92
|
showErrorMsg?: boolean;
|
93
|
+
|
94
|
+
/**
|
95
|
+
* 是否显示 spinner
|
96
|
+
*/
|
97
|
+
showLoading?: boolean;
|
93
98
|
}
|
94
99
|
|
95
100
|
export type DialogSchemaBase = Omit<DialogSchema, 'type'>;
|
@@ -424,13 +429,22 @@ export default class Dialog extends React.Component<DialogProps> {
|
|
424
429
|
return null;
|
425
430
|
}
|
426
431
|
|
427
|
-
const {
|
432
|
+
const {
|
433
|
+
store,
|
434
|
+
render,
|
435
|
+
classnames: cx,
|
436
|
+
showErrorMsg,
|
437
|
+
showLoading
|
438
|
+
} = this.props;
|
428
439
|
|
429
440
|
return (
|
430
441
|
<div className={cx('Modal-footer')}>
|
431
|
-
{store.loading ||
|
442
|
+
{(showLoading !== false && store.loading) ||
|
443
|
+
(showErrorMsg !== false && store.error) ? (
|
432
444
|
<div className={cx('Dialog-info')} key="info">
|
433
|
-
|
445
|
+
{showLoading !== false ? (
|
446
|
+
<Spinner size="sm" key="info" show={store.loading} />
|
447
|
+
) : null}
|
434
448
|
{store.error && showErrorMsg !== false ? (
|
435
449
|
<span className={cx('Dialog-error')}>{store.msg}</span>
|
436
450
|
) : null}
|
@@ -147,12 +147,14 @@ export default class DropDownButton extends React.Component<
|
|
147
147
|
};
|
148
148
|
|
149
149
|
target: any;
|
150
|
+
timer: ReturnType<typeof setTimeout>;
|
150
151
|
constructor(props: DropDownButtonProps) {
|
151
152
|
super(props);
|
152
153
|
|
153
154
|
this.open = this.open.bind(this);
|
154
155
|
this.close = this.close.bind(this);
|
155
156
|
this.toogle = this.toogle.bind(this);
|
157
|
+
this.keepOpen = this.keepOpen.bind(this);
|
156
158
|
this.domRef = this.domRef.bind(this);
|
157
159
|
}
|
158
160
|
|
@@ -183,9 +185,17 @@ export default class DropDownButton extends React.Component<
|
|
183
185
|
}
|
184
186
|
|
185
187
|
close() {
|
186
|
-
this.
|
187
|
-
|
188
|
-
|
188
|
+
this.timer = setTimeout(() => {
|
189
|
+
this.setState({
|
190
|
+
isOpened: false
|
191
|
+
});
|
192
|
+
}, 200);
|
193
|
+
}
|
194
|
+
|
195
|
+
keepOpen() {
|
196
|
+
if (this.timer) {
|
197
|
+
clearTimeout(this.timer);
|
198
|
+
}
|
189
199
|
}
|
190
200
|
|
191
201
|
renderButton(
|
@@ -260,6 +270,7 @@ export default class DropDownButton extends React.Component<
|
|
260
270
|
menuClassName
|
261
271
|
)}
|
262
272
|
onClick={closeOnClick ? this.close : noop}
|
273
|
+
onMouseEnter={this.keepOpen}
|
263
274
|
ref={ref}
|
264
275
|
>
|
265
276
|
{children
|