amis 1.4.1 → 1.4.2-beta.1

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 (239) hide show
  1. package/README.md +1 -1
  2. package/lib/Schema.d.ts +17 -0
  3. package/lib/Schema.js.map +1 -1
  4. package/lib/components/Alert.js +3 -1
  5. package/lib/components/Alert.js.map +2 -2
  6. package/lib/components/Badge.d.ts +2 -2
  7. package/lib/components/Badge.js +12 -6
  8. package/lib/components/Badge.js.map +2 -2
  9. package/lib/components/Collapse.js +1 -1
  10. package/lib/components/Collapse.js.map +2 -2
  11. package/lib/components/DatePicker.js +1 -1
  12. package/lib/components/DatePicker.js.map +2 -2
  13. package/lib/components/DateRangePicker.js +1 -1
  14. package/lib/components/DateRangePicker.js.map +2 -2
  15. package/lib/components/InputBox.js +1 -1
  16. package/lib/components/InputBox.js.map +2 -2
  17. package/lib/components/Link.d.ts +91 -0
  18. package/lib/components/Link.js +44 -0
  19. package/lib/components/Link.js.map +13 -0
  20. package/lib/components/MonthRangePicker.js +1 -1
  21. package/lib/components/MonthRangePicker.js.map +2 -2
  22. package/lib/components/RichText.js +17 -53
  23. package/lib/components/RichText.js.map +2 -2
  24. package/lib/components/Select.js +3 -0
  25. package/lib/components/Select.js.map +2 -2
  26. package/lib/components/SparkLine.d.ts +85 -84
  27. package/lib/components/SparkLine.js +2 -2
  28. package/lib/components/SparkLine.js.map +2 -2
  29. package/lib/components/Toast.js +2 -2
  30. package/lib/components/Toast.js.map +2 -2
  31. package/lib/components/Tree.js +5 -3
  32. package/lib/components/Tree.js.map +2 -2
  33. package/lib/components/icons.js +12 -0
  34. package/lib/components/icons.js.map +2 -2
  35. package/lib/icons/clock.js +10 -0
  36. package/lib/icons/status-close.js +11 -0
  37. package/lib/icons/status-fail.js +11 -0
  38. package/lib/icons/status-info.js +10 -0
  39. package/lib/icons/status-success.js +11 -0
  40. package/lib/icons/status-warning.js +10 -0
  41. package/lib/index.js +1 -1
  42. package/lib/locale/de-DE.js +2 -0
  43. package/lib/locale/de-DE.js.map +2 -2
  44. package/lib/locale/en-US.js +2 -0
  45. package/lib/locale/en-US.js.map +2 -2
  46. package/lib/locale/zh-CN.js +3 -1
  47. package/lib/locale/zh-CN.js.map +2 -2
  48. package/lib/renderers/Action.d.ts +7 -0
  49. package/lib/renderers/Action.js.map +2 -2
  50. package/lib/renderers/CRUD.js +21 -6
  51. package/lib/renderers/CRUD.js.map +2 -2
  52. package/lib/renderers/Collapse.js +2 -2
  53. package/lib/renderers/Collapse.js.map +2 -2
  54. package/lib/renderers/Dialog.js +0 -3
  55. package/lib/renderers/Dialog.js.map +2 -2
  56. package/lib/renderers/Drawer.js +0 -3
  57. package/lib/renderers/Drawer.js.map +2 -2
  58. package/lib/renderers/DropDownButton.d.ts +5 -1
  59. package/lib/renderers/DropDownButton.js +8 -6
  60. package/lib/renderers/DropDownButton.js.map +2 -2
  61. package/lib/renderers/Form/Checkbox.d.ts +5 -0
  62. package/lib/renderers/Form/Checkbox.js +4 -0
  63. package/lib/renderers/Form/Checkbox.js.map +2 -2
  64. package/lib/renderers/Form/Combo.js +2 -2
  65. package/lib/renderers/Form/Combo.js.map +2 -2
  66. package/lib/renderers/Form/InputFile.js +2 -2
  67. package/lib/renderers/Form/InputFile.js.map +2 -2
  68. package/lib/renderers/Form/InputImage.js +5 -3
  69. package/lib/renderers/Form/InputImage.js.map +2 -2
  70. package/lib/renderers/Form/Options.js +6 -3
  71. package/lib/renderers/Form/Options.js.map +2 -2
  72. package/lib/renderers/Form/Picker.js +2 -2
  73. package/lib/renderers/Form/Picker.js.map +2 -2
  74. package/lib/renderers/Form/wrapControl.js +2 -2
  75. package/lib/renderers/Form/wrapControl.js.map +2 -2
  76. package/lib/renderers/IFrame.js +2 -2
  77. package/lib/renderers/IFrame.js.map +2 -2
  78. package/lib/renderers/Image.d.ts +1 -0
  79. package/lib/renderers/Image.js +15 -1
  80. package/lib/renderers/Image.js.map +2 -2
  81. package/lib/renderers/Link.d.ts +16 -3
  82. package/lib/renderers/Link.js +16 -13
  83. package/lib/renderers/Link.js.map +2 -2
  84. package/lib/renderers/Log.d.ts +2 -2
  85. package/lib/renderers/Log.js +7 -1
  86. package/lib/renderers/Log.js.map +2 -2
  87. package/lib/renderers/Nav.d.ts +62 -36
  88. package/lib/renderers/Nav.js +248 -90
  89. package/lib/renderers/Nav.js.map +2 -2
  90. package/lib/renderers/SparkLine.d.ts +4 -0
  91. package/lib/renderers/SparkLine.js.map +2 -2
  92. package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
  93. package/lib/renderers/Table/ColumnToggler.js +216 -0
  94. package/lib/renderers/Table/ColumnToggler.js.map +13 -0
  95. package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  96. package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
  97. package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
  98. package/lib/renderers/Table/TableBody.d.ts +4 -0
  99. package/lib/renderers/Table/TableCell.js +3 -1
  100. package/lib/renderers/Table/TableCell.js.map +2 -2
  101. package/lib/renderers/Table/index.d.ts +14 -1
  102. package/lib/renderers/Table/index.js +116 -36
  103. package/lib/renderers/Table/index.js.map +2 -2
  104. package/lib/store/table.d.ts +257 -1
  105. package/lib/store/table.js +41 -6
  106. package/lib/store/table.js.map +2 -2
  107. package/lib/themes/ang-ie11.css +393 -90
  108. package/lib/themes/ang.css +393 -90
  109. package/lib/themes/ang.css.map +1 -1
  110. package/lib/themes/antd-ie11.css +393 -90
  111. package/lib/themes/antd.css +393 -90
  112. package/lib/themes/antd.css.map +1 -1
  113. package/lib/themes/cxd-ie11.css +904 -263
  114. package/lib/themes/cxd.css +904 -263
  115. package/lib/themes/cxd.css.map +1 -1
  116. package/lib/themes/dark-ie11.css +393 -90
  117. package/lib/themes/dark.css +393 -90
  118. package/lib/themes/dark.css.map +1 -1
  119. package/lib/themes/default.css +904 -263
  120. package/lib/themes/default.css.map +1 -1
  121. package/lib/utils/api.js +4 -4
  122. package/lib/utils/api.js.map +2 -2
  123. package/lib/utils/handleAction.d.ts +7 -0
  124. package/lib/utils/handleAction.js +30 -0
  125. package/lib/utils/handleAction.js.map +13 -0
  126. package/lib/utils/helper.d.ts +1 -1
  127. package/lib/utils/helper.js +3 -3
  128. package/lib/utils/helper.js.map +2 -2
  129. package/lib/utils/tpl-builtin.d.ts +1 -1
  130. package/lib/utils/tpl-builtin.js +25 -15
  131. package/lib/utils/tpl-builtin.js.map +2 -2
  132. package/package.json +1 -1
  133. package/schema.json +322 -261
  134. package/scss/_properties.scss +39 -4
  135. package/scss/_utilities.scss +4 -0
  136. package/scss/components/_button.scss +4 -5
  137. package/scss/components/_collapse.scss +26 -8
  138. package/scss/components/_column-toggler.scss +234 -0
  139. package/scss/components/_dropdown.scss +2 -1
  140. package/scss/components/_images.scss +2 -1
  141. package/scss/components/_link.scss +6 -0
  142. package/scss/components/_nav.scss +231 -223
  143. package/scss/components/_page.scss +5 -4
  144. package/scss/components/_progress.scss +2 -0
  145. package/scss/components/_steps.scss +1 -1
  146. package/scss/components/_table.scss +25 -1
  147. package/scss/components/form/_color.scss +1 -0
  148. package/scss/components/form/_date-range.scss +2 -0
  149. package/scss/components/form/_date.scss +2 -0
  150. package/scss/components/form/_fieldset.scss +1 -2
  151. package/scss/components/form/_file.scss +5 -4
  152. package/scss/components/form/_image.scss +7 -2
  153. package/scss/components/form/_list.scss +1 -0
  154. package/scss/components/form/_location.scss +1 -1
  155. package/scss/components/form/_text.scss +13 -0
  156. package/scss/components/form/_textarea.scss +10 -0
  157. package/scss/components/form/_transfer.scss +2 -0
  158. package/scss/themes/_common.scss +2 -0
  159. package/scss/themes/_cxd-colors.scss +56 -0
  160. package/scss/themes/_cxd-variables.scss +215 -90
  161. package/scss/themes/cxd.scss +366 -0
  162. package/sdk/ang-ie11.css +569 -235
  163. package/sdk/ang.css +512 -151
  164. package/sdk/antd-ie11.css +558 -224
  165. package/sdk/antd.css +512 -151
  166. package/sdk/charts.js +13 -13
  167. package/sdk/color-picker.js +67 -67
  168. package/sdk/cropperjs.js +2 -2
  169. package/sdk/cxd-ie11.css +1506 -870
  170. package/sdk/cxd.css +1064 -324
  171. package/sdk/dark-ie11.css +569 -235
  172. package/sdk/dark.css +512 -151
  173. package/sdk/exceljs.js +1 -1
  174. package/sdk/ie11-patch.css +1 -0
  175. package/sdk/locale/de-DE.js +2 -0
  176. package/sdk/markdown.js +69 -69
  177. package/sdk/papaparse.js +1 -1
  178. package/sdk/renderers/Form/CityDB.js +1 -1
  179. package/sdk/rest.js +22 -22
  180. package/sdk/rich-text.js +62 -62
  181. package/sdk/sdk-ie11.css +1506 -870
  182. package/sdk/sdk.css +1064 -324
  183. package/sdk/sdk.js +1138 -1118
  184. package/sdk/thirds/hls.js/hls.js +1 -1
  185. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  186. package/sdk/tinymce.js +57 -57
  187. package/src/Schema.ts +18 -0
  188. package/src/components/Alert.tsx +3 -1
  189. package/src/components/Badge.tsx +36 -24
  190. package/src/components/Collapse.tsx +14 -9
  191. package/src/components/DatePicker.tsx +1 -1
  192. package/src/components/DateRangePicker.tsx +23 -11
  193. package/src/components/InputBox.tsx +1 -1
  194. package/src/components/Link.tsx +94 -0
  195. package/src/components/MonthRangePicker.tsx +10 -2
  196. package/src/components/RichText.tsx +17 -57
  197. package/src/components/Select.tsx +3 -0
  198. package/src/components/SparkLine.tsx +4 -1
  199. package/src/components/Toast.tsx +5 -5
  200. package/src/components/Tree.tsx +6 -8
  201. package/src/components/icons.tsx +13 -0
  202. package/src/icons/clock.svg +1 -0
  203. package/src/icons/status-close.svg +10 -0
  204. package/src/icons/status-fail.svg +10 -0
  205. package/src/icons/status-info.svg +8 -0
  206. package/src/icons/status-success.svg +10 -0
  207. package/src/icons/status-warning.svg +8 -0
  208. package/src/locale/de-DE.ts +2 -0
  209. package/src/locale/en-US.ts +2 -0
  210. package/src/locale/zh-CN.ts +3 -1
  211. package/src/renderers/Action.tsx +5 -0
  212. package/src/renderers/CRUD.tsx +31 -26
  213. package/src/renderers/Collapse.tsx +1 -1
  214. package/src/renderers/Dialog.tsx +0 -4
  215. package/src/renderers/Drawer.tsx +0 -4
  216. package/src/renderers/DropDownButton.tsx +19 -14
  217. package/src/renderers/Form/Checkbox.tsx +8 -0
  218. package/src/renderers/Form/Combo.tsx +2 -3
  219. package/src/renderers/Form/InputFile.tsx +2 -1
  220. package/src/renderers/Form/InputImage.tsx +5 -2
  221. package/src/renderers/Form/Options.tsx +16 -5
  222. package/src/renderers/Form/Picker.tsx +3 -2
  223. package/src/renderers/Form/wrapControl.tsx +2 -2
  224. package/src/renderers/IFrame.tsx +2 -1
  225. package/src/renderers/Image.tsx +10 -0
  226. package/src/renderers/Link.tsx +36 -11
  227. package/src/renderers/Log.tsx +16 -3
  228. package/src/renderers/Nav.tsx +255 -100
  229. package/src/renderers/SparkLine.tsx +5 -0
  230. package/src/renderers/Table/ColumnToggler.tsx +544 -0
  231. package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
  232. package/src/renderers/Table/TableCell.tsx +16 -1
  233. package/src/renderers/Table/index.tsx +179 -47
  234. package/src/store/table.ts +57 -6
  235. package/src/utils/api.ts +13 -4
  236. package/src/utils/handleAction.ts +41 -0
  237. package/src/utils/helper.ts +4 -4
  238. package/src/utils/tpl-builtin.ts +48 -17
  239. package/sdk.zip +0 -0
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { RendererProps } from '../../factory';
3
3
  import { SchemaNode, Action } from '../../types';
4
+ import './ColumnToggler';
4
5
  import { ITableStore, IColumn, IRow } from '../../store/table';
5
6
  import Sortable from 'sortablejs';
6
7
  import { TableCell } from './TableCell';
@@ -9,6 +10,7 @@ import { SchemaPopOver } from '../PopOver';
9
10
  import { SchemaQuickEdit } from '../QuickEdit';
10
11
  import { SchemaCopyable } from '../Copyable';
11
12
  import { SchemaRemark } from '../Remark';
13
+ import { BadgeSchema } from '../../components/Badge';
12
14
  /**
13
15
  * 表格列,不指定类型时默认为文本类型。
14
16
  */
@@ -48,7 +50,7 @@ export declare type TableColumnObject = {
48
50
  /**
49
51
  * 是否可快速搜索
50
52
  */
51
- searchable?: boolean;
53
+ searchable?: boolean | SchemaObject;
52
54
  /**
53
55
  * 配置是否默认展示
54
56
  */
@@ -191,6 +193,14 @@ export interface TableSchema extends BaseSchema {
191
193
  * 行样式表表达式
192
194
  */
193
195
  rowClassNameExpr?: string;
196
+ /**
197
+ * 行角标
198
+ */
199
+ itemBadge?: BadgeSchema;
200
+ /**
201
+ * 开启查询区域,会根据列元素的searchable属性值,自动生成查询条件表单
202
+ */
203
+ autoGenerateFilter?: boolean;
194
204
  }
195
205
  export interface TableProps extends RendererProps {
196
206
  title?: string;
@@ -245,6 +255,7 @@ export interface TableProps extends RendererProps {
245
255
  popOverContainer?: any;
246
256
  canAccessSuperData?: boolean;
247
257
  reUseRow?: boolean;
258
+ itemBadge?: BadgeSchema;
248
259
  }
249
260
  declare type ExportExcelToolbar = SchemaNode & {
250
261
  api?: SchemaApi;
@@ -323,6 +334,8 @@ export default class Table extends React.Component<TableProps, object> {
323
334
  handleColResizeMouseDown(e: React.MouseEvent<HTMLElement>): void;
324
335
  handleColResizeMouseMove(e: MouseEvent): void;
325
336
  handleColResizeMouseUp(e: MouseEvent): void;
337
+ handleColumnToggle(columns: Array<IColumn>): void;
338
+ renderAutoFilterForm(): React.ReactNode;
326
339
  renderHeading(): JSX.Element | null;
327
340
  renderHeadCell(column: IColumn, props?: any): JSX.Element;
328
341
  renderCell(region: string, column: IColumn, item: IRow, props: any, ignoreDrag?: boolean): JSX.Element | null;
@@ -7,7 +7,7 @@ var react_dom_1 = require("react-dom");
7
7
  var factory_1 = require("../../factory");
8
8
  var forEach_1 = (0, tslib_1.__importDefault)(require("lodash/forEach"));
9
9
  var tpl_1 = require("../../utils/tpl");
10
- var DropDownButton_1 = (0, tslib_1.__importDefault)(require("../DropDownButton"));
10
+ require("./ColumnToggler");
11
11
  var Checkbox_1 = (0, tslib_1.__importDefault)(require("../../components/Checkbox"));
12
12
  var Button_1 = (0, tslib_1.__importDefault)(require("../../components/Button"));
13
13
  var table_1 = require("../../store/table");
@@ -26,6 +26,8 @@ var TableContent_1 = require("./TableContent");
26
26
  var image_1 = require("../../utils/image");
27
27
  var TableBody_1 = require("./TableBody");
28
28
  var mobx_state_tree_1 = require("mobx-state-tree");
29
+ var ItemActionsWrapper_1 = (0, tslib_1.__importDefault)(require("./ItemActionsWrapper"));
30
+ var ColumnToggler_1 = (0, tslib_1.__importDefault)(require("./ColumnToggler"));
29
31
  /**
30
32
  * 将 url 转成绝对地址
31
33
  */
@@ -75,6 +77,8 @@ var Table = /** @class */ (function (_super) {
75
77
  _this.handleMouseMove = _this.handleMouseMove.bind(_this);
76
78
  _this.handleMouseLeave = _this.handleMouseLeave.bind(_this);
77
79
  _this.subFormRef = _this.subFormRef.bind(_this);
80
+ _this.handleColumnToggle = _this.handleColumnToggle.bind(_this);
81
+ _this.renderAutoFilterForm = _this.renderAutoFilterForm.bind(_this);
78
82
  var store = props.store, columns = props.columns, selectable = props.selectable, columnsTogglable = props.columnsTogglable, draggable = props.draggable, orderBy = props.orderBy, orderDir = props.orderDir, multiple = props.multiple, footable = props.footable, primaryField = props.primaryField, itemCheckableOn = props.itemCheckableOn, itemDraggableOn = props.itemDraggableOn, hideCheckToggler = props.hideCheckToggler, combineFromIndex = props.combineFromIndex, expandConfig = props.expandConfig, formItem = props.formItem, keepItemSelectionOnPageChange = props.keepItemSelectionOnPageChange, maxKeepItemSelectionLength = props.maxKeepItemSelectionLength;
79
83
  var combineNum = props.combineNum;
80
84
  if (typeof combineNum === 'string') {
@@ -199,8 +203,12 @@ var Table = /** @class */ (function (_super) {
199
203
  Table.syncRows(store, props, prevProps) && this.syncSelected();
200
204
  }
201
205
  else if ((0, helper_1.isArrayChildrenModified)(prevProps.selected, props.selected)) {
206
+ var prevSelectedRows = store.selectedRows
207
+ .map(function (item) { return item.id; })
208
+ .join(',');
202
209
  store.updateSelected(props.selected || [], props.valueField);
203
- this.syncSelected();
210
+ var selectedRows = store.selectedRows.map(function (item) { return item.id; }).join(',');
211
+ prevSelectedRows !== selectedRows && this.syncSelected();
204
212
  }
205
213
  this.updateTableInfoLazy();
206
214
  };
@@ -515,7 +523,7 @@ var Table = /** @class */ (function (_super) {
515
523
  return (0, react_dom_1.findDOMNode)(this);
516
524
  };
517
525
  Table.prototype.handleMouseMove = function (e) {
518
- var tr = e.target.closest('tr[data-index]');
526
+ var tr = e.target.closest('tr[data-id]');
519
527
  if (!tr) {
520
528
  return;
521
529
  }
@@ -526,17 +534,17 @@ var Table = /** @class */ (function (_super) {
526
534
  (!itemActions || !itemActions.filter(function (item) { return !item.hiddenOnHover; }).length)) {
527
535
  return;
528
536
  }
529
- var index = parseInt(tr.getAttribute('data-index'), 10);
530
- if (store.hoverIndex === index) {
537
+ var id = tr.getAttribute('data-id');
538
+ var row = store.hoverRow;
539
+ if ((row === null || row === void 0 ? void 0 : row.id) === id) {
531
540
  return;
532
541
  }
533
- store.rows.forEach(function (item, key) { return item.setIsHover(index === key); });
542
+ (0, helper_1.eachTree)(store.rows, function (item) { return item.setIsHover(item.id === id); });
534
543
  };
535
544
  Table.prototype.handleMouseLeave = function () {
536
545
  var store = this.props.store;
537
- if (~store.hoverIndex) {
538
- store.rows[store.hoverIndex].setIsHover(false);
539
- }
546
+ var row = store.hoverRow;
547
+ row === null || row === void 0 ? void 0 : row.setIsHover(false);
540
548
  };
541
549
  Table.prototype.handleDragStart = function (e) {
542
550
  var store = this.props.store;
@@ -674,6 +682,87 @@ var Table = /** @class */ (function (_super) {
674
682
  document.removeEventListener('mousemove', this.handleColResizeMouseMove);
675
683
  document.removeEventListener('mouseup', this.handleColResizeMouseUp);
676
684
  };
685
+ Table.prototype.handleColumnToggle = function (columns) {
686
+ var store = this.props.store;
687
+ store.update({ columns: columns });
688
+ };
689
+ Table.prototype.renderAutoFilterForm = function () {
690
+ var _a = this.props, render = _a.render, store = _a.store, onSearchableFromReset = _a.onSearchableFromReset, onSearchableFromSubmit = _a.onSearchableFromSubmit, onSearchableFromInit = _a.onSearchableFromInit, cx = _a.classnames, __ = _a.translate;
691
+ var searchableColumns = store.searchableColumns;
692
+ var activedSearchableColumns = store.activedSearchableColumns;
693
+ if (!searchableColumns.length) {
694
+ return null;
695
+ }
696
+ var groupedSearchableColumns = [
697
+ { body: [], md: 4 },
698
+ { body: [], md: 4 },
699
+ { body: [], md: 4 }
700
+ ];
701
+ activedSearchableColumns.forEach(function (column, index) {
702
+ var _a, _b, _c, _d;
703
+ groupedSearchableColumns[index % 3].body.push((0, tslib_1.__assign)((0, tslib_1.__assign)({}, column.searchable), { name: (_b = (_a = column.searchable) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : column.name, label: (_d = (_c = column.searchable) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : column.label, mode: 'horizontal' }));
704
+ });
705
+ return render('searchable-form', {
706
+ type: 'form',
707
+ api: null,
708
+ title: '',
709
+ mode: 'normal',
710
+ submitText: __('search'),
711
+ body: [
712
+ {
713
+ type: 'grid',
714
+ columns: groupedSearchableColumns
715
+ }
716
+ ],
717
+ actions: [
718
+ {
719
+ type: 'dropdown-button',
720
+ label: __('Table.searchFields'),
721
+ className: cx('Table-searchableForm-dropdown', 'mr-2'),
722
+ level: 'link',
723
+ trigger: 'click',
724
+ size: 'sm',
725
+ align: 'right',
726
+ buttons: searchableColumns.map(function (column) {
727
+ var _a, _b, _c, _d;
728
+ return {
729
+ type: 'checkbox',
730
+ className: cx('Table-searchableForm-checkbox'),
731
+ name: "__search_" + ((_b = (_a = column.searchable) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : column.name),
732
+ option: (_d = (_c = column.searchable) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : column.label,
733
+ value: column.enableSearch,
734
+ badge: {
735
+ offset: [-10, 5],
736
+ visibleOn: "" + (column.toggable && !column.toggled && column.enableSearch)
737
+ },
738
+ onChange: function (value) {
739
+ column.setEnableSearch(value);
740
+ }
741
+ };
742
+ })
743
+ },
744
+ {
745
+ type: 'submit',
746
+ label: __('search'),
747
+ level: 'primary',
748
+ className: 'w-18'
749
+ },
750
+ {
751
+ type: 'reset',
752
+ label: __('reset'),
753
+ className: 'w-18'
754
+ }
755
+ ]
756
+ }, {
757
+ key: 'searchable-form',
758
+ panelClassName: cx('Table-searchableForm'),
759
+ actionsClassName: cx('Table-searchableForm-footer'),
760
+ onReset: onSearchableFromReset,
761
+ onSubmit: onSearchableFromSubmit,
762
+ onInit: onSearchableFromInit,
763
+ formStore: undefined
764
+ });
765
+ };
677
766
  Table.prototype.renderHeading = function () {
678
767
  var _a = this.props, title = _a.title, store = _a.store, hideQuickSaveBtn = _a.hideQuickSaveBtn, data = _a.data, cx = _a.classnames, saveImmediately = _a.saveImmediately, headingClassName = _a.headingClassName, quickSaveApi = _a.quickSaveApi, __ = _a.translate;
679
768
  if (title ||
@@ -705,7 +794,7 @@ var Table = /** @class */ (function (_super) {
705
794
  return null;
706
795
  };
707
796
  Table.prototype.renderHeadCell = function (column, props) {
708
- var _a = this.props, store = _a.store, query = _a.query, onQuery = _a.onQuery, multiple = _a.multiple, env = _a.env, render = _a.render, ns = _a.classPrefix, resizable = _a.resizable, cx = _a.classnames;
797
+ var _a = this.props, store = _a.store, query = _a.query, onQuery = _a.onQuery, multiple = _a.multiple, env = _a.env, render = _a.render, ns = _a.classPrefix, resizable = _a.resizable, cx = _a.classnames, autoGenerateFilter = _a.autoGenerateFilter;
709
798
  if (column.type === '__checkme') {
710
799
  return (react_1.default.createElement("th", (0, tslib_1.__assign)({}, props, { className: cx(column.pristine.className) }), store.rows.length && multiple ? (react_1.default.createElement(Checkbox_1.default, { classPrefix: ns, partial: !store.allChecked, checked: store.someChecked, disabled: store.disabledHeadCheckbox, onChange: this.handleCheckAll })) : ('\u00A0')));
711
800
  }
@@ -724,7 +813,7 @@ var Table = /** @class */ (function (_super) {
724
813
  react_1.default.createElement(icons_1.Icon, { icon: "right-arrow-bold", className: "icon" })))));
725
814
  }
726
815
  var affix = null;
727
- if (column.searchable && column.name) {
816
+ if (column.searchable && column.name && !autoGenerateFilter) {
728
817
  affix = (react_1.default.createElement(HeadCellSearchDropdown_1.HeadCellSearchDropDown, (0, tslib_1.__assign)({}, this.props, { onQuery: onQuery, name: column.name, searchable: column.searchable, sortable: column.sortable, type: column.type, data: query, orderBy: store.orderBy, orderDir: store.orderDir, popOverContainer: this.getPopOverContainer })));
729
818
  }
730
819
  else if (column.sortable && column.name) {
@@ -793,7 +882,7 @@ var Table = /** @class */ (function (_super) {
793
882
  };
794
883
  Table.prototype.renderCell = function (region, column, item, props, ignoreDrag) {
795
884
  if (ignoreDrag === void 0) { ignoreDrag = false; }
796
- var _a = this.props, render = _a.render, store = _a.store, multiple = _a.multiple, ns = _a.classPrefix, cx = _a.classnames, checkOnItemClick = _a.checkOnItemClick, popOverContainer = _a.popOverContainer, canAccessSuperData = _a.canAccessSuperData;
885
+ var _a = this.props, render = _a.render, store = _a.store, multiple = _a.multiple, ns = _a.classPrefix, cx = _a.classnames, checkOnItemClick = _a.checkOnItemClick, popOverContainer = _a.popOverContainer, canAccessSuperData = _a.canAccessSuperData, itemBadge = _a.itemBadge;
797
886
  if (column.name && item.rowSpans[column.name] === 0) {
798
887
  return null;
799
888
  }
@@ -826,7 +915,9 @@ var Table = /** @class */ (function (_super) {
826
915
  }
827
916
  var subProps = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, props), { btnDisabled: store.dragging, data: item.locals, value: column.name
828
917
  ? (0, tpl_builtin_1.resolveVariable)(column.name, canAccessSuperData ? item.locals : item.data)
829
- : column.value, popOverContainer: popOverContainer || this.getPopOverContainer, rowSpan: item.rowSpans[column.name], quickEditFormRef: this.subFormRef, prefix: prefix, onImageEnlarge: this.handleImageEnlarge, canAccessSuperData: canAccessSuperData });
918
+ : column.value, popOverContainer: popOverContainer || this.getPopOverContainer, rowSpan: item.rowSpans[column.name], quickEditFormRef: this.subFormRef, prefix: prefix, onImageEnlarge: this.handleImageEnlarge, canAccessSuperData: canAccessSuperData, row: item, itemBadge: itemBadge, showBadge: !props.isHead &&
919
+ itemBadge &&
920
+ store.firstToggledColumnIndex === props.colIndex });
830
921
  delete subProps.label;
831
922
  return render(region, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, column.pristine), { column: column.pristine, type: 'cell' }), subProps);
832
923
  };
@@ -907,14 +998,15 @@ var Table = /** @class */ (function (_super) {
907
998
  return void 0;
908
999
  };
909
1000
  Table.prototype.renderColumnsToggler = function (config) {
910
- var _a = this.props, className = _a.className, store = _a.store, ns = _a.classPrefix, cx = _a.classnames, rest = (0, tslib_1.__rest)(_a, ["className", "store", "classPrefix", "classnames"]);
1001
+ var _a;
1002
+ var _b = this.props, className = _b.className, store = _b.store, ns = _b.classPrefix, cx = _b.classnames, rest = (0, tslib_1.__rest)(_b, ["className", "store", "classPrefix", "classnames"]);
911
1003
  var __ = rest.translate;
912
1004
  var env = rest.env;
913
1005
  var render = this.props.render;
914
1006
  if (!store.columnsTogglable) {
915
1007
  return null;
916
1008
  }
917
- return (react_1.default.createElement(DropDownButton_1.default, (0, tslib_1.__assign)({}, rest, { tooltip: __('Table.columnsVisibility'), tooltipContainer: env && env.getModalContainer ? env.getModalContainer : undefined, align: config ? config.align : 'left', isActived: store.hasColumnHidden(), classnames: cx, classPrefix: ns, key: "columns-toggable", size: "sm", label: react_1.default.createElement(icons_1.Icon, { icon: "columns", className: "icon m-r-none" }) }), store.toggableColumns.map(function (column) { return (react_1.default.createElement("li", { className: cx('DropDown-menuItem'), key: column.index, onClick: column.toggleToggle },
1009
+ return (react_1.default.createElement(ColumnToggler_1.default, (0, tslib_1.__assign)({}, rest, ((0, helper_1.isObject)(config) ? config : {}), { tooltip: (config === null || config === void 0 ? void 0 : config.tooltip) || __('Table.columnsVisibility'), tooltipContainer: env && env.getModalContainer ? env.getModalContainer : undefined, align: (_a = config === null || config === void 0 ? void 0 : config.align) !== null && _a !== void 0 ? _a : 'left', isActived: store.hasColumnHidden(), classnames: cx, classPrefix: ns, key: "columns-toggable", size: (config === null || config === void 0 ? void 0 : config.size) || 'sm', label: (config === null || config === void 0 ? void 0 : config.label) || react_1.default.createElement(icons_1.Icon, { icon: "columns", className: "icon m-r-none" }), draggable: config === null || config === void 0 ? void 0 : config.draggable, columns: store.columnsData, onColumnToggle: this.handleColumnToggle }), store.toggableColumns.map(function (column) { return (react_1.default.createElement("li", { className: cx('ColumnToggler-menuItem'), key: column.index, onClick: column.toggleToggle },
918
1010
  react_1.default.createElement(Checkbox_1.default, { size: "sm", classPrefix: ns, checked: column.toggled }, column.label ? render('tpl', column.label) : null))); })));
919
1011
  };
920
1012
  Table.prototype.renderDragToggler = function () {
@@ -1247,27 +1339,13 @@ var Table = /** @class */ (function (_super) {
1247
1339
  if (!finalActions.length) {
1248
1340
  return null;
1249
1341
  }
1250
- var rowIndex = store.hoverIndex;
1251
- var heights = this.heights;
1252
- var height = 40;
1253
- var top = 0;
1254
- if (heights && heights[rowIndex]) {
1255
- height = heights[rowIndex];
1256
- top += heights.header;
1257
- for (var i = rowIndex - 1; i >= 0; i--) {
1258
- top += heights[i];
1259
- }
1260
- }
1261
- return (react_1.default.createElement("div", { className: cx('Table-itemActions-wrap'), style: {
1262
- top: top,
1263
- height: height
1264
- } },
1342
+ return (react_1.default.createElement(ItemActionsWrapper_1.default, { store: store, classnames: cx },
1265
1343
  react_1.default.createElement("div", { className: cx('Table-itemActions') }, finalActions.map(function (action, index) {
1266
1344
  return render("itemAction/" + index, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, action), { isMenuItem: true }), {
1267
1345
  key: index,
1268
- item: store.rows[rowIndex],
1269
- data: store.rows[rowIndex].locals,
1270
- rowIndex: rowIndex
1346
+ item: store.hoverRow,
1347
+ data: store.hoverRow.locals,
1348
+ rowIndex: store.hoverRow.index
1271
1349
  });
1272
1350
  }))));
1273
1351
  };
@@ -1279,7 +1357,7 @@ var Table = /** @class */ (function (_super) {
1279
1357
  return (react_1.default.createElement(TableContent_1.TableContent, { tableClassName: cx(store.combineNum > 0 ? 'Table-table--withCombine' : '', tableClassName), itemAction: itemAction, classnames: cx, columns: store.filteredColumns, columnsGroup: store.columnGroup, rows: store.rows, placeholder: placeholder, render: render, onMouseMove: this.handleMouseMove, onScroll: this.handleOutterScroll, tableRef: this.tableRef, renderHeadCell: this.renderHeadCell, renderCell: this.renderCell, onCheck: this.handleCheck, onQuickChange: store.dragging ? undefined : this.handleQuickChange, footable: store.footable, footableColumns: store.footableColumns, checkOnItemClick: checkOnItemClick, buildItemProps: buildItemProps, onAction: this.handleAction, rowClassNameExpr: rowClassNameExpr, rowClassName: rowClassName, data: store.data, prefixRow: prefixRow, affixRow: affixRow, locale: locale, translate: translate }));
1280
1358
  };
1281
1359
  Table.prototype.render = function () {
1282
- var _a = this.props, className = _a.className, store = _a.store, cx = _a.classnames, affixColumns = _a.affixColumns;
1360
+ var _a = this.props, className = _a.className, store = _a.store, cx = _a.classnames, affixColumns = _a.affixColumns, autoGenerateFilter = _a.autoGenerateFilter;
1283
1361
  this.renderedToolbars = []; // 用来记录哪些 toolbar 已经渲染了,已经渲染了就不重复渲染了。
1284
1362
  var heading = this.renderHeading();
1285
1363
  var header = this.renderHeader();
@@ -1288,6 +1366,7 @@ var Table = /** @class */ (function (_super) {
1288
1366
  return (react_1.default.createElement("div", { className: cx('Table', className, {
1289
1367
  'Table--unsaved': !!store.modified || !!store.moved
1290
1368
  }) },
1369
+ autoGenerateFilter ? this.renderAutoFilterForm() : null,
1291
1370
  header,
1292
1371
  heading,
1293
1372
  react_1.default.createElement("div", { className: cx('Table-contentWrap'), onMouseLeave: this.handleMouseLeave },
@@ -1298,7 +1377,7 @@ var Table = /** @class */ (function (_super) {
1298
1377
  ? this.renderFixedColumns(store.rows, store.rightFixedColumns, false, tableClassName)
1299
1378
  : null),
1300
1379
  this.renderTableContent(),
1301
- ~store.hoverIndex ? this.renderItemActions() : null),
1380
+ store.hoverRow ? this.renderItemActions() : null),
1302
1381
  this.renderAffixHeader(tableClassName),
1303
1382
  footer));
1304
1383
  };
@@ -1341,7 +1420,8 @@ var Table = /** @class */ (function (_super) {
1341
1420
  'popOverContainer',
1342
1421
  'headerToolbarClassName',
1343
1422
  'toolbarClassName',
1344
- 'footerToolbarClassName'
1423
+ 'footerToolbarClassName',
1424
+ 'itemBadge'
1345
1425
  ];
1346
1426
  Table.defaultProps = {
1347
1427
  className: '',