es-grid-template 1.2.0 → 1.2.2

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 (69) hide show
  1. package/assets/index.css +695 -0
  2. package/assets/index.scss +1063 -0
  3. package/es/grid-component/ColumnsChoose.d.ts +1 -0
  4. package/es/grid-component/ColumnsChoose.js +63 -28
  5. package/es/grid-component/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  6. package/es/grid-component/ColumnsGroup/ColumnsGroup.js +223 -0
  7. package/es/grid-component/ColumnsGroup/index.d.ts +1 -0
  8. package/es/grid-component/ColumnsGroup/index.js +1 -0
  9. package/es/grid-component/ConvertColumnTable.d.ts +7 -0
  10. package/es/grid-component/ConvertColumnTable.js +143 -0
  11. package/es/grid-component/EditableCell.js +1 -1
  12. package/es/grid-component/GridStyle.js +1 -1
  13. package/es/grid-component/InternalTable.d.ts +1 -0
  14. package/es/grid-component/InternalTable.js +150 -249
  15. package/es/grid-component/TableGrid.d.ts +4 -1
  16. package/es/grid-component/TableGrid.js +31 -70
  17. package/es/grid-component/hooks/{useColumns → columns}/index.d.ts +2 -2
  18. package/es/grid-component/hooks/{useColumns → columns}/index.js +20 -16
  19. package/es/grid-component/hooks/content/HeaderContent.d.ts +11 -0
  20. package/es/grid-component/hooks/content/HeaderContent.js +79 -0
  21. package/es/grid-component/hooks/content/TooltipContent.d.ts +13 -0
  22. package/es/grid-component/hooks/content/TooltipContent.js +74 -0
  23. package/es/grid-component/hooks/useColumns.d.ts +16 -0
  24. package/es/grid-component/hooks/useColumns.js +280 -0
  25. package/es/grid-component/hooks/utils.d.ts +26 -1
  26. package/es/grid-component/hooks/utils.js +331 -1
  27. package/es/grid-component/index.js +3 -1
  28. package/es/grid-component/styles.scss +365 -68
  29. package/es/grid-component/table/Grid.d.ts +2 -0
  30. package/es/grid-component/table/Grid.js +18 -6
  31. package/es/grid-component/table/GridEdit.d.ts +4 -1
  32. package/es/grid-component/table/GridEdit.js +941 -307
  33. package/es/grid-component/table/Group.d.ts +13 -0
  34. package/es/grid-component/table/Group.js +154 -0
  35. package/es/grid-component/type.d.ts +39 -2
  36. package/lib/grid-component/ColumnsChoose.d.ts +1 -0
  37. package/lib/grid-component/ColumnsChoose.js +62 -27
  38. package/lib/grid-component/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  39. package/lib/grid-component/ColumnsGroup/ColumnsGroup.js +234 -0
  40. package/lib/grid-component/ColumnsGroup/index.d.ts +1 -0
  41. package/lib/grid-component/ColumnsGroup/index.js +16 -0
  42. package/lib/grid-component/ConvertColumnTable.d.ts +7 -0
  43. package/lib/grid-component/ConvertColumnTable.js +152 -0
  44. package/lib/grid-component/EditableCell.js +1 -1
  45. package/lib/grid-component/GridStyle.js +1 -1
  46. package/lib/grid-component/InternalTable.d.ts +1 -0
  47. package/lib/grid-component/InternalTable.js +144 -249
  48. package/lib/grid-component/TableGrid.d.ts +4 -1
  49. package/lib/grid-component/TableGrid.js +26 -68
  50. package/lib/grid-component/hooks/{useColumns → columns}/index.d.ts +2 -2
  51. package/lib/grid-component/hooks/{useColumns → columns}/index.js +20 -16
  52. package/lib/grid-component/hooks/content/HeaderContent.d.ts +11 -0
  53. package/lib/grid-component/hooks/content/HeaderContent.js +86 -0
  54. package/lib/grid-component/hooks/content/TooltipContent.d.ts +13 -0
  55. package/lib/grid-component/hooks/content/TooltipContent.js +81 -0
  56. package/lib/grid-component/hooks/useColumns.d.ts +16 -0
  57. package/lib/grid-component/hooks/useColumns.js +291 -0
  58. package/lib/grid-component/hooks/utils.d.ts +26 -1
  59. package/lib/grid-component/hooks/utils.js +347 -5
  60. package/lib/grid-component/index.js +2 -1
  61. package/lib/grid-component/styles.scss +365 -68
  62. package/lib/grid-component/table/Grid.d.ts +2 -0
  63. package/lib/grid-component/table/Grid.js +18 -6
  64. package/lib/grid-component/table/GridEdit.d.ts +4 -1
  65. package/lib/grid-component/table/GridEdit.js +939 -305
  66. package/lib/grid-component/table/Group.d.ts +13 -0
  67. package/lib/grid-component/table/Group.js +163 -0
  68. package/lib/grid-component/type.d.ts +39 -2
  69. package/package.json +106 -105
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.SELECTION_COLUMN = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var React = _react;
10
+ var _antd = require("antd");
11
+ var _rcMasterUi = require("rc-master-ui");
12
+ var _utils = require("./utils");
13
+ var _constant = require("./constant");
14
+ var _columns = require("./columns");
15
+ var _icons = require("@ant-design/icons");
16
+ var _becoxyIcons = require("becoxy-icons");
17
+ var _classnames = _interopRequireDefault(require("classnames"));
18
+ var _HeaderContent = _interopRequireDefault(require("./content/HeaderContent"));
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
+ // import type {Key} from 'react';
22
+
23
+ // import Command from "../Command";
24
+
25
+ const ASCEND = 'ascend';
26
+ const DESCEND = 'descend';
27
+ const SELECTION_COLUMN = exports.SELECTION_COLUMN = {};
28
+
29
+ // const EMPTY_LIST: React.Key[] = [];
30
+
31
+ const useColumns = config => {
32
+ // const {
33
+ // preserveSelectedRowKeys,
34
+ // selectedRowKeys,
35
+ // defaultSelectedRowKeys,
36
+ // onSelectMultiple,
37
+ // columnWidth: selectionColWidth,
38
+ // type: selectionType,
39
+ // selections,
40
+ // fixed,
41
+ // } = rowSelection || {};
42
+
43
+ const {
44
+ t,
45
+ dataSourceFilter,
46
+ buddhistLocale,
47
+ locale,
48
+ sortMultiple,
49
+ format,
50
+ handleResize,
51
+ groupAble,
52
+ groupColumns,
53
+ groupSetting
54
+ } = config;
55
+
56
+ // ====================== Selections ======================
57
+
58
+ const handleSearch = (selectedKeys, confirm) => {
59
+ confirm();
60
+ };
61
+ const getColumnSearchProps = (0, _react.useCallback)(column => ({
62
+ filterDropdown: ({
63
+ setSelectedKeys,
64
+ selectedKeys,
65
+ confirm,
66
+ // close,
67
+ setOperatorKey,
68
+ operatorKey,
69
+ visible,
70
+ searchValue,
71
+ setSearchValue
72
+ }) => {
73
+ const type = (0, _utils.getTypeFilter)(column);
74
+ // const operatorOptions = !type || type === 'Text' ? stringOperator : numberOperator
75
+ // const operatorOptions = type === 'Checkbox' || type === 'Dropdown' || type === 'DropTree' || ty
76
+ const operatorOptions = type === ('Checkbox' || 'Dropdown' || 'DropTree' || 'CheckboxDropdown') ? _constant.booleanOperator : !type || type === 'Text' ? _constant.stringOperator : _constant.numberOperator;
77
+ return /*#__PURE__*/React.createElement("div", {
78
+ style: {
79
+ padding: 8,
80
+ minWidth: 275
81
+ },
82
+ onKeyDown: e => e.stopPropagation()
83
+ }, column?.showOperator !== false && column?.typeFilter !== 'DateRange' && column?.typeFilter !== 'NumberRange' && /*#__PURE__*/React.createElement("div", {
84
+ className: 'mb-1'
85
+ }, /*#__PURE__*/React.createElement(_rcMasterUi.Select, {
86
+ options: (0, _constant.translateOption)(operatorOptions, t),
87
+ style: {
88
+ width: '100%',
89
+ marginBottom: 8
90
+ },
91
+ value: operatorKey,
92
+ onChange: val => {
93
+ setOperatorKey(val);
94
+ }
95
+ })), /*#__PURE__*/React.createElement("div", {
96
+ style: {
97
+ marginBottom: 8
98
+ }
99
+ }, (0, _columns.renderFilter)(column, selectedKeys, setSelectedKeys, confirm, visible, searchValue, setSearchValue, dataSourceFilter, buddhistLocale, locale, t)), /*#__PURE__*/React.createElement(_antd.Space, {
100
+ style: {
101
+ justifyContent: 'end',
102
+ width: '100%'
103
+ }
104
+ }, /*#__PURE__*/React.createElement(_antd.Button, {
105
+ type: "primary",
106
+ onClick: () => {
107
+ confirm({
108
+ closeDropdown: false
109
+ });
110
+ handleSearch(selectedKeys, confirm);
111
+ },
112
+ icon: /*#__PURE__*/React.createElement(_icons.SearchOutlined, null),
113
+ size: "small",
114
+ style: {
115
+ width: 90
116
+ }
117
+ }, t ? t('Filter') : 'Filter'), /*#__PURE__*/React.createElement(_antd.Button, {
118
+ type: "link",
119
+ size: "small",
120
+ onClick: () => {
121
+ // setSearchValue('')
122
+ setSelectedKeys([]);
123
+ confirm();
124
+ // handleSearch()
125
+ // close()
126
+ }
127
+ }, t ? t("Clear") : 'Clear')));
128
+ },
129
+ filterIcon: filtered => /*#__PURE__*/React.createElement(_becoxyIcons.FilterFill, {
130
+ fontSize: 12
131
+ // onClick={() => {
132
+ // onFilterClick?.(column, onFilterCallback)
133
+ // }}
134
+ ,
135
+ style: {
136
+ color: filtered ? '#E3165B' : '#283046'
137
+ }
138
+ }),
139
+ filterDropdownProps: {
140
+ onOpenChange(open) {
141
+ if (open) {
142
+ // setTimeout(() => searchInput.current?.select(), 100)
143
+ }
144
+ }
145
+ }
146
+ }), [buddhistLocale, dataSourceFilter, locale, t]);
147
+
148
+ // ======================= Columns ========================
149
+ const transformColumns = (0, _react.useCallback)(columns => {
150
+ // >>>>>>>>>>> Support selection
151
+ const cloneColumns = [...columns];
152
+ const firstNonGroupColumn = (0, _columns.flatColumns2)(cloneColumns).find(col => col.field && !groupColumns?.includes(col.field) && col.hidden !== true);
153
+ const nonGroupColumns = (0, _columns.flatColumns2)(cloneColumns).filter(col => col.field && !groupColumns?.includes(col.field) && col.hidden !== true);
154
+
155
+ // ===================== Render =====================
156
+
157
+ const convertColumns = cols => {
158
+ return cols.map(col => {
159
+ const colIndex = (0, _columns.flatColumns2)(cols).findIndex(it => it.field === col.field);
160
+ if (col === SELECTION_COLUMN) {
161
+ return SELECTION_COLUMN;
162
+ }
163
+ const transformedColumn = {
164
+ ...col,
165
+ dataIndex: col.field ?? col.dataIndex,
166
+ key: col.field ?? col.dataIndex ?? col.key,
167
+ // title: t ? t(col.columnGroupText ?? col.headerText ?? col.title) : col.columnGroupText ?? col.headerText ?? col.title,
168
+ // title: () => (<span>aaa</span>),
169
+ title: () => /*#__PURE__*/React.createElement(_HeaderContent.default, {
170
+ column: {
171
+ ...col
172
+ },
173
+ t: t
174
+ }),
175
+ // title: () => (<span>{t ? t(col.columnGroupText ?? col.headerText ?? col.title) : col.columnGroupText ?? col.headerText ?? col.title}</span>),
176
+ ellipsis: col.ellipsis !== false,
177
+ align: col.textAlign ?? col.align,
178
+ fixed: col.frozen ? col.frozen.toLowerCase() : col.fixed
179
+ };
180
+ if (transformedColumn.children && transformedColumn.children?.length) {
181
+ return {
182
+ ...transformedColumn,
183
+ children: convertColumns(transformedColumn.children)
184
+ };
185
+ }
186
+ if (["index", "#"].includes(col.field)) {
187
+ return {
188
+ ...transformedColumn,
189
+ onCell: () => ({
190
+ className: 'cell-number'
191
+ }),
192
+ render: (_, __, rowIndex) => rowIndex + 1
193
+ };
194
+ }
195
+ if (col.key === 'command') {
196
+ return {
197
+ ...transformedColumn,
198
+ onCell: () => ({
199
+ className: 'cell-number',
200
+ style: {
201
+ padding: '2px 8px'
202
+ }
203
+ })
204
+ };
205
+ }
206
+ return {
207
+ ...transformedColumn,
208
+ ...(transformedColumn.allowFiltering === false ? {} : {
209
+ ...getColumnSearchProps(col)
210
+ }),
211
+ sorter: col.sorter === false ? undefined : {
212
+ compare: a => a,
213
+ multiple: sortMultiple ? colIndex : undefined
214
+ },
215
+ sortIcon: args => {
216
+ const {
217
+ sortOrder
218
+ } = args;
219
+ return /*#__PURE__*/React.createElement(_react.Fragment, null, !sortOrder && /*#__PURE__*/React.createElement(_becoxyIcons.ArrowUp, {
220
+ fontSize: 15,
221
+ style: {
222
+ display: 'flex',
223
+ opacity: 0,
224
+ marginLeft: 4
225
+ },
226
+ className: (0, _classnames.default)(`ui-rc-table-column-sorter-up`, {
227
+ active: true
228
+ })
229
+ }), sortOrder === ASCEND && /*#__PURE__*/React.createElement("span", {
230
+ className: (0, _classnames.default)(`ui-rc-table-column-sorter-up`, {
231
+ active: sortOrder === ASCEND
232
+ }),
233
+ style: {
234
+ display: 'flex',
235
+ marginLeft: 4
236
+ }
237
+ }, /*#__PURE__*/React.createElement(_becoxyIcons.ArrowUp, {
238
+ fontSize: 15,
239
+ color: '#000'
240
+ })), sortOrder === DESCEND && /*#__PURE__*/React.createElement("span", {
241
+ className: (0, _classnames.default)(`ui-rc-table-column-sorter-up`, {
242
+ active: sortOrder === DESCEND
243
+ }),
244
+ style: {
245
+ display: 'flex',
246
+ marginLeft: 4
247
+ }
248
+ }, /*#__PURE__*/React.createElement(_becoxyIcons.ArrowDown, {
249
+ fontSize: 15,
250
+ color: '#000'
251
+ })));
252
+ },
253
+ onHeaderCell: () => ({
254
+ width: col.width,
255
+ onResize: handleResize?.(col)
256
+ }),
257
+ onCell: data => {
258
+ return {
259
+ colSpan: data.children && col.field === firstNonGroupColumn?.field ? 2 : data.children && nonGroupColumns[1].field === col.field ? 0 : 1,
260
+ zIndex: data.children && col.field === firstNonGroupColumn?.field ? 11 : undefined,
261
+ className: (0, _classnames.default)('', {
262
+ 'cell-group': data.children,
263
+ 'cell-group-fixed': data.children && col.field === firstNonGroupColumn?.field
264
+ })
265
+ };
266
+ },
267
+ render: (value, record, rowIndex) => {
268
+ if (groupSetting && groupSetting.hiddenColumnGroup === false) {
269
+ if (record.children) {
270
+ return (0, _columns.renderContent)(col, value, record, rowIndex, format);
271
+ }
272
+ if (groupColumns?.includes(col.field)) {
273
+ return '';
274
+ }
275
+ return (0, _columns.renderContent)(col, value, record, rowIndex, format);
276
+ }
277
+ if (col.field === firstNonGroupColumn?.field && record.children) {
278
+ const currentGroupColumn = (0, _columns.flatColumns2)(cols).find(it => it.field === record.field);
279
+ return /*#__PURE__*/React.createElement("span", null, currentGroupColumn?.headerText, ": ", (0, _columns.renderContent)(currentGroupColumn, record[record.field], record, rowIndex, format));
280
+ }
281
+ return (0, _columns.renderContent)(col, value, record, rowIndex, format);
282
+ },
283
+ hidden: groupSetting && groupSetting.hiddenColumnGroup === false ? col.hidden : groupAble && groupColumns && groupColumns.includes(col.field) ? true : col.hidden
284
+ };
285
+ });
286
+ };
287
+ return convertColumns(cloneColumns);
288
+ }, [format, getColumnSearchProps, groupAble, groupColumns, groupSetting, handleResize, sortMultiple, t]);
289
+ return [transformColumns];
290
+ };
291
+ var _default = exports.default = useColumns;
@@ -5,6 +5,7 @@ import type { ColumnEditType, ColumnsType, ColumnTable, GetRowKey } from "../typ
5
5
  import type { SelectionSettings } from "../type";
6
6
  import type { AnyObject } from "../type";
7
7
  import type { Key } from "react";
8
+ import type { ColumnsTable } from "./../index";
8
9
  export declare const newGuid: () => any;
9
10
  export declare const sumDataByField: (data: any[], field: string) => any;
10
11
  export declare const checkThousandSeparator: (thousandSeparator: string | undefined, decimalSeparator: string | undefined) => string;
@@ -19,6 +20,7 @@ export declare const getAllVisibleKeys: (columns: any[]) => any[];
19
20
  export declare const getVisibleColumnKeys: (columns: any[]) => string[];
20
21
  export declare function getHiddenParentKeys(columns: any[], parentKeys?: string[]): string[];
21
22
  export declare const updateColumns: (columns: any[], includes: string[]) => any[];
23
+ export declare const updateColumnsByGroup: (columns: any[], columnsGroup: string[]) => any[];
22
24
  export declare const getDatepickerFormat: (type: EditType | TypeFilter | IColumnType, col: ColumnTable<any>) => string;
23
25
  export declare const customWeekStartEndFormat: (value: any, weekFormat: string) => string;
24
26
  export declare const getTypeFilter: (col: ColumnTable<any>) => TypeFilter;
@@ -38,6 +40,29 @@ export declare const parseBooleanToValue: (value: boolean, type: 'boolean' | 'nu
38
40
  export declare const genPresets: (presets?: import("@ant-design/colors").PalettesProps) => import("antd/es/color-picker/interface").PresetsItem[];
39
41
  export declare function findAllChildrenKeys<RecordType>(data: readonly RecordType[], getRowKey: GetRowKey<RecordType>, childrenColumnName: string): Key[];
40
42
  export declare const flattenArray: <RecordType extends AnyObject = AnyObject>(arr: any[]) => RecordType[];
41
- export declare const flattenData: <RecordType extends AnyObject = AnyObject>(childrenColumnName: keyof RecordType, data?: RecordType[]) => RecordType[];
43
+ export declare const flattenData: <RecordType extends AnyObject = AnyObject>(childrenColumnName: string, data?: RecordType[]) => RecordType[];
42
44
  export declare const countItemsBeforeIndex: (array: any[], index: number) => number;
43
45
  export declare const getRowNumber: (array: any[], rowKey: any, key: any) => number;
46
+ export declare const getDefaultValue: (defaultValue: any) => AnyObject;
47
+ export declare const addRowIdArray: (inputArray: any[]) => any[];
48
+ export declare const findItemByKey: (array: any, key: string | number, value: any) => any;
49
+ export declare const getLastSelectCell: (selectCells: any) => {
50
+ row: number;
51
+ col: number;
52
+ };
53
+ export declare const getFirstSelectCell: (selectCells: any) => {
54
+ row: number;
55
+ col: number;
56
+ };
57
+ export declare const getRowsPasteIndex: (pasteRows: any) => number[];
58
+ export declare function addRows8(arr: any, n: number): {
59
+ combined: any;
60
+ addedRows: any[];
61
+ } | {
62
+ combined: any[];
63
+ addedRows: any[];
64
+ };
65
+ export declare const transformColumns: <RecordType>(cols: ColumnsTable<RecordType>, convertColumns: any[], t?: any) => ColumnsTable<RecordType>;
66
+ export declare const transformColumns1: <RecordType>(cols: ColumnsTable<RecordType>, sortMultiple?: boolean) => ColumnsTable<RecordType>;
67
+ export declare const removeColumns: <RecordType>(columns: ColumnsTable<RecordType>, groupColumns: string[]) => ColumnsTable<RecordType>;
68
+ export declare const convertFlatColumn: (array: ColumnsTable) => ColumnsTable[];