amis 1.5.4 → 1.5.6-beta.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 (231) hide show
  1. package/lib/Root.js +1 -1
  2. package/lib/Root.js.map +2 -2
  3. package/lib/RootRenderer.d.ts +1 -1
  4. package/lib/RootRenderer.js +4 -3
  5. package/lib/RootRenderer.js.map +2 -2
  6. package/lib/Schema.d.ts +1 -1
  7. package/lib/Schema.js.map +1 -1
  8. package/lib/SchemaRenderer.js +4 -4
  9. package/lib/SchemaRenderer.js.map +2 -2
  10. package/lib/components/AsideNav.d.ts +1 -1
  11. package/lib/components/AsideNav.js.map +1 -1
  12. package/lib/components/Card.d.ts +20 -20
  13. package/lib/components/CodeMirror.d.ts +26 -0
  14. package/lib/components/CodeMirror.js +104 -0
  15. package/lib/components/CodeMirror.js.map +13 -0
  16. package/lib/components/Collapse.d.ts +22 -21
  17. package/lib/components/Collapse.js +4 -6
  18. package/lib/components/Collapse.js.map +2 -2
  19. package/lib/components/CollapseGroup.d.ts +20 -20
  20. package/lib/components/CollapseGroup.js +5 -3
  21. package/lib/components/CollapseGroup.js.map +2 -2
  22. package/lib/components/ColorPicker.d.ts +85 -84
  23. package/lib/components/ColorPicker.js +15 -3
  24. package/lib/components/ColorPicker.js.map +2 -2
  25. package/lib/components/DatePicker.d.ts +84 -84
  26. package/lib/components/DatePicker.js +7 -3
  27. package/lib/components/DatePicker.js.map +2 -2
  28. package/lib/components/DateRangePicker.d.ts +85 -84
  29. package/lib/components/DateRangePicker.js +5 -3
  30. package/lib/components/DateRangePicker.js.map +2 -2
  31. package/lib/components/LocationPicker.d.ts +84 -84
  32. package/lib/components/MonthRangePicker.d.ts +85 -84
  33. package/lib/components/MonthRangePicker.js +5 -3
  34. package/lib/components/MonthRangePicker.js.map +2 -2
  35. package/lib/components/PickerContainer.d.ts +2 -1
  36. package/lib/components/PickerContainer.js +3 -3
  37. package/lib/components/PickerContainer.js.map +2 -2
  38. package/lib/components/PopUp.d.ts +93 -0
  39. package/lib/components/PopUp.js +58 -0
  40. package/lib/components/PopUp.js.map +13 -0
  41. package/lib/components/Progress.js +1 -1
  42. package/lib/components/Progress.js.map +2 -2
  43. package/lib/components/Select.d.ts +237 -237
  44. package/lib/components/Steps.d.ts +1 -0
  45. package/lib/components/Steps.js +5 -3
  46. package/lib/components/Steps.js.map +2 -2
  47. package/lib/components/Tabs.d.ts +20 -20
  48. package/lib/components/TabsTransferPicker.js +1 -1
  49. package/lib/components/TabsTransferPicker.js.map +2 -2
  50. package/lib/components/TransferPicker.d.ts +0 -1
  51. package/lib/components/TransferPicker.js +2 -15
  52. package/lib/components/TransferPicker.js.map +2 -2
  53. package/lib/components/formula/Editor.d.ts +560 -0
  54. package/lib/components/formula/Editor.js +186 -0
  55. package/lib/components/formula/Editor.js.map +13 -0
  56. package/lib/components/formula/FuncList.d.ts +67 -0
  57. package/lib/components/formula/FuncList.js +35 -0
  58. package/lib/components/formula/FuncList.js.map +13 -0
  59. package/lib/components/formula/Picker.d.ts +493 -0
  60. package/lib/components/formula/Picker.js +48 -0
  61. package/lib/components/formula/Picker.js.map +13 -0
  62. package/lib/components/formula/VariableList.d.ts +9 -0
  63. package/lib/components/formula/VariableList.js +15 -0
  64. package/lib/components/formula/VariableList.js.map +13 -0
  65. package/lib/components/formula/plugin.d.ts +18 -0
  66. package/lib/components/formula/plugin.js +136 -0
  67. package/lib/components/formula/plugin.js.map +13 -0
  68. package/lib/components/index.d.ts +2 -1
  69. package/lib/components/index.js +4 -2
  70. package/lib/components/index.js.map +2 -2
  71. package/lib/helper.css +57 -57
  72. package/lib/helper.css.map +1 -1
  73. package/lib/index.d.ts +1 -0
  74. package/lib/index.js +2 -1
  75. package/lib/index.js.map +2 -2
  76. package/lib/renderers/CRUD.d.ts +1 -1
  77. package/lib/renderers/CRUD.js +4 -3
  78. package/lib/renderers/CRUD.js.map +2 -2
  79. package/lib/renderers/Collapse.js +8 -2
  80. package/lib/renderers/Collapse.js.map +2 -2
  81. package/lib/renderers/CollapseGroup.js.map +2 -2
  82. package/lib/renderers/Dialog.d.ts +2 -2
  83. package/lib/renderers/Dialog.js +7 -7
  84. package/lib/renderers/Dialog.js.map +2 -2
  85. package/lib/renderers/Drawer.js +2 -2
  86. package/lib/renderers/Drawer.js.map +2 -2
  87. package/lib/renderers/Form/InputCity.d.ts +84 -84
  88. package/lib/renderers/Form/InputColor.d.ts +84 -84
  89. package/lib/renderers/Form/InputColor.js +2 -2
  90. package/lib/renderers/Form/InputColor.js.map +2 -2
  91. package/lib/renderers/Form/InputDate.js +2 -2
  92. package/lib/renderers/Form/InputDate.js.map +2 -2
  93. package/lib/renderers/Form/InputDateRange.js +2 -2
  94. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  95. package/lib/renderers/Form/InputFile.js +1 -1
  96. package/lib/renderers/Form/InputFile.js.map +2 -2
  97. package/lib/renderers/Form/InputFormula.d.ts +35 -0
  98. package/lib/renderers/Form/InputFormula.js +25 -0
  99. package/lib/renderers/Form/InputFormula.js.map +13 -0
  100. package/lib/renderers/Form/InputImage.js +1 -1
  101. package/lib/renderers/Form/InputImage.js.map +2 -2
  102. package/lib/renderers/Form/InputMonthRange.js +2 -2
  103. package/lib/renderers/Form/InputMonthRange.js.map +2 -2
  104. package/lib/renderers/Form/InputQuarterRange.js +2 -2
  105. package/lib/renderers/Form/InputQuarterRange.js.map +2 -2
  106. package/lib/renderers/Form/InputYearRange.js +2 -2
  107. package/lib/renderers/Form/InputYearRange.js.map +2 -2
  108. package/lib/renderers/Form/Item.d.ts +1 -1
  109. package/lib/renderers/Form/Item.js +4 -3
  110. package/lib/renderers/Form/Item.js.map +2 -2
  111. package/lib/renderers/Form/TreeSelect.d.ts +1 -0
  112. package/lib/renderers/Form/TreeSelect.js +11 -8
  113. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  114. package/lib/renderers/Form/index.d.ts +1 -1
  115. package/lib/renderers/Form/index.js +3 -2
  116. package/lib/renderers/Form/index.js.map +2 -2
  117. package/lib/renderers/Page.d.ts +3 -3
  118. package/lib/renderers/Page.js +4 -3
  119. package/lib/renderers/Page.js.map +2 -2
  120. package/lib/renderers/Steps.js +2 -2
  121. package/lib/renderers/Steps.js.map +2 -2
  122. package/lib/renderers/Wizard.d.ts +1 -1
  123. package/lib/renderers/Wizard.js +93 -36
  124. package/lib/renderers/Wizard.js.map +2 -2
  125. package/lib/store/formItem.js +11 -1
  126. package/lib/store/formItem.js.map +2 -2
  127. package/lib/themes/ang-ie11.css +261 -0
  128. package/lib/themes/ang.css +261 -0
  129. package/lib/themes/ang.css.map +1 -1
  130. package/lib/themes/antd-ie11.css +261 -0
  131. package/lib/themes/antd.css +261 -0
  132. package/lib/themes/antd.css.map +1 -1
  133. package/lib/themes/cxd-ie11.css +261 -0
  134. package/lib/themes/cxd.css +261 -0
  135. package/lib/themes/cxd.css.map +1 -1
  136. package/lib/themes/dark-ie11.css +261 -0
  137. package/lib/themes/dark.css +261 -0
  138. package/lib/themes/dark.css.map +1 -1
  139. package/lib/themes/default.css +261 -0
  140. package/lib/themes/default.css.map +1 -1
  141. package/lib/utils/api.js +2 -2
  142. package/lib/utils/api.js.map +2 -2
  143. package/lib/utils/helper.js +2 -7
  144. package/lib/utils/helper.js.map +2 -2
  145. package/package.json +5 -3
  146. package/scss/_variables.scss +1 -1
  147. package/scss/components/_formula.scss +122 -0
  148. package/scss/components/_popup.scss +123 -0
  149. package/scss/components/_steps.scss +60 -0
  150. package/scss/components/form/_color.scss +4 -0
  151. package/scss/components/form/_date-range.scss +4 -0
  152. package/scss/components/form/_date.scss +3 -0
  153. package/scss/components/form/_tree-select.scss +4 -0
  154. package/scss/helper/background/_background-color.scss +1 -1
  155. package/scss/helper/border/_border-color.scss +1 -1
  156. package/scss/helper/typography/_text-color.scss +1 -1
  157. package/scss/themes/_common.scss +2 -0
  158. package/sdk/ang-ie11.css +875 -0
  159. package/sdk/ang.css +875 -0
  160. package/sdk/antd-ie11.css +875 -0
  161. package/sdk/antd.css +875 -0
  162. package/sdk/charts.js +18 -18
  163. package/sdk/codemirror.js +14 -0
  164. package/sdk/color-picker.js +65 -65
  165. package/sdk/cropperjs.js +3 -3
  166. package/sdk/cxd-ie11.css +875 -0
  167. package/sdk/cxd.css +875 -0
  168. package/sdk/dark-ie11.css +875 -0
  169. package/sdk/dark.css +875 -0
  170. package/sdk/exceljs.js +1 -1
  171. package/sdk/helper.css +57 -57
  172. package/sdk/helper.css.map +1 -1
  173. package/sdk/markdown.js +69 -69
  174. package/sdk/papaparse.js +1 -1
  175. package/sdk/renderers/Form/CityDB.js +1 -1
  176. package/sdk/rest.js +18 -18
  177. package/sdk/rich-text.js +62 -62
  178. package/sdk/sdk-ie11.css +875 -0
  179. package/sdk/sdk.css +875 -0
  180. package/sdk/sdk.js +1315 -1207
  181. package/sdk/thirds/hls.js/hls.js +18 -18
  182. package/sdk/thirds/mpegts.js/mpegts.js +2 -2
  183. package/sdk/tinymce.js +57 -57
  184. package/src/Root.tsx +1 -0
  185. package/src/RootRenderer.tsx +3 -3
  186. package/src/Schema.ts +1 -0
  187. package/src/SchemaRenderer.tsx +4 -0
  188. package/src/components/AsideNav.tsx +1 -1
  189. package/src/components/CodeMirror.tsx +99 -0
  190. package/src/components/Collapse.tsx +21 -13
  191. package/src/components/CollapseGroup.tsx +9 -11
  192. package/src/components/ColorPicker.tsx +45 -3
  193. package/src/components/DatePicker.tsx +33 -3
  194. package/src/components/DateRangePicker.tsx +17 -3
  195. package/src/components/MonthRangePicker.tsx +18 -4
  196. package/src/components/PickerContainer.tsx +10 -6
  197. package/src/components/PopUp.tsx +133 -0
  198. package/src/components/Progress.tsx +1 -1
  199. package/src/components/Steps.tsx +8 -3
  200. package/src/components/TabsTransferPicker.tsx +1 -1
  201. package/src/components/TransferPicker.tsx +1 -11
  202. package/src/components/formula/Editor.tsx +261 -0
  203. package/src/components/formula/FuncList.tsx +82 -0
  204. package/src/components/formula/Picker.tsx +86 -0
  205. package/src/components/formula/VariableList.tsx +49 -0
  206. package/src/components/formula/plugin.ts +177 -0
  207. package/src/components/index.tsx +2 -0
  208. package/src/index.tsx +1 -0
  209. package/src/renderers/CRUD.tsx +3 -3
  210. package/src/renderers/Collapse.tsx +27 -27
  211. package/src/renderers/CollapseGroup.tsx +13 -12
  212. package/src/renderers/Dialog.tsx +8 -8
  213. package/src/renderers/Drawer.tsx +2 -2
  214. package/src/renderers/Form/InputColor.tsx +2 -3
  215. package/src/renderers/Form/InputDate.tsx +2 -0
  216. package/src/renderers/Form/InputDateRange.tsx +2 -0
  217. package/src/renderers/Form/InputFile.tsx +1 -1
  218. package/src/renderers/Form/InputFormula.tsx +75 -0
  219. package/src/renderers/Form/InputImage.tsx +1 -1
  220. package/src/renderers/Form/InputMonthRange.tsx +2 -0
  221. package/src/renderers/Form/InputQuarterRange.tsx +2 -0
  222. package/src/renderers/Form/InputYearRange.tsx +2 -0
  223. package/src/renderers/Form/Item.tsx +2 -2
  224. package/src/renderers/Form/TreeSelect.tsx +82 -63
  225. package/src/renderers/Form/index.tsx +2 -2
  226. package/src/renderers/Page.tsx +11 -10
  227. package/src/renderers/Steps.tsx +4 -2
  228. package/src/renderers/Wizard.tsx +52 -12
  229. package/src/store/formItem.ts +15 -0
  230. package/src/utils/api.ts +5 -2
  231. package/src/utils/helper.ts +5 -14
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import Overlay from '../../components/Overlay';
3
3
  import PopOver from '../../components/PopOver';
4
+ import PopUp from '../../components/PopUp';
4
5
 
5
6
  import {
6
7
  OptionsControl,
@@ -17,7 +18,7 @@ import {Api} from '../../types';
17
18
  import {isEffectiveApi} from '../../utils/api';
18
19
  import Spinner from '../../components/Spinner';
19
20
  import ResultBox from '../../components/ResultBox';
20
- import {autobind, getTreeAncestors} from '../../utils/helper';
21
+ import {autobind, getTreeAncestors, isMobile} from '../../utils/helper';
21
22
  import {findDOMNode} from 'react-dom';
22
23
  import {normalizeOptions} from '../../components/Select';
23
24
 
@@ -90,6 +91,7 @@ export interface TreeSelectProps extends OptionsControlProps {
90
91
  hideNodePathLabel?: boolean;
91
92
  enableNodePath?: boolean;
92
93
  pathSeparator?: string;
94
+ useMobileUI?: boolean;
93
95
  }
94
96
 
95
97
  export interface TreeSelectState {
@@ -502,67 +504,51 @@ export default class TreeSelectControl extends React.Component<
502
504
  : options;
503
505
 
504
506
  return (
505
- <Overlay
506
- container={popOverContainer || (() => this.container.current)}
507
- target={() => this.target}
508
- show
509
- >
510
- <PopOver
511
- classPrefix={ns}
512
- className={`${ns}TreeSelect-popover`}
513
- style={{
514
- minWidth: this.target ? this.target.offsetWidth : undefined
515
- }}
516
- onHide={this.close}
517
- overlay
518
- >
519
- <TreeSelector
520
- classPrefix={ns}
521
- onlyChildren={onlyChildren}
522
- labelField={labelField}
523
- valueField={valueField}
524
- disabled={disabled}
525
- onChange={this.handleChange}
526
- joinValues={joinValues}
527
- extractValue={extractValue}
528
- delimiter={delimiter}
529
- placeholder={__(optionsPlaceholder)}
530
- options={filtedOptions}
531
- highlightTxt={this.state.inputValue}
532
- multiple={multiple}
533
- initiallyOpen={initiallyOpen}
534
- unfoldedLevel={unfoldedLevel}
535
- withChildren={withChildren}
536
- rootLabel={__(rootLabel)}
537
- rootValue={rootValue}
538
- showIcon={showIcon}
539
- showRadio={showRadio}
540
- cascade={cascade}
541
- foldedField="collapsed"
542
- hideRoot
543
- value={value || ''}
544
- nodePath={nodePath}
545
- enableNodePath={enableNodePath}
546
- pathSeparator={pathSeparator}
547
- maxLength={maxLength}
548
- minLength={minLength}
549
- onAdd={onAdd}
550
- creatable={creatable}
551
- createTip={createTip}
552
- rootCreatable={rootCreatable}
553
- rootCreateTip={rootCreateTip}
554
- onEdit={onEdit}
555
- editable={editable}
556
- editTip={editTip}
557
- removable={removable}
558
- removeTip={removeTip}
559
- onDelete={onDelete}
560
- bultinCUD={!addControls && !editControls}
561
- onDeferLoad={deferLoad}
562
- onExpandTree={expandTreeOptions}
563
- />
564
- </PopOver>
565
- </Overlay>
507
+ <TreeSelector
508
+ classPrefix={ns}
509
+ onlyChildren={onlyChildren}
510
+ labelField={labelField}
511
+ valueField={valueField}
512
+ disabled={disabled}
513
+ onChange={this.handleChange}
514
+ joinValues={joinValues}
515
+ extractValue={extractValue}
516
+ delimiter={delimiter}
517
+ placeholder={__(optionsPlaceholder)}
518
+ options={filtedOptions}
519
+ highlightTxt={this.state.inputValue}
520
+ multiple={multiple}
521
+ initiallyOpen={initiallyOpen}
522
+ unfoldedLevel={unfoldedLevel}
523
+ withChildren={withChildren}
524
+ rootLabel={__(rootLabel)}
525
+ rootValue={rootValue}
526
+ showIcon={showIcon}
527
+ showRadio={showRadio}
528
+ cascade={cascade}
529
+ foldedField="collapsed"
530
+ hideRoot
531
+ value={value || ''}
532
+ nodePath={nodePath}
533
+ enableNodePath={enableNodePath}
534
+ pathSeparator={pathSeparator}
535
+ maxLength={maxLength}
536
+ minLength={minLength}
537
+ onAdd={onAdd}
538
+ creatable={creatable}
539
+ createTip={createTip}
540
+ rootCreatable={rootCreatable}
541
+ rootCreateTip={rootCreateTip}
542
+ onEdit={onEdit}
543
+ editable={editable}
544
+ editTip={editTip}
545
+ removable={removable}
546
+ removeTip={removeTip}
547
+ onDelete={onDelete}
548
+ bultinCUD={!addControls && !editControls}
549
+ onDeferLoad={deferLoad}
550
+ onExpandTree={expandTreeOptions}
551
+ />
566
552
  );
567
553
  }
568
554
 
@@ -581,9 +567,13 @@ export default class TreeSelectControl extends React.Component<
581
567
  autoComplete,
582
568
  selectedOptions,
583
569
  placeholder,
570
+ popOverContainer,
571
+ env,
584
572
  translate: __
585
573
  } = this.props;
586
574
 
575
+ const { isOpened } = this.state;
576
+ const { useMobileUI } = env;
587
577
  return (
588
578
  <div ref={this.container} className={cx(`TreeSelectControl`, className)}>
589
579
  <ResultBox
@@ -622,7 +612,36 @@ export default class TreeSelectControl extends React.Component<
622
612
  >
623
613
  {loading ? <Spinner size="sm" /> : undefined}
624
614
  </ResultBox>
625
- {this.state.isOpened ? this.renderOuter() : null}
615
+ { !(useMobileUI && isMobile()) && isOpened ? (
616
+ <Overlay
617
+ container={popOverContainer || (() => this.container.current)}
618
+ target={() => this.target}
619
+ show
620
+ >
621
+ <PopOver
622
+ classPrefix={ns}
623
+ className={`${ns}TreeSelect-popover`}
624
+ style={{
625
+ minWidth: this.target ? this.target.offsetWidth : undefined
626
+ }}
627
+ onHide={this.close}
628
+ overlay
629
+ >
630
+ {this.renderOuter()}
631
+ </PopOver>
632
+ </Overlay>
633
+ ) : null}
634
+ {
635
+ useMobileUI && isMobile() && (
636
+ <PopUp
637
+ className={cx(`${ns}TreeSelect-popup`)}
638
+ isShow={isOpened}
639
+ onHide={this.close}
640
+ >
641
+ {this.renderOuter()}
642
+ </PopUp>
643
+ )
644
+ }
626
645
  </div>
627
646
  );
628
647
  }
@@ -1167,9 +1167,9 @@ export default class Form extends React.Component<FormProps, object> {
1167
1167
  store.closeDialog(true);
1168
1168
  }
1169
1169
 
1170
- handleDialogClose() {
1170
+ handleDialogClose(confirmed = false) {
1171
1171
  const {store} = this.props;
1172
- store.closeDialog(false);
1172
+ store.closeDialog(confirmed);
1173
1173
  }
1174
1174
 
1175
1175
  handleDrawerConfirm(
@@ -95,7 +95,7 @@ export interface PageSchema extends BaseSchema {
95
95
  */
96
96
  asideMinWidth?: number;
97
97
 
98
- /**
98
+ /**
99
99
  * 边栏最小宽度
100
100
  */
101
101
  asideMaxWidth?: number;
@@ -471,12 +471,12 @@ export default class Page extends React.Component<PageProps> {
471
471
  return;
472
472
  }
473
473
 
474
- store.closeDialog();
474
+ store.closeDialog(true);
475
475
  }
476
476
 
477
- handleDialogClose() {
477
+ handleDialogClose(confirmed = false) {
478
478
  const {store} = this.props;
479
- store.closeDialog();
479
+ store.closeDialog(confirmed);
480
480
  }
481
481
 
482
482
  handleDrawerConfirm(values: object[], action: Action, ...args: Array<any>) {
@@ -734,11 +734,13 @@ export default class Page extends React.Component<PageProps> {
734
734
  style={styleVar}
735
735
  >
736
736
  {hasAside ? (
737
- <div className={cx(
738
- `Page-aside`,
739
- asideResizor ? 'relative' : 'Page-aside--withWidth',
740
- asideClassName
741
- )}>
737
+ <div
738
+ className={cx(
739
+ `Page-aside`,
740
+ asideResizor ? 'relative' : 'Page-aside--withWidth',
741
+ asideClassName
742
+ )}
743
+ >
742
744
  {render('aside', aside || '', {
743
745
  ...subProps,
744
746
  ...(typeof aside === 'string'
@@ -754,7 +756,6 @@ export default class Page extends React.Component<PageProps> {
754
756
  className={cx(`Page-asideResizor`)}
755
757
  ></div>
756
758
  ) : null}
757
-
758
759
  </div>
759
760
  ) : null}
760
761
 
@@ -83,9 +83,10 @@ export function StepsCmpt(props: StepsProps) {
83
83
  data,
84
84
  source,
85
85
  config,
86
- render
86
+ render,
87
+ env
87
88
  } = props;
88
-
89
+
89
90
  const stepsRow =
90
91
  (resolveVariable(source, data) as Array<StepSchema>) ||
91
92
  config ||
@@ -140,6 +141,7 @@ export function StepsCmpt(props: StepsProps) {
140
141
  className={className}
141
142
  status={status}
142
143
  mode={mode}
144
+ useMobileUI={env.useMobileUI}
143
145
  ></Steps>
144
146
  );
145
147
  }
@@ -9,7 +9,8 @@ import {
9
9
  until,
10
10
  isVisible,
11
11
  getScrollParent,
12
- autobind
12
+ autobind,
13
+ SkipOperation
13
14
  } from '../utils/helper';
14
15
  import {isApiOutdated, isEffectiveApi} from '../utils/api';
15
16
  import {IFormStore} from '../store/form';
@@ -546,8 +547,16 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
546
547
  .then(async () => {
547
548
  this.form && this.form.isValidated() && this.form.validate(true);
548
549
 
549
- if (action.feedback && isVisible(action.feedback, store.data)) {
550
- await this.openFeedback(action.feedback, store.data);
550
+ const feedback = action.feedback;
551
+ if (feedback && isVisible(feedback, store.data)) {
552
+ const confirmed = await this.openFeedback(feedback, store.data);
553
+
554
+ // 如果 feedback 配置了,取消就跳过原有逻辑。
555
+ if (feedback.skipRestOnCancel && !confirmed) {
556
+ throw new SkipOperation();
557
+ } else if (feedback.skipRestOnConfirm && confirmed) {
558
+ throw new SkipOperation();
559
+ }
551
560
  }
552
561
 
553
562
  const reidrect =
@@ -556,7 +565,11 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
556
565
 
557
566
  action.reload && this.reloadTarget(action.reload, store.data);
558
567
  })
559
- .catch(() => {});
568
+ .catch(reason => {
569
+ if (reason instanceof SkipOperation) {
570
+ return;
571
+ }
572
+ });
560
573
  } else if (action.actionType === 'reload') {
561
574
  action.target && this.reloadTarget(action.target, data);
562
575
  } else if (onAction) {
@@ -667,14 +680,29 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
667
680
  }
668
681
  }
669
682
  })
670
- .then((value: any) =>
683
+ .then(async (value: any) => {
684
+ const feedback = action.feedback;
685
+ if (feedback && isVisible(feedback, value)) {
686
+ const confirmed = await this.openFeedback(feedback, value);
687
+
688
+ // 如果 feedback 配置了,取消就跳过原有逻辑。
689
+ if (feedback.skipRestOnCancel && !confirmed) {
690
+ throw new SkipOperation();
691
+ } else if (feedback.skipRestOnConfirm && confirmed) {
692
+ throw new SkipOperation();
693
+ }
694
+ }
695
+
671
696
  this.gotoStep(
672
697
  value && typeof value.step === 'number'
673
698
  ? value.step
674
699
  : this.state.currentStep + 1
675
- )
676
- )
677
- .catch(() => {
700
+ );
701
+ })
702
+ .catch(reason => {
703
+ if (reason instanceof SkipOperation) {
704
+ return;
705
+ }
678
706
  // do nothing
679
707
  });
680
708
  } else {
@@ -715,7 +743,19 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
715
743
  );
716
744
  }
717
745
  })
718
- .then(value => {
746
+ .then(async value => {
747
+ const feedback = action.feedback;
748
+ if (feedback && isVisible(feedback, value)) {
749
+ const confirmed = await this.openFeedback(feedback, value);
750
+
751
+ // 如果 feedback 配置了,取消就跳过原有逻辑。
752
+ if (feedback.skipRestOnCancel && !confirmed) {
753
+ throw new SkipOperation();
754
+ } else if (feedback.skipRestOnConfirm && confirmed) {
755
+ throw new SkipOperation();
756
+ }
757
+ }
758
+
719
759
  this.setState({completeStep: steps.length});
720
760
  store.updateData({
721
761
  ...store.data,
@@ -771,13 +811,13 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
771
811
  store.updateData(values[0]);
772
812
  }
773
813
 
774
- store.closeDialog();
814
+ store.closeDialog(true);
775
815
  }
776
816
 
777
817
  @autobind
778
- handleDialogClose() {
818
+ handleDialogClose(confirmed = false) {
779
819
  const {store} = this.props;
780
- store.closeDialog();
820
+ store.closeDialog(confirmed);
781
821
  }
782
822
 
783
823
  renderSteps() {
@@ -712,6 +712,21 @@ export const FormItemStore = StoreNode.named('FormItemStore')
712
712
  data
713
713
  );
714
714
 
715
+ // 插入新的子节点,用于之后BaseSelection.resolveSelected查找
716
+ if (Array.isArray(self.options[0].children)) {
717
+ const children = self.options[0].children.concat();
718
+
719
+ flattenTree(self.options[0].leftOptions).forEach(item => {
720
+ if (
721
+ !findTree(self.options[0].children, node => node.ref === item.value)
722
+ ) {
723
+ children.push({ref: item.value, defer: true});
724
+ }
725
+ });
726
+
727
+ setOptions([{...self.options[0], children}], undefined, data);
728
+ }
729
+
715
730
  return json;
716
731
  });
717
732
 
package/src/utils/api.ts CHANGED
@@ -98,14 +98,17 @@ export function buildApi(
98
98
  if (~idx) {
99
99
  const hashIdx = api.url.indexOf('#');
100
100
  const params = qsparse(
101
- api.url.substring(idx + 1, ~hashIdx ? hashIdx : undefined)
101
+ api.url.substring(
102
+ idx + 1,
103
+ ~hashIdx && hashIdx > idx ? hashIdx : undefined
104
+ )
102
105
  );
103
106
  api.url =
104
107
  tokenize(api.url.substring(0, idx + 1), data, '| url_encode') +
105
108
  qsstringify(
106
109
  (api.query = dataMapping(params, data, undefined, api.convertKeyToPath))
107
110
  ) +
108
- (~hashIdx ? api.url.substring(hashIdx) : '');
111
+ (~hashIdx && hashIdx > idx ? api.url.substring(hashIdx) : '');
109
112
  } else {
110
113
  api.url = tokenize(api.url, data, '| url_encode');
111
114
  }
@@ -891,11 +891,7 @@ export function filterTree<T extends TreeItem>(
891
891
  ? filterTree(item.children, iterator, level + 1, depthFirst)
892
892
  : undefined;
893
893
 
894
- if (
895
- Array.isArray(children) &&
896
- Array.isArray(item.children) &&
897
- children.length !== item.children.length
898
- ) {
894
+ if (Array.isArray(children) && Array.isArray(item.children)) {
899
895
  item = {...item, children: children};
900
896
  }
901
897
 
@@ -915,11 +911,7 @@ export function filterTree<T extends TreeItem>(
915
911
  depthFirst
916
912
  );
917
913
 
918
- if (
919
- Array.isArray(children) &&
920
- Array.isArray(item.children) &&
921
- children.length !== item.children.length
922
- ) {
914
+ if (Array.isArray(children) && Array.isArray(item.children)) {
923
915
  item = {...item, children: children};
924
916
  }
925
917
  }
@@ -1593,13 +1585,12 @@ export function JSONTraverse(
1593
1585
  });
1594
1586
  }
1595
1587
 
1596
-
1597
1588
  export function convertDateArrayToDate(
1598
1589
  value: number[],
1599
1590
  types: string[],
1600
1591
  date: moment.Moment
1601
1592
  ): moment.Moment | null {
1602
- if (value.length === 0) return date
1593
+ if (value.length === 0) return date;
1603
1594
  for (let i = 0; i < types.length; i++) {
1604
1595
  const type = types[i];
1605
1596
  // @ts-ignore
@@ -1622,7 +1613,7 @@ export function convertDateToObject(value: moment.Moment) {
1622
1613
  export function getRange(min: number, max: number, step: number = 1) {
1623
1614
  const arr = [];
1624
1615
  for (let i = min; i <= max; i += step) {
1625
- arr.push(i);
1616
+ arr.push(i);
1626
1617
  }
1627
1618
  return arr;
1628
- };
1619
+ }