amis 1.9.1-beta.27 → 1.9.1-beta.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. package/lib/components/Select.d.ts +388 -193
  2. package/lib/components/Select.js +9 -6
  3. package/lib/components/Select.js.map +2 -2
  4. package/lib/factory.js +1 -1
  5. package/lib/factory.js.map +2 -2
  6. package/lib/index.js +1 -1
  7. package/lib/renderers/Form/InputText.js +7 -1
  8. package/lib/renderers/Form/InputText.js.map +2 -2
  9. package/lib/renderers/Form/Item.js +2 -1
  10. package/lib/renderers/Form/Item.js.map +2 -2
  11. package/lib/renderers/Form/Select.d.ts +5 -0
  12. package/lib/renderers/Form/Select.js +4 -3
  13. package/lib/renderers/Form/Select.js.map +2 -2
  14. package/lib/renderers/Steps.js +2 -1
  15. package/lib/renderers/Steps.js.map +2 -2
  16. package/lib/renderers/Table/index.d.ts +2 -0
  17. package/lib/renderers/Table/index.js +75 -30
  18. package/lib/renderers/Table/index.js.map +2 -2
  19. package/lib/themes/ang-ie11.css +8 -3
  20. package/lib/themes/ang.css +7 -0
  21. package/lib/themes/ang.css.map +1 -1
  22. package/lib/themes/antd-ie11.css +26 -21
  23. package/lib/themes/antd.css +11 -0
  24. package/lib/themes/antd.css.map +1 -1
  25. package/lib/themes/cxd-ie11.css +5 -0
  26. package/lib/themes/cxd.css +7 -2
  27. package/lib/themes/cxd.css.map +1 -1
  28. package/lib/themes/dark-ie11.css +8 -3
  29. package/lib/themes/dark.css +7 -0
  30. package/lib/themes/dark.css.map +1 -1
  31. package/lib/themes/default-ie11.css +5 -0
  32. package/lib/themes/default.css +7 -2
  33. package/lib/themes/default.css.map +1 -1
  34. package/lib/utils/helper.js +2 -1
  35. package/lib/utils/helper.js.map +2 -2
  36. package/package.json +1 -1
  37. package/schema.json +12 -7
  38. package/scss/_properties.scss +5 -0
  39. package/scss/components/_table.scss +9 -1
  40. package/scss/themes/_antd-variables.scss +6 -0
  41. package/scss/themes/_cxd-variables.scss +0 -2
  42. package/sdk/ang-ie11.css +10 -3
  43. package/sdk/ang.css +9 -0
  44. package/sdk/antd-ie11.css +28 -21
  45. package/sdk/antd.css +13 -0
  46. package/sdk/barcode.js +51 -51
  47. package/sdk/charts.js +14 -14
  48. package/sdk/codemirror.js +7 -7
  49. package/sdk/color-picker.js +65 -65
  50. package/sdk/cropperjs.js +2 -2
  51. package/sdk/cxd-ie11.css +7 -0
  52. package/sdk/cxd.css +9 -2
  53. package/sdk/dark-ie11.css +10 -3
  54. package/sdk/dark.css +9 -0
  55. package/sdk/exceljs.js +1 -1
  56. package/sdk/markdown.js +69 -69
  57. package/sdk/papaparse.js +1 -1
  58. package/sdk/renderers/Form/CityDB.js +1 -1
  59. package/sdk/rest.js +16 -16
  60. package/sdk/rich-text.js +62 -62
  61. package/sdk/sdk-ie11.css +7 -0
  62. package/sdk/sdk.css +9 -2
  63. package/sdk/sdk.js +1337 -1337
  64. package/sdk/thirds/hls.js/hls.js +1 -1
  65. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  66. package/sdk/tinymce.js +57 -57
  67. package/src/components/Select.tsx +10 -5
  68. package/src/factory.tsx +1 -1
  69. package/src/renderers/Form/InputText.tsx +9 -1
  70. package/src/renderers/Form/Item.tsx +2 -1
  71. package/src/renderers/Form/Select.tsx +10 -1
  72. package/src/renderers/Steps.tsx +7 -2
  73. package/src/renderers/Table/index.tsx +82 -30
  74. package/src/utils/helper.ts +2 -1
@@ -296,6 +296,7 @@ const DownshiftChangeTypes = Downshift.stateChangeTypes;
296
296
  interface SelectProps extends OptionProps, ThemeProps, LocaleProps {
297
297
  className?: string;
298
298
  popoverClassName?: string;
299
+ showInvalidMatch?: boolean;
299
300
  creatable: boolean;
300
301
  createBtnLabel: string;
301
302
  multiple: boolean;
@@ -381,6 +382,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
381
382
  multiple: false,
382
383
  clearable: true,
383
384
  creatable: false,
385
+ showInvalidMatch: false,
384
386
  createBtnLabel: 'Select.createLabel',
385
387
  searchPromptText: 'Select.searchPromptText',
386
388
  loadingPlaceholder: 'loading',
@@ -742,6 +744,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
742
744
  disabled,
743
745
  maxTagCount,
744
746
  overflowTagPopover,
747
+ showInvalidMatch,
745
748
  translate: __
746
749
  } = this.props;
747
750
  const selection = this.state.selection;
@@ -794,7 +797,9 @@ export class Select extends React.Component<SelectProps, SelectState> {
794
797
  key={itemIndex}
795
798
  className={cx('Select-value', {
796
799
  'is-disabled': disabled,
797
- 'is-invalid': item.__unmatched
800
+ 'is-invalid': showInvalidMatch
801
+ ? item.__unmatched
802
+ : false
798
803
  })}
799
804
  >
800
805
  <span className={cx('Select-valueLabel')}>
@@ -818,7 +823,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
818
823
  <div
819
824
  className={cx('Select-value', {
820
825
  'is-disabled': disabled,
821
- 'is-invalid': item.__unmatched
826
+ 'is-invalid': showInvalidMatch ? item.__unmatched : false
822
827
  })}
823
828
  onClick={(e: React.MouseEvent) =>
824
829
  e.stopPropagation()
@@ -842,7 +847,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
842
847
  <div
843
848
  className={cx('Select-value', {
844
849
  'is-disabled': disabled,
845
- 'is-invalid': item.__unmatched
850
+ 'is-invalid': showInvalidMatch ? item.__unmatched : false
846
851
  })}
847
852
  >
848
853
  <span className={cx('Select-valueLabel')}>
@@ -868,7 +873,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
868
873
  <div
869
874
  className={cx('Select-value', {
870
875
  'is-disabled': disabled,
871
- 'is-invalid': item.__unmatched
876
+ 'is-invalid': showInvalidMatch ? item.__unmatched : false
872
877
  })}
873
878
  key={index}
874
879
  >
@@ -891,7 +896,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
891
896
  <div
892
897
  className={cx('Select-value', {
893
898
  'is-disabled': disabled,
894
- 'is-invalid': item.__unmatched
899
+ 'is-invalid': showInvalidMatch ? item.__unmatched : false
895
900
  })}
896
901
  >
897
902
  <span className={cx('Select-valueLabel')}>
package/src/factory.tsx CHANGED
@@ -503,7 +503,7 @@ export function updateEnv(options: Partial<RenderOptions>, session = 'global') {
503
503
 
504
504
  let store = stores[options.session || session];
505
505
  if (!store) {
506
- store = RendererStore.create({}, options);
506
+ store = RendererStore.create({}, {...defaultOptions, ...options});
507
507
  stores[options.session || session] = store;
508
508
  } else {
509
509
  const env = getEnv(store);
@@ -220,6 +220,10 @@ export default class TextControl extends React.PureComponent<
220
220
  : this.valueToString(props.value)
221
221
  });
222
222
  }
223
+ if (prevProps.revealPassword !== props.revealPassword) {
224
+ /** 隐藏按钮的同时将密码设置为隐藏态 */
225
+ !props.revealPassword && this.setState({revealPassword: false});
226
+ }
223
227
  }
224
228
 
225
229
  componentWillUnmount() {
@@ -835,7 +839,11 @@ export default class TextControl extends React.PureComponent<
835
839
  step={step}
836
840
  onChange={this.handleNormalInputChange}
837
841
  value={this.valueToString(value)}
838
- className={cx(type === 'password' && revealPassword && 'TextControl-input-password')}
842
+ className={cx(
843
+ type === 'password' &&
844
+ revealPassword &&
845
+ 'TextControl-input-password'
846
+ )}
839
847
  />
840
848
  {clearable && !disabled && !readOnly && value ? (
841
849
  <a onClick={this.clearValue} className={`${ns}TextControl-clear`}>
@@ -1184,7 +1184,8 @@ export const detectProps = [
1184
1184
  'minLength',
1185
1185
  'maxLength',
1186
1186
  'embed',
1187
- 'displayMode'
1187
+ 'displayMode',
1188
+ 'revealPassword'
1188
1189
  ];
1189
1190
 
1190
1191
  export function asFormItem(config: Omit<FormItemConfig, 'component'>) {
@@ -39,6 +39,11 @@ export interface SelectControlSchema extends FormOptionsControl {
39
39
  */
40
40
  menuTpl?: string;
41
41
 
42
+ /**
43
+ * 当在value值未匹配到当前options中的选项时,是否value值对应文本飘红显示
44
+ */
45
+ showInvalidMatch: boolean;
46
+
42
47
  /**
43
48
  * 边框模式,全边框,还是半边框,或者没边框。
44
49
  */
@@ -133,6 +138,7 @@ export interface SelectControlSchema extends FormOptionsControl {
133
138
  export interface SelectProps extends OptionsControlProps {
134
139
  autoComplete?: Api;
135
140
  searchable?: boolean;
141
+ showInvalidMatch?: boolean;
136
142
  defaultOpen?: boolean;
137
143
  useMobileUI?: boolean;
138
144
  maxTagCount?: number;
@@ -150,7 +156,8 @@ export default class SelectControl extends React.Component<SelectProps, any> {
150
156
  static defaultProps: Partial<SelectProps> = {
151
157
  clearable: false,
152
158
  searchable: false,
153
- multiple: false
159
+ multiple: false,
160
+ showInvalidMatch: false
154
161
  };
155
162
 
156
163
  input: any;
@@ -397,6 +404,7 @@ export default class SelectControl extends React.Component<SelectProps, any> {
397
404
  let {
398
405
  autoComplete,
399
406
  searchable,
407
+ showInvalidMatch,
400
408
  options,
401
409
  className,
402
410
  loading,
@@ -452,6 +460,7 @@ export default class SelectControl extends React.Component<SelectProps, any> {
452
460
  loadOptions={
453
461
  isEffectiveApi(autoComplete) ? this.lazyloadRemote : undefined
454
462
  }
463
+ showInvalidMatch={showInvalidMatch}
455
464
  creatable={creatable}
456
465
  searchable={searchable || !!autoComplete}
457
466
  onChange={this.changeValue}
@@ -101,8 +101,13 @@ export function StepsCmpt(props: StepsProps) {
101
101
  useMobileUI
102
102
  } = props;
103
103
 
104
- const stepsRow =
105
- (resolveVariableAndFilter(source, data, '| raw') as Array<StepSchema>) ||
104
+ let sourceResult: Array<StepSchema> = resolveVariableAndFilter(
105
+ source,
106
+ data,
107
+ '| raw'
108
+ ) as Array<StepSchema>;
109
+ const stepsRow: Array<StepSchema> =
110
+ (Array.isArray(sourceResult) ? sourceResult : undefined) ||
106
111
  config ||
107
112
  steps ||
108
113
  [];
@@ -462,6 +462,7 @@ export default class Table extends React.Component<TableProps, object> {
462
462
  affixedTable?: HTMLTableElement;
463
463
  parentNode?: HTMLElement | Window;
464
464
  lastScrollLeft: number = -1;
465
+ lastScrollTop: number = 0;
465
466
  totalWidth: number = 0;
466
467
  totalHeight: number = 0;
467
468
  outterWidth: number = 0;
@@ -511,7 +512,6 @@ export default class Table extends React.Component<TableProps, object> {
511
512
  this.handleMouseLeave = this.handleMouseLeave.bind(this);
512
513
  this.subFormRef = this.subFormRef.bind(this);
513
514
  this.handleColumnToggle = this.handleColumnToggle.bind(this);
514
-
515
515
  this.updateAutoFillHeight = this.updateAutoFillHeight.bind(this);
516
516
 
517
517
  const {
@@ -659,6 +659,13 @@ export default class Table extends React.Component<TableProps, object> {
659
659
  const footToolbar = table.querySelector(
660
660
  `.${ns}Table-footToolbar`
661
661
  ) as HTMLElement;
662
+ const leftFixedColumns = table.querySelector(
663
+ `.${ns}Table-fixedLeft`
664
+ ) as HTMLElement;
665
+ const rightFixedColumns = table.querySelector(
666
+ `.${ns}Table-fixedRight`
667
+ ) as HTMLElement;
668
+
662
669
  if (!tableContent) {
663
670
  return;
664
671
  }
@@ -691,13 +698,24 @@ export default class Table extends React.Component<TableProps, object> {
691
698
  parentNode = parentNode.parentElement;
692
699
  }
693
700
 
694
- tableContent.style.height = `${
701
+ const tableContentHeight = `${
695
702
  viewportHeight -
696
703
  tableContentTop -
697
704
  tableContentWrapMarginButtom -
698
705
  footToolbarHeight -
699
706
  allParentPaddingButtom
700
707
  }px`;
708
+
709
+ tableContent.style.height = tableContentHeight;
710
+ /**autoFillHeight开启后固定列会溢出Table高度,需要同步一下 */
711
+ if (leftFixedColumns) {
712
+ leftFixedColumns.style.height = tableContentHeight;
713
+ leftFixedColumns.style.overflowY = 'auto';
714
+ }
715
+ if (rightFixedColumns) {
716
+ rightFixedColumns.style.height = tableContentHeight;
717
+ rightFixedColumns.style.overflowY = 'auto';
718
+ }
701
719
  }
702
720
 
703
721
  componentDidUpdate(prevProps: TableProps) {
@@ -1171,39 +1189,66 @@ export default class Table extends React.Component<TableProps, object> {
1171
1189
  handleOutterScroll() {
1172
1190
  const outter = (this.table as HTMLElement).parentNode as HTMLElement;
1173
1191
  const scrollLeft = outter.scrollLeft;
1174
-
1175
- if (scrollLeft === this.lastScrollLeft) {
1176
- return;
1177
- }
1178
-
1179
- this.lastScrollLeft = scrollLeft;
1180
- let leading = scrollLeft === 0;
1181
- let trailing = Math.ceil(scrollLeft) + this.outterWidth >= this.totalWidth;
1182
- // console.log(scrollLeft, store.outterWidth, store.totalWidth, (scrollLeft + store.outterWidth) === store.totalWidth);
1183
- // store.setLeading(leading);
1184
- // store.setTrailing(trailing);
1185
-
1186
1192
  const ns = this.props.classPrefix;
1187
1193
  const dom = findDOMNode(this) as HTMLElement;
1188
-
1189
1194
  const fixedLeft = dom.querySelectorAll(`.${ns}Table-fixedLeft`);
1190
- if (fixedLeft && fixedLeft.length) {
1191
- for (let i = 0, len = fixedLeft.length; i < len; i++) {
1192
- let node = fixedLeft[i];
1193
- leading ? node.classList.remove('in') : node.classList.add('in');
1195
+ const fixedRight = dom.querySelectorAll(`.${ns}Table-fixedRight`);
1196
+
1197
+ if (scrollLeft !== this.lastScrollLeft) {
1198
+ this.lastScrollLeft = scrollLeft;
1199
+ let leading = scrollLeft === 0;
1200
+ let trailing =
1201
+ Math.ceil(scrollLeft) + this.outterWidth >= this.totalWidth;
1202
+ // console.log(scrollLeft, store.outterWidth, store.totalWidth, (scrollLeft + store.outterWidth) === store.totalWidth);
1203
+ // store.setLeading(leading);
1204
+ // store.setTrailing(trailing);
1205
+
1206
+ if (fixedLeft && fixedLeft.length) {
1207
+ for (let i = 0, len = fixedLeft.length; i < len; i++) {
1208
+ let node = fixedLeft[i];
1209
+ leading ? node.classList.remove('in') : node.classList.add('in');
1210
+ }
1211
+ }
1212
+
1213
+ if (fixedRight && fixedRight.length) {
1214
+ for (let i = 0, len = fixedRight.length; i < len; i++) {
1215
+ let node = fixedRight[i];
1216
+ trailing ? node.classList.remove('in') : node.classList.add('in');
1217
+ }
1218
+ }
1219
+ const table = this.affixedTable;
1220
+ if (table) {
1221
+ table.style.cssText += `transform: translateX(-${scrollLeft}px)`;
1194
1222
  }
1195
1223
  }
1196
1224
 
1197
- const fixedRight = dom.querySelectorAll(`.${ns}Table-fixedRight`);
1198
- if (fixedRight && fixedRight.length) {
1199
- for (let i = 0, len = fixedRight.length; i < len; i++) {
1200
- let node = fixedRight[i];
1201
- trailing ? node.classList.remove('in') : node.classList.add('in');
1225
+ /* 同步固定列内容的垂直滚动 */
1226
+ if (outter.scrollTop !== this.lastScrollTop) {
1227
+ this.lastScrollTop = outter.scrollTop;
1228
+
1229
+ if (fixedLeft && fixedLeft.length) {
1230
+ forEach(fixedLeft, node => node.scrollTo({top: outter.scrollTop}));
1231
+ }
1232
+
1233
+ if (fixedRight && fixedRight.length) {
1234
+ forEach(fixedRight, node => node.scrollTo({top: outter.scrollTop}));
1202
1235
  }
1203
1236
  }
1204
- const table = this.affixedTable;
1205
- if (table) {
1206
- table.style.cssText += `transform: translateX(-${scrollLeft}px)`;
1237
+ }
1238
+
1239
+ @autobind
1240
+ handleFixedColumnsScroll(event: React.UIEvent<any>) {
1241
+ /** table内容区当前Top */
1242
+ const currentScrollTop = this.lastScrollTop;
1243
+ /** 固定列的新Top */
1244
+ const fixedScrollTop = event.currentTarget.scrollTop;
1245
+
1246
+ if (currentScrollTop !== fixedScrollTop) {
1247
+ this.lastScrollTop = fixedScrollTop;
1248
+ const tableContentDom = (this.table as HTMLElement)
1249
+ .parentNode as HTMLElement;
1250
+
1251
+ tableContentDom.scrollTo({top: fixedScrollTop});
1207
1252
  }
1208
1253
  }
1209
1254
 
@@ -1498,7 +1543,8 @@ export default class Table extends React.Component<TableProps, object> {
1498
1543
  @autobind
1499
1544
  handleColResizeMouseMove(e: MouseEvent) {
1500
1545
  const moveX = e.clientX - this.lineStartX;
1501
- this.resizeLine.style.left = this.resizeLineLeft + moveX + 'px';
1546
+ // 光标right为-4px,列宽改变时会自动跟随,不需要单独处理位置
1547
+ // this.resizeLine.style.left = this.resizeLineLeft + moveX + 'px';
1502
1548
  this.targetTh.style.width = this.targetThWidth + moveX + 'px';
1503
1549
  }
1504
1550
 
@@ -2758,8 +2804,11 @@ export default class Table extends React.Component<TableProps, object> {
2758
2804
  onMouseLeave={this.handleMouseLeave}
2759
2805
  >
2760
2806
  <div
2761
- className={cx('Table-fixedLeft')}
2807
+ className={cx('Table-fixedLeft', {
2808
+ 'Table-fixedLeft--autoFillHeight': autoFillHeight
2809
+ })}
2762
2810
  onMouseMove={this.handleMouseMove}
2811
+ onScroll={this.handleFixedColumnsScroll}
2763
2812
  >
2764
2813
  {affixColumns !== false && store.leftFixedColumns.length
2765
2814
  ? this.renderFixedColumns(
@@ -2771,8 +2820,11 @@ export default class Table extends React.Component<TableProps, object> {
2771
2820
  : null}
2772
2821
  </div>
2773
2822
  <div
2774
- className={cx('Table-fixedRight')}
2823
+ className={cx('Table-fixedRight', {
2824
+ 'Table-fixedLeft--autoFillHeight': autoFillHeight
2825
+ })}
2775
2826
  onMouseMove={this.handleMouseMove}
2827
+ onScroll={this.handleFixedColumnsScroll}
2776
2828
  >
2777
2829
  {affixColumns !== false && store.rightFixedColumns.length
2778
2830
  ? this.renderFixedColumns(
@@ -1217,7 +1217,8 @@ export function qsparse(
1217
1217
  options: any = {
1218
1218
  arrayFormat: 'indices',
1219
1219
  encodeValuesOnly: true,
1220
- depth: 1000 // 默认是 5, 所以condition-builder只要来个条件组就会导致报错
1220
+ depth: 1000, // 默认是 5, 所以condition-builder只要来个条件组就会导致报错
1221
+ arrayLimit: 1000 /** array元素数量超出限制,会被自动转化为object格式,默认值1000 */
1221
1222
  }
1222
1223
  ) {
1223
1224
  return qs.parse(data, options);