amis 1.8.0-beta.0 → 1.8.0-beta.3
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/lib/SchemaRenderer.js +19 -3
- package/lib/SchemaRenderer.js.map +2 -2
- package/lib/WithRootStore.d.ts +18 -0
- package/lib/WithStore.js +2 -1
- package/lib/WithStore.js.map +2 -2
- package/lib/actions/CmptAction.js +14 -3
- package/lib/actions/CmptAction.js.map +2 -2
- package/lib/components/BarCode.js +1 -1
- package/lib/components/BarCode.js.map +2 -2
- package/lib/components/DatePicker.d.ts +3 -0
- package/lib/components/DatePicker.js +56 -11
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +92 -84
- package/lib/components/DateRangePicker.js +198 -5
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/MonthRangePicker.d.ts +84 -84
- package/lib/components/Progress.js +12 -9
- package/lib/components/Progress.js.map +2 -2
- package/lib/components/Radios.d.ts +1 -1
- package/lib/components/Radios.js +3 -5
- package/lib/components/Radios.js.map +2 -2
- package/lib/components/Range.d.ts +2 -2
- package/lib/components/Range.js +24 -11
- package/lib/components/Range.js.map +2 -2
- package/lib/components/Steps.d.ts +6 -0
- package/lib/components/Steps.js +13 -9
- package/lib/components/Steps.js.map +2 -2
- package/lib/components/calendar/Calendar.js +16 -12
- package/lib/components/calendar/Calendar.js.map +2 -2
- package/lib/components/calendar/YearsView.js +3 -3
- package/lib/components/calendar/YearsView.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +3 -1
- package/lib/components/formula/Editor.js +20 -2
- package/lib/components/formula/Editor.js.map +2 -2
- package/lib/components/formula/Picker.d.ts +5 -0
- package/lib/components/formula/Picker.js +19 -4
- package/lib/components/formula/Picker.js.map +2 -2
- package/lib/factory.d.ts +4 -0
- package/lib/factory.js +8 -2
- package/lib/factory.js.map +2 -2
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +13 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +13 -0
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +13 -0
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.d.ts +2 -0
- package/lib/renderers/Action.js +23 -5
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/Carousel.d.ts +1 -0
- package/lib/renderers/Carousel.js +13 -1
- package/lib/renderers/Carousel.js.map +2 -2
- package/lib/renderers/Dialog.d.ts +4 -0
- package/lib/renderers/Dialog.js +4 -3
- package/lib/renderers/Dialog.js.map +2 -2
- package/lib/renderers/DropDownButton.d.ts +2 -0
- package/lib/renderers/DropDownButton.js +13 -4
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Form/Checkboxes.d.ts +2 -2
- package/lib/renderers/Form/Checkboxes.js +2 -6
- package/lib/renderers/Form/Checkboxes.js.map +2 -2
- package/lib/renderers/Form/Combo.js +3 -2
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +3 -0
- package/lib/renderers/Form/InputCity.js +44 -2
- package/lib/renderers/Form/InputCity.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.d.ts +5 -0
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +6 -3
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputFormula.d.ts +4 -0
- package/lib/renderers/Form/InputFormula.js +2 -2
- package/lib/renderers/Form/InputFormula.js.map +2 -2
- package/lib/renderers/Form/InputImage.js +6 -3
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputRange.js +13 -14
- package/lib/renderers/Form/InputRange.js.map +2 -2
- package/lib/renderers/Form/InputTable.js +4 -2
- package/lib/renderers/Form/InputTable.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +11 -6
- package/lib/renderers/Form/index.js +1 -1
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/Form/wrapControl.d.ts +9 -0
- package/lib/renderers/Form/wrapControl.js +1 -1
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/Nav.js +2 -2
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Page.js +2 -3
- package/lib/renderers/Page.js.map +2 -2
- package/lib/renderers/Progress.d.ts +1 -1
- package/lib/renderers/Progress.js +1 -1
- package/lib/renderers/Progress.js.map +2 -2
- package/lib/renderers/Steps.d.ts +8 -0
- package/lib/renderers/Steps.js +2 -2
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/TableRow.js +1 -1
- package/lib/renderers/Table/TableRow.js.map +2 -2
- package/lib/renderers/Table/index.js +7 -3
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/Tabs.d.ts +4 -0
- package/lib/renderers/Tabs.js +22 -6
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Wizard.d.ts +6 -3
- package/lib/renderers/Wizard.js +257 -152
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/store/index.d.ts +5 -0
- package/lib/store/index.js +14 -0
- package/lib/store/index.js.map +2 -2
- package/lib/store/table.js +4 -4
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +194 -23
- package/lib/themes/ang.css +193 -22
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +194 -23
- package/lib/themes/antd.css +193 -22
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +194 -23
- package/lib/themes/cxd.css +193 -22
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +194 -23
- package/lib/themes/dark.css +193 -22
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +194 -23
- package/lib/themes/default.css +193 -22
- package/lib/themes/default.css.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/columnsSplit.d.ts +1 -0
- package/lib/utils/columnsSplit.js +40 -0
- package/lib/utils/columnsSplit.js.map +13 -0
- package/lib/utils/debug.d.ts +1 -1
- package/lib/utils/debug.js +16 -22
- package/lib/utils/debug.js.map +2 -2
- package/package.json +1 -1
- package/schema.json +181 -30
- package/scss/_properties.scss +2 -2
- package/scss/components/_barcode.scss +1 -1
- package/scss/components/_carousel.scss +1 -0
- package/scss/components/_debug.scss +3 -3
- package/scss/components/_formula.scss +18 -0
- package/scss/components/_progress.scss +3 -8
- package/scss/components/_steps.scss +199 -8
- package/scss/components/form/_date.scss +14 -0
- package/scss/components/form/_editor.scss +2 -1
- package/sdk/ang-ie11.css +234 -25
- package/sdk/ang.css +233 -24
- package/sdk/antd-ie11.css +234 -25
- package/sdk/antd.css +233 -24
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +234 -25
- package/sdk/cxd.css +233 -24
- package/sdk/dark-ie11.css +234 -25
- package/sdk/dark.css +233 -24
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +13 -0
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +17 -17
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +234 -25
- package/sdk/sdk.css +233 -24
- package/sdk/sdk.js +1290 -1288
- 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/SchemaRenderer.tsx +32 -14
- package/src/WithStore.tsx +3 -1
- package/src/actions/CmptAction.ts +18 -0
- package/src/components/BarCode.tsx +2 -2
- package/src/components/DatePicker.tsx +77 -22
- package/src/components/DateRangePicker.tsx +198 -4
- package/src/components/Progress.tsx +8 -12
- package/src/components/Radios.tsx +6 -17
- package/src/components/Range.tsx +26 -12
- package/src/components/Steps.tsx +28 -27
- package/src/components/calendar/Calendar.tsx +17 -12
- package/src/components/calendar/YearsView.tsx +3 -4
- package/src/components/formula/Editor.tsx +34 -3
- package/src/components/formula/Picker.tsx +28 -1
- package/src/factory.tsx +15 -2
- package/src/locale/de-DE.ts +13 -0
- package/src/locale/en-US.ts +13 -0
- package/src/locale/zh-CN.ts +13 -0
- package/src/renderers/Action.tsx +22 -1
- package/src/renderers/Carousel.tsx +8 -0
- package/src/renderers/Dialog.tsx +17 -3
- package/src/renderers/DropDownButton.tsx +14 -3
- package/src/renderers/Form/Checkboxes.tsx +5 -18
- package/src/renderers/Form/Combo.tsx +2 -3
- package/src/renderers/Form/InputCity.tsx +33 -4
- package/src/renderers/Form/InputDateRange.tsx +8 -1
- package/src/renderers/Form/InputFile.tsx +7 -3
- package/src/renderers/Form/InputFormula.tsx +7 -0
- package/src/renderers/Form/InputImage.tsx +7 -3
- package/src/renderers/Form/InputRange.tsx +18 -16
- package/src/renderers/Form/InputTable.tsx +6 -2
- package/src/renderers/Form/index.tsx +1 -1
- package/src/renderers/Form/wrapControl.tsx +1 -1
- package/src/renderers/Nav.tsx +1 -1
- package/src/renderers/Page.tsx +1 -2
- package/src/renderers/Progress.tsx +2 -2
- package/src/renderers/Steps.tsx +14 -0
- package/src/renderers/Table/TableRow.tsx +1 -1
- package/src/renderers/Table/index.tsx +11 -2
- package/src/renderers/Tabs.tsx +75 -28
- package/src/renderers/Wizard.tsx +154 -93
- package/src/store/index.ts +20 -0
- package/src/store/table.ts +4 -4
- package/src/types.ts +3 -1
- package/src/utils/columnsSplit.tsx +57 -0
- package/src/utils/debug.tsx +17 -24
package/src/renderers/Wizard.tsx
CHANGED
@@ -253,7 +253,8 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
253
253
|
}
|
254
254
|
})
|
255
255
|
.then(value => {
|
256
|
-
|
256
|
+
this.handleInitEvent(store.data)
|
257
|
+
|
257
258
|
const state = {
|
258
259
|
currentStep:
|
259
260
|
typeof this.props.startStep === 'string'
|
@@ -291,7 +292,7 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
291
292
|
? parseInt(tokenize(this.props.startStep, this.props.data))
|
292
293
|
: 1
|
293
294
|
},
|
294
|
-
() =>
|
295
|
+
() => this.handleInitEvent(store.data)
|
295
296
|
);
|
296
297
|
}
|
297
298
|
|
@@ -336,6 +337,19 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
336
337
|
this.unSensor && this.unSensor();
|
337
338
|
}
|
338
339
|
|
340
|
+
async dispatchEvent(action: string, value?: object) {
|
341
|
+
const {dispatchEvent, data} = this.props;
|
342
|
+
|
343
|
+
const rendererEvent = await dispatchEvent(action, createObject(data, value ? {value} : {}));
|
344
|
+
|
345
|
+
return rendererEvent?.prevented ?? false;
|
346
|
+
}
|
347
|
+
|
348
|
+
async handleInitEvent(data: any) {
|
349
|
+
const {onInit} = this.props;
|
350
|
+
(await this.dispatchEvent('inited', data)) && onInit && onInit(data);
|
351
|
+
}
|
352
|
+
|
339
353
|
@autobind
|
340
354
|
affixDetect() {
|
341
355
|
if (
|
@@ -364,11 +378,15 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
364
378
|
affixed ? affixDom.classList.add('in') : affixDom.classList.remove('in');
|
365
379
|
}
|
366
380
|
|
367
|
-
gotoStep(index: number) {
|
381
|
+
async gotoStep(index: number) {
|
368
382
|
const steps = this.props.steps || [];
|
369
383
|
index = Math.max(Math.min(steps.length, index), 1);
|
370
384
|
|
371
385
|
if (index != this.state.currentStep) {
|
386
|
+
if (await this.dispatchEvent('stepChange')) {
|
387
|
+
return
|
388
|
+
}
|
389
|
+
|
372
390
|
this.setState({
|
373
391
|
currentStep: index,
|
374
392
|
completeStep: Math.max(this.state.completeStep, index - 1)
|
@@ -517,9 +535,9 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
517
535
|
throwErrors: boolean = false,
|
518
536
|
delegate?: IScopedContext
|
519
537
|
) {
|
520
|
-
const {onAction, store, env} = this.props;
|
538
|
+
const {onAction, store, env, steps} = this.props;
|
521
539
|
|
522
|
-
if (action.actionType === 'next' || action.type === 'submit') {
|
540
|
+
if (action.actionType === 'next' || action.type === 'submit' || action.actionType === 'step-submit') {
|
523
541
|
this.form.doAction(
|
524
542
|
{
|
525
543
|
...action,
|
@@ -572,6 +590,14 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
572
590
|
});
|
573
591
|
} else if (action.actionType === 'reload') {
|
574
592
|
action.target && this.reloadTarget(action.target, data);
|
593
|
+
} else if (action.actionType === 'goto-step') {
|
594
|
+
const targetStep = (data as any).step;
|
595
|
+
|
596
|
+
if (targetStep !== undefined && targetStep <= steps.length && targetStep >= 0) {
|
597
|
+
this.gotoStep((data as any).step);
|
598
|
+
}
|
599
|
+
} else if (action.actionType === 'submit') {
|
600
|
+
this.finalSubmit()
|
575
601
|
} else if (onAction) {
|
576
602
|
onAction(e, action, data, throwErrors, delegate || this.context);
|
577
603
|
}
|
@@ -601,9 +627,17 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
601
627
|
}
|
602
628
|
|
603
629
|
@autobind
|
604
|
-
handleChange(values: object) {
|
630
|
+
async handleChange(values: object) {
|
605
631
|
const {store} = this.props;
|
606
632
|
|
633
|
+
const previous = store.data;
|
634
|
+
const final = {...previous, ...values};
|
635
|
+
|
636
|
+
if (await this.dispatchEvent('change', final)) {
|
637
|
+
return;
|
638
|
+
}
|
639
|
+
|
640
|
+
|
607
641
|
store.updateData(values);
|
608
642
|
}
|
609
643
|
|
@@ -630,9 +664,7 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
630
664
|
store.updateData(reseted);
|
631
665
|
}
|
632
666
|
|
633
|
-
|
634
|
-
@autobind
|
635
|
-
handleSubmit(values: object, action: Action) {
|
667
|
+
async finalSubmit(values: object = {}, action: Action = {type: 'submit'}) {
|
636
668
|
const {
|
637
669
|
store,
|
638
670
|
steps,
|
@@ -646,10 +678,118 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
646
678
|
onFinished
|
647
679
|
} = this.props;
|
648
680
|
|
681
|
+
if (await this.dispatchEvent('finished', store.data)) {
|
682
|
+
return;
|
683
|
+
}
|
684
|
+
|
649
685
|
const step = steps[this.state.currentStep - 1];
|
650
686
|
store.updateData(values);
|
651
687
|
|
688
|
+
|
689
|
+
// 最后一步
|
690
|
+
if (target) {
|
691
|
+
this.submitToTarget(target, store.data);
|
692
|
+
this.setState({completeStep: steps.length});
|
693
|
+
} else if (action.api || step.api || api) {
|
694
|
+
let finnalAsyncApi = action.asyncApi || step.asyncApi || asyncApi;
|
695
|
+
|
696
|
+
isEffectiveApi(finnalAsyncApi, store.data) &&
|
697
|
+
store.updateData({
|
698
|
+
[finishedField || 'finished']: false
|
699
|
+
});
|
700
|
+
|
701
|
+
const formStore = this.form
|
702
|
+
? (this.form.props.store as IFormStore)
|
703
|
+
: store;
|
704
|
+
store.markSaving(true);
|
705
|
+
|
706
|
+
formStore
|
707
|
+
.saveRemote(action.api || step.api || api!, store.data, {
|
708
|
+
onSuccess: () => {
|
709
|
+
this.dispatchEvent('submitSucc', store.data);
|
710
|
+
|
711
|
+
if (
|
712
|
+
!isEffectiveApi(finnalAsyncApi, store.data) ||
|
713
|
+
store.data[finishedField || 'finished']
|
714
|
+
) {
|
715
|
+
return;
|
716
|
+
}
|
717
|
+
|
718
|
+
return until(
|
719
|
+
() => store.checkRemote(finnalAsyncApi as Api, store.data),
|
720
|
+
(ret: any) => ret && ret[finishedField || 'finished'],
|
721
|
+
cancel => (this.asyncCancel = cancel)
|
722
|
+
);
|
723
|
+
},
|
724
|
+
onFailed: json => this.dispatchEvent('submitFail', json)
|
725
|
+
})
|
726
|
+
.then(async value => {
|
727
|
+
const feedback = action.feedback;
|
728
|
+
if (feedback && isVisible(feedback, value)) {
|
729
|
+
const confirmed = await this.openFeedback(feedback, value);
|
730
|
+
|
731
|
+
// 如果 feedback 配置了,取消就跳过原有逻辑。
|
732
|
+
if (feedback.skipRestOnCancel && !confirmed) {
|
733
|
+
throw new SkipOperation();
|
734
|
+
} else if (feedback.skipRestOnConfirm && confirmed) {
|
735
|
+
throw new SkipOperation();
|
736
|
+
}
|
737
|
+
}
|
738
|
+
|
739
|
+
this.setState({completeStep: steps.length});
|
740
|
+
store.updateData({
|
741
|
+
...store.data,
|
742
|
+
...value
|
743
|
+
});
|
744
|
+
store.markSaving(false);
|
745
|
+
|
746
|
+
if (value && typeof value.step === 'number') {
|
747
|
+
this.gotoStep(value.step);
|
748
|
+
} else if (onFinished && onFinished(value, action) === false) {
|
749
|
+
// 如果是 false 后面的操作就不执行
|
750
|
+
return value;
|
751
|
+
}
|
752
|
+
|
753
|
+
const finalRedirect =
|
754
|
+
(action.redirect || step.redirect || redirect) &&
|
755
|
+
filter(action.redirect || step.redirect || redirect, store.data);
|
756
|
+
|
757
|
+
if (finalRedirect) {
|
758
|
+
env.jumpTo(finalRedirect, action);
|
759
|
+
} else if (action.reload || step.reload || reload) {
|
760
|
+
this.reloadTarget(
|
761
|
+
action.reload || step.reload || reload!,
|
762
|
+
store.data
|
763
|
+
);
|
764
|
+
}
|
765
|
+
|
766
|
+
return value;
|
767
|
+
})
|
768
|
+
.catch(error => {
|
769
|
+
this.dispatchEvent('submitFail', error)
|
770
|
+
store.markSaving(false);
|
771
|
+
console.error(error);
|
772
|
+
});
|
773
|
+
} else {
|
774
|
+
onFinished && onFinished(store.data, action);
|
775
|
+
this.setState({completeStep: steps.length});
|
776
|
+
}
|
777
|
+
}
|
778
|
+
|
779
|
+
// 接管里面 form 的提交,不能直接让 form 提交,因为 wizard 自己需要知道进度。
|
780
|
+
@autobind
|
781
|
+
async handleSubmit(values: object, action: Action) {
|
782
|
+
const {
|
783
|
+
store,
|
784
|
+
steps,
|
785
|
+
finishedField
|
786
|
+
} = this.props;
|
787
|
+
|
788
|
+
|
652
789
|
if (this.state.currentStep < steps.length) {
|
790
|
+
const step = steps[this.state.currentStep - 1];
|
791
|
+
store.updateData(values);
|
792
|
+
|
653
793
|
let finnalAsyncApi = action.asyncApi || step.asyncApi;
|
654
794
|
|
655
795
|
isEffectiveApi(finnalAsyncApi, store.data) &&
|
@@ -661,6 +801,8 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
661
801
|
store
|
662
802
|
.saveRemote(action.api || step.api!, store.data, {
|
663
803
|
onSuccess: () => {
|
804
|
+
this.dispatchEvent('stepSubmitSucc', store.data);
|
805
|
+
|
664
806
|
if (
|
665
807
|
!isEffectiveApi(finnalAsyncApi, store.data) ||
|
666
808
|
store.data[finishedField || 'finished']
|
@@ -675,6 +817,7 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
675
817
|
);
|
676
818
|
},
|
677
819
|
onFailed: json => {
|
820
|
+
this.dispatchEvent('stepSubmitFail', json);
|
678
821
|
if (json.status === 422 && json.errors && this.form) {
|
679
822
|
this.form.props.store.setFormItemErrors(json.errors);
|
680
823
|
}
|
@@ -700,6 +843,7 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
700
843
|
);
|
701
844
|
})
|
702
845
|
.catch(reason => {
|
846
|
+
this.dispatchEvent('stepSubmitFail', reason);
|
703
847
|
if (reason instanceof SkipOperation) {
|
704
848
|
return;
|
705
849
|
}
|
@@ -709,90 +853,7 @@ export default class Wizard extends React.Component<WizardProps, WizardState> {
|
|
709
853
|
this.gotoStep(this.state.currentStep + 1);
|
710
854
|
}
|
711
855
|
} else {
|
712
|
-
|
713
|
-
if (target) {
|
714
|
-
this.submitToTarget(target, store.data);
|
715
|
-
this.setState({completeStep: steps.length});
|
716
|
-
} else if (action.api || step.api || api) {
|
717
|
-
let finnalAsyncApi = action.asyncApi || step.asyncApi || asyncApi;
|
718
|
-
|
719
|
-
isEffectiveApi(finnalAsyncApi, store.data) &&
|
720
|
-
store.updateData({
|
721
|
-
[finishedField || 'finished']: false
|
722
|
-
});
|
723
|
-
|
724
|
-
const formStore = this.form
|
725
|
-
? (this.form.props.store as IFormStore)
|
726
|
-
: store;
|
727
|
-
store.markSaving(true);
|
728
|
-
|
729
|
-
formStore
|
730
|
-
.saveRemote(action.api || step.api || api!, store.data, {
|
731
|
-
onSuccess: () => {
|
732
|
-
if (
|
733
|
-
!isEffectiveApi(finnalAsyncApi, store.data) ||
|
734
|
-
store.data[finishedField || 'finished']
|
735
|
-
) {
|
736
|
-
return;
|
737
|
-
}
|
738
|
-
|
739
|
-
return until(
|
740
|
-
() => store.checkRemote(finnalAsyncApi as Api, store.data),
|
741
|
-
(ret: any) => ret && ret[finishedField || 'finished'],
|
742
|
-
cancel => (this.asyncCancel = cancel)
|
743
|
-
);
|
744
|
-
}
|
745
|
-
})
|
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
|
-
|
759
|
-
this.setState({completeStep: steps.length});
|
760
|
-
store.updateData({
|
761
|
-
...store.data,
|
762
|
-
...value
|
763
|
-
});
|
764
|
-
store.markSaving(false);
|
765
|
-
|
766
|
-
if (value && typeof value.step === 'number') {
|
767
|
-
this.gotoStep(value.step);
|
768
|
-
} else if (onFinished && onFinished(value, action) === false) {
|
769
|
-
// 如果是 false 后面的操作就不执行
|
770
|
-
return value;
|
771
|
-
}
|
772
|
-
|
773
|
-
const finalRedirect =
|
774
|
-
(action.redirect || step.redirect || redirect) &&
|
775
|
-
filter(action.redirect || step.redirect || redirect, store.data);
|
776
|
-
|
777
|
-
if (finalRedirect) {
|
778
|
-
env.jumpTo(finalRedirect, action);
|
779
|
-
} else if (action.reload || step.reload || reload) {
|
780
|
-
this.reloadTarget(
|
781
|
-
action.reload || step.reload || reload!,
|
782
|
-
store.data
|
783
|
-
);
|
784
|
-
}
|
785
|
-
|
786
|
-
return value;
|
787
|
-
})
|
788
|
-
.catch(e => {
|
789
|
-
store.markSaving(false);
|
790
|
-
console.error(e);
|
791
|
-
});
|
792
|
-
} else {
|
793
|
-
onFinished && onFinished(store.data, action);
|
794
|
-
this.setState({completeStep: steps.length});
|
795
|
-
}
|
856
|
+
this.finalSubmit(values, action);
|
796
857
|
}
|
797
858
|
|
798
859
|
return false;
|
package/src/store/index.ts
CHANGED
@@ -44,6 +44,10 @@ export const RendererStore = types
|
|
44
44
|
.model('RendererStore', {
|
45
45
|
storeType: 'RendererStore'
|
46
46
|
})
|
47
|
+
.props({
|
48
|
+
visibleState: types.optional(types.frozen(), {}),
|
49
|
+
disableState: types.optional(types.frozen(), {})
|
50
|
+
})
|
47
51
|
.views(self => ({
|
48
52
|
get fetcher() {
|
49
53
|
return getEnv(self).fetcher;
|
@@ -91,6 +95,22 @@ export const RendererStore = types
|
|
91
95
|
removeStore(store: IStoreNode) {
|
92
96
|
// store.dispose();
|
93
97
|
removeStore(store);
|
98
|
+
},
|
99
|
+
|
100
|
+
setVisible(id: string, value: boolean) {
|
101
|
+
const state = {
|
102
|
+
...self.visibleState,
|
103
|
+
[id]: value
|
104
|
+
};
|
105
|
+
self.visibleState = state;
|
106
|
+
},
|
107
|
+
|
108
|
+
setDisable(id: string, value: boolean) {
|
109
|
+
const state = {
|
110
|
+
...self.disableState,
|
111
|
+
[id]: value
|
112
|
+
};
|
113
|
+
self.disableState = state;
|
94
114
|
}
|
95
115
|
}));
|
96
116
|
|
package/src/store/table.ts
CHANGED
@@ -152,7 +152,7 @@ export const Row = types
|
|
152
152
|
},
|
153
153
|
|
154
154
|
get expanded(): boolean {
|
155
|
-
return !this.collapsed
|
155
|
+
return !this.collapsed;
|
156
156
|
},
|
157
157
|
|
158
158
|
get moved() {
|
@@ -899,12 +899,12 @@ export const TableStore = iRendererStore
|
|
899
899
|
: {
|
900
900
|
item
|
901
901
|
};
|
902
|
-
const id = item.
|
902
|
+
const id = item.__id ?? guid();
|
903
903
|
|
904
904
|
return {
|
905
905
|
// id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
|
906
906
|
id: String(id),
|
907
|
-
parentId,
|
907
|
+
parentId: String(parentId),
|
908
908
|
key: String(`${pindex}-${depth}-${index}`),
|
909
909
|
path: `${path}${index}`,
|
910
910
|
depth: depth,
|
@@ -941,7 +941,7 @@ export const TableStore = iRendererStore
|
|
941
941
|
|
942
942
|
let arr: Array<SRow> = rows.map((item, index) => {
|
943
943
|
let id = String(
|
944
|
-
getEntryId ? getEntryId(item, index) : item.
|
944
|
+
getEntryId ? getEntryId(item, index) : item.__id ?? guid()
|
945
945
|
);
|
946
946
|
return {
|
947
947
|
// id: getEntryId ? getEntryId(item, key) : String(item && (item as any)[self.primaryField] || `${key}-1-${key}`),
|
package/src/types.ts
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
/**
|
2
|
+
* columnsCount 支持数字和数组两种格式
|
3
|
+
*/
|
4
|
+
import React from 'react';
|
5
|
+
import chunk from 'lodash/chunk';
|
6
|
+
|
7
|
+
export function columnsSplit(
|
8
|
+
body: any[],
|
9
|
+
cx: any,
|
10
|
+
columnsCount?: number | number[]
|
11
|
+
) {
|
12
|
+
if (Array.isArray(columnsCount) && columnsCount.length) {
|
13
|
+
let bodyIndex = 0;
|
14
|
+
const bodyList: JSX.Element[] = [];
|
15
|
+
const maxSize = Math.max(Math.round(12 / Math.max(...columnsCount)), 1);
|
16
|
+
let cellClassName = `Grid-col--sm${maxSize}`;
|
17
|
+
columnsCount.forEach((columnSize, groupIndex) => {
|
18
|
+
if (columnSize) {
|
19
|
+
bodyList.push(
|
20
|
+
<div className={cx('Grid')} key={groupIndex}>
|
21
|
+
{Array.from({length: columnSize}).map((_, index) => {
|
22
|
+
if (bodyIndex + index < body.length) {
|
23
|
+
// 避免溢出
|
24
|
+
return (
|
25
|
+
<div key={index} className={cx(cellClassName)}>
|
26
|
+
{body[bodyIndex + index]}
|
27
|
+
</div>
|
28
|
+
);
|
29
|
+
} else {
|
30
|
+
return null;
|
31
|
+
}
|
32
|
+
})}
|
33
|
+
</div>
|
34
|
+
);
|
35
|
+
bodyIndex = bodyIndex + columnSize;
|
36
|
+
}
|
37
|
+
});
|
38
|
+
|
39
|
+
body = bodyList;
|
40
|
+
} else if (typeof columnsCount === 'number' && columnsCount > 1) {
|
41
|
+
let weight = 12 / (columnsCount as number);
|
42
|
+
let cellClassName = `Grid-col--sm${
|
43
|
+
weight === Math.round(weight) ? weight : ''
|
44
|
+
}`;
|
45
|
+
body = chunk(body, columnsCount).map((group, groupIndex) => (
|
46
|
+
<div className={cx('Grid')} key={groupIndex}>
|
47
|
+
{Array.from({length: columnsCount as number}).map((_, index) => (
|
48
|
+
<div key={index} className={cx(cellClassName)}>
|
49
|
+
{group[index]}
|
50
|
+
</div>
|
51
|
+
))}
|
52
|
+
</div>
|
53
|
+
));
|
54
|
+
}
|
55
|
+
|
56
|
+
return body;
|
57
|
+
}
|
package/src/utils/debug.tsx
CHANGED
@@ -182,6 +182,7 @@ const AMISDebug = observer(({store}: {store: AMISDebugStore}) => {
|
|
182
182
|
>
|
183
183
|
<div
|
184
184
|
className="AMISDebug-toggle"
|
185
|
+
title="open debug"
|
185
186
|
onClick={() => {
|
186
187
|
store.isExpanded = true;
|
187
188
|
}}
|
@@ -284,24 +285,6 @@ const AMISDebug = observer(({store}: {store: AMISDebugStore}) => {
|
|
284
285
|
);
|
285
286
|
});
|
286
287
|
|
287
|
-
export let enableAMISDebug = false;
|
288
|
-
|
289
|
-
// 开启 debug 有两种方法,一个是设置 enableAMISDebug 全局变量,另一个是通过 amisDebug=1 query
|
290
|
-
if (
|
291
|
-
(window as any).enableAMISDebug ||
|
292
|
-
location.search.indexOf('amisDebug=1') !== -1
|
293
|
-
) {
|
294
|
-
enableAMISDebug = true;
|
295
|
-
// 页面只有一个
|
296
|
-
if (!(window as any).amisDebugElement) {
|
297
|
-
const amisDebugElement = document.createElement('div');
|
298
|
-
document.body.appendChild(amisDebugElement);
|
299
|
-
const element = <AMISDebug store={store} />;
|
300
|
-
render(element, amisDebugElement);
|
301
|
-
(window as any).amisDebugElement = true;
|
302
|
-
}
|
303
|
-
}
|
304
|
-
|
305
288
|
/**
|
306
289
|
* 鼠标移动到某个组件的效果
|
307
290
|
*/
|
@@ -365,7 +348,20 @@ autorun(() => {
|
|
365
348
|
}
|
366
349
|
});
|
367
350
|
|
368
|
-
|
351
|
+
// 页面中只能有一个实例
|
352
|
+
let isEnabled = false;
|
353
|
+
|
354
|
+
export function enableDebug() {
|
355
|
+
if (isEnabled) {
|
356
|
+
return;
|
357
|
+
}
|
358
|
+
isEnabled = true;
|
359
|
+
|
360
|
+
const amisDebugElement = document.createElement('div');
|
361
|
+
document.body.appendChild(amisDebugElement);
|
362
|
+
const element = <AMISDebug store={store} />;
|
363
|
+
render(element, amisDebugElement);
|
364
|
+
|
369
365
|
document.body.appendChild(amisHoverBox);
|
370
366
|
document.body.appendChild(amisActiveBox);
|
371
367
|
document.addEventListener('mousemove', handleMouseMove);
|
@@ -378,9 +374,6 @@ interface DebugWrapperProps {
|
|
378
374
|
|
379
375
|
export class DebugWrapper extends Component<DebugWrapperProps> {
|
380
376
|
componentDidMount() {
|
381
|
-
if (!enableAMISDebug) {
|
382
|
-
return;
|
383
|
-
}
|
384
377
|
const root = findDOMNode(this) as HTMLElement;
|
385
378
|
if (!root) {
|
386
379
|
return;
|
@@ -407,7 +400,7 @@ type Category = 'api' | 'event';
|
|
407
400
|
* @param ext 扩展信息
|
408
401
|
*/
|
409
402
|
export function debug(cat: Category, msg: string, ext?: object) {
|
410
|
-
if (!
|
403
|
+
if (!isEnabled) {
|
411
404
|
return;
|
412
405
|
}
|
413
406
|
const log = {
|
@@ -426,7 +419,7 @@ export function debug(cat: Category, msg: string, ext?: object) {
|
|
426
419
|
* @param ext 扩展信息
|
427
420
|
*/
|
428
421
|
export function warning(cat: Category, msg: string, ext?: object) {
|
429
|
-
if (!
|
422
|
+
if (!isEnabled) {
|
430
423
|
return;
|
431
424
|
}
|
432
425
|
store.logs.push({
|