amis 1.5.1 → 1.5.5

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.
Files changed (168) hide show
  1. package/README.md +5 -0
  2. package/lib/RootRenderer.d.ts +1 -1
  3. package/lib/RootRenderer.js +4 -3
  4. package/lib/RootRenderer.js.map +2 -2
  5. package/lib/components/Card.d.ts +96 -0
  6. package/lib/components/Card.js +85 -0
  7. package/lib/components/Card.js.map +13 -0
  8. package/lib/components/Collapse.js +1 -1
  9. package/lib/components/Collapse.js.map +2 -2
  10. package/lib/components/DatePicker.d.ts +179 -84
  11. package/lib/components/DatePicker.js +25 -4
  12. package/lib/components/DatePicker.js.map +2 -2
  13. package/lib/components/DateRangePicker.d.ts +84 -84
  14. package/lib/components/MonthRangePicker.d.ts +84 -84
  15. package/lib/components/Picker.d.ts +503 -0
  16. package/lib/components/Picker.js +65 -0
  17. package/lib/components/Picker.js.map +13 -0
  18. package/lib/components/PickerColumn.d.ts +29 -459
  19. package/lib/components/PickerColumn.js +35 -44
  20. package/lib/components/PickerColumn.js.map +2 -2
  21. package/lib/components/Progress.js +1 -1
  22. package/lib/components/Progress.js.map +2 -2
  23. package/lib/components/Select.d.ts +238 -238
  24. package/lib/components/Select.js +9 -2
  25. package/lib/components/Select.js.map +2 -2
  26. package/lib/components/Selection.js +1 -4
  27. package/lib/components/Selection.js.map +2 -2
  28. package/lib/components/Switch.d.ts +6 -6
  29. package/lib/components/Switch.js.map +2 -2
  30. package/lib/components/calendar/Calendar.d.ts +8 -0
  31. package/lib/components/calendar/Calendar.js +19 -1
  32. package/lib/components/calendar/Calendar.js.map +2 -2
  33. package/lib/components/calendar/DaysView.d.ts +8 -0
  34. package/lib/components/calendar/DaysView.js +71 -0
  35. package/lib/components/calendar/DaysView.js.map +2 -2
  36. package/lib/components/calendar/TimeView.d.ts +10 -0
  37. package/lib/components/calendar/TimeView.js +55 -2
  38. package/lib/components/calendar/TimeView.js.map +2 -2
  39. package/lib/components/calendar/YearsView.d.ts +9 -0
  40. package/lib/components/calendar/YearsView.js +19 -0
  41. package/lib/components/calendar/YearsView.js.map +2 -2
  42. package/lib/index.js +1 -1
  43. package/lib/renderers/CRUD.d.ts +1 -1
  44. package/lib/renderers/CRUD.js +4 -4
  45. package/lib/renderers/CRUD.js.map +2 -2
  46. package/lib/renderers/Card.d.ts +81 -13
  47. package/lib/renderers/Card.js +178 -81
  48. package/lib/renderers/Card.js.map +2 -2
  49. package/lib/renderers/Dialog.d.ts +2 -2
  50. package/lib/renderers/Dialog.js +7 -7
  51. package/lib/renderers/Dialog.js.map +2 -2
  52. package/lib/renderers/Drawer.js +2 -2
  53. package/lib/renderers/Drawer.js.map +2 -2
  54. package/lib/renderers/Form/DiffEditor.d.ts +145 -37
  55. package/lib/renderers/Form/Editor.d.ts +144 -36
  56. package/lib/renderers/Form/Formula.js +5 -5
  57. package/lib/renderers/Form/Formula.js.map +2 -2
  58. package/lib/renderers/Form/InputCity.d.ts +84 -84
  59. package/lib/renderers/Form/InputDate.d.ts +25 -0
  60. package/lib/renderers/Form/InputDate.js +48 -3
  61. package/lib/renderers/Form/InputDate.js.map +2 -2
  62. package/lib/renderers/Form/InputFile.js +2 -2
  63. package/lib/renderers/Form/InputFile.js.map +2 -2
  64. package/lib/renderers/Form/Item.d.ts +1 -1
  65. package/lib/renderers/Form/Item.js +4 -3
  66. package/lib/renderers/Form/Item.js.map +2 -2
  67. package/lib/renderers/Form/index.d.ts +1 -1
  68. package/lib/renderers/Form/index.js +13 -2
  69. package/lib/renderers/Form/index.js.map +2 -2
  70. package/lib/renderers/Form/wrapControl.js +3 -2
  71. package/lib/renderers/Form/wrapControl.js.map +2 -2
  72. package/lib/renderers/Page.d.ts +3 -3
  73. package/lib/renderers/Page.js +4 -3
  74. package/lib/renderers/Page.js.map +2 -2
  75. package/lib/renderers/Status.js +1 -1
  76. package/lib/renderers/Status.js.map +2 -2
  77. package/lib/renderers/Wizard.d.ts +1 -1
  78. package/lib/renderers/Wizard.js +93 -36
  79. package/lib/renderers/Wizard.js.map +2 -2
  80. package/lib/store/combo.d.ts +160 -40
  81. package/lib/store/form.d.ts +64 -16
  82. package/lib/store/formItem.d.ts +4 -2
  83. package/lib/store/formItem.js +11 -6
  84. package/lib/store/formItem.js.map +2 -2
  85. package/lib/store/table.d.ts +128 -32
  86. package/lib/themes/ang-ie11.css +255 -31
  87. package/lib/themes/ang.css +255 -31
  88. package/lib/themes/ang.css.map +1 -1
  89. package/lib/themes/antd-ie11.css +255 -32
  90. package/lib/themes/antd.css +255 -32
  91. package/lib/themes/antd.css.map +1 -1
  92. package/lib/themes/cxd-ie11.css +263 -31
  93. package/lib/themes/cxd.css +263 -31
  94. package/lib/themes/cxd.css.map +1 -1
  95. package/lib/themes/dark-ie11.css +255 -31
  96. package/lib/themes/dark.css +255 -31
  97. package/lib/themes/dark.css.map +1 -1
  98. package/lib/themes/default.css +263 -31
  99. package/lib/themes/default.css.map +1 -1
  100. package/lib/utils/helper.d.ts +7 -0
  101. package/lib/utils/helper.js +33 -1
  102. package/lib/utils/helper.js.map +2 -2
  103. package/package.json +2 -2
  104. package/schema.json +209 -20
  105. package/scss/_properties.scss +14 -3
  106. package/scss/components/_calendar.scss +81 -0
  107. package/scss/components/_card.scss +155 -15
  108. package/scss/components/_nav.scss +1 -1
  109. package/scss/components/_picker-columns.scss +20 -14
  110. package/scss/components/_toast.scss +3 -0
  111. package/scss/components/form/_file.scss +2 -2
  112. package/scss/components/form/_selection.scss +4 -0
  113. package/scss/components/form/_switch.scss +6 -0
  114. package/scss/themes/_antd-variables.scss +0 -2
  115. package/scss/themes/_common.scss +1 -0
  116. package/scss/themes/_cxd-variables.scss +9 -0
  117. package/sdk/ang-ie11.css +296 -33
  118. package/sdk/ang.css +306 -33
  119. package/sdk/antd-ie11.css +295 -32
  120. package/sdk/antd.css +306 -34
  121. package/sdk/charts.js +13 -13
  122. package/sdk/color-picker.js +69 -65
  123. package/sdk/cropperjs.js +2 -2
  124. package/sdk/cxd-ie11.css +296 -33
  125. package/sdk/cxd.css +314 -33
  126. package/sdk/dark-ie11.css +296 -33
  127. package/sdk/dark.css +306 -33
  128. package/sdk/exceljs.js +1 -1
  129. package/sdk/markdown.js +69 -69
  130. package/sdk/papaparse.js +1 -1
  131. package/sdk/renderers/Form/CityDB.js +1 -1
  132. package/sdk/rest.js +16 -20
  133. package/sdk/rich-text.js +62 -62
  134. package/sdk/sdk-ie11.css +296 -33
  135. package/sdk/sdk.css +314 -33
  136. package/sdk/sdk.js +1218 -1214
  137. package/sdk/thirds/hls.js/hls.js +1 -1
  138. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  139. package/sdk/tinymce.js +57 -57
  140. package/src/RootRenderer.tsx +3 -3
  141. package/src/components/Card.tsx +203 -0
  142. package/src/components/Collapse.tsx +1 -1
  143. package/src/components/DatePicker.tsx +44 -3
  144. package/src/components/Picker.tsx +145 -0
  145. package/src/components/PickerColumn.tsx +58 -95
  146. package/src/components/Progress.tsx +1 -1
  147. package/src/components/Select.tsx +17 -12
  148. package/src/components/Selection.tsx +1 -4
  149. package/src/components/Switch.tsx +7 -7
  150. package/src/components/calendar/Calendar.tsx +30 -1
  151. package/src/components/calendar/DaysView.tsx +91 -0
  152. package/src/components/calendar/TimeView.tsx +80 -5
  153. package/src/components/calendar/YearsView.tsx +44 -1
  154. package/src/renderers/CRUD.tsx +3 -4
  155. package/src/renderers/Card.tsx +299 -191
  156. package/src/renderers/Dialog.tsx +8 -8
  157. package/src/renderers/Drawer.tsx +2 -2
  158. package/src/renderers/Form/Formula.tsx +7 -5
  159. package/src/renderers/Form/InputDate.tsx +83 -2
  160. package/src/renderers/Form/InputFile.tsx +6 -2
  161. package/src/renderers/Form/Item.tsx +2 -2
  162. package/src/renderers/Form/index.tsx +14 -2
  163. package/src/renderers/Form/wrapControl.tsx +5 -2
  164. package/src/renderers/Page.tsx +11 -10
  165. package/src/renderers/Status.tsx +3 -1
  166. package/src/renderers/Wizard.tsx +52 -12
  167. package/src/store/formItem.ts +12 -6
  168. package/src/utils/helper.ts +34 -0
@@ -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 {IItem} from '../store/list';
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?: string;
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?: string;
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
- export class Card extends React.Component<CardProps> {
190
- static defaultProps: Partial<CardProps> = {
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
- blank: true
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
- handleClick(e: React.MouseEvent<HTMLDivElement>) {
225
- if (isClickOnInput(e)) {
226
- return;
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
- handleCheck() {
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
- handleAction(e: React.UIEvent<any>, action: Action, ctx: object) {
253
- const {onAction, item} = this.props;
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
- render() {
460
- const {
461
- className,
462
- data,
463
- header,
464
- render,
465
- bodyClassName,
466
- highlightClassName,
467
- titleClassName,
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
- const toolbar = this.renderToolbar();
483
- let heading = null;
484
-
485
- if (header || toolbar) {
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?.descriptionPlaceholder || header?.descPlaceholder;
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
- const highlight = !!evalExpression(highlightTpl!, data as object);
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
- heading = (
515
- <div className={cx('Card-heading', header?.className)}>
516
- {avatar ? (
517
- <span
518
- className={cx(
519
- 'Card-avtar',
520
- header?.avatarClassName || avatarClassName
521
- )}
522
- >
523
- <img
524
- className={cx(
525
- 'Card-img',
526
- header?.imageClassName || imageClassName
527
- )}
528
- src={avatar}
529
- />
530
- </span>
531
- ) : avatarText ? (
532
- <span
533
- className={cx(
534
- 'Card-avtarText',
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
- {toolbar}
592
- </div>
593
- );
668
+ );
669
+ }
594
670
  }
671
+ return;
672
+ }
595
673
 
596
- const body = this.renderBody();
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
- <div
600
- onClick={
601
- (checkOnItemClick && checkable) || href || itemAction
602
- ? this.handleClick
603
- : undefined
604
- }
605
- className={cx('Card', className, {
606
- 'Card--link': href || itemAction
607
- })}
608
- >
609
- {dragging ? (
610
- <div className={cx('Card-dragBtn')}>
611
- <Icon icon="drag-bar" className="icon" />
612
- </div>
613
- ) : null}
614
- {heading}
615
- {body ? (
616
- <div className={cx('Card-body', bodyClassName)}>{body}</div>
617
- ) : null}
618
- {this.renderActions()}
619
- </div>
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
  })