amis 1.5.3 → 1.5.6-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/lib/Root.js +1 -1
- package/lib/Root.js.map +2 -2
- package/lib/RootRenderer.d.ts +1 -1
- package/lib/RootRenderer.js +4 -3
- package/lib/RootRenderer.js.map +2 -2
- package/lib/SchemaRenderer.js +4 -4
- package/lib/SchemaRenderer.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 +4 -6
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/CollapseGroup.d.ts +20 -20
- package/lib/components/CollapseGroup.js +5 -3
- package/lib/components/CollapseGroup.js.map +2 -2
- package/lib/components/ColorPicker.d.ts +84 -84
- package/lib/components/DatePicker.d.ts +85 -84
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +84 -84
- package/lib/components/LocationPicker.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/Tabs.d.ts +20 -20
- package/lib/components/calendar/Calendar.js +15 -0
- package/lib/components/calendar/Calendar.js.map +2 -2
- package/lib/components/calendar/DaysView.js +4 -4
- 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/components/index.d.ts +2 -1
- package/lib/components/index.js +4 -2
- package/lib/components/index.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/Collapse.js +8 -2
- package/lib/renderers/Collapse.js.map +2 -2
- package/lib/renderers/CollapseGroup.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/InputColor.d.ts +84 -84
- 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/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 +22 -7
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/table.d.ts +128 -32
- package/lib/themes/ang-ie11.css +177 -30
- package/lib/themes/ang.css +177 -30
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +177 -30
- package/lib/themes/antd.css +177 -30
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +177 -30
- package/lib/themes/cxd.css +177 -30
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +177 -30
- package/lib/themes/dark.css +177 -30
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +177 -30
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/helper.d.ts +7 -0
- package/lib/utils/helper.js +34 -7
- package/lib/utils/helper.js.map +2 -2
- package/package.json +2 -2
- package/schema.json +157 -13
- package/scss/_properties.scss +13 -2
- 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/form/_file.scss +2 -2
- package/scss/components/form/_selection.scss +4 -0
- package/scss/components/form/_switch.scss +6 -0
- package/sdk/ang-ie11.css +214 -40
- package/sdk/ang.css +216 -32
- package/sdk/antd-ie11.css +214 -40
- package/sdk/antd.css +216 -32
- package/sdk/charts.js +17 -17
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +3 -3
- package/sdk/cxd-ie11.css +206 -32
- package/sdk/cxd.css +216 -32
- package/sdk/dark-ie11.css +214 -40
- package/sdk/dark.css +216 -32
- 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 +206 -32
- package/sdk/sdk.css +216 -32
- package/sdk/sdk.js +1302 -1208
- package/sdk/thirds/hls.js/hls.js +18 -18
- package/sdk/thirds/mpegts.js/mpegts.js +2 -2
- package/sdk/tinymce.js +57 -57
- package/src/Root.tsx +1 -0
- package/src/RootRenderer.tsx +3 -3
- package/src/SchemaRenderer.tsx +4 -0
- package/src/components/Card.tsx +203 -0
- package/src/components/Collapse.tsx +19 -12
- package/src/components/CollapseGroup.tsx +9 -11
- package/src/components/DatePicker.tsx +3 -0
- 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 +18 -0
- package/src/components/calendar/DaysView.tsx +6 -4
- package/src/components/calendar/TimeView.tsx +80 -5
- package/src/components/calendar/YearsView.tsx +44 -1
- package/src/components/index.tsx +2 -0
- package/src/renderers/CRUD.tsx +3 -3
- package/src/renderers/Card.tsx +299 -191
- package/src/renderers/Collapse.tsx +27 -27
- package/src/renderers/CollapseGroup.tsx +13 -12
- 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/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/Wizard.tsx +52 -12
- package/src/store/formItem.ts +27 -6
- package/src/utils/helper.ts +35 -10
package/src/Root.tsx
CHANGED
package/src/RootRenderer.tsx
CHANGED
@@ -184,12 +184,12 @@ export class RootRenderer extends React.Component<RootRendererProps> {
|
|
184
184
|
return;
|
185
185
|
}
|
186
186
|
|
187
|
-
store.closeDialog();
|
187
|
+
store.closeDialog(true);
|
188
188
|
}
|
189
189
|
|
190
|
-
handleDialogClose() {
|
190
|
+
handleDialogClose(confirmed = false) {
|
191
191
|
const store = this.store;
|
192
|
-
store.closeDialog();
|
192
|
+
store.closeDialog(confirmed);
|
193
193
|
}
|
194
194
|
|
195
195
|
handleDrawerConfirm(values: object[], action: Action, ...args: Array<any>) {
|
package/src/SchemaRenderer.tsx
CHANGED
@@ -242,6 +242,7 @@ export class SchemaRenderer extends React.Component<SchemaRendererProps, any> {
|
|
242
242
|
data: defaultData,
|
243
243
|
value: defaultValue,
|
244
244
|
activeKey: defaultActiveKey,
|
245
|
+
key: propKey,
|
245
246
|
...restSchema
|
246
247
|
} = schema;
|
247
248
|
return rest.invisible
|
@@ -253,6 +254,7 @@ export class SchemaRenderer extends React.Component<SchemaRendererProps, any> {
|
|
253
254
|
defaultData,
|
254
255
|
defaultValue,
|
255
256
|
defaultActiveKey,
|
257
|
+
propKey,
|
256
258
|
$path: $path,
|
257
259
|
$schema: schema,
|
258
260
|
ref: isSFC ? undefined : this.refFn,
|
@@ -293,6 +295,7 @@ export class SchemaRenderer extends React.Component<SchemaRendererProps, any> {
|
|
293
295
|
const {
|
294
296
|
data: defaultData,
|
295
297
|
value: defaultValue,
|
298
|
+
key: propKey,
|
296
299
|
activeKey: defaultActiveKey,
|
297
300
|
...restSchema
|
298
301
|
} = schema;
|
@@ -321,6 +324,7 @@ export class SchemaRenderer extends React.Component<SchemaRendererProps, any> {
|
|
321
324
|
defaultData={restSchema.defaultData ?? defaultData}
|
322
325
|
defaultValue={restSchema.defaultValue ?? defaultValue}
|
323
326
|
defaultActiveKey={defaultActiveKey}
|
327
|
+
propKey={propKey}
|
324
328
|
$path={$path}
|
325
329
|
$schema={{...schema, ...exprProps}}
|
326
330
|
ref={this.refFn}
|
@@ -0,0 +1,203 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import {isClickOnInput} from '../utils/helper';
|
3
|
+
import {ClassNamesFn, themeable, ThemeProps} from '../theme';
|
4
|
+
export interface CardProps extends ThemeProps {
|
5
|
+
className?: string;
|
6
|
+
headerClassName?: string;
|
7
|
+
titleClassName?: string;
|
8
|
+
subTitleClassName?: string;
|
9
|
+
descriptionClassName?: string;
|
10
|
+
avatarTextStyle?: object;
|
11
|
+
avatarTextClassName?: string;
|
12
|
+
avatarClassName?: string;
|
13
|
+
secondaryClassName?: string;
|
14
|
+
imageClassName?: string;
|
15
|
+
bodyClassName?: string;
|
16
|
+
footerClassName?: string;
|
17
|
+
media?: React.ReactNode;
|
18
|
+
mediaPosition?: 'top' | 'left' | 'right' | 'bottom';
|
19
|
+
toolbar?: React.ReactNode;
|
20
|
+
children?: React.ReactNode;
|
21
|
+
actions?: React.ReactNode;
|
22
|
+
title?: string | JSX.Element;
|
23
|
+
subTitle?: string | JSX.Element;
|
24
|
+
subTitlePlaceholder?: string | JSX.Element;
|
25
|
+
description?: string | JSX.Element;
|
26
|
+
descriptionPlaceholder?: string | JSX.Element;
|
27
|
+
avatar?: string;
|
28
|
+
avatarText?: string | JSX.Element;
|
29
|
+
secondary?: string | JSX.Element;
|
30
|
+
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
31
|
+
classnames: ClassNamesFn;
|
32
|
+
}
|
33
|
+
|
34
|
+
export class Card extends React.Component<CardProps> {
|
35
|
+
static defaultProps: Partial<CardProps> = {
|
36
|
+
className: '',
|
37
|
+
avatarClassName: '',
|
38
|
+
headerClassName: '',
|
39
|
+
footerClassName: '',
|
40
|
+
secondaryClassName: '',
|
41
|
+
avatarTextClassName: '',
|
42
|
+
bodyClassName: '',
|
43
|
+
titleClassName: '',
|
44
|
+
subTitleClassName: '',
|
45
|
+
descriptionClassName: '',
|
46
|
+
imageClassName: '',
|
47
|
+
mediaPosition: 'left'
|
48
|
+
};
|
49
|
+
|
50
|
+
constructor(props: CardProps) {
|
51
|
+
super(props);
|
52
|
+
this.handleClick = this.handleClick.bind(this);
|
53
|
+
}
|
54
|
+
|
55
|
+
handleClick(e: React.MouseEvent<HTMLDivElement>) {
|
56
|
+
if (isClickOnInput(e)) {
|
57
|
+
return;
|
58
|
+
}
|
59
|
+
|
60
|
+
this.props.onClick && this.props.onClick(e);
|
61
|
+
}
|
62
|
+
|
63
|
+
render() {
|
64
|
+
const {
|
65
|
+
classnames: cx,
|
66
|
+
className,
|
67
|
+
headerClassName,
|
68
|
+
bodyClassName,
|
69
|
+
titleClassName,
|
70
|
+
subTitleClassName,
|
71
|
+
descriptionClassName,
|
72
|
+
avatarClassName,
|
73
|
+
avatarTextStyle,
|
74
|
+
imageClassName,
|
75
|
+
avatarTextClassName,
|
76
|
+
secondaryClassName,
|
77
|
+
footerClassName,
|
78
|
+
media,
|
79
|
+
mediaPosition,
|
80
|
+
actions,
|
81
|
+
children,
|
82
|
+
onClick,
|
83
|
+
toolbar,
|
84
|
+
title,
|
85
|
+
subTitle,
|
86
|
+
subTitlePlaceholder,
|
87
|
+
description,
|
88
|
+
descriptionPlaceholder,
|
89
|
+
secondary,
|
90
|
+
avatar,
|
91
|
+
avatarText
|
92
|
+
} = this.props;
|
93
|
+
|
94
|
+
let heading = null;
|
95
|
+
const isShowHeading =
|
96
|
+
avatar ||
|
97
|
+
avatarText ||
|
98
|
+
title ||
|
99
|
+
subTitle ||
|
100
|
+
subTitlePlaceholder ||
|
101
|
+
description ||
|
102
|
+
descriptionPlaceholder ||
|
103
|
+
toolbar;
|
104
|
+
if (isShowHeading) {
|
105
|
+
heading = (
|
106
|
+
<div className={cx('Card-heading', headerClassName)}>
|
107
|
+
{avatar ? (
|
108
|
+
<span className={cx('Card-avtar', avatarClassName)}>
|
109
|
+
<img className={cx('Card-img', imageClassName)} src={avatar} />
|
110
|
+
</span>
|
111
|
+
) : avatarText ? (
|
112
|
+
<span
|
113
|
+
className={cx('Card-avtarText', avatarTextClassName)}
|
114
|
+
style={avatarTextStyle}
|
115
|
+
>
|
116
|
+
{avatarText}
|
117
|
+
</span>
|
118
|
+
) : null}
|
119
|
+
<div className={cx('Card-meta')}>
|
120
|
+
{title ? (
|
121
|
+
<div className={cx('Card-title', titleClassName)}>{title}</div>
|
122
|
+
) : null}
|
123
|
+
{subTitle || subTitlePlaceholder ? (
|
124
|
+
<div className={cx('Card-subTitle', subTitleClassName)}>
|
125
|
+
{subTitle
|
126
|
+
? subTitle
|
127
|
+
: subTitlePlaceholder
|
128
|
+
? subTitlePlaceholder
|
129
|
+
: null}
|
130
|
+
</div>
|
131
|
+
) : null}
|
132
|
+
{description || descriptionPlaceholder ? (
|
133
|
+
<div className={cx('Card-desc', descriptionClassName)}>
|
134
|
+
{description
|
135
|
+
? description
|
136
|
+
: descriptionPlaceholder
|
137
|
+
? descriptionPlaceholder
|
138
|
+
: null}
|
139
|
+
</div>
|
140
|
+
) : null}
|
141
|
+
</div>
|
142
|
+
{toolbar}
|
143
|
+
</div>
|
144
|
+
);
|
145
|
+
}
|
146
|
+
|
147
|
+
const body = children;
|
148
|
+
|
149
|
+
return (
|
150
|
+
<div
|
151
|
+
onClick={this.handleClick}
|
152
|
+
className={cx('Card', className, {
|
153
|
+
'Card--link': onClick
|
154
|
+
})}
|
155
|
+
>
|
156
|
+
{media ? (
|
157
|
+
<div className={cx(`Card-multiMedia--${mediaPosition}`)}>
|
158
|
+
{media}
|
159
|
+
<div className={cx('Card-multiMedia-flex')}>
|
160
|
+
{heading}
|
161
|
+
{body ? (
|
162
|
+
<div className={cx('Card-body', bodyClassName)}>{body}</div>
|
163
|
+
) : null}
|
164
|
+
{secondary || actions ? (
|
165
|
+
<div className={cx('Card-footer-wrapper', footerClassName)}>
|
166
|
+
{secondary ? (
|
167
|
+
<div className={cx('Card-secondary', secondaryClassName)}>
|
168
|
+
{secondary}
|
169
|
+
</div>
|
170
|
+
) : null}
|
171
|
+
{actions ? (
|
172
|
+
<div className={cx('Card-actions-wrapper')}>{actions}</div>
|
173
|
+
) : null}
|
174
|
+
</div>
|
175
|
+
) : null}
|
176
|
+
</div>
|
177
|
+
</div>
|
178
|
+
) : (
|
179
|
+
<div>
|
180
|
+
{heading}
|
181
|
+
{body ? (
|
182
|
+
<div className={cx('Card-body', bodyClassName)}>{body}</div>
|
183
|
+
) : null}
|
184
|
+
{secondary || actions ? (
|
185
|
+
<div className={cx('Card-footer-wrapper', footerClassName)}>
|
186
|
+
{secondary ? (
|
187
|
+
<div className={cx('Card-secondary', secondaryClassName)}>
|
188
|
+
{secondary}
|
189
|
+
</div>
|
190
|
+
) : null}
|
191
|
+
{actions ? (
|
192
|
+
<div className={cx('Card-actions-wrapper')}>{actions}</div>
|
193
|
+
) : null}
|
194
|
+
</div>
|
195
|
+
) : null}
|
196
|
+
</div>
|
197
|
+
)}
|
198
|
+
</div>
|
199
|
+
);
|
200
|
+
}
|
201
|
+
}
|
202
|
+
|
203
|
+
export default themeable(Card);
|
@@ -55,7 +55,6 @@ export interface CollapseState {
|
|
55
55
|
}
|
56
56
|
|
57
57
|
export class Collapse extends React.Component<CollapseProps, CollapseState> {
|
58
|
-
|
59
58
|
static defaultProps: Partial<CollapseProps> = {
|
60
59
|
mountOnEnter: false,
|
61
60
|
unmountOnExit: false,
|
@@ -82,7 +81,10 @@ export class Collapse extends React.Component<CollapseProps, CollapseState> {
|
|
82
81
|
this.state.collapsed = !!props.collapsed;
|
83
82
|
}
|
84
83
|
|
85
|
-
static getDerivedStateFromProps(
|
84
|
+
static getDerivedStateFromProps(
|
85
|
+
nextProps: CollapseProps,
|
86
|
+
preState: CollapseState
|
87
|
+
) {
|
86
88
|
if (nextProps.propsUpdate && nextProps.collapsed !== preState.collapsed) {
|
87
89
|
return {
|
88
90
|
collapsed: !!nextProps.collapsed
|
@@ -164,7 +166,9 @@ export class Collapse extends React.Component<CollapseProps, CollapseState> {
|
|
164
166
|
children
|
165
167
|
} = this.props;
|
166
168
|
|
167
|
-
const finalHeader = this.state.collapsed
|
169
|
+
const finalHeader = this.state.collapsed
|
170
|
+
? header
|
171
|
+
: collapseHeader || header;
|
168
172
|
|
169
173
|
let dom = [
|
170
174
|
finalHeader ? (
|
@@ -173,14 +177,18 @@ export class Collapse extends React.Component<CollapseProps, CollapseState> {
|
|
173
177
|
onClick={this.toggleCollapsed}
|
174
178
|
className={cx(`Collapse-header`, headingClassName)}
|
175
179
|
>
|
176
|
-
{showArrow && collapsable
|
177
|
-
?
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
180
|
+
{showArrow && collapsable ? (
|
181
|
+
expandIcon ? (
|
182
|
+
React.cloneElement(expandIcon, {
|
183
|
+
...expandIcon.props,
|
184
|
+
className: cx('Collapse-icon-tranform')
|
185
|
+
})
|
186
|
+
) : (
|
187
|
+
<span className={cx('Collapse-arrow')} />
|
188
|
+
)
|
189
|
+
) : (
|
190
|
+
''
|
191
|
+
)}
|
184
192
|
{finalHeader}
|
185
193
|
</HeadingComponent>
|
186
194
|
) : null,
|
@@ -213,7 +221,6 @@ export class Collapse extends React.Component<CollapseProps, CollapseState> {
|
|
213
221
|
);
|
214
222
|
}}
|
215
223
|
</Transition>
|
216
|
-
|
217
224
|
];
|
218
225
|
|
219
226
|
if (headerPosition === 'bottom') {
|
@@ -28,7 +28,6 @@ class CollapseGroup extends React.Component<
|
|
28
28
|
CollapseGroupProps,
|
29
29
|
CollapseGroupState
|
30
30
|
> {
|
31
|
-
|
32
31
|
static defaultProps: Partial<CollapseGroupProps> = {
|
33
32
|
className: '',
|
34
33
|
accordion: false,
|
@@ -58,21 +57,18 @@ class CollapseGroup extends React.Component<
|
|
58
57
|
if (collapsed) {
|
59
58
|
if (this.props.accordion) {
|
60
59
|
activeKey = [];
|
61
|
-
}
|
62
|
-
|
63
|
-
for(let i = 0; i < activeKey.length; i++) {
|
60
|
+
} else {
|
61
|
+
for (let i = 0; i < activeKey.length; i++) {
|
64
62
|
if (activeKey[i] === item.id) {
|
65
63
|
activeKey.splice(i, 1);
|
66
64
|
break;
|
67
65
|
}
|
68
66
|
}
|
69
67
|
}
|
70
|
-
}
|
71
|
-
else {
|
68
|
+
} else {
|
72
69
|
if (this.props.accordion) {
|
73
70
|
activeKey = [item.id];
|
74
|
-
}
|
75
|
-
else {
|
71
|
+
} else {
|
76
72
|
activeKey.push(item.id);
|
77
73
|
}
|
78
74
|
}
|
@@ -88,7 +84,8 @@ class CollapseGroup extends React.Component<
|
|
88
84
|
|
89
85
|
return children.map((child: React.ReactElement, index: number) => {
|
90
86
|
let props = child.props;
|
91
|
-
|
87
|
+
|
88
|
+
const id = props.propKey || String(index);
|
92
89
|
const collapsed = this.state.activeKey.indexOf(id) === -1;
|
93
90
|
|
94
91
|
return React.cloneElement(child as any, {
|
@@ -98,7 +95,8 @@ class CollapseGroup extends React.Component<
|
|
98
95
|
collapsed,
|
99
96
|
expandIcon: this.props.expandIcon,
|
100
97
|
propsUpdate: true,
|
101
|
-
onCollapse: (item: CollapseProps, collapsed: boolean) =>
|
98
|
+
onCollapse: (item: CollapseProps, collapsed: boolean) =>
|
99
|
+
this.collapseChange(item, collapsed)
|
102
100
|
});
|
103
101
|
});
|
104
102
|
};
|
@@ -116,7 +114,7 @@ class CollapseGroup extends React.Component<
|
|
116
114
|
className={cx(
|
117
115
|
`CollapseGroup`,
|
118
116
|
{
|
119
|
-
'icon-position-right': expandIconPosition === 'right'
|
117
|
+
'icon-position-right': expandIconPosition === 'right'
|
120
118
|
},
|
121
119
|
className
|
122
120
|
)}
|
@@ -288,6 +288,8 @@ export interface DateProps extends LocaleProps, ThemeProps {
|
|
288
288
|
largeMode?: boolean;
|
289
289
|
onScheduleClick?: (scheduleData: any) => void;
|
290
290
|
|
291
|
+
useMobileUI?: boolean;
|
292
|
+
|
291
293
|
// 下面那个千万不要写,写了就会导致 keyof DateProps 得到的结果是 string | number;
|
292
294
|
// [propName: string]: any;
|
293
295
|
}
|
@@ -567,6 +569,7 @@ export class DatePicker extends React.Component<DateProps, DatePickerState> {
|
|
567
569
|
const isOpened = this.state.isOpened;
|
568
570
|
let date: moment.Moment | undefined = this.state.value;
|
569
571
|
|
572
|
+
|
570
573
|
if (embed) {
|
571
574
|
let schedulesData: DateProps['schedules'] = undefined;
|
572
575
|
if (schedules && Array.isArray(schedules)) {
|
@@ -0,0 +1,145 @@
|
|
1
|
+
/**
|
2
|
+
* @file Picker
|
3
|
+
* @description 移动端列滚动选择器
|
4
|
+
*/
|
5
|
+
import React, {
|
6
|
+
memo,
|
7
|
+
ReactNode,
|
8
|
+
useState
|
9
|
+
} from 'react';
|
10
|
+
import {uncontrollable} from 'uncontrollable';
|
11
|
+
|
12
|
+
import {themeable, ThemeProps} from '../theme';
|
13
|
+
import {localeable, LocaleProps} from '../locale';
|
14
|
+
|
15
|
+
import Button from './Button';
|
16
|
+
import {PickerColumnItem, default as Column} from './PickerColumn';
|
17
|
+
|
18
|
+
export type PickerValue = string | number;
|
19
|
+
|
20
|
+
export interface PickerProps extends ThemeProps, LocaleProps {
|
21
|
+
title?: String | ReactNode,
|
22
|
+
labelField?: string;
|
23
|
+
className?: string;
|
24
|
+
showToolbar?: boolean;
|
25
|
+
defaultValue?: PickerValue[];
|
26
|
+
value?: PickerValue[];
|
27
|
+
swipeDuration?: number;
|
28
|
+
visibleItemCount?: number;
|
29
|
+
itemHeight?: number;
|
30
|
+
columns: PickerColumnItem[] | PickerColumnItem;
|
31
|
+
onChange?: (
|
32
|
+
value?: PickerValue[],
|
33
|
+
index?: number,
|
34
|
+
confirm?: boolean
|
35
|
+
) => void;
|
36
|
+
onClose?: (
|
37
|
+
value?: PickerValue[]
|
38
|
+
) => void;
|
39
|
+
onConfirm?: (
|
40
|
+
value?: PickerValue[]
|
41
|
+
) => void;
|
42
|
+
}
|
43
|
+
|
44
|
+
function fixToArray(data: any) {
|
45
|
+
if (!Array.isArray(data)) {
|
46
|
+
return [data];
|
47
|
+
}
|
48
|
+
return data;
|
49
|
+
}
|
50
|
+
|
51
|
+
const Picker = memo<PickerProps>((props) => {
|
52
|
+
const {
|
53
|
+
labelField,
|
54
|
+
visibleItemCount = 5,
|
55
|
+
value = [],
|
56
|
+
swipeDuration = 1000,
|
57
|
+
columns = [],
|
58
|
+
itemHeight = 30,
|
59
|
+
showToolbar = true,
|
60
|
+
className='',
|
61
|
+
classnames: cx,
|
62
|
+
classPrefix: ns,
|
63
|
+
translate: __
|
64
|
+
} = props;
|
65
|
+
|
66
|
+
const _columns = fixToArray(columns);
|
67
|
+
const [innerValue, setInnerValue] = useState<PickerValue[]>(
|
68
|
+
fixToArray(props.value === undefined ? props.defaultValue || [] : value )
|
69
|
+
);
|
70
|
+
|
71
|
+
const close = () => {
|
72
|
+
if (props.onClose) {
|
73
|
+
props.onClose(innerValue);
|
74
|
+
}
|
75
|
+
};
|
76
|
+
|
77
|
+
const confirm = () => {
|
78
|
+
if (props.onConfirm) {
|
79
|
+
props.onConfirm(innerValue);
|
80
|
+
}
|
81
|
+
};
|
82
|
+
|
83
|
+
const onChange = (itemValue: PickerValue, columnIndex: number, confirm?: boolean) => {
|
84
|
+
const nextInnerValue = [...innerValue];
|
85
|
+
nextInnerValue[columnIndex] = itemValue;
|
86
|
+
setInnerValue(nextInnerValue);
|
87
|
+
if (props.onChange) {
|
88
|
+
props.onChange(nextInnerValue, columnIndex, confirm);
|
89
|
+
}
|
90
|
+
};
|
91
|
+
|
92
|
+
const renderColumnItem = (item: PickerColumnItem, index: number) => {
|
93
|
+
return (
|
94
|
+
<Column
|
95
|
+
{...item}
|
96
|
+
classnames={cx}
|
97
|
+
classPrefix={ns}
|
98
|
+
labelField={labelField}
|
99
|
+
itemHeight={itemHeight}
|
100
|
+
swipeDuration={swipeDuration}
|
101
|
+
visibleItemCount={visibleItemCount}
|
102
|
+
value={innerValue[index]}
|
103
|
+
onChange={(val: string | number, i, confirm) => {
|
104
|
+
onChange(val, index, confirm);
|
105
|
+
}}
|
106
|
+
/>)
|
107
|
+
};
|
108
|
+
|
109
|
+
const wrapHeight = itemHeight * +visibleItemCount;
|
110
|
+
const frameStyle = {height: `${itemHeight}px`};
|
111
|
+
const columnsStyle = {height: `${wrapHeight}px`};
|
112
|
+
const maskStyle = {
|
113
|
+
backgroundSize: `100% ${(wrapHeight - itemHeight) / 2}px`
|
114
|
+
};
|
115
|
+
|
116
|
+
return (
|
117
|
+
<div
|
118
|
+
className={cx(className, 'PickerColumns', 'PickerColumns-popOver')}
|
119
|
+
>
|
120
|
+
{showToolbar && <div className={cx('PickerColumns-toolbar')}>
|
121
|
+
<Button className="PickerColumns-cancel" level="default" onClick={close}>
|
122
|
+
{__('cancel')}
|
123
|
+
</Button>
|
124
|
+
<Button className="PickerColumns-confirm" level="primary" onClick={confirm}>
|
125
|
+
{__('confirm')}
|
126
|
+
</Button>
|
127
|
+
</div>}
|
128
|
+
<div className={cx('PickerColumns-columns')} style={columnsStyle}>
|
129
|
+
{
|
130
|
+
_columns.map((column: PickerColumnItem, index: number) => renderColumnItem(column, index))
|
131
|
+
}
|
132
|
+
<div className={cx('PickerColumns-mask')} style={maskStyle}></div>
|
133
|
+
<div className={cx('PickerColumns-frame')} style={frameStyle}></div>
|
134
|
+
</div>
|
135
|
+
</div>
|
136
|
+
);
|
137
|
+
});
|
138
|
+
|
139
|
+
export default themeable(
|
140
|
+
localeable(
|
141
|
+
uncontrollable(Picker, {
|
142
|
+
value: 'onChange'
|
143
|
+
})
|
144
|
+
)
|
145
|
+
);
|