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
package/src/renderers/Card.tsx
CHANGED
@@ -1,36 +1,28 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import {findDOMNode} from 'react-dom';
|
3
2
|
import {Renderer, RendererProps} from '../factory';
|
4
3
|
import {SchemaNode, Schema, Action, PlainObject} from '../types';
|
5
4
|
import {filter, evalExpression} from '../utils/tpl';
|
6
|
-
import cx from 'classnames';
|
7
5
|
import Checkbox from '../components/Checkbox';
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
padArr,
|
11
|
-
isVisible,
|
12
|
-
isDisabled,
|
13
|
-
noop,
|
14
|
-
isClickOnInput,
|
15
|
-
hashCode
|
16
|
-
} from '../utils/helper';
|
6
|
+
import {padArr, isVisible, isDisabled, noop, hashCode} from '../utils/helper';
|
17
7
|
import {resolveVariable} from '../utils/tpl-builtin';
|
18
8
|
import QuickEdit, {SchemaQuickEdit} from './QuickEdit';
|
19
9
|
import PopOver, {SchemaPopOver} from './PopOver';
|
20
10
|
import {TableCell} from './Table';
|
21
11
|
import Copyable, {SchemaCopyable} from './Copyable';
|
22
|
-
import {Icon} from '../components/icons';
|
23
12
|
import omit = require('lodash/omit');
|
24
13
|
import {
|
25
14
|
BaseSchema,
|
26
15
|
SchemaClassName,
|
27
|
-
SchemaCollection,
|
28
16
|
SchemaExpression,
|
29
17
|
SchemaObject,
|
30
18
|
SchemaTpl,
|
31
19
|
SchemaUrlPath
|
32
20
|
} from '../Schema';
|
33
21
|
import {ActionSchema} from './Action';
|
22
|
+
import {Card} from '../components/Card';
|
23
|
+
import {findDOMNode} from 'react-dom';
|
24
|
+
import {IItem} from '../store/list';
|
25
|
+
import {Icon} from '../components/icons';
|
34
26
|
|
35
27
|
export type CardBodyField = SchemaObject & {
|
36
28
|
/**
|
@@ -84,7 +76,7 @@ export interface CardSchema extends BaseSchema {
|
|
84
76
|
* 标题
|
85
77
|
*/
|
86
78
|
title?: SchemaTpl;
|
87
|
-
titleClassName?:
|
79
|
+
titleClassName?: SchemaClassName;
|
88
80
|
|
89
81
|
/**
|
90
82
|
* 副标题
|
@@ -106,7 +98,7 @@ export interface CardSchema extends BaseSchema {
|
|
106
98
|
/**
|
107
99
|
* 描述占位类名
|
108
100
|
*/
|
109
|
-
descriptionClassName?:
|
101
|
+
descriptionClassName?: SchemaClassName;
|
110
102
|
|
111
103
|
/**
|
112
104
|
* @deprecated 建议用 description
|
@@ -164,6 +156,43 @@ export interface CardSchema extends BaseSchema {
|
|
164
156
|
*/
|
165
157
|
body?: Array<CardBodyField>;
|
166
158
|
|
159
|
+
/**
|
160
|
+
* 多媒体区域
|
161
|
+
*/
|
162
|
+
media?: {
|
163
|
+
className?: SchemaClassName;
|
164
|
+
|
165
|
+
/**
|
166
|
+
* 多媒体类型
|
167
|
+
*/
|
168
|
+
type?: 'image' | 'video';
|
169
|
+
|
170
|
+
/**
|
171
|
+
* 多媒体链接地址
|
172
|
+
*/
|
173
|
+
url?: SchemaUrlPath;
|
174
|
+
|
175
|
+
/**
|
176
|
+
* 多媒体区域位置
|
177
|
+
*/
|
178
|
+
position?: 'top' | 'left' | 'right' | 'bottom';
|
179
|
+
|
180
|
+
/**
|
181
|
+
* 类型为video时是否自动播放
|
182
|
+
*/
|
183
|
+
autoPlay?: boolean;
|
184
|
+
|
185
|
+
/**
|
186
|
+
* 类型为video时是否是直播
|
187
|
+
*/
|
188
|
+
isLive?: boolean;
|
189
|
+
|
190
|
+
/**
|
191
|
+
* 类型为video时视频封面
|
192
|
+
*/
|
193
|
+
poster?: SchemaUrlPath;
|
194
|
+
};
|
195
|
+
|
167
196
|
/**
|
168
197
|
* 底部按钮集合。
|
169
198
|
*/
|
@@ -173,60 +202,88 @@ export interface CardSchema extends BaseSchema {
|
|
173
202
|
* 工具栏按钮
|
174
203
|
*/
|
175
204
|
toolbar?: Array<ActionSchema>;
|
176
|
-
}
|
177
205
|
|
206
|
+
/**
|
207
|
+
* 次要说明
|
208
|
+
*/
|
209
|
+
secondary?: SchemaTpl;
|
210
|
+
}
|
178
211
|
export interface CardProps
|
179
212
|
extends RendererProps,
|
180
213
|
Omit<CardSchema, 'className'> {
|
181
214
|
onCheck: (item: IItem) => void;
|
215
|
+
actionsCount: number;
|
182
216
|
itemIndex?: number;
|
217
|
+
dragging?: boolean;
|
218
|
+
selectable?: boolean;
|
219
|
+
selected?: boolean;
|
220
|
+
checkable?: boolean;
|
183
221
|
multiple?: boolean;
|
184
|
-
highlightClassName?: string;
|
185
222
|
hideCheckToggler?: boolean;
|
186
223
|
item: IItem;
|
187
224
|
checkOnItemClick?: boolean;
|
188
225
|
}
|
189
|
-
|
190
|
-
|
226
|
+
|
227
|
+
@Renderer({
|
228
|
+
type: 'card'
|
229
|
+
})
|
230
|
+
export class CardRenderer extends React.Component<CardProps> {
|
231
|
+
static defaultProps = {
|
191
232
|
className: '',
|
192
233
|
avatarClassName: '',
|
234
|
+
headerClassName: '',
|
235
|
+
footerClassName: '',
|
236
|
+
secondaryClassName: '',
|
237
|
+
avatarTextClassName: '',
|
193
238
|
bodyClassName: '',
|
194
239
|
actionsCount: 4,
|
195
240
|
titleClassName: '',
|
196
241
|
highlightClassName: '',
|
197
242
|
subTitleClassName: '',
|
198
243
|
descClassName: '',
|
199
|
-
|
244
|
+
descriptionClassName: '',
|
245
|
+
imageClassName: '',
|
246
|
+
highlight: false,
|
247
|
+
blank: true,
|
248
|
+
dragging: false,
|
249
|
+
selectable: false,
|
250
|
+
checkable: true,
|
251
|
+
selected: false,
|
252
|
+
hideCheckToggler: false
|
200
253
|
};
|
201
254
|
|
202
255
|
static propsList: Array<string> = [
|
203
256
|
'avatarClassName',
|
257
|
+
'avatarTextClassName',
|
204
258
|
'bodyClassName',
|
205
259
|
'actionsCount',
|
206
260
|
'titleClassName',
|
207
261
|
'highlightClassName',
|
208
262
|
'subTitleClassName',
|
209
263
|
'descClassName',
|
264
|
+
'descriptionClassName',
|
265
|
+
'imageClassName',
|
210
266
|
'hideCheckToggler'
|
211
267
|
];
|
212
268
|
|
213
269
|
constructor(props: CardProps) {
|
214
270
|
super(props);
|
215
271
|
|
216
|
-
this.getPopOverContainer = this.getPopOverContainer.bind(this);
|
217
|
-
this.itemRender = this.itemRender.bind(this);
|
218
|
-
this.handleAction = this.handleAction.bind(this);
|
219
|
-
this.handleQuickChange = this.handleQuickChange.bind(this);
|
220
272
|
this.handleClick = this.handleClick.bind(this);
|
273
|
+
this.handleAction = this.handleAction.bind(this);
|
221
274
|
this.handleCheck = this.handleCheck.bind(this);
|
275
|
+
this.getPopOverContainer = this.getPopOverContainer.bind(this);
|
276
|
+
this.handleQuickChange = this.handleQuickChange.bind(this);
|
222
277
|
}
|
223
278
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
279
|
+
isHaveLink() {
|
280
|
+
const {href, itemAction, onCheck, checkOnItemClick, checkable} = this.props;
|
281
|
+
return href || itemAction || onCheck || (checkOnItemClick && checkable);
|
282
|
+
}
|
228
283
|
|
284
|
+
handleClick(e: React.MouseEvent<HTMLDivElement>) {
|
229
285
|
const {item, href, data, env, blank, itemAction, onAction} = this.props;
|
286
|
+
|
230
287
|
if (href) {
|
231
288
|
env.jumpTo(filter(href, data), {
|
232
289
|
type: 'button',
|
@@ -244,14 +301,19 @@ export class Card extends React.Component<CardProps> {
|
|
244
301
|
this.props.onCheck && this.props.onCheck(item);
|
245
302
|
}
|
246
303
|
|
247
|
-
|
304
|
+
handleAction(e: React.UIEvent<any>, action: Action, ctx: object) {
|
305
|
+
const {onAction, item} = this.props;
|
306
|
+
|
307
|
+
onAction && onAction(e, action, ctx || item.data);
|
308
|
+
}
|
309
|
+
|
310
|
+
handleCheck(e: React.MouseEvent<any>) {
|
248
311
|
const item = this.props.item;
|
249
312
|
this.props.onCheck && this.props.onCheck(item);
|
250
313
|
}
|
251
314
|
|
252
|
-
|
253
|
-
|
254
|
-
onAction && onAction(e, action, ctx || item.data);
|
315
|
+
getPopOverContainer() {
|
316
|
+
return findDOMNode(this);
|
255
317
|
}
|
256
318
|
|
257
319
|
handleQuickChange(
|
@@ -265,27 +327,34 @@ export class Card extends React.Component<CardProps> {
|
|
265
327
|
onQuickChange(item, values, saveImmediately, savePristine, resetOnFailed);
|
266
328
|
}
|
267
329
|
|
268
|
-
getPopOverContainer() {
|
269
|
-
return findDOMNode(this);
|
270
|
-
}
|
271
|
-
|
272
330
|
renderToolbar() {
|
273
331
|
const {
|
274
|
-
dragging,
|
275
332
|
selectable,
|
276
333
|
checkable,
|
277
334
|
selected,
|
278
|
-
onSelect,
|
279
335
|
checkOnItemClick,
|
280
336
|
multiple,
|
281
337
|
hideCheckToggler,
|
282
338
|
classnames: cx,
|
283
|
-
classPrefix: ns,
|
284
339
|
toolbar,
|
285
|
-
render
|
340
|
+
render,
|
341
|
+
dragging,
|
342
|
+
data,
|
343
|
+
header
|
286
344
|
} = this.props;
|
345
|
+
|
287
346
|
const toolbars: Array<JSX.Element> = [];
|
288
347
|
|
348
|
+
if (header) {
|
349
|
+
const {highlightClassName, highlight: highlightTpl} = header;
|
350
|
+
const highlight = !!evalExpression(highlightTpl!, data as object);
|
351
|
+
if (highlight) {
|
352
|
+
toolbars.push(
|
353
|
+
<i className={cx('Card-highlight', highlightClassName)} />
|
354
|
+
);
|
355
|
+
}
|
356
|
+
}
|
357
|
+
|
289
358
|
if (selectable && !hideCheckToggler) {
|
290
359
|
toolbars.push(
|
291
360
|
<Checkbox
|
@@ -318,6 +387,14 @@ export class Card extends React.Component<CardProps> {
|
|
318
387
|
);
|
319
388
|
}
|
320
389
|
|
390
|
+
if (dragging) {
|
391
|
+
toolbars.push(
|
392
|
+
<div className={cx('Card-dragBtn')}>
|
393
|
+
<Icon icon="drag-bar" className="icon" />
|
394
|
+
</div>
|
395
|
+
);
|
396
|
+
}
|
397
|
+
|
321
398
|
return toolbars.length ? (
|
322
399
|
<div className={cx('Card-toolbar')}>{toolbars}</div>
|
323
400
|
) : null;
|
@@ -368,8 +445,7 @@ export class Card extends React.Component<CardProps> {
|
|
368
445
|
</div>
|
369
446
|
));
|
370
447
|
}
|
371
|
-
|
372
|
-
return null;
|
448
|
+
return;
|
373
449
|
}
|
374
450
|
|
375
451
|
renderChild(
|
@@ -456,53 +532,105 @@ export class Card extends React.Component<CardProps> {
|
|
456
532
|
return this.renderChild(body, 'body');
|
457
533
|
}
|
458
534
|
|
459
|
-
|
460
|
-
const {
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
render,
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
subTitleClassName,
|
469
|
-
descClassName,
|
470
|
-
checkOnItemClick,
|
471
|
-
avatarClassName,
|
472
|
-
checkable,
|
473
|
-
classnames: cx,
|
474
|
-
classPrefix: ns,
|
475
|
-
imageClassName,
|
476
|
-
avatarTextClassName,
|
477
|
-
href,
|
478
|
-
itemAction,
|
479
|
-
dragging
|
480
|
-
} = this.props;
|
535
|
+
rederTitle() {
|
536
|
+
const {render, data, header} = this.props;
|
537
|
+
if (header) {
|
538
|
+
const {title: titleTpl} = header || {};
|
539
|
+
const title = filter(titleTpl, data);
|
540
|
+
return title ? render('title', titleTpl!) : undefined;
|
541
|
+
}
|
542
|
+
return;
|
543
|
+
}
|
481
544
|
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
const {
|
487
|
-
highlight: highlightTpl,
|
488
|
-
avatar: avatarTpl,
|
489
|
-
avatarText: avatarTextTpl,
|
490
|
-
avatarTextBackground,
|
491
|
-
title: titleTpl,
|
492
|
-
subTitle: subTitleTpl,
|
493
|
-
subTitlePlaceholder,
|
494
|
-
desc: descTpl
|
495
|
-
} = header || {};
|
545
|
+
renderSubTitle() {
|
546
|
+
const {render, data, header} = this.props;
|
547
|
+
if (header) {
|
548
|
+
const {subTitle: subTitleTpl} = header || {};
|
496
549
|
|
550
|
+
const subTitle = filter(subTitleTpl, data);
|
551
|
+
return subTitle ? render('sub-title', subTitleTpl!) : undefined;
|
552
|
+
}
|
553
|
+
return;
|
554
|
+
}
|
555
|
+
|
556
|
+
renderSubTitlePlaceholder() {
|
557
|
+
const {render, header, classnames: cx} = this.props;
|
558
|
+
if (header) {
|
559
|
+
const {subTitlePlaceholder} = header || {};
|
560
|
+
|
561
|
+
return subTitlePlaceholder
|
562
|
+
? render('sub-title', subTitlePlaceholder, {
|
563
|
+
className: cx('Card-placeholder')
|
564
|
+
})
|
565
|
+
: undefined;
|
566
|
+
}
|
567
|
+
return;
|
568
|
+
}
|
569
|
+
|
570
|
+
renderDesc() {
|
571
|
+
const {render, data, header} = this.props;
|
572
|
+
|
573
|
+
if (header) {
|
574
|
+
const {desc: descTpl, description: descriptionTpl} = header || {};
|
575
|
+
const desc = filter(descriptionTpl! || descTpl!, data);
|
576
|
+
return desc
|
577
|
+
? render('desc', descriptionTpl! || descTpl!, {
|
578
|
+
className: !desc ? 'text-muted' : null
|
579
|
+
})
|
580
|
+
: undefined;
|
581
|
+
}
|
582
|
+
return;
|
583
|
+
}
|
584
|
+
|
585
|
+
renderDescPlaceholder() {
|
586
|
+
const {render, header} = this.props;
|
587
|
+
|
588
|
+
if (header) {
|
497
589
|
const descPlaceholder =
|
498
|
-
header
|
590
|
+
header.descriptionPlaceholder || header.descPlaceholder;
|
591
|
+
return descPlaceholder
|
592
|
+
? render('desc', descPlaceholder, {
|
593
|
+
className: !descPlaceholder ? 'text-muted' : null
|
594
|
+
})
|
595
|
+
: undefined;
|
596
|
+
}
|
597
|
+
return;
|
598
|
+
}
|
499
599
|
|
500
|
-
|
600
|
+
renderAvatar() {
|
601
|
+
const {data, header} = this.props;
|
602
|
+
if (header) {
|
603
|
+
const {avatar: avatarTpl} = header || {};
|
501
604
|
const avatar = filter(avatarTpl, data, '| raw');
|
605
|
+
return avatar ? avatar : undefined;
|
606
|
+
}
|
607
|
+
return;
|
608
|
+
}
|
609
|
+
|
610
|
+
renderAvatarText() {
|
611
|
+
const {render, data, header} = this.props;
|
612
|
+
if (header) {
|
613
|
+
const {avatarText: avatarTextTpl} = header || {};
|
614
|
+
|
615
|
+
const avatarText = filter(avatarTextTpl, data);
|
616
|
+
|
617
|
+
return avatarText ? render('avatarText', avatarTextTpl!) : undefined;
|
618
|
+
}
|
619
|
+
return;
|
620
|
+
}
|
621
|
+
|
622
|
+
renderSecondary() {
|
623
|
+
const {render, data, secondary: secondaryTextTpl} = this.props;
|
624
|
+
|
625
|
+
const secondary = filter(secondaryTextTpl, data);
|
626
|
+
return secondary ? render('secondary', secondaryTextTpl!) : undefined;
|
627
|
+
}
|
628
|
+
|
629
|
+
renderAvatarTextStyle() {
|
630
|
+
const {header, data} = this.props;
|
631
|
+
if (header) {
|
632
|
+
const {avatarText: avatarTextTpl, avatarTextBackground} = header;
|
502
633
|
const avatarText = filter(avatarTextTpl, data);
|
503
|
-
const title = filter(titleTpl, data);
|
504
|
-
const subTitle = filter(subTitleTpl, data);
|
505
|
-
const desc = filter(header?.description || descTpl, data);
|
506
634
|
const avatarTextStyle: PlainObject = {};
|
507
635
|
if (avatarText && avatarTextBackground && avatarTextBackground.length) {
|
508
636
|
avatarTextStyle['background'] =
|
@@ -510,124 +638,104 @@ export class Card extends React.Component<CardProps> {
|
|
510
638
|
Math.abs(hashCode(avatarText)) % avatarTextBackground.length
|
511
639
|
];
|
512
640
|
}
|
641
|
+
return avatarTextStyle;
|
642
|
+
}
|
643
|
+
return;
|
644
|
+
}
|
513
645
|
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
header?.avatarTextClassName || avatarTextClassName
|
536
|
-
)}
|
537
|
-
style={avatarTextStyle}
|
538
|
-
>
|
539
|
-
{avatarText}
|
540
|
-
</span>
|
541
|
-
) : null}
|
542
|
-
<div className={cx('Card-meta')}>
|
543
|
-
{highlight ? (
|
544
|
-
<i
|
545
|
-
className={cx(
|
546
|
-
'Card-highlight',
|
547
|
-
header?.highlightClassName || highlightClassName
|
548
|
-
)}
|
549
|
-
/>
|
550
|
-
) : null}
|
551
|
-
|
552
|
-
{title ? (
|
553
|
-
<div
|
554
|
-
className={cx(
|
555
|
-
'Card-title',
|
556
|
-
header?.titleClassName || titleClassName
|
557
|
-
)}
|
558
|
-
>
|
559
|
-
{render('title', titleTpl!)}
|
560
|
-
</div>
|
561
|
-
) : null}
|
562
|
-
|
563
|
-
{subTitle || subTitlePlaceholder ? (
|
564
|
-
<div
|
565
|
-
className={cx(
|
566
|
-
'Card-subTitle',
|
567
|
-
header?.subTitleClassName || subTitleClassName
|
568
|
-
)}
|
569
|
-
>
|
570
|
-
{render('sub-title', subTitleTpl || subTitlePlaceholder!, {
|
571
|
-
className: cx(!subTitle ? 'Card-placeholder' : undefined)
|
572
|
-
})}
|
573
|
-
</div>
|
574
|
-
) : null}
|
575
|
-
|
576
|
-
{desc || descPlaceholder ? (
|
577
|
-
<div
|
578
|
-
className={cx(
|
579
|
-
'Card-desc',
|
580
|
-
header?.descriptionClassName ||
|
581
|
-
header?.descClassName ||
|
582
|
-
descClassName
|
583
|
-
)}
|
584
|
-
>
|
585
|
-
{render('desc', header?.description || descTpl!, {
|
586
|
-
className: !desc ? 'text-muted' : undefined
|
587
|
-
})}
|
588
|
-
</div>
|
589
|
-
) : null}
|
646
|
+
renderMedia() {
|
647
|
+
const {media, classnames: cx, render, region} = this.props;
|
648
|
+
if (media) {
|
649
|
+
const {type, url, className, autoPlay, isLive, poster} = media;
|
650
|
+
|
651
|
+
if (type === 'image' && url) {
|
652
|
+
return (
|
653
|
+
<img className={cx('Card-multiMedia-img', className)} src={url} />
|
654
|
+
);
|
655
|
+
} else if (type === 'video' && url) {
|
656
|
+
return (
|
657
|
+
<div className={cx('Card-multiMedia-video', className)}>
|
658
|
+
{
|
659
|
+
render(region, {
|
660
|
+
type: type,
|
661
|
+
autoPlay: autoPlay,
|
662
|
+
poster: poster,
|
663
|
+
src: url,
|
664
|
+
isLive: isLive
|
665
|
+
}) as JSX.Element
|
666
|
+
}
|
590
667
|
</div>
|
591
|
-
|
592
|
-
|
593
|
-
);
|
668
|
+
);
|
669
|
+
}
|
594
670
|
}
|
671
|
+
return;
|
672
|
+
}
|
595
673
|
|
596
|
-
|
674
|
+
render() {
|
675
|
+
const {
|
676
|
+
header,
|
677
|
+
className,
|
678
|
+
avatarClassName,
|
679
|
+
avatarTextClassName,
|
680
|
+
descClassName,
|
681
|
+
descriptionClassName,
|
682
|
+
titleClassName,
|
683
|
+
subTitleClassName,
|
684
|
+
bodyClassName,
|
685
|
+
imageClassName,
|
686
|
+
headerClassName,
|
687
|
+
secondaryClassName,
|
688
|
+
footerClassName,
|
689
|
+
mediaClassName,
|
690
|
+
media,
|
691
|
+
...rest
|
692
|
+
} = this.props;
|
693
|
+
|
694
|
+
const headerCn = header?.className || headerClassName;
|
695
|
+
const titleCn = header?.titleClassName || titleClassName;
|
696
|
+
const subTitleCn = header?.subTitleClassName || subTitleClassName;
|
697
|
+
const descCn = header?.descClassName || descClassName;
|
698
|
+
const descriptionCn =
|
699
|
+
header?.descriptionClassName || descriptionClassName || descCn;
|
700
|
+
const avatarTextCn = header?.avatarTextClassName || avatarTextClassName;
|
701
|
+
const avatarCn = header?.avatarClassName || avatarClassName;
|
702
|
+
const imageCn = header?.imageClassName || imageClassName;
|
703
|
+
const mediaPosition = media?.position;
|
597
704
|
|
598
705
|
return (
|
599
|
-
<
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
}
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
{
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
)
|
614
|
-
{
|
615
|
-
{
|
616
|
-
|
617
|
-
)
|
618
|
-
{
|
619
|
-
|
706
|
+
<Card
|
707
|
+
{...rest}
|
708
|
+
title={this.rederTitle()}
|
709
|
+
subTitle={this.renderSubTitle()}
|
710
|
+
subTitlePlaceholder={this.renderSubTitlePlaceholder()}
|
711
|
+
description={this.renderDesc()}
|
712
|
+
descriptionPlaceholder={this.renderDescPlaceholder()}
|
713
|
+
children={this.renderBody()}
|
714
|
+
actions={this.renderActions()}
|
715
|
+
avatar={this.renderAvatar()}
|
716
|
+
avatarText={this.renderAvatarText()}
|
717
|
+
secondary={this.renderSecondary()}
|
718
|
+
toolbar={this.renderToolbar()}
|
719
|
+
avatarClassName={avatarCn}
|
720
|
+
avatarTextStyle={this.renderAvatarTextStyle()}
|
721
|
+
avatarTextClassName={avatarTextCn}
|
722
|
+
className={className}
|
723
|
+
titleClassName={titleCn}
|
724
|
+
media={this.renderMedia()}
|
725
|
+
subTitleClassName={subTitleCn}
|
726
|
+
mediaPosition={mediaPosition}
|
727
|
+
descriptionClassName={descriptionCn}
|
728
|
+
imageClassName={imageCn}
|
729
|
+
headerClassName={headerCn}
|
730
|
+
footerClassName={footerClassName}
|
731
|
+
secondaryClassName={secondaryClassName}
|
732
|
+
bodyClassName={bodyClassName}
|
733
|
+
onClick={this.isHaveLink() ? this.handleClick : undefined}
|
734
|
+
></Card>
|
620
735
|
);
|
621
736
|
}
|
622
737
|
}
|
623
738
|
|
624
|
-
@Renderer({
|
625
|
-
type: 'card'
|
626
|
-
})
|
627
|
-
export class CardRenderer extends Card {
|
628
|
-
static propsList = ['multiple', ...Card.propsList];
|
629
|
-
}
|
630
|
-
|
631
739
|
@Renderer({
|
632
740
|
type: 'card-item-field'
|
633
741
|
})
|