amis 1.9.1-beta.28 → 1.9.1-beta.29

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. package/lib/components/AnchorNav.d.ts +8 -2
  2. package/lib/components/AnchorNav.js +24 -5
  3. package/lib/components/AnchorNav.js.map +2 -2
  4. package/lib/components/DatePicker.d.ts +41 -40
  5. package/lib/components/DatePicker.js +2 -2
  6. package/lib/components/DatePicker.js.map +2 -2
  7. package/lib/components/DateRangePicker.d.ts +44 -41
  8. package/lib/components/DateRangePicker.js +25 -8
  9. package/lib/components/DateRangePicker.js.map +2 -2
  10. package/lib/components/MonthRangePicker.d.ts +41 -40
  11. package/lib/components/MonthRangePicker.js +2 -2
  12. package/lib/components/MonthRangePicker.js.map +2 -2
  13. package/lib/components/SearchBox.d.ts +124 -42
  14. package/lib/components/SearchBox.js +181 -19
  15. package/lib/components/SearchBox.js.map +2 -2
  16. package/lib/components/Tag.d.ts +12 -10
  17. package/lib/components/Tag.js +18 -7
  18. package/lib/components/Tag.js.map +2 -2
  19. package/lib/locale/de-DE.js +1 -0
  20. package/lib/locale/de-DE.js.map +2 -2
  21. package/lib/locale/en-US.js +1 -0
  22. package/lib/locale/en-US.js.map +2 -2
  23. package/lib/locale/zh-CN.js +1 -0
  24. package/lib/locale/zh-CN.js.map +2 -2
  25. package/lib/renderers/Card.d.ts +7 -2
  26. package/lib/renderers/Card.js +11 -7
  27. package/lib/renderers/Card.js.map +2 -2
  28. package/lib/renderers/Form/InputExcel.d.ts +1 -0
  29. package/lib/renderers/Form/InputExcel.js +5 -0
  30. package/lib/renderers/Form/InputExcel.js.map +2 -2
  31. package/lib/renderers/Form/InputFile.d.ts +2 -2
  32. package/lib/renderers/Form/InputFile.js +6 -5
  33. package/lib/renderers/Form/InputFile.js.map +2 -2
  34. package/lib/renderers/Form/InputText.d.ts +8 -0
  35. package/lib/renderers/Form/InputText.js +8 -8
  36. package/lib/renderers/Form/InputText.js.map +2 -2
  37. package/lib/renderers/Table/index.js +1 -1
  38. package/lib/renderers/Table/index.js.map +2 -2
  39. package/lib/renderers/Tag.js +2 -2
  40. package/lib/renderers/Tag.js.map +2 -2
  41. package/lib/renderers/Wizard.d.ts +1 -1
  42. package/lib/renderers/Wizard.js +72 -75
  43. package/lib/renderers/Wizard.js.map +2 -2
  44. package/lib/store/formItem.js +2 -1
  45. package/lib/store/formItem.js.map +2 -2
  46. package/lib/themes/ang-ie11.css +120 -15
  47. package/lib/themes/ang.css +124 -15
  48. package/lib/themes/ang.css.map +1 -1
  49. package/lib/themes/antd-ie11.css +120 -15
  50. package/lib/themes/antd.css +124 -15
  51. package/lib/themes/antd.css.map +1 -1
  52. package/lib/themes/cxd-ie11.css +120 -15
  53. package/lib/themes/cxd.css +124 -15
  54. package/lib/themes/cxd.css.map +1 -1
  55. package/lib/themes/dark-ie11.css +120 -15
  56. package/lib/themes/dark.css +124 -15
  57. package/lib/themes/dark.css.map +1 -1
  58. package/lib/themes/default-ie11.css +120 -15
  59. package/lib/themes/default.css +124 -15
  60. package/lib/themes/default.css.map +1 -1
  61. package/package.json +3 -3
  62. package/schema.json +35 -14
  63. package/scss/_properties.scss +5 -0
  64. package/scss/components/_anchor-nav.scss +1 -0
  65. package/scss/components/_calendar.scss +32 -14
  66. package/scss/components/_search-box.scss +116 -10
  67. package/scss/components/_tag.scss +12 -3
  68. package/scss/components/form/_date-range.scss +1 -1
  69. package/sdk/ang-ie11.css +131 -14
  70. package/sdk/ang.css +135 -14
  71. package/sdk/antd-ie11.css +131 -14
  72. package/sdk/antd.css +135 -14
  73. package/sdk/cxd-ie11.css +131 -14
  74. package/sdk/cxd.css +135 -14
  75. package/sdk/dark-ie11.css +131 -14
  76. package/sdk/dark.css +135 -14
  77. package/sdk/locale/de-DE.js +1 -0
  78. package/sdk/sdk-ie11.css +131 -14
  79. package/sdk/sdk.css +135 -14
  80. package/sdk/sdk.js +17 -17
  81. package/src/components/AnchorNav.tsx +40 -7
  82. package/src/components/DatePicker.tsx +8 -4
  83. package/src/components/DateRangePicker.tsx +34 -8
  84. package/src/components/MonthRangePicker.tsx +4 -2
  85. package/src/components/SearchBox.tsx +262 -29
  86. package/src/components/Tag.tsx +14 -3
  87. package/src/locale/de-DE.ts +1 -0
  88. package/src/locale/en-US.ts +1 -0
  89. package/src/locale/zh-CN.ts +1 -0
  90. package/src/renderers/Card.tsx +24 -12
  91. package/src/renderers/Form/InputExcel.tsx +6 -0
  92. package/src/renderers/Form/InputFile.tsx +19 -18
  93. package/src/renderers/Form/InputText.tsx +20 -5
  94. package/src/renderers/Table/index.tsx +1 -1
  95. package/src/renderers/Tag.tsx +2 -0
  96. package/src/renderers/Wizard.tsx +2 -1
  97. package/src/store/formItem.ts +4 -1
@@ -18,6 +18,7 @@ export interface TagProps extends ThemeProps {
18
18
  disabled?: boolean;
19
19
  closeIcon?: string | React.ReactNode;
20
20
  onClose?: (e: React.MouseEvent) => void;
21
+ onClick?: (e: React.MouseEvent) => void;
21
22
  }
22
23
 
23
24
  export interface CheckableTagProps extends TagProps {
@@ -82,6 +83,12 @@ export class Tag extends React.Component<TagProps> {
82
83
  onClose?.(e);
83
84
  }
84
85
 
86
+ @autobind
87
+ handleClick(e: React.MouseEvent<HTMLElement>) {
88
+ const {onClick} = this.props;
89
+ onClick?.(e);
90
+ }
91
+
85
92
  render() {
86
93
  const {
87
94
  children,
@@ -92,7 +99,8 @@ export class Tag extends React.Component<TagProps> {
92
99
  color,
93
100
  icon,
94
101
  style,
95
- label
102
+ label,
103
+ closable
96
104
  } = this.props;
97
105
 
98
106
  const isPresetColor =
@@ -131,9 +139,12 @@ export class Tag extends React.Component<TagProps> {
131
139
  [`Tag--disabled`]: disabled
132
140
  })}
133
141
  style={tagStyle}
142
+ onClick={this.handleClick}
134
143
  >
135
- {prevIcon}
136
- {label || children}
144
+ <span className={cx('Tag-text')}>
145
+ {prevIcon}
146
+ {label || children}
147
+ </span>
137
148
  {this.renderCloseIcon()}
138
149
  </span>
139
150
  );
@@ -184,6 +184,7 @@ register('de-DE', {
184
184
  'saveFailed': 'Fehler beim Speichern',
185
185
  'saveSuccess': 'Erfolgreich gespeichert',
186
186
  'search': 'Suchen',
187
+ 'searchHistory': 'Suchverlauf',
187
188
  'searchResult': 'Suchergebnis',
188
189
  'Checkboxes.selectAll': 'Alle auswählen/abwählen',
189
190
  'Select.checkAll': 'Alle markieren',
@@ -186,6 +186,7 @@ register('en-US', {
186
186
  'saveFailed': 'Save failed',
187
187
  'saveSuccess': 'Saved successfully',
188
188
  'search': 'Search',
189
+ 'searchHistory': 'Search History',
189
190
  'searchResult': 'Search result',
190
191
  'Checkboxes.selectAll': 'Select/Deselect All',
191
192
  'Select.checkAll': 'Check all',
@@ -193,6 +193,7 @@ register('zh-CN', {
193
193
  'saveFailed': '保存失败',
194
194
  'saveSuccess': '保存成功',
195
195
  'search': '搜索',
196
+ 'searchHistory': '搜索历史',
196
197
  'searchResult': '搜索结果',
197
198
  'stop': '停止',
198
199
  'Checkboxes.selectAll': '全选/不选',
@@ -1,4 +1,6 @@
1
1
  import React from 'react';
2
+ import omit from 'lodash/omit';
3
+ import merge from 'lodash/merge';
2
4
  import {Renderer, RendererProps} from '../factory';
3
5
  import {SchemaNode, Schema, Action, PlainObject} from '../types';
4
6
  import {filter, evalExpression} from '../utils/tpl';
@@ -9,7 +11,6 @@ import QuickEdit, {SchemaQuickEdit} from './QuickEdit';
9
11
  import PopOver, {SchemaPopOver} from './PopOver';
10
12
  import {TableCell} from './Table';
11
13
  import Copyable, {SchemaCopyable} from './Copyable';
12
- import omit = require('lodash/omit');
13
14
  import {
14
15
  BaseSchema,
15
16
  SchemaClassName,
@@ -207,6 +208,11 @@ export interface CardSchema extends BaseSchema {
207
208
  * 次要说明
208
209
  */
209
210
  secondary?: SchemaTpl;
211
+
212
+ /**
213
+ * 卡片内容区的表单项label是否使用Card内部的样式,默认为true
214
+ */
215
+ useCardLabel?: boolean;
210
216
  }
211
217
  export interface CardProps
212
218
  extends RendererProps,
@@ -249,7 +255,8 @@ export class CardRenderer extends React.Component<CardProps> {
249
255
  selectable: false,
250
256
  checkable: true,
251
257
  selected: false,
252
- hideCheckToggler: false
258
+ hideCheckToggler: false,
259
+ useCardLabel: true
253
260
  };
254
261
 
255
262
  static propsList: Array<string> = [
@@ -490,10 +497,10 @@ export class CardRenderer extends React.Component<CardProps> {
490
497
  return this.renderFeild(`column/${index}`, field, index, props);
491
498
  }
492
499
 
493
- renderFeild(region: string, field: any, key: any, props: any) {
494
- const {render, classnames: cx, itemIndex} = props;
500
+ renderFeild(region: string, field: Schema, key: any, props: any) {
501
+ const {render, classnames: cx, itemIndex, useCardLabel} = props;
495
502
  const data = this.props.data;
496
- if (!isVisible(field, data)) {
503
+ if (!field || !isVisible(field, data)) {
497
504
  return;
498
505
  }
499
506
 
@@ -501,7 +508,7 @@ export class CardRenderer extends React.Component<CardProps> {
501
508
 
502
509
  return (
503
510
  <div className={cx('Card-field')} key={key}>
504
- {field && field.label ? (
511
+ {useCardLabel && field.label ? (
505
512
  <label className={cx('Card-fieldLabel', field.labelClassName)}>
506
513
  {field.label}
507
514
  </label>
@@ -510,12 +517,17 @@ export class CardRenderer extends React.Component<CardProps> {
510
517
  {
511
518
  render(
512
519
  region,
513
- {
514
- ...field,
515
- field: field,
516
- $$id,
517
- type: 'card-item-field'
518
- },
520
+ merge(
521
+ {
522
+ ...field,
523
+ field: field,
524
+ $$id,
525
+ type: 'card-item-field'
526
+ },
527
+ useCardLabel
528
+ ? {label: false, field: {...field, label: false}}
529
+ : {}
530
+ ),
519
531
  {
520
532
  className: cx('Card-fieldValue', field.className),
521
533
  rowIndex: itemIndex,
@@ -66,6 +66,12 @@ export default class ExcelControl extends React.PureComponent<
66
66
 
67
67
  ExcelJS: any;
68
68
 
69
+ componentDidUpdate(prevProps: ExcelProps) {
70
+ if (prevProps.value !== this.props.value && !this.props.value) {
71
+ this.setState({filename: ''});
72
+ }
73
+ }
74
+
69
75
  @autobind
70
76
  handleDrop(files: File[]) {
71
77
  const {allSheets, onChange, dispatchEvent, data} = this.props;
@@ -222,12 +222,12 @@ export interface FileControlSchema extends FormBaseControl {
222
222
  /**
223
223
  * 说明文档内容配置
224
224
  */
225
- documentation?: string;
225
+ documentation?: string;
226
226
 
227
- /**
227
+ /**
228
228
  * 说明文档链接配置
229
229
  */
230
- documentLink?: string;
230
+ documentLink?: string;
231
231
 
232
232
  /**
233
233
  * 是否为拖拽上传
@@ -580,14 +580,16 @@ export default class FileControl extends React.Component<FileProps, FileState> {
580
580
  file[urlField as keyof typeof file] ||
581
581
  file[valueField as keyof typeof file];
582
582
 
583
- let api =
584
- typeof downloadUrl === 'string' && !~downloadUrl.indexOf('$')
583
+ const api =
584
+ typeof downloadUrl === 'string' &&
585
+ !~downloadUrl.indexOf('$') &&
586
+ typeof fileUrl === 'string'
585
587
  ? `${downloadUrl}${fileUrl}`
586
588
  : downloadUrl
587
589
  ? downloadUrl
588
- : `${fileUrl}`;
590
+ : undefined;
589
591
 
590
- this.handleApi(api, file);
592
+ api && this.handleApi(api, file);
591
593
  }
592
594
 
593
595
  downloadTpl(e: React.MouseEvent) {
@@ -1283,7 +1285,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1283
1285
  templateUrl,
1284
1286
  drag,
1285
1287
  documentation,
1286
- documentLink,
1288
+ documentLink
1287
1289
  } = this.props;
1288
1290
  let {files, uploading, error} = this.state;
1289
1291
  const nameField = this.props.nameField || 'name';
@@ -1348,17 +1350,16 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1348
1350
  <Icon icon="cloud-upload" className="icon" />
1349
1351
  <span>
1350
1352
  {__('File.dragDrop')}
1351
- <span
1352
- className={cx('FileControl-acceptTip-click')}
1353
- >{__('File.clickUpload')}</span>
1353
+ <span className={cx('FileControl-acceptTip-click')}>
1354
+ {__('File.clickUpload')}
1355
+ </span>
1354
1356
  </span>
1355
- <div
1356
- className={cx('FileControl-acceptTip-help', 'TplField')}>
1357
- {documentLink ?
1358
- <a
1359
- href={documentLink}
1360
- onClick={e => e.stopPropagation()}
1361
- >{documentation ? documentation : __('File.helpText')}</a> : null}
1357
+ <div className={cx('FileControl-acceptTip-help', 'TplField')}>
1358
+ {documentLink ? (
1359
+ <a href={documentLink} onClick={e => e.stopPropagation()}>
1360
+ {documentation ? documentation : __('File.helpText')}
1361
+ </a>
1362
+ ) : null}
1362
1363
  </div>
1363
1364
  {maxSize ? (
1364
1365
  <div className={cx('FileControl-sizeTip')}>
@@ -96,6 +96,12 @@ export interface TextControlSchema extends FormOptionsControl {
96
96
  /** 用户输入的字符自动转大写 */
97
97
  upperCase?: boolean;
98
98
  };
99
+
100
+ /** control节点的CSS类名 */
101
+ inputControlClassName?: string;
102
+
103
+ /** 原生input标签的CSS类名 */
104
+ nativeInputClassName: string;
99
105
  }
100
106
 
101
107
  export type InputTextRendererEvent =
@@ -124,6 +130,10 @@ export interface TextProps extends OptionsControlProps {
124
130
  lowerCase?: boolean; // 用户输入的字符自动转小写
125
131
  upperCase?: boolean; // 用户输入的字符自动转大写
126
132
  };
133
+ /** control节点的CSS类名 */
134
+ inputControlClassName?: string;
135
+ /** 原生input标签的CSS类名 */
136
+ nativeInputClassName?: string;
127
137
  }
128
138
 
129
139
  export interface TextState {
@@ -580,6 +590,8 @@ export default class TextControl extends React.PureComponent<
580
590
  renderSugestMode() {
581
591
  const {
582
592
  className,
593
+ inputControlClassName,
594
+ nativeInputClassName,
583
595
  inputOnly,
584
596
  value,
585
597
  placeholder,
@@ -652,6 +664,7 @@ export default class TextControl extends React.PureComponent<
652
664
  <div
653
665
  className={cx(
654
666
  `TextControl-input TextControl-input--withAC`,
667
+ inputControlClassName,
655
668
  inputOnly ? className : '',
656
669
  {
657
670
  'is-opened': isOpen,
@@ -705,6 +718,7 @@ export default class TextControl extends React.PureComponent<
705
718
  })}
706
719
  autoComplete="off"
707
720
  size={10}
721
+ className={cx(nativeInputClassName)}
708
722
  />
709
723
  </>
710
724
 
@@ -786,6 +800,8 @@ export default class TextControl extends React.PureComponent<
786
800
  classPrefix: ns,
787
801
  classnames: cx,
788
802
  className,
803
+ inputControlClassName,
804
+ nativeInputClassName,
789
805
  inputOnly,
790
806
  value,
791
807
  placeholder,
@@ -815,6 +831,7 @@ export default class TextControl extends React.PureComponent<
815
831
  {
816
832
  [`TextControl-input--border${ucFirst(borderMode)}`]: borderMode
817
833
  },
834
+ inputControlClassName,
818
835
  inputOnly ? className : ''
819
836
  )}
820
837
  >
@@ -839,11 +856,9 @@ export default class TextControl extends React.PureComponent<
839
856
  step={step}
840
857
  onChange={this.handleNormalInputChange}
841
858
  value={this.valueToString(value)}
842
- className={cx(
843
- type === 'password' &&
844
- revealPassword &&
845
- 'TextControl-input-password'
846
- )}
859
+ className={cx(nativeInputClassName, {
860
+ 'TextControl-input-password': type === 'password' && revealPassword
861
+ })}
847
862
  />
848
863
  {clearable && !disabled && !readOnly && value ? (
849
864
  <a onClick={this.clearValue} className={`${ns}TextControl-clear`}>
@@ -1992,7 +1992,7 @@ export default class Table extends React.Component<TableProps, object> {
1992
1992
  classPrefix={ns}
1993
1993
  type={multiple ? 'checkbox' : 'radio'}
1994
1994
  checked={item.checked}
1995
- disabled={item.checkdisable}
1995
+ disabled={item.checkdisable || item.checkable}
1996
1996
  onChange={
1997
1997
  checkOnItemClick ? noop : this.handleCheck.bind(this, item)
1998
1998
  }
@@ -88,6 +88,7 @@ export class TagField extends React.Component<TagProps, object> {
88
88
  displayMode,
89
89
  color,
90
90
  className,
91
+ closable,
91
92
  data,
92
93
  style = {}
93
94
  } = this.props;
@@ -114,6 +115,7 @@ export class TagField extends React.Component<TagProps, object> {
114
115
  displayMode={displayMode}
115
116
  color={color}
116
117
  icon={icon}
118
+ closable={closable}
117
119
  style={style}
118
120
  >
119
121
  {label}
@@ -745,6 +745,7 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
745
745
  };
746
746
  },
747
747
  onFailed: async (error: any) => {
748
+ store.markSaving(false);
748
749
  const dispatcher = await this.dispatchEvent(
749
750
  'submitFail',
750
751
  createObject(this.props.data, {error})
@@ -805,7 +806,7 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
805
806
 
806
807
  // 接管里面 form 的提交,不能直接让 form 提交,因为 wizard 自己需要知道进度。
807
808
  @autobind
808
- async handleSubmit(values: object, action: Action) {
809
+ handleSubmit(values: object, action: Action) {
809
810
  const {store, steps, finishedField} = this.props;
810
811
 
811
812
  if (this.state.currentStep < steps.length) {
@@ -457,7 +457,10 @@ export const FormItemStore = StoreNode.named('FormItemStore')
457
457
  if (childFirst !== undefined) {
458
458
  return childFirst;
459
459
  }
460
- } else if (option[self.valueField || 'value'] && !option.disabled) {
460
+ } else if (
461
+ option[self.valueField || 'value'] != null &&
462
+ !option.disabled
463
+ ) {
461
464
  return option;
462
465
  }
463
466
  }