@teamix/pro 1.2.16 → 1.2.20

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 (86) hide show
  1. package/dist/212.js +49 -49
  2. package/dist/pro.css +1 -1
  3. package/dist/pro.js +2147 -686
  4. package/dist/pro.min.css +1 -1
  5. package/dist/pro.min.js +1 -1
  6. package/es/actions/base.d.ts +2 -1
  7. package/es/actions/base.js +1 -1
  8. package/es/actions/danger-pop-confirm.d.ts +5 -0
  9. package/es/actions/danger-pop-confirm.js +10 -0
  10. package/es/actions/dialog.d.ts +1 -1
  11. package/es/actions/dialog.js +34 -36
  12. package/es/actions/index.d.ts +5 -0
  13. package/es/actions/index.js +38 -14
  14. package/es/actions/pop-confirm.d.ts +9 -0
  15. package/es/actions/pop-confirm.js +9 -0
  16. package/es/form/Components/LightFilter/componentMap.d.ts +2 -1
  17. package/es/form/Components/LightFilter/componentMap.js +2 -1
  18. package/es/form/Components/LightFilter/index.d.ts +1 -0
  19. package/es/form/Components/LightFilter/index.js +19 -13
  20. package/es/form/Components/LightFilter/index.scss +14 -4
  21. package/es/form/Filter/AdvancedFilter.d.ts +7 -0
  22. package/es/form/Filter/AdvancedFilter.js +113 -0
  23. package/es/form/Filter/LightFilter.d.ts +7 -0
  24. package/es/form/Filter/LightFilter.js +79 -0
  25. package/es/form/Filter/SimpleFilter.d.ts +7 -0
  26. package/es/form/Filter/SimpleFilter.js +74 -0
  27. package/es/form/Filter/index2.js +288 -235
  28. package/es/form/Filter/index2.scss +3 -0
  29. package/es/form/ProForm/index.js +11 -8
  30. package/es/form/ProForm/index.scss +3 -0
  31. package/es/form/ProForm/useFieldRequest.js +1 -8
  32. package/es/form/SchemaForm/index.js +3 -1
  33. package/es/form/typing.d.ts +11 -2
  34. package/es/index.d.ts +1 -1
  35. package/es/index.js +1 -1
  36. package/es/nocode/configurators/ProTable.js +1 -0
  37. package/es/table/components/Filter/index.js +42 -16
  38. package/es/table/components/Pagination/index.d.ts +3 -0
  39. package/es/table/components/Pagination/index.js +82 -0
  40. package/es/table/components/ToolBar/FilterColumnIcon.js +18 -5
  41. package/es/table/components/ToolBar/index.scss +8 -2
  42. package/es/table/index.js +71 -18
  43. package/es/table/index.scss +7 -1
  44. package/es/table/typing.d.ts +5 -0
  45. package/es/table/utils/columnRender.js +1 -1
  46. package/lib/actions/base.d.ts +2 -1
  47. package/lib/actions/base.js +1 -1
  48. package/lib/actions/danger-pop-confirm.d.ts +5 -0
  49. package/lib/actions/danger-pop-confirm.js +22 -0
  50. package/lib/actions/dialog.d.ts +1 -1
  51. package/lib/actions/dialog.js +35 -36
  52. package/lib/actions/index.d.ts +5 -0
  53. package/lib/actions/index.js +40 -14
  54. package/lib/actions/pop-confirm.d.ts +9 -0
  55. package/lib/actions/pop-confirm.js +23 -0
  56. package/lib/form/Components/LightFilter/componentMap.d.ts +2 -1
  57. package/lib/form/Components/LightFilter/componentMap.js +4 -3
  58. package/lib/form/Components/LightFilter/index.d.ts +1 -0
  59. package/lib/form/Components/LightFilter/index.js +18 -12
  60. package/lib/form/Components/LightFilter/index.scss +14 -4
  61. package/lib/form/Filter/AdvancedFilter.d.ts +7 -0
  62. package/lib/form/Filter/AdvancedFilter.js +133 -0
  63. package/lib/form/Filter/LightFilter.d.ts +7 -0
  64. package/lib/form/Filter/LightFilter.js +99 -0
  65. package/lib/form/Filter/SimpleFilter.d.ts +7 -0
  66. package/lib/form/Filter/SimpleFilter.js +93 -0
  67. package/lib/form/Filter/index2.js +290 -234
  68. package/lib/form/Filter/index2.scss +3 -0
  69. package/lib/form/ProForm/index.js +11 -7
  70. package/lib/form/ProForm/index.scss +3 -0
  71. package/lib/form/ProForm/useFieldRequest.js +1 -9
  72. package/lib/form/SchemaForm/index.js +3 -1
  73. package/lib/form/typing.d.ts +11 -2
  74. package/lib/index.d.ts +1 -1
  75. package/lib/index.js +1 -1
  76. package/lib/nocode/configurators/ProTable.js +1 -0
  77. package/lib/table/components/Filter/index.js +42 -16
  78. package/lib/table/components/Pagination/index.d.ts +3 -0
  79. package/lib/table/components/Pagination/index.js +95 -0
  80. package/lib/table/components/ToolBar/FilterColumnIcon.js +18 -5
  81. package/lib/table/components/ToolBar/index.scss +8 -2
  82. package/lib/table/index.js +69 -17
  83. package/lib/table/index.scss +7 -1
  84. package/lib/table/typing.d.ts +5 -0
  85. package/lib/table/utils/columnRender.js +1 -1
  86. package/package.json +3 -3
@@ -129,6 +129,7 @@ export declare type rowSelectionType = {
129
129
  onSelect?: (selected: boolean, record: any, records: Array<any>) => void;
130
130
  onSelectAll?: (selected: boolean, records: Array<any>) => void;
131
131
  selectedRowKeys?: Array<any>;
132
+ selectedRecords?: any[];
132
133
  mode?: 'single' | 'multiple';
133
134
  titleProps?: () => any;
134
135
  columnProps?: () => any;
@@ -177,6 +178,8 @@ export declare type ProTableActionType = {
177
178
  resetPage?: () => void;
178
179
  /** 获取数据过滤区表单实例 */
179
180
  dataFilterForm?: FormType;
181
+ /** 表格当前的数据 */
182
+ data?: any[];
180
183
  } & ProTableActionTypeMutations;
181
184
  /** action State 定义 */
182
185
  export declare type ProTableActionTypeMutations = {
@@ -232,6 +235,8 @@ export declare type ProTableTopAreaProps = {
232
235
  dataFilter?: ProTableDataFilterProps;
233
236
  /** 数据过滤区 form 表单模型 */
234
237
  dataFilterForm?: FormType;
238
+ /** 排序、筛选列展示状态 */
239
+ filterColumnType?: 'dialog' | 'dropdown' | 'auto';
235
240
  };
236
241
  /** 单个工具栏 */
237
242
  export declare type ProTableToolBarItem = React.ReactNode | 'refresh' | 'density' | 'filterColumn' | 'fullscreen';
@@ -96,7 +96,7 @@ export var renderColumnsTitle = function renderColumnsTitle(item, actionRef) {
96
96
  };
97
97
 
98
98
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LabelIconTip, {
99
- label: getItemLabel(),
99
+ label: item.title,
100
100
  tooltip: item.tooltip,
101
101
  icon: item.tooltipIcon
102
102
  }), item.filters && /*#__PURE__*/React.createElement(Filter, {
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { MaybePromise } from '@teamix/utils';
2
3
  export interface BaseAction {
3
4
  /** 事件触发方式,默认是 onClick */
@@ -17,7 +18,7 @@ export interface BaseAction {
17
18
  /** 事件开始执行完毕的回调函数 */
18
19
  onFinish?: (params?: any) => any;
19
20
  }
20
- export declare function eventHandler(action: BaseAction, actionContext: any, onTrigger: (context: any) => void): {
21
+ export declare function eventHandler(action: BaseAction, actionContext: any, onTrigger: (context: any, e: React.MouseEvent<HTMLElement>) => void): {
21
22
  [x: string]: (e: React.MouseEvent<HTMLElement>) => Promise<void>;
22
23
  };
23
24
  export default eventHandler;
@@ -65,7 +65,7 @@ function eventHandler(action, actionContext, onTrigger) {
65
65
  return _context.abrupt("return");
66
66
 
67
67
  case 14:
68
- onTrigger(Object.assign({}, beforeActionContext, actionContext));
68
+ onTrigger(Object.assign({}, beforeActionContext, actionContext), e);
69
69
  (_action$onTrigger = action.onTrigger) === null || _action$onTrigger === void 0 ? void 0 : _action$onTrigger.call(action);
70
70
 
71
71
  case 16:
@@ -0,0 +1,5 @@
1
+ import { PopConfirmAction } from './pop-confirm';
2
+ export declare function useDangerPopConfirmAction(action: PopConfirmAction, context?: any): {
3
+ [x: string]: (e: import("react").MouseEvent<HTMLElement, MouseEvent>) => Promise<void>;
4
+ };
5
+ export default useDangerPopConfirmAction;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ exports.useDangerPopConfirmAction = useDangerPopConfirmAction;
8
+
9
+ var _utils = require("@teamix/utils");
10
+
11
+ var _dialog = require("./dialog");
12
+
13
+ function useDangerPopConfirmAction(action, context) {
14
+ return (0, _dialog.useDialogAction)((0, _utils.deepMerge)({
15
+ dialogType: 'pop',
16
+ popType: 'danger',
17
+ align: 'br'
18
+ }, action), context);
19
+ }
20
+
21
+ var _default = useDangerPopConfirmAction;
22
+ exports.default = _default;
@@ -8,7 +8,7 @@ export interface DialogAction extends Omit<RequestAction, 'url'>, Omit<QuickShow
8
8
  /** 点击「确认按钮」后的数据请求地址,非必填,不填就不发请求 */
9
9
  url?: string;
10
10
  /** 弹窗类型,支持普通弹窗和抽屉两种模式,默认为普通弹窗 */
11
- dialogType?: 'dialog' | 'drawer';
11
+ dialogType?: 'dialog' | 'drawer' | 'pop';
12
12
  /** 弹窗快捷调用类型 */
13
13
  dialogQuickShowType?: 'alert' | 'confirm';
14
14
  /** 弹窗消息类型 */
@@ -16,6 +16,8 @@ var _reactRouterDom = require("react-router-dom");
16
16
 
17
17
  var _components = require("@alicloudfe/components");
18
18
 
19
+ var _popConfirm = _interopRequireDefault(require("@teamix/pop-confirm"));
20
+
19
21
  var _utils = require("@teamix/utils");
20
22
 
21
23
  var _form = _interopRequireWildcard(require("../form"));
@@ -29,7 +31,7 @@ var _request = require("./request");
29
31
  var _utils2 = require("./utils");
30
32
 
31
33
  var _excluded = ["url", "method", "params", "data", "extendParams", "successMsg", "errorMsg", "formatParams", "formatResult", "onSuccess", "onError"],
32
- _excluded2 = ["title", "content", "component", "schema", "onFinish", "dialogType", "dialogQuickShowType", "messageType", "beforeRequest", "onTrigger", "link", "beforeContent", "afterContent", "message", "footerDescription", "footerAlign", "className"];
34
+ _excluded2 = ["title", "content", "component", "schema", "onFinish", "dialogType", "dialogQuickShowType", "messageType", "popType", "beforeRequest", "onTrigger", "link", "beforeContent", "afterContent", "message", "footerDescription", "footerAlign", "className"];
33
35
 
34
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
37
 
@@ -102,7 +104,9 @@ function useDialogAction(action, actionContext) {
102
104
  var footerDescriptionRef = (0, _react.useRef)();
103
105
  var history = (0, _reactRouterDom.useHistory)();
104
106
 
105
- var onActionStart = function onActionStart(context) {
107
+ var onActionStart = function onActionStart(context, e) {
108
+ var _objectSpread2;
109
+
106
110
  var url = action.url,
107
111
  method = action.method,
108
112
  params = action.params,
@@ -126,6 +130,7 @@ function useDialogAction(action, actionContext) {
126
130
  dialogQuickShowType = _getTargetValue.dialogQuickShowType,
127
131
  _getTargetValue$messa = _getTargetValue.messageType,
128
132
  messageType = _getTargetValue$messa === void 0 ? 'notice' : _getTargetValue$messa,
133
+ popType = _getTargetValue.popType,
129
134
  beforeRequest = _getTargetValue.beforeRequest,
130
135
  onTrigger = _getTargetValue.onTrigger,
131
136
  link = _getTargetValue.link,
@@ -135,20 +140,25 @@ function useDialogAction(action, actionContext) {
135
140
  footerDescription = _getTargetValue.footerDescription,
136
141
  footerAlign = _getTargetValue.footerAlign,
137
142
  className = _getTargetValue.className,
138
- containerProps = _objectWithoutProperties(_getTargetValue, _excluded2);
143
+ containerOtherProps = _objectWithoutProperties(_getTargetValue, _excluded2);
139
144
 
140
145
  var isDrawer = dialogType === 'drawer';
141
- var container = isDrawer ? _components.Drawer : _components.Dialog;
142
- var dialogOnlyProps = {
146
+ var isPop = dialogType === 'pop';
147
+ var container = isDrawer ? _components.Drawer : isPop ? _popConfirm.default : _components.Dialog;
148
+ var containerProps = isDrawer ? {
149
+ okText: (0, _utils.getMessage)('ok'),
150
+ cancelText: (0, _utils.getMessage)('cancel'),
151
+ closeable: !loading
152
+ } : isPop ? {
153
+ type: popType,
154
+ trigger: e.currentTarget
155
+ } : {
143
156
  type: dialogQuickShowType,
144
157
  messageProps: {
145
158
  type: messageType
146
- }
159
+ },
160
+ closeable: !loading
147
161
  };
148
- var containerOtherProps = isDrawer ? {
149
- okText: (0, _utils.getMessage)('ok'),
150
- cancelText: (0, _utils.getMessage)('cancel')
151
- } : dialogOnlyProps;
152
162
 
153
163
  var renderDialogFooterDescription = function renderDialogFooterDescription(footer) {
154
164
  if (footer instanceof Array || footer.component) {
@@ -177,15 +187,12 @@ function useDialogAction(action, actionContext) {
177
187
  while (1) {
178
188
  switch (_context.prev = _context.next) {
179
189
  case 0:
180
- if (url) {
190
+ if (!link) {
181
191
  _context.next = 5;
182
192
  break;
183
193
  }
184
194
 
185
- if (link) {
186
- (0, _utils.goToLink)(link, history);
187
- }
188
-
195
+ (0, _utils.goToLink)(link, history);
189
196
  onFinish && onFinish();
190
197
  resolve(true);
191
198
  return _context.abrupt("return");
@@ -243,27 +250,19 @@ function useDialogAction(action, actionContext) {
243
250
  key: (0, _utils.uuid)()
244
251
  }, (0, _utils2.addContext)(componentProps, dialogContext))) : addContextForReactNode(content, dialogContext);
245
252
 
246
- var quickShowProps = _objectSpread(_objectSpread({
247
- // @ts-ignore
248
- onOk: onOk,
249
- title: addContextForReactNode(title, dialogContext),
250
- content: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, beforeContent && /*#__PURE__*/_react.default.createElement("div", {
251
- className: "teamix-pro-dialog-before-content"
252
- }, addContextForReactNode(beforeContent, dialogContext)), message && /*#__PURE__*/_react.default.createElement("div", {
253
- className: "teamix-pro-dialog-message"
254
- }, (0, _message.renderProMessage)(message, {
255
- type: 'notice'
256
- })), dialogContent, afterContent && /*#__PURE__*/_react.default.createElement("div", {
257
- className: "teamix-pro-dialog-after-content"
258
- }, addContextForReactNode(afterContent, dialogContext)), footerDescription && /*#__PURE__*/_react.default.createElement("div", {
259
- className: (0, _classnames.default)('teamix-pro-dialog-footer-description', getFooterAlignClass(isDrawer, footerAlign))
260
- }, renderDialogFooterDescription(footerDescription))),
261
- closeable: !loading,
262
- footerAlign: footerAlign,
263
- className: (0, _classnames.default)('teamix-pro-action-dialog', {
264
- 'has-footer-description': !!footerDescription
265
- })
266
- }, containerOtherProps), containerProps);
253
+ var quickShowProps = _objectSpread(_objectSpread((_objectSpread2 = {}, _defineProperty(_objectSpread2, "".concat(isPop ? 'onConfirm' : 'onOk'), onOk), _defineProperty(_objectSpread2, "title", addContextForReactNode(title, dialogContext)), _defineProperty(_objectSpread2, "content", /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, beforeContent && /*#__PURE__*/_react.default.createElement("div", {
254
+ className: "teamix-pro-dialog-before-content"
255
+ }, addContextForReactNode(beforeContent, dialogContext)), message && /*#__PURE__*/_react.default.createElement("div", {
256
+ className: "teamix-pro-dialog-message"
257
+ }, (0, _message.renderProMessage)(message, {
258
+ type: 'notice'
259
+ })), dialogContent, afterContent && /*#__PURE__*/_react.default.createElement("div", {
260
+ className: "teamix-pro-dialog-after-content"
261
+ }, addContextForReactNode(afterContent, dialogContext)), !isPop && footerDescription && /*#__PURE__*/_react.default.createElement("div", {
262
+ className: (0, _classnames.default)('teamix-pro-dialog-footer-description', getFooterAlignClass(isDrawer, footerAlign))
263
+ }, renderDialogFooterDescription(footerDescription)))), _defineProperty(_objectSpread2, "footerAlign", footerAlign), _defineProperty(_objectSpread2, "className", (0, _classnames.default)('teamix-pro-action-dialog', {
264
+ 'has-footer-description': !!footerDescription
265
+ })), _objectSpread2), containerProps), containerOtherProps);
267
266
 
268
267
  var ret = container.show(quickShowProps);
269
268
  store.hide = ret.hide;
@@ -7,6 +7,7 @@ import { DialogAction } from './dialog';
7
7
  import { DialogFormAction } from './dialog-form';
8
8
  import { DialogTableAction } from './dialog-table';
9
9
  import { DialogInfoAction } from './dialog-info';
10
+ import { PopConfirmAction } from './pop-confirm';
10
11
  import './index.scss';
11
12
  export declare type ProActionConfig = ({
12
13
  type: 'dialog-form' | 'drawer-form';
@@ -15,6 +16,8 @@ export declare type ProActionConfig = ({
15
16
  } & DialogTableAction) | ({
16
17
  type: 'dialog-info' | 'drawer-info';
17
18
  } & DialogInfoAction) | ({
19
+ type: 'pop-confirm' | 'danger-pop-confirm';
20
+ } & PopConfirmAction) | ({
18
21
  type: 'dialog' | 'drawer' | 'confirm' | 'danger-confirm' | 'notice' | 'error';
19
22
  } & DialogAction) | ({
20
23
  type: 'request';
@@ -24,6 +27,7 @@ export declare type ProActionConfig = ({
24
27
  export declare function registerActionHandler(id: string, extendActionId: string, defaultConfig: any): void;
25
28
  export declare function useAction(config?: ProActionConfig, context?: any): any;
26
29
  export interface ProActionButtonProps extends ButtonProps {
30
+ key?: string | number;
27
31
  config?: ProActionConfig;
28
32
  visible?: any;
29
33
  disabled?: any;
@@ -33,6 +37,7 @@ export interface ProActionButtonProps extends ButtonProps {
33
37
  }
34
38
  export declare const ProActionButton: (props: ProActionButtonProps) => JSX.Element;
35
39
  export interface ProActionMenuButtonProps extends MenuButtonProps {
40
+ key?: string | number;
36
41
  actions: ProActionProps[];
37
42
  visible?: any;
38
43
  icon?: string;
@@ -47,6 +47,10 @@ var _drawerTable = require("./drawer-table");
47
47
 
48
48
  var _drawerInfo = require("./drawer-info");
49
49
 
50
+ var _popConfirm = require("./pop-confirm");
51
+
52
+ var _dangerPopConfirm = require("./danger-pop-confirm");
53
+
50
54
  require("./index.scss");
51
55
 
52
56
  var _excluded = ["type"],
@@ -54,8 +58,8 @@ var _excluded = ["type"],
54
58
  _excluded3 = ["loading"],
55
59
  _excluded4 = ["icon", "iconSize", "label", "actions", "children", "context", "type"],
56
60
  _excluded5 = ["context", "text"],
57
- _excluded6 = ["actions"],
58
- _excluded7 = ["config"],
61
+ _excluded6 = ["key", "actions"],
62
+ _excluded7 = ["key", "config"],
59
63
  _excluded8 = ["type", "divider", "max", "moreText", "context", "actions", "className"];
60
64
 
61
65
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -155,6 +159,14 @@ function useAction(config, context) {
155
159
  return (0, _drawerInfo.useDrawerInfoAction)(others, context);
156
160
  }
157
161
 
162
+ if (type === 'pop-confirm') {
163
+ return (0, _popConfirm.usePopConfirmAction)(others, context);
164
+ }
165
+
166
+ if (type === 'danger-pop-confirm') {
167
+ return (0, _dangerPopConfirm.useDangerPopConfirmAction)(others, context);
168
+ }
169
+
158
170
  var registedAction = RegistedActions.get(type);
159
171
 
160
172
  if (!registedAction) {
@@ -242,8 +254,8 @@ function renderCommonActionButtonMenuItem(action, key, context) {
242
254
  return /*#__PURE__*/_react.default.createElement(_components.Menu.SubMenu, {
243
255
  key: key,
244
256
  label: menuBtn.label || menuBtn.children
245
- }, menuBtn.actions.map(function (a, j) {
246
- return renderCommonActionButtonMenuItem(a, String(j), context);
257
+ }, menuBtn.actions.map(function (a) {
258
+ return renderCommonActionButtonMenuItem(a, a.key, context);
247
259
  }));
248
260
  }
249
261
 
@@ -278,7 +290,7 @@ var ProActionMenuButton = function ProActionMenuButton(props) {
278
290
  type: type,
279
291
  label: buttonContent(label || children, icon, iconSize, context)
280
292
  }, others), actions.map(function (action, i) {
281
- return renderCommonActionButtonMenuItem(action, String(i), context);
293
+ return renderCommonActionButtonMenuItem(action, action.key || i, context);
282
294
  }));
283
295
  }; // 如果 actions 数量超过了 max,则把第 max 个和剩余超出部分折叠起来成为一个 menu
284
296
 
@@ -292,7 +304,9 @@ function formatGroupActions(actions, max, moreConfig) {
292
304
  return actions;
293
305
  }
294
306
 
295
- return [].concat(_toConsumableArray(actions.slice(0, MAX - 1)), [_objectSpread(_objectSpread({}, moreConfig), {}, {
307
+ return [].concat(_toConsumableArray(actions.slice(0, MAX - 1)), [_objectSpread(_objectSpread({
308
+ key: '__teamix_pro_action_group_more_btn'
309
+ }, moreConfig), {}, {
296
310
  actions: actions.slice(MAX - 1)
297
311
  })]);
298
312
  } // 渲染一个 button 或者 menu button
@@ -338,22 +352,34 @@ function getDefaultMoreButton(type, moreText) {
338
352
 
339
353
  var MAX_ACTTIONS = 4;
340
354
 
341
- function getActionConfig(action, context) {
355
+ function getKey(index, key) {
356
+ if (key !== undefined) {
357
+ return key;
358
+ }
359
+
360
+ return "__teamix_pro_action_key_".concat(index);
361
+ }
362
+
363
+ function getActionConfig(action, index, context) {
342
364
  if (action.actions) {
343
- var actions = action.actions,
365
+ var _key = action.key,
366
+ actions = action.actions,
344
367
  _others = _objectWithoutProperties(action, _excluded6);
345
368
 
346
369
  return _objectSpread({
347
- actions: actions.map(function (a) {
348
- return getActionConfig(a, context);
370
+ key: getKey(index, _key),
371
+ actions: actions.map(function (a, j) {
372
+ return getActionConfig(a, j, context);
349
373
  })
350
374
  }, (0, _utils.getTargetValue)(_others, context));
351
375
  }
352
376
 
353
- var config = action.config,
377
+ var key = action.key,
378
+ config = action.config,
354
379
  others = _objectWithoutProperties(action, _excluded7);
355
380
 
356
381
  return _objectSpread({
382
+ key: getKey(index, key),
357
383
  config: config
358
384
  }, (0, _utils.getTargetValue)(others, context));
359
385
  }
@@ -373,8 +399,8 @@ function ProActionGroup(props) {
373
399
  containerProps = _objectWithoutProperties(props, _excluded8);
374
400
 
375
401
  var isTypeText = type === 'text';
376
- var filteredActions = actions.map(function (action) {
377
- return getActionConfig(action, context);
402
+ var filteredActions = actions.map(function (action, index) {
403
+ return getActionConfig(action, index, context);
378
404
  }).filter(function (action) {
379
405
  return action.visible !== false;
380
406
  });
@@ -386,7 +412,7 @@ function ProActionGroup(props) {
386
412
  }, containerProps), formatedActions.map(function (actionBtn, i) {
387
413
  var isLastOne = i === formatedActions.length - 1;
388
414
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
389
- key: i
415
+ key: actionBtn.key
390
416
  }, renderCommonActionButton(actionBtn, context, isTypeText), isTypeText && divider && !isLastOne && /*#__PURE__*/_react.default.createElement(_components.Divider, {
391
417
  direction: "ver"
392
418
  }));
@@ -0,0 +1,9 @@
1
+ import { IPopConfirmProps } from '@teamix/pop-confirm';
2
+ import { DialogAction } from './dialog';
3
+ export declare type PopConfirmAction = DialogAction & Omit<IPopConfirmProps, 'type' | 'trigger'> & {
4
+ popType?: IPopConfirmProps['type'];
5
+ };
6
+ export declare function usePopConfirmAction(action: PopConfirmAction, context?: any): {
7
+ [x: string]: (e: import("react").MouseEvent<HTMLElement, MouseEvent>) => Promise<void>;
8
+ };
9
+ export default usePopConfirmAction;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ exports.usePopConfirmAction = usePopConfirmAction;
8
+
9
+ var _utils = require("@teamix/utils");
10
+
11
+ var _dialog = _interopRequireDefault(require("./dialog"));
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ function usePopConfirmAction(action, context) {
16
+ return (0, _dialog.default)((0, _utils.deepMerge)({
17
+ dialogType: 'pop',
18
+ align: 'br'
19
+ }, action), context);
20
+ }
21
+
22
+ var _default = usePopConfirmAction;
23
+ exports.default = _default;
@@ -1,2 +1,3 @@
1
1
  declare const componentMap: any;
2
- export default componentMap;
2
+ declare const inputCategory: any[];
3
+ export { componentMap, inputCategory };
@@ -3,10 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.inputCategory = exports.componentMap = void 0;
7
7
  var componentMap = {
8
8
  Radio: 'Select',
9
9
  Checkbox: 'Select'
10
10
  };
11
- var _default = componentMap;
12
- exports.default = _default;
11
+ exports.componentMap = componentMap;
12
+ var inputCategory = ['Input', 'Password', 'TextArea', 'NumberPicker', 'Percent', 'Money'];
13
+ exports.inputCategory = inputCategory;
@@ -8,6 +8,7 @@ import './index.scss';
8
8
  interface ILightFiter {
9
9
  size?: 'small' | 'medium' | 'large';
10
10
  defaultFilterValue?: string;
11
+ onFilterChange?: (schema?: any) => any;
11
12
  filterProps?: SelectProps;
12
13
  buttonProps?: ButtonProps;
13
14
  }
@@ -19,7 +19,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
19
19
 
20
20
  var _utils = require("@teamix/utils");
21
21
 
22
- var _componentMap = _interopRequireDefault(require("./componentMap"));
22
+ var _componentMap = require("./componentMap");
23
23
 
24
24
  require("./index.scss");
25
25
 
@@ -53,13 +53,12 @@ var useMain = function useMain(active) {
53
53
  var main = [];
54
54
  schema.mapProperties(function (schema, name) {
55
55
  // console.log(schema.required); // 添加 *
56
- // console.log(schema);
57
56
  if (schema.name === active) {
58
57
  main.push({
59
58
  name: name,
60
59
  schema: _objectSpread(_objectSpread({}, schema), {}, {
61
60
  title: '',
62
- 'x-component': _componentMap.default[schema['x-component']] || schema['x-component']
61
+ 'x-component': _componentMap.componentMap[schema['x-component']] || schema['x-component']
63
62
  })
64
63
  });
65
64
  }
@@ -78,16 +77,21 @@ var useFilterItems = function useFilterItems() {
78
77
  });
79
78
  });
80
79
  return filterItems;
80
+ }; // 是否输入框类型的组件
81
+
82
+
83
+ var isInputCategory = function isInputCategory(currentSchema) {
84
+ var component = currentSchema === null || currentSchema === void 0 ? void 0 : currentSchema['x-component'];
85
+ return _componentMap.inputCategory.includes(component);
81
86
  };
82
87
 
83
88
  var LightFilter = (0, _react2.observer)(function (props) {
84
- var _filterItems$;
89
+ var _filterItems$, _main$;
85
90
 
86
- var field = (0, _react2.useField)();
87
- var schema = (0, _react2.useFieldSchema)();
88
91
  var filterItems = useFilterItems();
89
92
  var size = props.size,
90
93
  defaultFilterValue = props.defaultFilterValue,
94
+ onFilterChange = props.onFilterChange,
91
95
  filterProps = props.filterProps,
92
96
  buttonProps = props.buttonProps;
93
97
 
@@ -97,6 +101,7 @@ var LightFilter = (0, _react2.observer)(function (props) {
97
101
  setActive = _useState2[1];
98
102
 
99
103
  var main = useMain(active);
104
+ var currentSchema = (_main$ = main[0]) === null || _main$ === void 0 ? void 0 : _main$.schema;
100
105
  var defaultCls = (0, _utils.usePrefixCls)();
101
106
  var prefixCls = (0, _utils.usePrefixCls)('', {
102
107
  prefix: 'teamix-pro-form-light-filter'
@@ -107,20 +112,21 @@ var LightFilter = (0, _react2.observer)(function (props) {
107
112
  return /*#__PURE__*/_react.default.createElement(_react2.RecursionField, {
108
113
  key: key,
109
114
  name: name,
110
- schema: schema,
111
- filterProperties: function filterProperties(schema) {
112
- return true;
113
- }
115
+ schema: schema
114
116
  });
115
117
  });
118
+ var onSelectChange = (0, _react.useCallback)(function (value) {
119
+ setActive(value);
120
+ onFilterChange && onFilterChange(value);
121
+ }, [onFilterChange]);
116
122
  return /*#__PURE__*/_react.default.createElement("span", {
117
- className: (0, _classnames.default)(prefixCls, "".concat(defaultCls).concat(size))
123
+ className: (0, _classnames.default)(prefixCls, "".concat(defaultCls).concat(size), isInputCategory(currentSchema) ? "".concat(prefixCls, "-input-category") : '')
118
124
  }, /*#__PURE__*/_react.default.createElement("span", {
119
125
  className: "".concat(prefixCls, "-main")
120
126
  }, /*#__PURE__*/_react.default.createElement(_components.Select, _objectSpread(_objectSpread({}, filterProps), {}, {
121
127
  className: (0, _classnames.default)("".concat(prefixCls, "-select"), filterProps === null || filterProps === void 0 ? void 0 : filterProps.className),
122
128
  dataSource: filterItems,
123
- onChange: setActive,
129
+ onChange: onSelectChange,
124
130
  value: active
125
131
  })), content), /*#__PURE__*/_react.default.createElement("span", {
126
132
  className: "".concat(prefixCls, "-addonAfter")
@@ -18,10 +18,7 @@ $light-filter: #{teamix-pro-form}-light-filter;
18
18
  box-sizing: border-box;
19
19
  border: var(--search-normal-normal-border-width, 1px) solid
20
20
  var(--color-line1-2, #d9d9d9);
21
- border-right: 0;
22
21
  border-radius: var(--search-normal-corner, 2px);
23
- border-top-right-radius: 0;
24
- border-bottom-right-radius: 0;
25
22
  // 表单项选择
26
23
  .#{$light-filter}-select {
27
24
  min-width: auto;
@@ -30,7 +27,7 @@ $light-filter: #{teamix-pro-form}-light-filter;
30
27
  border: 0;
31
28
  box-shadow: none;
32
29
  .#{$css-prefix}input-text-field {
33
- padding-right: 0;
30
+ padding-right: 4px;
34
31
  }
35
32
  }
36
33
  .#{$css-prefix}input {
@@ -44,6 +41,7 @@ $light-filter: #{teamix-pro-form}-light-filter;
44
41
 
45
42
  // 按钮后缀
46
43
  .#{$light-filter}-addonAfter {
44
+ display: none;
47
45
  .#{$css-prefix}btn {
48
46
  border-top-left-radius: 0;
49
47
  border-bottom-left-radius: 0;
@@ -54,6 +52,18 @@ $light-filter: #{teamix-pro-form}-light-filter;
54
52
  }
55
53
  }
56
54
 
55
+ // LightFilter输入类
56
+ .#{$light-filter}-input-category {
57
+ .#{$light-filter}-main {
58
+ border-right: 0;
59
+ border-top-right-radius: 0;
60
+ border-bottom-right-radius: 0;
61
+ }
62
+ .#{$light-filter}-addonAfter {
63
+ display: block;
64
+ }
65
+ }
66
+
57
67
  // LightFilter无边框
58
68
  .#{$form-item-cls}-bordered-none {
59
69
  .#{$form-item-cls}-control {
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { FilterProps } from '../typing';
3
+ /**
4
+ * 高级筛选
5
+ */
6
+ declare const AdvancedFilter: React.FC<FilterProps>;
7
+ export default AdvancedFilter;