amis 1.9.0-beta.13 → 1.9.0-beta.14

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 (102) hide show
  1. package/lib/actions/AjaxAction.d.ts +8 -5
  2. package/lib/actions/AjaxAction.js +27 -21
  3. package/lib/actions/AjaxAction.js.map +2 -2
  4. package/lib/actions/BroadcastAction.js +1 -1
  5. package/lib/actions/BroadcastAction.js.map +2 -2
  6. package/lib/actions/CmptAction.js +7 -9
  7. package/lib/actions/CmptAction.js.map +2 -2
  8. package/lib/actions/CopyAction.d.ts +5 -2
  9. package/lib/actions/CopyAction.js +8 -6
  10. package/lib/actions/CopyAction.js.map +2 -2
  11. package/lib/actions/DialogAction.d.ts +9 -3
  12. package/lib/actions/DialogAction.js +6 -6
  13. package/lib/actions/DialogAction.js.map +2 -2
  14. package/lib/actions/EmailAction.d.ts +8 -5
  15. package/lib/actions/EmailAction.js +4 -5
  16. package/lib/actions/EmailAction.js.map +2 -2
  17. package/lib/actions/LinkAction.d.ts +17 -11
  18. package/lib/actions/LinkAction.js +6 -5
  19. package/lib/actions/LinkAction.js.map +2 -2
  20. package/lib/actions/LoopAction.d.ts +4 -1
  21. package/lib/actions/LoopAction.js +22 -20
  22. package/lib/actions/LoopAction.js.map +2 -2
  23. package/lib/actions/PageAction.d.ts +4 -1
  24. package/lib/actions/PageAction.js +3 -2
  25. package/lib/actions/PageAction.js.map +2 -2
  26. package/lib/actions/ToastAction.js +6 -6
  27. package/lib/actions/ToastAction.js.map +2 -2
  28. package/lib/index.js +1 -1
  29. package/lib/renderers/Action.js +0 -2
  30. package/lib/renderers/Action.js.map +2 -2
  31. package/lib/renderers/Form/Combo.js +22 -3
  32. package/lib/renderers/Form/Combo.js.map +2 -2
  33. package/lib/renderers/Form/InputTree.js +1 -1
  34. package/lib/renderers/Form/InputTree.js.map +2 -2
  35. package/lib/renderers/Wizard.js +3 -3
  36. package/lib/renderers/Wizard.js.map +2 -2
  37. package/lib/schemaExtend.js +11 -24
  38. package/lib/schemaExtend.js.map +2 -2
  39. package/lib/store/table.js +1 -1
  40. package/lib/store/table.js.map +2 -2
  41. package/lib/themes/ang-ie11.css +30 -34
  42. package/lib/themes/ang.css +31 -34
  43. package/lib/themes/ang.css.map +1 -1
  44. package/lib/themes/antd-ie11.css +30 -34
  45. package/lib/themes/antd.css +31 -34
  46. package/lib/themes/antd.css.map +1 -1
  47. package/lib/themes/cxd-ie11.css +30 -34
  48. package/lib/themes/cxd.css +31 -34
  49. package/lib/themes/cxd.css.map +1 -1
  50. package/lib/themes/dark-ie11.css +30 -34
  51. package/lib/themes/dark.css +31 -34
  52. package/lib/themes/dark.css.map +1 -1
  53. package/lib/themes/default-ie11.css +30 -34
  54. package/lib/themes/default.css +31 -34
  55. package/lib/themes/default.css.map +1 -1
  56. package/lib/utils/handleAction.js +1 -1
  57. package/lib/utils/handleAction.js.map +2 -2
  58. package/package.json +2 -2
  59. package/scss/_properties.scss +1 -0
  60. package/scss/components/_button.scss +37 -39
  61. package/sdk/ang-ie11.css +38 -39
  62. package/sdk/ang.css +39 -39
  63. package/sdk/antd-ie11.css +38 -39
  64. package/sdk/antd.css +39 -39
  65. package/sdk/barcode.js +51 -51
  66. package/sdk/charts.js +14 -14
  67. package/sdk/codemirror.js +7 -7
  68. package/sdk/color-picker.js +65 -65
  69. package/sdk/cropperjs.js +2 -2
  70. package/sdk/cxd-ie11.css +38 -39
  71. package/sdk/cxd.css +39 -39
  72. package/sdk/dark-ie11.css +38 -39
  73. package/sdk/dark.css +39 -39
  74. package/sdk/exceljs.js +1 -1
  75. package/sdk/markdown.js +69 -69
  76. package/sdk/papaparse.js +1 -1
  77. package/sdk/renderers/Form/CityDB.js +1 -1
  78. package/sdk/rest.js +16 -16
  79. package/sdk/rich-text.js +62 -62
  80. package/sdk/sdk-ie11.css +38 -39
  81. package/sdk/sdk.css +39 -39
  82. package/sdk/sdk.js +1248 -1248
  83. package/sdk/thirds/hls.js/hls.js +1 -1
  84. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  85. package/sdk/tinymce.js +57 -57
  86. package/src/actions/AjaxAction.ts +31 -22
  87. package/src/actions/BroadcastAction.ts +1 -1
  88. package/src/actions/CmptAction.ts +2 -3
  89. package/src/actions/CopyAction.ts +12 -6
  90. package/src/actions/DialogAction.ts +11 -5
  91. package/src/actions/EmailAction.ts +10 -10
  92. package/src/actions/LinkAction.ts +31 -14
  93. package/src/actions/LoopAction.ts +11 -6
  94. package/src/actions/PageAction.ts +5 -2
  95. package/src/actions/ToastAction.ts +9 -2
  96. package/src/renderers/Action.tsx +1 -1
  97. package/src/renderers/Form/Combo.tsx +19 -3
  98. package/src/renderers/Form/InputTree.tsx +1 -1
  99. package/src/renderers/Wizard.tsx +3 -3
  100. package/src/schemaExtend.ts +12 -23
  101. package/src/store/table.ts +1 -1
  102. package/src/utils/handleAction.ts +1 -1
@@ -16,56 +16,58 @@ var LoopAction = /** @class */ (function () {
16
16
  function LoopAction() {
17
17
  }
18
18
  LoopAction.prototype.run = function (action, renderer, event, mergeData) {
19
- var _a;
19
+ var _a, _b;
20
20
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
21
- var loopData, protoData, _i, loopData_1, data, _b, _c, subAction;
22
- return (0, tslib_1.__generator)(this, function (_d) {
23
- switch (_d.label) {
21
+ var loopName, loopData, protoData, _i, loopData_1, data, _c, _d, subAction;
22
+ return (0, tslib_1.__generator)(this, function (_e) {
23
+ switch (_e.label) {
24
24
  case 0:
25
- if (typeof action.loopName !== 'string') {
26
- console.warn('loopName 必须是字符串类型');
25
+ loopName = (_a = action.args) === null || _a === void 0 ? void 0 : _a.loopName;
26
+ if (typeof loopName !== 'string') {
27
+ console.error('loopName 必须是字符串类型');
27
28
  return [2 /*return*/];
28
29
  }
29
- loopData = (0, tpl_builtin_1.resolveVariable)(action.loopName, mergeData) || [];
30
+ loopData = (0, tpl_builtin_1.resolveVariable)(loopName, mergeData) || [];
30
31
  if (!!loopData) return [3 /*break*/, 1];
31
- console.warn("\u6CA1\u6709\u627E\u5230\u6570\u636E " + action.loopName);
32
+ console.error("\u6CA1\u6709\u627E\u5230\u6570\u636E " + loopName);
32
33
  return [3 /*break*/, 10];
33
34
  case 1:
34
35
  if (!!Array.isArray(loopData)) return [3 /*break*/, 2];
35
- console.warn(action.loopName + " \u6570\u636E\u4E0D\u662F\u6570\u7EC4");
36
+ console.error(loopName + " \u6570\u636E\u4E0D\u662F\u6570\u7EC4");
36
37
  return [3 /*break*/, 10];
37
38
  case 2:
38
- if (!((_a = action.children) === null || _a === void 0 ? void 0 : _a.length)) return [3 /*break*/, 10];
39
+ if (!((_b = action.children) === null || _b === void 0 ? void 0 : _b.length)) return [3 /*break*/, 10];
39
40
  protoData = event.data;
40
41
  _i = 0, loopData_1 = loopData;
41
- _d.label = 3;
42
+ _e.label = 3;
42
43
  case 3:
43
44
  if (!(_i < loopData_1.length)) return [3 /*break*/, 9];
44
45
  data = loopData_1[_i];
45
46
  renderer.loopStatus = Action_1.LoopStatus.NORMAL;
46
47
  // 追加逻辑处理中的数据,事件数据优先,用完还要还原
47
48
  event.setData((0, helper_1.createObject)(event.data, data));
48
- _b = 0, _c = action.children;
49
- _d.label = 4;
49
+ _c = 0, _d = action.children;
50
+ _e.label = 4;
50
51
  case 4:
51
- if (!(_b < _c.length)) return [3 /*break*/, 7];
52
- subAction = _c[_b];
52
+ if (!(_c < _d.length)) return [3 /*break*/, 7];
53
+ subAction = _d[_c];
53
54
  // @ts-ignore
54
55
  if (renderer.loopStatus === Action_1.LoopStatus.CONTINUE) {
55
56
  return [3 /*break*/, 6];
56
57
  }
57
58
  return [4 /*yield*/, (0, Action_1.runActions)(subAction, renderer, event)];
58
59
  case 5:
59
- _d.sent();
60
+ _e.sent();
60
61
  // @ts-ignore
61
62
  if (renderer.loopStatus === Action_1.LoopStatus.BREAK || event.stoped) {
62
63
  // 还原事件数据
63
64
  event.setData(protoData);
65
+ event.stopPropagation();
64
66
  return [3 /*break*/, 7];
65
67
  }
66
- _d.label = 6;
68
+ _e.label = 6;
67
69
  case 6:
68
- _b++;
70
+ _c++;
69
71
  return [3 /*break*/, 4];
70
72
  case 7:
71
73
  if (event.stoped) {
@@ -73,14 +75,14 @@ var LoopAction = /** @class */ (function () {
73
75
  event.setData(protoData);
74
76
  return [3 /*break*/, 9];
75
77
  }
76
- _d.label = 8;
78
+ _e.label = 8;
77
79
  case 8:
78
80
  _i++;
79
81
  return [3 /*break*/, 3];
80
82
  case 9:
81
83
  renderer.loopStatus = Action_1.LoopStatus.NORMAL;
82
84
  event.setData(protoData);
83
- _d.label = 10;
85
+ _e.label = 10;
84
86
  case 10: return [2 /*return*/];
85
87
  }
86
88
  });
@@ -6,8 +6,8 @@
6
6
  "/src/actions/LoopAction.ts"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;;AACA,0CAA6C;AAC7C,mCASkB;AAClB,oDAAqD;AAMrD;;;;;;GAMG;AACH;IAAA;IAsDA,CAAC;IArDO,wBAAG,GAAT,UACE,MAAmB,EACnB,QAAyB,EACzB,KAAyB,EACzB,SAAc;;;;;;;wBAEd,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;4BACvC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;4BAClC,sBAAO;yBACR;wBAEK,QAAQ,GAAG,IAAA,6BAAe,EAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;6BAG/D,CAAC,QAAQ,EAAT,wBAAS;wBACX,OAAO,CAAC,IAAI,CAAC,0CAAU,MAAM,CAAC,QAAU,CAAC,CAAC;;;6BACjC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAxB,wBAAwB;wBACjC,OAAO,CAAC,IAAI,CAAI,MAAM,CAAC,QAAQ,0CAAS,CAAC,CAAC;;;6BACjC,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,MAAM,CAAA,EAAvB,yBAAuB;wBAE1B,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;8BAEF,EAAR,qBAAQ;;;6BAAR,CAAA,sBAAQ,CAAA;wBAAhB,IAAI;wBACb,QAAQ,CAAC,UAAU,GAAG,mBAAU,CAAC,MAAM,CAAC;wBACxC,2BAA2B;wBAC3B,KAAK,CAAC,OAAO,CAAC,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;8BAEP,EAAf,KAAA,MAAM,CAAC,QAAQ;;;6BAAf,CAAA,cAAe,CAAA;wBAA5B,SAAS;wBAClB,aAAa;wBACb,IAAI,QAAQ,CAAC,UAAU,KAAK,mBAAU,CAAC,QAAQ,EAAE;4BAC/C,wBAAS;yBACV;wBACD,qBAAM,IAAA,mBAAU,EAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAA;;wBAA5C,SAA4C,CAAC;wBAE7C,aAAa;wBACb,IAAI,QAAQ,CAAC,UAAU,KAAK,mBAAU,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;4BAC5D,SAAS;4BACT,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BACzB,wBAAM;yBACP;;;wBAZqB,IAAe,CAAA;;;wBAevC,IAAI,KAAK,CAAC,MAAM,EAAE;4BAChB,SAAS;4BACT,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BACzB,wBAAM;yBACP;;;wBAxBgB,IAAQ,CAAA;;;wBA2B3B,QAAQ,CAAC,UAAU,GAAG,mBAAU,CAAC,MAAM,CAAC;wBACxC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;;;;;KAE5B;IACH,iBAAC;AAAD,CAAC,AAtDD,IAsDC;AAtDY,gCAAU;AAwDvB,IAAA,uBAAc,EAAC,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC",
9
+ "mappings": ";;;;AACA,0CAA6C;AAC7C,mCASkB;AAClB,oDAAqD;AASrD;;;;;;GAMG;AACH;IAAA;IAwDA,CAAC;IAvDO,wBAAG,GAAT,UACE,MAAmB,EACnB,QAAyB,EACzB,KAAyB,EACzB,SAAc;;;;;;;wBAER,QAAQ,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,QAAQ,CAAC;wBACvC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;4BAChC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;4BACnC,sBAAO;yBACR;wBAEK,QAAQ,GAAG,IAAA,6BAAe,EAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;6BAGxD,CAAC,QAAQ,EAAT,wBAAS;wBACX,OAAO,CAAC,KAAK,CAAC,0CAAU,QAAU,CAAC,CAAC;;;6BAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAxB,wBAAwB;wBACjC,OAAO,CAAC,KAAK,CAAI,QAAQ,0CAAS,CAAC,CAAC;;;6BAC3B,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,MAAM,CAAA,EAAvB,yBAAuB;wBAE1B,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;8BAEF,EAAR,qBAAQ;;;6BAAR,CAAA,sBAAQ,CAAA;wBAAhB,IAAI;wBACb,QAAQ,CAAC,UAAU,GAAG,mBAAU,CAAC,MAAM,CAAC;wBACxC,2BAA2B;wBAC3B,KAAK,CAAC,OAAO,CAAC,IAAA,qBAAY,EAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;8BAEP,EAAf,KAAA,MAAM,CAAC,QAAQ;;;6BAAf,CAAA,cAAe,CAAA;wBAA5B,SAAS;wBAClB,aAAa;wBACb,IAAI,QAAQ,CAAC,UAAU,KAAK,mBAAU,CAAC,QAAQ,EAAE;4BAC/C,wBAAS;yBACV;wBACD,qBAAM,IAAA,mBAAU,EAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAA;;wBAA5C,SAA4C,CAAC;wBAE7C,aAAa;wBACb,IAAI,QAAQ,CAAC,UAAU,KAAK,mBAAU,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;4BAC5D,SAAS;4BACT,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BACzB,KAAK,CAAC,eAAe,EAAE,CAAC;4BACxB,wBAAM;yBACP;;;wBAbqB,IAAe,CAAA;;;wBAgBvC,IAAI,KAAK,CAAC,MAAM,EAAE;4BAChB,SAAS;4BACT,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BACzB,wBAAM;yBACP;;;wBAzBgB,IAAQ,CAAA;;;wBA4B3B,QAAQ,CAAC,UAAU,GAAG,mBAAU,CAAC,MAAM,CAAC;wBACxC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;;;;;KAE5B;IACH,iBAAC;AAAD,CAAC,AAxDD,IAwDC;AAxDY,gCAAU;AA0DvB,IAAA,uBAAc,EAAC,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC",
10
10
  "sourcesContent": [
11
- "import {RendererEvent} from '../utils/renderer-event';\nimport {createObject} from '../utils/helper';\nimport {\n RendererAction,\n ListenerAction,\n ListenerContext,\n LogicAction,\n LoopStatus,\n registerAction,\n runAction,\n runActions\n} from './Action';\nimport {resolveVariable} from '../utils/tpl-builtin';\n\nexport interface ILoopAction extends ListenerAction, LogicAction {\n loopName: string;\n}\n\n/**\n * 循环动作\n *\n * @export\n * @class LoopAction\n * @implements {Action}\n */\nexport class LoopAction implements RendererAction {\n async run(\n action: ILoopAction,\n renderer: ListenerContext,\n event: RendererEvent<any>,\n mergeData: any\n ) {\n if (typeof action.loopName !== 'string') {\n console.warn('loopName 必须是字符串类型');\n return;\n }\n\n const loopData = resolveVariable(action.loopName, mergeData) || [];\n\n // 必须是数组\n if (!loopData) {\n console.warn(`没有找到数据 ${action.loopName}`);\n } else if (!Array.isArray(loopData)) {\n console.warn(`${action.loopName} 数据不是数组`);\n } else if (action.children?.length) {\n // 暂存一下\n const protoData = event.data;\n\n for (const data of loopData) {\n renderer.loopStatus = LoopStatus.NORMAL;\n // 追加逻辑处理中的数据,事件数据优先,用完还要还原\n event.setData(createObject(event.data, data));\n\n for (const subAction of action.children) {\n // @ts-ignore\n if (renderer.loopStatus === LoopStatus.CONTINUE) {\n continue;\n }\n await runActions(subAction, renderer, event);\n\n // @ts-ignore\n if (renderer.loopStatus === LoopStatus.BREAK || event.stoped) {\n // 还原事件数据\n event.setData(protoData);\n break;\n }\n }\n\n if (event.stoped) {\n // 还原事件数据\n event.setData(protoData);\n break;\n }\n }\n\n renderer.loopStatus = LoopStatus.NORMAL;\n event.setData(protoData);\n }\n }\n}\n\nregisterAction('loop', new LoopAction());\n"
11
+ "import {RendererEvent} from '../utils/renderer-event';\nimport {createObject} from '../utils/helper';\nimport {\n RendererAction,\n ListenerAction,\n ListenerContext,\n LogicAction,\n LoopStatus,\n registerAction,\n runAction,\n runActions\n} from './Action';\nimport {resolveVariable} from '../utils/tpl-builtin';\n\nexport interface ILoopAction extends ListenerAction, LogicAction {\n args: {\n loopName: string;\n [propName: string]: any;\n };\n}\n\n/**\n * 循环动作\n *\n * @export\n * @class LoopAction\n * @implements {Action}\n */\nexport class LoopAction implements RendererAction {\n async run(\n action: ILoopAction,\n renderer: ListenerContext,\n event: RendererEvent<any>,\n mergeData: any\n ) {\n const loopName = action.args?.loopName;\n if (typeof loopName !== 'string') {\n console.error('loopName 必须是字符串类型');\n return;\n }\n\n const loopData = resolveVariable(loopName, mergeData) || [];\n\n // 必须是数组\n if (!loopData) {\n console.error(`没有找到数据 ${loopName}`);\n } else if (!Array.isArray(loopData)) {\n console.error(`${loopName} 数据不是数组`);\n } else if (action.children?.length) {\n // 暂存一下\n const protoData = event.data;\n\n for (const data of loopData) {\n renderer.loopStatus = LoopStatus.NORMAL;\n // 追加逻辑处理中的数据,事件数据优先,用完还要还原\n event.setData(createObject(event.data, data));\n\n for (const subAction of action.children) {\n // @ts-ignore\n if (renderer.loopStatus === LoopStatus.CONTINUE) {\n continue;\n }\n await runActions(subAction, renderer, event);\n\n // @ts-ignore\n if (renderer.loopStatus === LoopStatus.BREAK || event.stoped) {\n // 还原事件数据\n event.setData(protoData);\n event.stopPropagation();\n break;\n }\n }\n\n if (event.stoped) {\n // 还原事件数据\n event.setData(protoData);\n break;\n }\n }\n\n renderer.loopStatus = LoopStatus.NORMAL;\n event.setData(protoData);\n }\n }\n}\n\nregisterAction('loop', new LoopAction());\n"
12
12
  ]
13
13
  }
@@ -1,7 +1,10 @@
1
1
  import { RendererEvent } from '../utils/renderer-event';
2
2
  import { RendererAction, ListenerAction, ListenerContext } from './Action';
3
3
  export interface IPageGoAction extends ListenerAction {
4
- delta?: number;
4
+ args: {
5
+ delta?: number;
6
+ [propName: string]: any;
7
+ };
5
8
  }
6
9
  /**
7
10
  * 返回上个页面
@@ -35,9 +35,10 @@ var PageGoAction = /** @class */ (function () {
35
35
  function PageGoAction() {
36
36
  }
37
37
  PageGoAction.prototype.run = function (action, renderer, event) {
38
+ var _a;
38
39
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
39
- return (0, tslib_1.__generator)(this, function (_a) {
40
- window.history.go(action.delta || 0);
40
+ return (0, tslib_1.__generator)(this, function (_b) {
41
+ window.history.go(((_a = action.args) === null || _a === void 0 ? void 0 : _a.delta) || 0);
41
42
  return [2 /*return*/];
42
43
  });
43
44
  });
@@ -6,8 +6,8 @@
6
6
  "/src/actions/PageAction.ts"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;;AACA,mCAKkB;AAMlB;;;;;;GAMG;AACH;IAAA;IAQA,CAAC;IAPO,8BAAG,GAAT,UACE,MAAsB,EACtB,QAAyB,EACzB,KAAyB;;;gBAEzB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;;;;KACvB;IACH,uBAAC;AAAD,CAAC,AARD,IAQC;AARY,4CAAgB;AAU7B;;;;;;GAMG;AACH;IAAA;IAQA,CAAC;IAPO,0BAAG,GAAT,UACE,MAAqB,EACrB,QAAyB,EACzB,KAAyB;;;gBAEzB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;;;;KACtC;IACH,mBAAC;AAAD,CAAC,AARD,IAQC;AARY,oCAAY;AAUzB;;;;;;GAMG;AACH;IAAA;IAQA,CAAC;IAPO,+BAAG,GAAT,UACE,MAAsB,EACtB,QAAyB,EACzB,KAAyB;;;gBAEzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;;;;KAC1B;IACH,wBAAC;AAAD,CAAC,AARD,IAQC;AARY,8CAAiB;AAU9B,IAAA,uBAAc,EAAC,QAAQ,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACjD,IAAA,uBAAc,EAAC,SAAS,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AACnD,IAAA,uBAAc,EAAC,QAAQ,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC",
9
+ "mappings": ";;;;AACA,mCAKkB;AASlB;;;;;;GAMG;AACH;IAAA;IAQA,CAAC;IAPO,8BAAG,GAAT,UACE,MAAsB,EACtB,QAAyB,EACzB,KAAyB;;;gBAEzB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;;;;KACvB;IACH,uBAAC;AAAD,CAAC,AARD,IAQC;AARY,4CAAgB;AAU7B;;;;;;GAMG;AACH;IAAA;IAQA,CAAC;IAPO,0BAAG,GAAT,UACE,MAAqB,EACrB,QAAyB,EACzB,KAAyB;;;;gBAEzB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,KAAK,KAAI,CAAC,CAAC,CAAC;;;;KAC5C;IACH,mBAAC;AAAD,CAAC,AARD,IAQC;AARY,oCAAY;AAUzB;;;;;;GAMG;AACH;IAAA;IAQA,CAAC;IAPO,+BAAG,GAAT,UACE,MAAsB,EACtB,QAAyB,EACzB,KAAyB;;;gBAEzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;;;;KAC1B;IACH,wBAAC;AAAD,CAAC,AARD,IAQC;AARY,8CAAiB;AAU9B,IAAA,uBAAc,EAAC,QAAQ,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACjD,IAAA,uBAAc,EAAC,SAAS,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AACnD,IAAA,uBAAc,EAAC,QAAQ,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC",
10
10
  "sourcesContent": [
11
- "import {RendererEvent} from '../utils/renderer-event';\nimport {\n RendererAction,\n ListenerAction,\n ListenerContext,\n registerAction\n} from './Action';\n\nexport interface IPageGoAction extends ListenerAction {\n delta?: number;\n}\n\n/**\n * 返回上个页面\n *\n * @export\n * @class PageGoBackAction\n * @implements {Action}\n */\nexport class PageGoBackAction implements RendererAction {\n async run(\n action: ListenerAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n window.history.back();\n }\n}\n\n/**\n * 到指定页面\n *\n * @export\n * @class PageGoAction\n * @implements {Action}\n */\nexport class PageGoAction implements RendererAction {\n async run(\n action: IPageGoAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n window.history.go(action.delta || 0);\n }\n}\n\n/**\n * 浏览器刷新\n *\n * @export\n * @class PageRefreshAction\n * @implements {Action}\n */\nexport class PageRefreshAction implements RendererAction {\n async run(\n action: ListenerAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n window.location.reload();\n }\n}\n\nregisterAction('goBack', new PageGoBackAction());\nregisterAction('refresh', new PageRefreshAction());\nregisterAction('goPage', new PageGoAction());\n"
11
+ "import {RendererEvent} from '../utils/renderer-event';\nimport {\n RendererAction,\n ListenerAction,\n ListenerContext,\n registerAction\n} from './Action';\n\nexport interface IPageGoAction extends ListenerAction {\n args: {\n delta?: number;\n [propName: string]: any;\n };\n}\n\n/**\n * 返回上个页面\n *\n * @export\n * @class PageGoBackAction\n * @implements {Action}\n */\nexport class PageGoBackAction implements RendererAction {\n async run(\n action: ListenerAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n window.history.back();\n }\n}\n\n/**\n * 到指定页面\n *\n * @export\n * @class PageGoAction\n * @implements {Action}\n */\nexport class PageGoAction implements RendererAction {\n async run(\n action: IPageGoAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n window.history.go(action.args?.delta || 0);\n }\n}\n\n/**\n * 浏览器刷新\n *\n * @export\n * @class PageRefreshAction\n * @implements {Action}\n */\nexport class PageRefreshAction implements RendererAction {\n async run(\n action: ListenerAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n window.location.reload();\n }\n}\n\nregisterAction('goBack', new PageGoBackAction());\nregisterAction('refresh', new PageRefreshAction());\nregisterAction('goPage', new PageGoAction());\n"
12
12
  ]
13
13
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ToastAction = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var Action_1 = require("./Action");
6
- var tpl_builtin_1 = require("../utils/tpl-builtin");
7
6
  /**
8
7
  * 全局toast
9
8
  */
@@ -11,12 +10,13 @@ var ToastAction = /** @class */ (function () {
11
10
  function ToastAction() {
12
11
  }
13
12
  ToastAction.prototype.run = function (action, renderer, event) {
14
- var _a, _b;
13
+ var _a, _b, _c, _d, _e;
15
14
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
16
- var msg;
17
- return (0, tslib_1.__generator)(this, function (_c) {
18
- msg = (0, tpl_builtin_1.resolveVariableAndFilter)(action.msg, action.args, '| raw');
19
- (_b = (_a = event.context.env).notify) === null || _b === void 0 ? void 0 : _b.call(_a, action.msgType || 'info', String(msg), action);
15
+ return (0, tslib_1.__generator)(this, function (_f) {
16
+ if (!((_a = renderer.props.env) === null || _a === void 0 ? void 0 : _a.notify)) {
17
+ throw new Error('env.notify is required!');
18
+ }
19
+ (_c = (_b = event.context.env).notify) === null || _c === void 0 ? void 0 : _c.call(_b, ((_d = action.args) === null || _d === void 0 ? void 0 : _d.msgType) || 'info', String((_e = action.args) === null || _e === void 0 ? void 0 : _e.msg), action.args);
20
20
  return [2 /*return*/];
21
21
  });
22
22
  });
@@ -6,8 +6,8 @@
6
6
  "/src/actions/ToastAction.ts"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;;AACA,mCAKkB;AAClB,oDAA8D;AAkB9D;;GAEG;AACH;IAAA;IASA,CAAC;IARO,yBAAG,GAAT,UACE,MAAoB,EACpB,QAAyB,EACzB,KAAyB;;;;;gBAEnB,GAAG,GAAG,IAAA,sCAAwB,EAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACvE,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,GAAG,EAAC,MAAM,mDAAG,MAAM,CAAC,OAAO,IAAI,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;;;;KAC3E;IACH,kBAAC;AAAD,CAAC,AATD,IASC;AATY,kCAAW;AAWxB,IAAA,uBAAc,EAAC,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC",
9
+ "mappings": ";;;;AACA,mCAKkB;AAmBlB;;GAEG;AACH;IAAA;IAgBA,CAAC;IAfO,yBAAG,GAAT,UACE,MAAoB,EACpB,QAAyB,EACzB,KAAyB;;;;gBAEzB,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,0CAAE,MAAM,CAAA,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;iBAC5C;gBAED,MAAA,MAAA,KAAK,CAAC,OAAO,CAAC,GAAG,EAAC,MAAM,mDACtB,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,OAAO,KAAI,MAAM,EAC9B,MAAM,CAAC,MAAA,MAAM,CAAC,IAAI,0CAAE,GAAG,CAAC,EACxB,MAAM,CAAC,IAAI,CACZ,CAAC;;;;KACH;IACH,kBAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBY,kCAAW;AAkBxB,IAAA,uBAAc,EAAC,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC",
10
10
  "sourcesContent": [
11
- "import {RendererEvent} from '../utils/renderer-event';\nimport {\n RendererAction,\n ListenerAction,\n ListenerContext,\n registerAction\n} from './Action';\nimport {resolveVariableAndFilter} from '../utils/tpl-builtin';\n\nexport interface IToastAction extends ListenerAction {\n msg: string;\n msgType?: string;\n position?:\n | 'top-right'\n | 'top-center'\n | 'top-left'\n | 'bottom-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'center';\n closeButton?: boolean;\n showIcon?: boolean;\n timeout?: number;\n}\n\n/**\n * 全局toast\n */\nexport class ToastAction implements RendererAction {\n async run(\n action: IToastAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n const msg = resolveVariableAndFilter(action.msg, action.args, '| raw');\n event.context.env.notify?.(action.msgType || 'info', String(msg), action);\n }\n}\n\nregisterAction('toast', new ToastAction());\n"
11
+ "import {RendererEvent} from '../utils/renderer-event';\nimport {\n RendererAction,\n ListenerAction,\n ListenerContext,\n registerAction\n} from './Action';\nimport {resolveVariableAndFilter} from '../utils/tpl-builtin';\n\nexport interface IToastAction extends ListenerAction {\n msg: string;\n msgType?: string;\n position?:\n | 'top-right'\n | 'top-center'\n | 'top-left'\n | 'bottom-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'center';\n closeButton?: boolean;\n showIcon?: boolean;\n timeout?: number;\n}\n\n/**\n * 全局toast\n */\nexport class ToastAction implements RendererAction {\n async run(\n action: IToastAction,\n renderer: ListenerContext,\n event: RendererEvent<any>\n ) {\n if (!renderer.props.env?.notify) {\n throw new Error('env.notify is required!');\n }\n\n event.context.env.notify?.(\n action.args?.msgType || 'info',\n String(action.args?.msg),\n action.args\n );\n }\n}\n\nregisterAction('toast', new ToastAction());\n"
12
12
  ]
13
13
  }
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerLocale = exports.setDefaultLocale = exports.getDefaultLocale = exports.classnames = exports.getClassPrefix = exports.classPrefix = exports.getTheme = exports.theme = exports.setDefaultTheme = exports.validateObject = exports.validate = exports.ScopedContext = exports.Scoped = exports.registerIcon = exports.Icon = exports.setIconVendor = exports.resolveVariableAndFilter = exports.resolveVariable = exports.relativeValueRe = exports.filterDate = exports.filterSchema = exports.resolveRenderer = exports.registerOptionsControl = exports.registerFormItem = exports.getRenderers = exports.unRegisterRenderer = exports.registerRenderer = exports.getRendererByName = exports.normalizeOptions = exports.str2rules = exports.addRule = exports.setCustomEvalExpression = exports.setCustomEvalJs = exports.evalJS = exports.evalExpression = exports.registerTplEnginer = exports.registerFilter = exports.resizeSensor = exports.utils = exports.filter = exports.buildApi = exports.wrapFetcher = exports.OptionsControl = exports.FormItemWrap = exports.FormItem = exports.RegisterStore = exports.Renderer = exports.updateEnv = exports.clearStoresCache = exports.render = void 0;
4
4
  exports.animation = exports.makeTranslator = void 0;
5
5
  var tslib_1 = require("tslib");
6
- /** @license amis v1.9.0-beta.13
6
+ /** @license amis v1.9.0-beta.14
7
7
  *
8
8
  * Copyright Baidu
9
9
  *
@@ -123,8 +123,6 @@ var Action = /** @class */ (function (_super) {
123
123
  switch (_c.label) {
124
124
  case 0:
125
125
  _a = this.props, onAction = _a.onAction, disabled = _a.disabled, countDown = _a.countDown, env = _a.env;
126
- // https://reactjs.org/docs/legacy-event-pooling.html
127
- e.persist();
128
126
  onClick = this.props.onClick;
129
127
  if (typeof onClick === 'string') {
130
128
  onClick = (0, api_1.str2AsyncFunction)(onClick, 'event', 'props');
@@ -6,8 +6,8 @@
6
6
  "/src/renderers/Action.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "import React from 'react';\nimport hotkeys from 'hotkeys-js';\nimport {Renderer, RendererProps} from '../factory';\nimport {filter} from '../utils/tpl';\nimport Button from '../components/Button';\nimport pick from 'lodash/pick';\nimport omit from 'lodash/omit';\n\nexport interface ButtonSchema extends BaseSchema {\n /**\n * 主要用于用户行为跟踪里区分是哪个按钮\n */\n id?: string;\n\n /**\n * 是否为块状展示,默认为内联。\n */\n block?: boolean;\n\n /**\n * 禁用时的文案提示。\n */\n disabledTip?: string;\n\n /**\n * 按钮图标, iconfont 的类名\n */\n icon?: SchemaIcon;\n\n /**\n * icon 上的css 类名\n */\n iconClassName?: SchemaClassName;\n\n /**\n * 右侧按钮图标, iconfont 的类名\n */\n rightIcon?: SchemaIcon;\n\n /**\n * 右侧 icon 上的 css 类名\n */\n rightIconClassName?: SchemaClassName;\n /**\n * loading 上的css 类名\n */\n loadingClassName?: SchemaClassName;\n\n /**\n * 按钮文字\n */\n label?: string;\n\n /**\n * 按钮样式\n */\n level?:\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'link'\n | 'primary'\n | 'dark'\n | 'light'\n | 'secondary';\n\n /**\n * @deprecated 通过 level 来配置\n */\n primary?: boolean;\n\n /**\n * 按钮大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n\n tooltip?: SchemaTooltip;\n tooltipPlacement?: 'top' | 'right' | 'bottom' | 'left';\n\n /**\n * 指定按钮类型,支持 button、submit或者reset三种类型。\n */\n type: 'button' | 'submit' | 'reset';\n\n /**\n * 提示文字,配置了操作前会要求用户确认。\n */\n confirmText?: string;\n\n /**\n * 如果按钮在form中,配置此属性会要求用户把指定的字段通过验证后才会触发行为。\n */\n required?: Array<string>;\n\n /**\n * 激活状态时的样式\n */\n activeLevel?: string;\n\n /**\n * 激活状态时的类名\n */\n activeClassName?: string;\n\n /**\n * 如果按钮在弹框中,可以配置这个动作完成后是否关闭弹窗,或者指定关闭目标弹框。\n */\n close?: boolean | string;\n\n /**\n * 当按钮时批量操作按钮时,默认必须有勾选元素才能可点击,如果此属性配置成 false,则没有点选成员也能点击。\n */\n requireSelected?: boolean;\n\n /**\n * 是否将弹框中数据 merge 到父级作用域。\n */\n mergeData?: boolean;\n\n /**\n * 可以指定让谁来触发这个动作。\n */\n target?: string;\n\n /**\n * 点击后的禁止倒计时(秒)\n */\n countDown?: number;\n\n /**\n * 倒计时文字自定义\n */\n countDownTpl?: string;\n\n /**\n * 角标\n */\n badge?: BadgeSchema;\n\n /**\n * 键盘快捷键\n */\n hotKey?: string;\n /**\n * 是否显示loading效果\n */\n loadingOn?: string;\n\n /**\n * 自定义事件处理函数\n */\n onClick?: string | any;\n\n /**\n * 子内容\n */\n body?: SchemaCollection;\n}\n\nexport interface AjaxActionSchema extends ButtonSchema {\n /**\n * 指定为发送 ajax 的行为。\n */\n actionType: 'ajax';\n\n /**\n * 配置 ajax 发送地址\n */\n api: SchemaApi;\n\n feedback?: FeedbackDialog;\n\n reload?: SchemaReload;\n redirect?: string;\n ignoreConfirm?: boolean;\n}\n\nexport interface DownloadActionSchema\n extends Omit<AjaxActionSchema, 'actionType'> {\n /**\n * 指定为下载行为\n */\n actionType: 'download';\n}\n\nexport interface UrlActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接\n */\n actionType: 'url';\n\n /**\n * 是否新窗口打开\n */\n blank?: boolean;\n\n /**\n * 打开的目标地址\n */\n url: string;\n}\n\nexport interface DialogActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗\n */\n actionType: 'dialog';\n\n /**\n * 弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/dialog\n */\n dialog: DialogSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface DrawerActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗,抽出式弹窗\n */\n actionType: 'drawer';\n\n /**\n * 抽出式弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/drawer\n */\n drawer: DrawerSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface ToastActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗,抽出式弹窗\n */\n actionType: 'toast';\n\n /**\n * 轻提示详情\n * 文档:https://baidu.gitee.io/amis/docs/components/toast\n */\n toast: ToastSchemaBase;\n}\n\nexport interface CopyActionSchema extends ButtonSchema {\n /**\n * 指定为复制内容行为\n */\n actionType: 'copy';\n\n /**\n * 复制啥内容由此配置,支持模板语法。\n */\n copy: SchemaTpl;\n}\n\nexport interface LinkActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接行为,跟 url 不同的时这个行为为单页模式。\n */\n actionType: 'link';\n\n /**\n * 跳转到哪?支持配置相对路径。\n */\n link: string;\n}\n\nexport interface ReloadActionSchema extends ButtonSchema {\n /**\n * 指定为刷新目标组件。\n */\n actionType: 'reload';\n\n /**\n * 指定目标组件。\n */\n target?: SchemaReload;\n}\n\nexport interface EmailActionSchema extends ButtonSchema {\n /**\n * 指定为打开邮箱行为\n */\n actionType: 'email';\n\n /**\n * 收件人邮箱\n */\n to: string;\n\n /**\n * 抄送邮箱\n */\n cc?: string;\n\n /**\n * 匿名抄送邮箱\n */\n bcc?: string;\n\n /**\n * 邮件主题\n */\n subject?: string;\n\n /**\n * 邮件正文\n */\n body?: string;\n}\n\nexport interface OtherActionSchema extends ButtonSchema {\n actionType:\n | 'prev'\n | 'next'\n | 'cancel'\n | 'close'\n | 'submit'\n | 'confirm'\n | 'add'\n | 'reset'\n | 'reset-and-submit';\n [propName: string]: any;\n}\n\nexport interface VanillaAction extends ButtonSchema {\n actionType?: string;\n}\n\n/**\n * 按钮动作渲染器。\n * 文档:https://baidu.gitee.io/amis/docs/components/action\n */\nexport type ActionSchema =\n | AjaxActionSchema\n | UrlActionSchema\n | LinkActionSchema\n | DialogActionSchema\n | DrawerActionSchema\n | ToastActionSchema\n | CopyActionSchema\n | ReloadActionSchema\n | EmailActionSchema\n | OtherActionSchema\n | VanillaAction;\n\nconst ActionProps = [\n 'id',\n 'dialog',\n 'drawer',\n 'toast',\n 'url',\n 'link',\n 'confirmText',\n 'tooltip',\n 'disabledTip',\n 'className',\n 'asyncApi',\n 'redirect',\n 'size',\n 'level',\n 'primary',\n 'feedback',\n 'api',\n 'blank',\n 'tooltipPlacement',\n 'to',\n 'cc',\n 'bcc',\n 'subject',\n 'body',\n 'content',\n 'required',\n 'type',\n 'actionType',\n 'label',\n 'icon',\n 'rightIcon',\n 'reload',\n 'target',\n 'close',\n 'messages',\n 'mergeData',\n 'index',\n 'copy',\n 'copyFormat',\n 'payload',\n 'requireSelected'\n];\nimport {filterContents} from './Remark';\nimport {ClassNamesFn, themeable, ThemeProps} from '../theme';\nimport {autobind, createObject} from '../utils/helper';\nimport {\n BaseSchema,\n FeedbackDialog,\n SchemaApi,\n SchemaClassName,\n SchemaCollection,\n SchemaExpression,\n SchemaIcon,\n SchemaReload,\n SchemaTooltip,\n SchemaTpl\n} from '../Schema';\nimport {DialogSchema, DialogSchemaBase} from './Dialog';\nimport {DrawerSchema, DrawerSchemaBase} from './Drawer';\nimport {ToastSchemaBase} from '../Schema';\nimport {generateIcon} from '../utils/icon';\nimport {BadgeSchema, withBadge} from '../components/Badge';\nimport {normalizeApi, str2AsyncFunction} from '../utils/api';\nimport {TooltipWrapper} from '../components/TooltipWrapper';\nimport handleAction from '../utils/handleAction';\n\n// 构造一个假的 React 事件避免可能的报错,主要用于快捷键功能\n// 来自 https://stackoverflow.com/questions/27062455/reactjs-can-i-create-my-own-syntheticevent\nexport const createSyntheticEvent = <T extends Element, E extends Event>(\n event: E\n): React.SyntheticEvent<T, E> => {\n let isDefaultPrevented = false;\n let isPropagationStopped = false;\n const preventDefault = () => {\n isDefaultPrevented = true;\n event.preventDefault();\n };\n const stopPropagation = () => {\n isPropagationStopped = true;\n event.stopPropagation();\n };\n return {\n nativeEvent: event,\n currentTarget: event.currentTarget as EventTarget & T,\n target: event.target as EventTarget & T,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n defaultPrevented: event.defaultPrevented,\n eventPhase: event.eventPhase,\n isTrusted: event.isTrusted,\n preventDefault,\n isDefaultPrevented: () => isDefaultPrevented,\n stopPropagation,\n isPropagationStopped: () => isPropagationStopped,\n persist: () => {},\n timeStamp: event.timeStamp,\n type: event.type\n };\n};\n\nexport interface ActionProps\n extends Omit<\n ButtonSchema,\n 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'\n >,\n ThemeProps,\n Omit<\n AjaxActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n UrlActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n LinkActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n DialogActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n DrawerActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n ToastSchemaBase,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n CopyActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n ReloadActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n EmailActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n | 'body'\n >,\n Omit<\n OtherActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n > {\n actionType: any;\n onAction?: (\n e: React.MouseEvent<any> | void | null,\n action: ActionSchema\n ) => void;\n isCurrentUrl?: (link: string) => boolean;\n onClick?:\n | ((e: React.MouseEvent<any>, props: any) => void)\n | string\n | Function\n | null;\n componentClass: React.ReactType;\n tooltipContainer?: any;\n data?: any;\n isMenuItem?: boolean;\n active?: boolean;\n}\n\nconst allowedType = ['button', 'submit', 'reset'];\n\ninterface ActionState {\n inCountDown: boolean; // 是否在倒计时\n countDownEnd: number; // 倒计时结束的精确时间\n timeLeft: number; // 倒计时剩余时间\n}\n\nexport class Action extends React.Component<ActionProps, ActionState> {\n static defaultProps = {\n type: 'button' as 'button',\n componentClass: 'button' as React.ReactType,\n tooltipPlacement: 'bottom' as 'bottom',\n activeClassName: 'is-active',\n countDownTpl: 'Action.countDown',\n countDown: 0\n };\n\n state: ActionState = {\n inCountDown: false,\n countDownEnd: 0,\n timeLeft: 0\n };\n\n localStorageKey: string;\n\n dom: any;\n\n constructor(props: ActionProps) {\n super(props);\n this.localStorageKey = 'amis-countdownend-' + (this.props.name || '');\n const countDownEnd = parseInt(\n localStorage.getItem(this.localStorageKey) || '0'\n );\n if (countDownEnd && this.props.countDown) {\n if (Date.now() < countDownEnd) {\n this.state = {\n inCountDown: true,\n countDownEnd,\n timeLeft: Math.floor((countDownEnd - Date.now()) / 1000)\n };\n this.handleCountDown();\n }\n }\n }\n\n @autobind\n async handleAction(e: React.MouseEvent<any>) {\n const {onAction, disabled, countDown, env} = this.props;\n\n // https://reactjs.org/docs/legacy-event-pooling.html\n e.persist();\n let onClick = this.props.onClick;\n\n if (typeof onClick === 'string') {\n onClick = str2AsyncFunction(onClick, 'event', 'props');\n }\n const result: any = onClick && (await onClick(e, this.props));\n\n if (\n disabled ||\n e.isDefaultPrevented() ||\n result === false ||\n !onAction ||\n this.state.inCountDown\n ) {\n return;\n }\n\n e.preventDefault();\n const action = pick(this.props, ActionProps) as ActionSchema;\n const actionType = action.actionType;\n\n // ajax 会在 wrapFetcher 里记录,这里再处理就重复了,因此去掉\n // add 一般是 input-table 之类的,会触发 formItemChange,为了避免重复也去掉\n if (\n actionType !== 'ajax' &&\n actionType !== 'download' &&\n actionType !== 'add'\n ) {\n env?.tracker(\n {\n eventType: actionType || this.props.type || 'click',\n eventData: omit(action, ['type', 'actionType', 'tooltipPlacement'])\n },\n this.props\n );\n }\n\n // download 是一种 ajax 的简写\n if (actionType === 'download') {\n action.actionType = 'ajax';\n const api = normalizeApi((action as AjaxActionSchema).api);\n api.responseType = 'blob';\n (action as AjaxActionSchema).api = api;\n }\n\n onAction(e, action);\n\n if (countDown) {\n const countDownEnd = Date.now() + countDown * 1000;\n this.setState({\n countDownEnd: countDownEnd,\n inCountDown: true,\n timeLeft: countDown\n });\n\n localStorage.setItem(this.localStorageKey, String(countDownEnd));\n\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n handleCountDown() {\n // setTimeout 一般会晚于 1s,经过几十次后就不准了,所以使用真实时间进行 diff\n const timeLeft = Math.floor((this.state.countDownEnd - Date.now()) / 1000);\n if (timeLeft <= 0) {\n this.setState({\n inCountDown: false,\n timeLeft: timeLeft\n });\n } else {\n this.setState({\n timeLeft: timeLeft\n });\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n componentDidMount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys(hotKey, event => {\n event.preventDefault();\n const click = new MouseEvent('click', {\n bubbles: true,\n cancelable: true\n });\n this.handleAction(createSyntheticEvent(click) as any);\n });\n }\n }\n\n @autobind\n componentWillUnmount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys.unbind(hotKey);\n }\n }\n\n render() {\n const {\n type,\n icon,\n iconClassName,\n rightIcon,\n rightIconClassName,\n loadingClassName,\n primary,\n size,\n level,\n countDownTpl,\n block,\n className,\n componentClass,\n tooltip,\n disabledTip,\n tooltipPlacement,\n actionType,\n link,\n data,\n translate: __,\n activeClassName,\n isCurrentUrl,\n isMenuItem,\n active,\n activeLevel,\n tooltipTrigger,\n tooltipContainer,\n tooltipRootClose,\n loading,\n body,\n render,\n onMouseEnter,\n onMouseLeave,\n classnames: cx,\n classPrefix: ns\n } = this.props;\n\n if (actionType !== 'email' && body) {\n return (\n <TooltipWrapper\n classPrefix={ns}\n classnames={cx}\n placement={tooltipPlacement}\n tooltip={tooltip}\n container={tooltipContainer}\n trigger={tooltipTrigger}\n rootClose={tooltipRootClose}\n >\n <div\n className={cx('Action', className)}\n onClick={this.handleAction}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {render('body', body) as JSX.Element}\n </div>\n </TooltipWrapper>\n );\n }\n\n let label = this.props.label;\n let disabled = this.props.disabled;\n let isActive = !!active;\n\n if (actionType === 'link' && !isActive && link && isCurrentUrl) {\n isActive = isCurrentUrl(link);\n }\n\n // 倒计时\n if (this.state.inCountDown) {\n label = filterContents(__(countDownTpl), {\n ...data,\n timeLeft: this.state.timeLeft\n }) as string;\n disabled = true;\n }\n\n const iconElement = generateIcon(cx, icon, 'Button-icon', iconClassName);\n const rightIconElement = generateIcon(\n cx,\n rightIcon,\n 'Button-icon',\n rightIconClassName\n );\n\n return (\n <Button\n className={cx(className, {\n [activeClassName || 'is-active']: isActive\n })}\n size={size}\n level={\n activeLevel && isActive\n ? activeLevel\n : level || (primary ? 'primary' : undefined)\n }\n loadingClassName={loadingClassName}\n loading={loading}\n onClick={this.handleAction}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n type={type && ~allowedType.indexOf(type) ? type : 'button'}\n disabled={disabled}\n componentClass={isMenuItem ? 'a' : componentClass}\n overrideClassName={isMenuItem}\n tooltip={tooltip}\n disabledTip={disabledTip}\n tooltipPlacement={tooltipPlacement}\n tooltipContainer={tooltipContainer}\n tooltipTrigger={tooltipTrigger}\n tooltipRootClose={tooltipRootClose}\n block={block}\n iconOnly={!!(icon && !label && level !== 'link')}\n >\n {!loading ? iconElement : ''}\n {label ? <span>{filter(String(label), data)}</span> : null}\n {rightIconElement}\n </Button>\n );\n }\n}\n\nexport default themeable(Action);\n\n@Renderer({\n type: 'action'\n})\n// @ts-ignore 类型没搞定\n@withBadge\nexport class ActionRenderer extends React.Component<\n RendererProps &\n Omit<ActionProps, 'onAction' | 'isCurrentUrl' | 'tooltipContainer'> & {\n onAction: (\n e: React.MouseEvent<any> | void | null,\n action: object,\n data: any\n ) => void;\n btnDisabled?: boolean;\n }\n> {\n @autobind\n async handleAction(e: React.MouseEvent<any> | void | null, action: any) {\n const {env, onAction, data, ignoreConfirm, dispatchEvent} = this.props;\n\n // 触发渲染器事件\n const rendererEvent = await dispatchEvent(e as React.MouseEvent<any>, data);\n\n // 阻止原有动作执行\n if (rendererEvent?.prevented) {\n return;\n }\n\n if (!ignoreConfirm && action.confirmText && env.confirm) {\n env\n .confirm(filter(action.confirmText, data))\n .then((confirmed: boolean) => confirmed && onAction(e, action, data));\n } else {\n onAction(e, action, data);\n }\n }\n\n @autobind\n handleMouseEnter(e: React.MouseEvent<any>) {\n this.props.dispatchEvent(e, this.props.data);\n }\n\n @autobind\n handleMouseLeave(e: React.MouseEvent<any>) {\n this.props.dispatchEvent(e, this.props.data);\n }\n\n @autobind\n isCurrentAction(link: string) {\n const {env, data} = this.props;\n return env.isCurrentUrl(filter(link, data));\n }\n\n render() {\n const {env, disabled, btnDisabled, loading, ...rest} = this.props;\n\n return (\n <Action\n {...(rest as any)}\n env={env}\n disabled={disabled || btnDisabled}\n onAction={this.handleAction}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n loading={loading}\n isCurrentUrl={this.isCurrentAction}\n tooltipContainer={\n env.getModalContainer ? env.getModalContainer : undefined\n }\n />\n );\n }\n}\n\n@Renderer({\n type: 'button'\n})\nexport class ButtonRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'submit'\n})\nexport class SubmitRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'reset'\n})\nexport class ResetRenderer extends ActionRenderer {}\n"
11
+ "import React from 'react';\nimport hotkeys from 'hotkeys-js';\nimport {Renderer, RendererProps} from '../factory';\nimport {filter} from '../utils/tpl';\nimport Button from '../components/Button';\nimport pick from 'lodash/pick';\nimport omit from 'lodash/omit';\n\nexport interface ButtonSchema extends BaseSchema {\n /**\n * 主要用于用户行为跟踪里区分是哪个按钮\n */\n id?: string;\n\n /**\n * 是否为块状展示,默认为内联。\n */\n block?: boolean;\n\n /**\n * 禁用时的文案提示。\n */\n disabledTip?: string;\n\n /**\n * 按钮图标, iconfont 的类名\n */\n icon?: SchemaIcon;\n\n /**\n * icon 上的css 类名\n */\n iconClassName?: SchemaClassName;\n\n /**\n * 右侧按钮图标, iconfont 的类名\n */\n rightIcon?: SchemaIcon;\n\n /**\n * 右侧 icon 上的 css 类名\n */\n rightIconClassName?: SchemaClassName;\n /**\n * loading 上的css 类名\n */\n loadingClassName?: SchemaClassName;\n\n /**\n * 按钮文字\n */\n label?: string;\n\n /**\n * 按钮样式\n */\n level?:\n | 'info'\n | 'success'\n | 'warning'\n | 'danger'\n | 'link'\n | 'primary'\n | 'dark'\n | 'light'\n | 'secondary';\n\n /**\n * @deprecated 通过 level 来配置\n */\n primary?: boolean;\n\n /**\n * 按钮大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg';\n\n tooltip?: SchemaTooltip;\n tooltipPlacement?: 'top' | 'right' | 'bottom' | 'left';\n\n /**\n * 指定按钮类型,支持 button、submit或者reset三种类型。\n */\n type: 'button' | 'submit' | 'reset';\n\n /**\n * 提示文字,配置了操作前会要求用户确认。\n */\n confirmText?: string;\n\n /**\n * 如果按钮在form中,配置此属性会要求用户把指定的字段通过验证后才会触发行为。\n */\n required?: Array<string>;\n\n /**\n * 激活状态时的样式\n */\n activeLevel?: string;\n\n /**\n * 激活状态时的类名\n */\n activeClassName?: string;\n\n /**\n * 如果按钮在弹框中,可以配置这个动作完成后是否关闭弹窗,或者指定关闭目标弹框。\n */\n close?: boolean | string;\n\n /**\n * 当按钮时批量操作按钮时,默认必须有勾选元素才能可点击,如果此属性配置成 false,则没有点选成员也能点击。\n */\n requireSelected?: boolean;\n\n /**\n * 是否将弹框中数据 merge 到父级作用域。\n */\n mergeData?: boolean;\n\n /**\n * 可以指定让谁来触发这个动作。\n */\n target?: string;\n\n /**\n * 点击后的禁止倒计时(秒)\n */\n countDown?: number;\n\n /**\n * 倒计时文字自定义\n */\n countDownTpl?: string;\n\n /**\n * 角标\n */\n badge?: BadgeSchema;\n\n /**\n * 键盘快捷键\n */\n hotKey?: string;\n /**\n * 是否显示loading效果\n */\n loadingOn?: string;\n\n /**\n * 自定义事件处理函数\n */\n onClick?: string | any;\n\n /**\n * 子内容\n */\n body?: SchemaCollection;\n}\n\nexport interface AjaxActionSchema extends ButtonSchema {\n /**\n * 指定为发送 ajax 的行为。\n */\n actionType: 'ajax';\n\n /**\n * 配置 ajax 发送地址\n */\n api: SchemaApi;\n\n feedback?: FeedbackDialog;\n\n reload?: SchemaReload;\n redirect?: string;\n ignoreConfirm?: boolean;\n}\n\nexport interface DownloadActionSchema\n extends Omit<AjaxActionSchema, 'actionType'> {\n /**\n * 指定为下载行为\n */\n actionType: 'download';\n}\n\nexport interface UrlActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接\n */\n actionType: 'url';\n\n /**\n * 是否新窗口打开\n */\n blank?: boolean;\n\n /**\n * 打开的目标地址\n */\n url: string;\n}\n\nexport interface DialogActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗\n */\n actionType: 'dialog';\n\n /**\n * 弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/dialog\n */\n dialog: DialogSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface DrawerActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗,抽出式弹窗\n */\n actionType: 'drawer';\n\n /**\n * 抽出式弹框详情\n * 文档:https://baidu.gitee.io/amis/docs/components/drawer\n */\n drawer: DrawerSchemaBase;\n\n /**\n * 是否有下一个的表达式,正常可以不用配置,如果想要刷掉某些数据可以配置这个。\n */\n nextCondition?: SchemaExpression;\n reload?: SchemaReload;\n redirect?: string;\n}\n\nexport interface ToastActionSchema extends ButtonSchema {\n /**\n * 指定为打开弹窗,抽出式弹窗\n */\n actionType: 'toast';\n\n /**\n * 轻提示详情\n * 文档:https://baidu.gitee.io/amis/docs/components/toast\n */\n toast: ToastSchemaBase;\n}\n\nexport interface CopyActionSchema extends ButtonSchema {\n /**\n * 指定为复制内容行为\n */\n actionType: 'copy';\n\n /**\n * 复制啥内容由此配置,支持模板语法。\n */\n copy: SchemaTpl;\n}\n\nexport interface LinkActionSchema extends ButtonSchema {\n /**\n * 指定为打开链接行为,跟 url 不同的时这个行为为单页模式。\n */\n actionType: 'link';\n\n /**\n * 跳转到哪?支持配置相对路径。\n */\n link: string;\n}\n\nexport interface ReloadActionSchema extends ButtonSchema {\n /**\n * 指定为刷新目标组件。\n */\n actionType: 'reload';\n\n /**\n * 指定目标组件。\n */\n target?: SchemaReload;\n}\n\nexport interface EmailActionSchema extends ButtonSchema {\n /**\n * 指定为打开邮箱行为\n */\n actionType: 'email';\n\n /**\n * 收件人邮箱\n */\n to: string;\n\n /**\n * 抄送邮箱\n */\n cc?: string;\n\n /**\n * 匿名抄送邮箱\n */\n bcc?: string;\n\n /**\n * 邮件主题\n */\n subject?: string;\n\n /**\n * 邮件正文\n */\n body?: string;\n}\n\nexport interface OtherActionSchema extends ButtonSchema {\n actionType:\n | 'prev'\n | 'next'\n | 'cancel'\n | 'close'\n | 'submit'\n | 'confirm'\n | 'add'\n | 'reset'\n | 'reset-and-submit';\n [propName: string]: any;\n}\n\nexport interface VanillaAction extends ButtonSchema {\n actionType?: string;\n}\n\n/**\n * 按钮动作渲染器。\n * 文档:https://baidu.gitee.io/amis/docs/components/action\n */\nexport type ActionSchema =\n | AjaxActionSchema\n | UrlActionSchema\n | LinkActionSchema\n | DialogActionSchema\n | DrawerActionSchema\n | ToastActionSchema\n | CopyActionSchema\n | ReloadActionSchema\n | EmailActionSchema\n | OtherActionSchema\n | VanillaAction;\n\nconst ActionProps = [\n 'id',\n 'dialog',\n 'drawer',\n 'toast',\n 'url',\n 'link',\n 'confirmText',\n 'tooltip',\n 'disabledTip',\n 'className',\n 'asyncApi',\n 'redirect',\n 'size',\n 'level',\n 'primary',\n 'feedback',\n 'api',\n 'blank',\n 'tooltipPlacement',\n 'to',\n 'cc',\n 'bcc',\n 'subject',\n 'body',\n 'content',\n 'required',\n 'type',\n 'actionType',\n 'label',\n 'icon',\n 'rightIcon',\n 'reload',\n 'target',\n 'close',\n 'messages',\n 'mergeData',\n 'index',\n 'copy',\n 'copyFormat',\n 'payload',\n 'requireSelected'\n];\nimport {filterContents} from './Remark';\nimport {ClassNamesFn, themeable, ThemeProps} from '../theme';\nimport {autobind, createObject} from '../utils/helper';\nimport {\n BaseSchema,\n FeedbackDialog,\n SchemaApi,\n SchemaClassName,\n SchemaCollection,\n SchemaExpression,\n SchemaIcon,\n SchemaReload,\n SchemaTooltip,\n SchemaTpl\n} from '../Schema';\nimport {DialogSchema, DialogSchemaBase} from './Dialog';\nimport {DrawerSchema, DrawerSchemaBase} from './Drawer';\nimport {ToastSchemaBase} from '../Schema';\nimport {generateIcon} from '../utils/icon';\nimport {BadgeSchema, withBadge} from '../components/Badge';\nimport {normalizeApi, str2AsyncFunction} from '../utils/api';\nimport {TooltipWrapper} from '../components/TooltipWrapper';\nimport handleAction from '../utils/handleAction';\n\n// 构造一个假的 React 事件避免可能的报错,主要用于快捷键功能\n// 来自 https://stackoverflow.com/questions/27062455/reactjs-can-i-create-my-own-syntheticevent\nexport const createSyntheticEvent = <T extends Element, E extends Event>(\n event: E\n): React.SyntheticEvent<T, E> => {\n let isDefaultPrevented = false;\n let isPropagationStopped = false;\n const preventDefault = () => {\n isDefaultPrevented = true;\n event.preventDefault();\n };\n const stopPropagation = () => {\n isPropagationStopped = true;\n event.stopPropagation();\n };\n return {\n nativeEvent: event,\n currentTarget: event.currentTarget as EventTarget & T,\n target: event.target as EventTarget & T,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n defaultPrevented: event.defaultPrevented,\n eventPhase: event.eventPhase,\n isTrusted: event.isTrusted,\n preventDefault,\n isDefaultPrevented: () => isDefaultPrevented,\n stopPropagation,\n isPropagationStopped: () => isPropagationStopped,\n persist: () => {},\n timeStamp: event.timeStamp,\n type: event.type\n };\n};\n\nexport interface ActionProps\n extends Omit<\n ButtonSchema,\n 'className' | 'iconClassName' | 'rightIconClassName' | 'loadingClassName'\n >,\n ThemeProps,\n Omit<\n AjaxActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n UrlActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n LinkActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n DialogActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n DrawerActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n ToastSchemaBase,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n CopyActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n ReloadActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n >,\n Omit<\n EmailActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n | 'body'\n >,\n Omit<\n OtherActionSchema,\n | 'type'\n | 'className'\n | 'iconClassName'\n | 'rightIconClassName'\n | 'loadingClassName'\n > {\n actionType: any;\n onAction?: (\n e: React.MouseEvent<any> | void | null,\n action: ActionSchema\n ) => void;\n isCurrentUrl?: (link: string) => boolean;\n onClick?:\n | ((e: React.MouseEvent<any>, props: any) => void)\n | string\n | Function\n | null;\n componentClass: React.ReactType;\n tooltipContainer?: any;\n data?: any;\n isMenuItem?: boolean;\n active?: boolean;\n}\n\nconst allowedType = ['button', 'submit', 'reset'];\n\ninterface ActionState {\n inCountDown: boolean; // 是否在倒计时\n countDownEnd: number; // 倒计时结束的精确时间\n timeLeft: number; // 倒计时剩余时间\n}\n\nexport class Action extends React.Component<ActionProps, ActionState> {\n static defaultProps = {\n type: 'button' as 'button',\n componentClass: 'button' as React.ReactType,\n tooltipPlacement: 'bottom' as 'bottom',\n activeClassName: 'is-active',\n countDownTpl: 'Action.countDown',\n countDown: 0\n };\n\n state: ActionState = {\n inCountDown: false,\n countDownEnd: 0,\n timeLeft: 0\n };\n\n localStorageKey: string;\n\n dom: any;\n\n constructor(props: ActionProps) {\n super(props);\n this.localStorageKey = 'amis-countdownend-' + (this.props.name || '');\n const countDownEnd = parseInt(\n localStorage.getItem(this.localStorageKey) || '0'\n );\n if (countDownEnd && this.props.countDown) {\n if (Date.now() < countDownEnd) {\n this.state = {\n inCountDown: true,\n countDownEnd,\n timeLeft: Math.floor((countDownEnd - Date.now()) / 1000)\n };\n this.handleCountDown();\n }\n }\n }\n\n @autobind\n async handleAction(e: React.MouseEvent<any>) {\n const {onAction, disabled, countDown, env} = this.props;\n\n // https://reactjs.org/docs/legacy-event-pooling.html\n // e.persist(); // react 17之后去掉 event pooling 了,这个应该没用了\n let onClick = this.props.onClick;\n\n if (typeof onClick === 'string') {\n onClick = str2AsyncFunction(onClick, 'event', 'props');\n }\n const result: any = onClick && (await onClick(e, this.props));\n\n if (\n disabled ||\n e.isDefaultPrevented() ||\n result === false ||\n !onAction ||\n this.state.inCountDown\n ) {\n return;\n }\n\n e.preventDefault();\n const action = pick(this.props, ActionProps) as ActionSchema;\n const actionType = action.actionType;\n\n // ajax 会在 wrapFetcher 里记录,这里再处理就重复了,因此去掉\n // add 一般是 input-table 之类的,会触发 formItemChange,为了避免重复也去掉\n if (\n actionType !== 'ajax' &&\n actionType !== 'download' &&\n actionType !== 'add'\n ) {\n env?.tracker(\n {\n eventType: actionType || this.props.type || 'click',\n eventData: omit(action, ['type', 'actionType', 'tooltipPlacement'])\n },\n this.props\n );\n }\n\n // download 是一种 ajax 的简写\n if (actionType === 'download') {\n action.actionType = 'ajax';\n const api = normalizeApi((action as AjaxActionSchema).api);\n api.responseType = 'blob';\n (action as AjaxActionSchema).api = api;\n }\n\n onAction(e, action);\n\n if (countDown) {\n const countDownEnd = Date.now() + countDown * 1000;\n this.setState({\n countDownEnd: countDownEnd,\n inCountDown: true,\n timeLeft: countDown\n });\n\n localStorage.setItem(this.localStorageKey, String(countDownEnd));\n\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n handleCountDown() {\n // setTimeout 一般会晚于 1s,经过几十次后就不准了,所以使用真实时间进行 diff\n const timeLeft = Math.floor((this.state.countDownEnd - Date.now()) / 1000);\n if (timeLeft <= 0) {\n this.setState({\n inCountDown: false,\n timeLeft: timeLeft\n });\n } else {\n this.setState({\n timeLeft: timeLeft\n });\n setTimeout(() => {\n this.handleCountDown();\n }, 1000);\n }\n }\n\n @autobind\n componentDidMount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys(hotKey, event => {\n event.preventDefault();\n const click = new MouseEvent('click', {\n bubbles: true,\n cancelable: true\n });\n this.handleAction(createSyntheticEvent(click) as any);\n });\n }\n }\n\n @autobind\n componentWillUnmount() {\n const {hotKey} = this.props;\n if (hotKey) {\n hotkeys.unbind(hotKey);\n }\n }\n\n render() {\n const {\n type,\n icon,\n iconClassName,\n rightIcon,\n rightIconClassName,\n loadingClassName,\n primary,\n size,\n level,\n countDownTpl,\n block,\n className,\n componentClass,\n tooltip,\n disabledTip,\n tooltipPlacement,\n actionType,\n link,\n data,\n translate: __,\n activeClassName,\n isCurrentUrl,\n isMenuItem,\n active,\n activeLevel,\n tooltipTrigger,\n tooltipContainer,\n tooltipRootClose,\n loading,\n body,\n render,\n onMouseEnter,\n onMouseLeave,\n classnames: cx,\n classPrefix: ns\n } = this.props;\n\n if (actionType !== 'email' && body) {\n return (\n <TooltipWrapper\n classPrefix={ns}\n classnames={cx}\n placement={tooltipPlacement}\n tooltip={tooltip}\n container={tooltipContainer}\n trigger={tooltipTrigger}\n rootClose={tooltipRootClose}\n >\n <div\n className={cx('Action', className)}\n onClick={this.handleAction}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {render('body', body) as JSX.Element}\n </div>\n </TooltipWrapper>\n );\n }\n\n let label = this.props.label;\n let disabled = this.props.disabled;\n let isActive = !!active;\n\n if (actionType === 'link' && !isActive && link && isCurrentUrl) {\n isActive = isCurrentUrl(link);\n }\n\n // 倒计时\n if (this.state.inCountDown) {\n label = filterContents(__(countDownTpl), {\n ...data,\n timeLeft: this.state.timeLeft\n }) as string;\n disabled = true;\n }\n\n const iconElement = generateIcon(cx, icon, 'Button-icon', iconClassName);\n const rightIconElement = generateIcon(\n cx,\n rightIcon,\n 'Button-icon',\n rightIconClassName\n );\n\n return (\n <Button\n className={cx(className, {\n [activeClassName || 'is-active']: isActive\n })}\n size={size}\n level={\n activeLevel && isActive\n ? activeLevel\n : level || (primary ? 'primary' : undefined)\n }\n loadingClassName={loadingClassName}\n loading={loading}\n onClick={this.handleAction}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n type={type && ~allowedType.indexOf(type) ? type : 'button'}\n disabled={disabled}\n componentClass={isMenuItem ? 'a' : componentClass}\n overrideClassName={isMenuItem}\n tooltip={tooltip}\n disabledTip={disabledTip}\n tooltipPlacement={tooltipPlacement}\n tooltipContainer={tooltipContainer}\n tooltipTrigger={tooltipTrigger}\n tooltipRootClose={tooltipRootClose}\n block={block}\n iconOnly={!!(icon && !label && level !== 'link')}\n >\n {!loading ? iconElement : ''}\n {label ? <span>{filter(String(label), data)}</span> : null}\n {rightIconElement}\n </Button>\n );\n }\n}\n\nexport default themeable(Action);\n\n@Renderer({\n type: 'action'\n})\n// @ts-ignore 类型没搞定\n@withBadge\nexport class ActionRenderer extends React.Component<\n RendererProps &\n Omit<ActionProps, 'onAction' | 'isCurrentUrl' | 'tooltipContainer'> & {\n onAction: (\n e: React.MouseEvent<any> | void | null,\n action: object,\n data: any\n ) => void;\n btnDisabled?: boolean;\n }\n> {\n @autobind\n async handleAction(e: React.MouseEvent<any> | void | null, action: any) {\n const {env, onAction, data, ignoreConfirm, dispatchEvent} = this.props;\n\n // 触发渲染器事件\n const rendererEvent = await dispatchEvent(e as React.MouseEvent<any>, data);\n\n // 阻止原有动作执行\n if (rendererEvent?.prevented) {\n return;\n }\n\n if (!ignoreConfirm && action.confirmText && env.confirm) {\n env\n .confirm(filter(action.confirmText, data))\n .then((confirmed: boolean) => confirmed && onAction(e, action, data));\n } else {\n onAction(e, action, data);\n }\n }\n\n @autobind\n handleMouseEnter(e: React.MouseEvent<any>) {\n this.props.dispatchEvent(e, this.props.data);\n }\n\n @autobind\n handleMouseLeave(e: React.MouseEvent<any>) {\n this.props.dispatchEvent(e, this.props.data);\n }\n\n @autobind\n isCurrentAction(link: string) {\n const {env, data} = this.props;\n return env.isCurrentUrl(filter(link, data));\n }\n\n render() {\n const {env, disabled, btnDisabled, loading, ...rest} = this.props;\n\n return (\n <Action\n {...(rest as any)}\n env={env}\n disabled={disabled || btnDisabled}\n onAction={this.handleAction}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n loading={loading}\n isCurrentUrl={this.isCurrentAction}\n tooltipContainer={\n env.getModalContainer ? env.getModalContainer : undefined\n }\n />\n );\n }\n}\n\n@Renderer({\n type: 'button'\n})\nexport class ButtonRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'submit'\n})\nexport class SubmitRenderer extends ActionRenderer {}\n\n@Renderer({\n type: 'reset'\n})\nexport class ResetRenderer extends ActionRenderer {}\n"
12
12
  ]
13
13
  }
@@ -104,7 +104,7 @@ var ComboControl = /** @class */ (function (_super) {
104
104
  };
105
105
  ComboControl.prototype.getValueAsArray = function (props) {
106
106
  if (props === void 0) { props = this.props; }
107
- var flat = props.flat, joinValues = props.joinValues, delimiter = props.delimiter;
107
+ var flat = props.flat, joinValues = props.joinValues, delimiter = props.delimiter, type = props.type;
108
108
  var value = props.value;
109
109
  if (joinValues && flat && typeof value === 'string') {
110
110
  value = value.split(delimiter || ',');
@@ -215,7 +215,7 @@ var ComboControl = /** @class */ (function (_super) {
215
215
  };
216
216
  ComboControl.prototype.handleChange = function (values, diff, _a) {
217
217
  var index = _a.index;
218
- var _b = this.props, flat = _b.flat, store = _b.store, joinValues = _b.joinValues, delimiter = _b.delimiter, disabled = _b.disabled, submitOnChange = _b.submitOnChange;
218
+ var _b = this.props, flat = _b.flat, store = _b.store, joinValues = _b.joinValues, delimiter = _b.delimiter, disabled = _b.disabled, submitOnChange = _b.submitOnChange, type = _b.type;
219
219
  if (disabled) {
220
220
  return;
221
221
  }
@@ -224,7 +224,26 @@ var ComboControl = /** @class */ (function (_super) {
224
224
  if (flat && joinValues) {
225
225
  value = value.join(delimiter || ',');
226
226
  }
227
- this.props.onChange(value, submitOnChange, true);
227
+ if (type === 'input-kv') {
228
+ var hasDuplicateKey = false;
229
+ var keys = {};
230
+ for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {
231
+ var item = value_1[_i];
232
+ if (keys[item.key]) {
233
+ hasDuplicateKey = true;
234
+ }
235
+ else {
236
+ keys[item.key] = true;
237
+ }
238
+ }
239
+ // 有重复值就不触发修改,因为 KV 模式下无法支持重复值
240
+ if (!hasDuplicateKey) {
241
+ this.props.onChange(value, submitOnChange, true);
242
+ }
243
+ }
244
+ else {
245
+ this.props.onChange(value, submitOnChange, true);
246
+ }
228
247
  store.forms.forEach(function (form) {
229
248
  return (0, mobx_state_tree_1.isAlive)(form) &&
230
249
  form.items.forEach(function (item) { return item.unique && item.syncOptions(undefined, form.data); });